From 0d00895af3d3a136c15c9d00a98cdb1b9ed821ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Nov 2023 08:44:35 +0000 Subject: [PATCH] Deploy to GitHub pages --- .nojekyll | 0 _formulas.tex | 31 + _formulas_dark.tex | 33 + annotated.html | 609 + annotated_dup.js | 511 + bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes classes.html | 167 + classxt_1_1aligned__array-members.html | 108 + classxt_1_1aligned__array.html | 153 + classxt_1_1aligned__array.png | Bin 0 -> 745 bytes classxt_1_1broadcast__error-members.html | 108 + classxt_1_1broadcast__error.html | 155 + classxt_1_1broadcast__error.png | Bin 0 -> 549 bytes classxt_1_1concatenate__error-members.html | 108 + classxt_1_1concatenate__error.html | 155 + classxt_1_1concatenate__error.png | Bin 0 -> 556 bytes ...nsion_1_1xbroadcast__optional-members.html | 114 + ..._1_1extension_1_1xbroadcast__optional.html | 307 + ...t_1_1extension_1_1xbroadcast__optional.png | Bin 0 -> 1215 bytes ...1_1xcontainer__optional__base-members.html | 117 + ...tension_1_1xcontainer__optional__base.html | 389 + ...xtension_1_1xcontainer__optional__base.png | Bin 0 -> 1162 bytes ...n_1_1xdynamic__view__optional-members.html | 120 + ...extension_1_1xdynamic__view__optional.html | 449 + ...1extension_1_1xdynamic__view__optional.png | Bin 0 -> 1415 bytes ..._1_1xfunction__optional__base-members.html | 118 + ...xtension_1_1xfunction__optional__base.html | 419 + ...extension_1_1xfunction__optional__base.png | Bin 0 -> 1208 bytes ...n_1_1xfunctor__view__optional-members.html | 120 + ...extension_1_1xfunctor__view__optional.html | 449 + ...1extension_1_1xfunctor__view__optional.png | Bin 0 -> 1250 bytes ...nsion_1_1xgenerator__optional-members.html | 118 + ..._1_1extension_1_1xgenerator__optional.html | 387 + ...t_1_1extension_1_1xgenerator__optional.png | Bin 0 -> 1275 bytes ...ion_1_1xindex__view__optional-members.html | 120 + ..._1extension_1_1xindex__view__optional.html | 449 + ...1_1extension_1_1xindex__view__optional.png | Bin 0 -> 1227 bytes ...ion_1_1xoptional__empty__base-members.html | 110 + ..._1extension_1_1xoptional__empty__base.html | 207 + ...tension_1_1xreducer__optional-members.html | 120 + ...xt_1_1extension_1_1xreducer__optional.html | 427 + ...sxt_1_1extension_1_1xreducer__optional.png | Bin 0 -> 1292 bytes ...xtension_1_1xrepeat__optional-members.html | 114 + ...sxt_1_1extension_1_1xrepeat__optional.html | 250 + classxt_1_1extension_1_1xrepeat__optional.png | Bin 0 -> 1168 bytes ...on_1_1xscalar__optional__base-members.html | 117 + ...1extension_1_1xscalar__optional__base.html | 389 + ..._1extension_1_1xscalar__optional__base.png | Bin 0 -> 1136 bytes ...n_1_1xstrided__view__optional-members.html | 120 + ...extension_1_1xstrided__view__optional.html | 449 + ...1extension_1_1xstrided__view__optional.png | Bin 0 -> 1395 bytes ...1extension_1_1xview__optional-members.html | 120 + classxt_1_1extension_1_1xview__optional.html | 449 + classxt_1_1extension_1_1xview__optional.png | Bin 0 -> 1179 bytes classxt_1_1fixed__shape-members.html | 122 + classxt_1_1fixed__shape.html | 562 + classxt_1_1linear__assigner-members.html | 108 + classxt_1_1linear__assigner.html | 165 + ...near__assigner_3_01false_01_4-members.html | 108 + ...xt_1_1linear__assigner_3_01false_01_4.html | 162 + classxt_1_1noalias__proxy-members.html | 135 + classxt_1_1noalias__proxy.html | 828 + ...print__options_1_1edge__items-members.html | 110 + classxt_1_1print__options_1_1edge__items.html | 222 + ...print__options_1_1line__width-members.html | 110 + classxt_1_1print__options_1_1line__width.html | 222 + ..._1print__options_1_1precision-members.html | 110 + classxt_1_1print__options_1_1precision.html | 222 + ..._1print__options_1_1threshold-members.html | 110 + classxt_1_1print__options_1_1threshold.html | 222 + classxt_1_1sequence__view-members.html | 135 + classxt_1_1sequence__view.html | 762 + classxt_1_1stepper__assigner-members.html | 119 + classxt_1_1stepper__assigner.html | 457 + ...xt_1_1strided__loop__assigner-members.html | 115 + classxt_1_1strided__loop__assigner.html | 379 + classxt_1_1svector-members.html | 183 + classxt_1_1svector.html | 2425 ++ classxt_1_1transpose__error-members.html | 108 + classxt_1_1transpose__error.html | 155 + classxt_1_1transpose__error.png | Bin 0 -> 556 bytes classxt_1_1uvector-members.html | 164 + classxt_1_1uvector.html | 1850 ++ classxt_1_1xaccessible-members.html | 149 + classxt_1_1xaccessible.html | 797 + classxt_1_1xaccessible.js | 12 + classxt_1_1xaccessible.png | Bin 0 -> 9542 bytes classxt_1_1xall-members.html | 121 + classxt_1_1xall.html | 563 + classxt_1_1xall.png | Bin 0 -> 521 bytes classxt_1_1xarray__adaptor-members.html | 363 + classxt_1_1xarray__adaptor.html | 1789 ++ classxt_1_1xarray__adaptor.js | 8 + classxt_1_1xarray__adaptor.png | Bin 0 -> 6326 bytes classxt_1_1xarray__container-members.html | 382 + classxt_1_1xarray__container.html | 2314 ++ classxt_1_1xarray__container.js | 18 + classxt_1_1xarray__container.png | Bin 0 -> 6276 bytes classxt_1_1xassign__traits-members.html | 115 + classxt_1_1xassign__traits.html | 379 + classxt_1_1xaxis__iterator-members.html | 123 + classxt_1_1xaxis__iterator.html | 626 + classxt_1_1xaxis__iterator.js | 10 + ...sxt_1_1xaxis__slice__iterator-members.html | 124 + classxt_1_1xaxis__slice__iterator.html | 640 + classxt_1_1xaxis__slice__iterator.js | 10 + classxt_1_1xblockwise__reducer-members.html | 127 + classxt_1_1xblockwise__reducer.html | 639 + classxt_1_1xbounded__iterator-members.html | 125 + classxt_1_1xbounded__iterator.html | 579 + classxt_1_1xbounded__iterator.png | Bin 0 -> 2049 bytes classxt_1_1xbroadcast-members.html | 185 + classxt_1_1xbroadcast.html | 1624 ++ classxt_1_1xbroadcast.js | 15 + classxt_1_1xbroadcast.png | Bin 0 -> 3257 bytes classxt_1_1xbuffer__adaptor-members.html | 131 + classxt_1_1xbuffer__adaptor.html | 608 + classxt_1_1xbuffer__adaptor.png | Bin 0 -> 1756 bytes ...sxt_1_1xbuffer__adaptor__base-members.html | 149 + classxt_1_1xbuffer__adaptor__base.html | 1094 + classxt_1_1xchunk__iterator-members.html | 127 + classxt_1_1xchunk__iterator.html | 623 + classxt_1_1xchunk__iterator.png | Bin 0 -> 760 bytes classxt_1_1xchunked__array-members.html | 298 + classxt_1_1xchunked__array.html | 2715 ++ classxt_1_1xchunked__array.png | Bin 0 -> 4131 bytes classxt_1_1xchunked__assigner-members.html | 109 + classxt_1_1xchunked__assigner.html | 190 + classxt_1_1xchunked__semantic-members.html | 181 + classxt_1_1xchunked__semantic.html | 644 + classxt_1_1xchunked__semantic.png | Bin 0 -> 1098 bytes classxt_1_1xchunked__view-members.html | 137 + classxt_1_1xchunked__view.html | 927 + classxt_1_1xconst__accessible-members.html | 133 + classxt_1_1xconst__accessible.html | 718 + classxt_1_1xconst__accessible.js | 12 + classxt_1_1xconst__accessible.png | Bin 0 -> 11438 bytes classxt_1_1xconst__iterable-members.html | 167 + classxt_1_1xconst__iterable.html | 1718 ++ classxt_1_1xconst__iterable.js | 19 + classxt_1_1xconst__iterable.png | Bin 0 -> 10752 bytes classxt_1_1xcontainer-members.html | 293 + classxt_1_1xcontainer.html | 3418 +++ classxt_1_1xcontainer.js | 32 + classxt_1_1xcontainer.png | Bin 0 -> 7359 bytes classxt_1_1xcontainer__semantic-members.html | 181 + classxt_1_1xcontainer__semantic.html | 664 + classxt_1_1xcontainer__semantic.js | 4 + classxt_1_1xcontainer__semantic.png | Bin 0 -> 1098 bytes classxt_1_1xcontiguous__iterable-members.html | 185 + classxt_1_1xcontiguous__iterable.html | 2081 ++ classxt_1_1xcontiguous__iterable.js | 27 + classxt_1_1xcontiguous__iterable.png | Bin 0 -> 6826 bytes classxt_1_1xdrop__slice-members.html | 124 + classxt_1_1xdrop__slice.html | 683 + classxt_1_1xdrop__slice.png | Bin 0 -> 655 bytes classxt_1_1xdummy__iterator-members.html | 123 + classxt_1_1xdummy__iterator.html | 557 + classxt_1_1xdummy__iterator.png | Bin 0 -> 2282 bytes classxt_1_1xdynamic__view-members.html | 351 + classxt_1_1xdynamic__view.html | 3039 +++ classxt_1_1xdynamic__view.js | 10 + classxt_1_1xdynamic__view.png | Bin 0 -> 7814 bytes classxt_1_1xexpression-members.html | 117 + classxt_1_1xexpression.html | 297 + classxt_1_1xexpression.js | 6 + classxt_1_1xexpression.png | Bin 0 -> 5867 bytes classxt_1_1xexpression__assigner-members.html | 112 + classxt_1_1xexpression__assigner.html | 340 + classxt_1_1xexpression__assigner.png | Bin 0 -> 873 bytes classxt_1_1xexpression__assigner__base.html | 121 + classxt_1_1xexpression__assigner__base.png | Bin 0 -> 873 bytes ...ptional__expression__tag_01_4-members.html | 108 + ...e_3_01xoptional__expression__tag_01_4.html | 168 + ...xtensor__expression__tag_01_4-members.html | 108 + ...ase_3_01xtensor__expression__tag_01_4.html | 168 + classxt_1_1xexpression__holder-members.html | 118 + classxt_1_1xexpression__holder.html | 416 + classxt_1_1xfiltration-members.html | 124 + classxt_1_1xfiltration.html | 596 + classxt_1_1xfiltration.js | 10 + classxt_1_1xfixed__adaptor-members.html | 296 + classxt_1_1xfixed__adaptor.html | 1868 ++ classxt_1_1xfixed__adaptor.js | 11 + classxt_1_1xfixed__adaptor.png | Bin 0 -> 4524 bytes classxt_1_1xfixed__container-members.html | 305 + classxt_1_1xfixed__container.html | 2026 ++ classxt_1_1xfixed__container.js | 12 + classxt_1_1xfixed__container.png | Bin 0 -> 4514 bytes classxt_1_1xfunction-members.html | 214 + classxt_1_1xfunction.html | 2759 ++ classxt_1_1xfunction.js | 21 + classxt_1_1xfunction.png | Bin 0 -> 3215 bytes classxt_1_1xfunction__iterator-members.html | 126 + classxt_1_1xfunction__iterator.html | 678 + classxt_1_1xfunction__iterator.png | Bin 0 -> 1999 bytes classxt_1_1xfunction__stepper-members.html | 132 + classxt_1_1xfunction__stepper.html | 823 + classxt_1_1xfunctor__adaptor-members.html | 228 + classxt_1_1xfunctor__adaptor.html | 1167 + classxt_1_1xfunctor__adaptor.js | 4 + classxt_1_1xfunctor__adaptor.png | Bin 0 -> 4027 bytes ...xt_1_1xfunctor__applier__base-members.html | 252 + classxt_1_1xfunctor__applier__base.html | 4254 +++ classxt_1_1xfunctor__applier__base.js | 52 + classxt_1_1xfunctor__applier__base.png | Bin 0 -> 709 bytes classxt_1_1xfunctor__iterator-members.html | 126 + classxt_1_1xfunctor__iterator.html | 598 + classxt_1_1xfunctor__iterator.png | Bin 0 -> 2610 bytes classxt_1_1xfunctor__stepper-members.html | 126 + classxt_1_1xfunctor__stepper.html | 554 + classxt_1_1xfunctor__view-members.html | 224 + classxt_1_1xfunctor__view.html | 1041 + classxt_1_1xfunctor__view.js | 4 + classxt_1_1xfunctor__view.png | Bin 0 -> 3948 bytes classxt_1_1xgenerator-members.html | 188 + classxt_1_1xgenerator.html | 1681 ++ classxt_1_1xgenerator.js | 12 + classxt_1_1xgenerator.png | Bin 0 -> 3398 bytes classxt_1_1xindex__view-members.html | 277 + classxt_1_1xindex__view.html | 2725 ++ classxt_1_1xindex__view.js | 22 + classxt_1_1xindex__view.png | Bin 0 -> 3467 bytes classxt_1_1xindexed__stepper-members.html | 125 + classxt_1_1xindexed__stepper.html | 596 + classxt_1_1xiterable-members.html | 190 + classxt_1_1xiterable.html | 1932 ++ classxt_1_1xiterable.js | 19 + classxt_1_1xiterable.png | Bin 0 -> 11060 bytes classxt_1_1xiterator-members.html | 130 + classxt_1_1xiterator.html | 704 + classxt_1_1xiterator.png | Bin 0 -> 2340 bytes classxt_1_1xiterator__adaptor-members.html | 129 + classxt_1_1xiterator__adaptor.html | 666 + classxt_1_1xiterator__adaptor.png | Bin 0 -> 1041 bytes ..._1_1xiterator__owner__adaptor-members.html | 128 + classxt_1_1xiterator__owner__adaptor.html | 766 + classxt_1_1xiterator__owner__adaptor.png | Bin 0 -> 1171 bytes classxt_1_1xkeep__slice-members.html | 124 + classxt_1_1xkeep__slice.html | 683 + classxt_1_1xkeep__slice.png | Bin 0 -> 659 bytes classxt_1_1xmasked__value.html | 112 + classxt_1_1xmasked__view-members.html | 272 + classxt_1_1xmasked__view.html | 3051 +++ classxt_1_1xmasked__view.js | 28 + classxt_1_1xmasked__view.png | Bin 0 -> 3412 bytes ...sxt_1_1xmasked__view__stepper-members.html | 128 + classxt_1_1xmasked__view__stepper.html | 694 + classxt_1_1xmultiindex__iterator-members.html | 122 + classxt_1_1xmultiindex__iterator.html | 512 + classxt_1_1xnewaxis-members.html | 120 + classxt_1_1xnewaxis.html | 530 + classxt_1_1xnewaxis.png | Bin 0 -> 644 bytes classxt_1_1xoptional__assembly-members.html | 260 + classxt_1_1xoptional__assembly.html | 2162 ++ classxt_1_1xoptional__assembly.js | 20 + classxt_1_1xoptional__assembly.png | Bin 0 -> 3300 bytes ...1xoptional__assembly__adaptor-members.html | 244 + classxt_1_1xoptional__assembly__adaptor.html | 1499 ++ classxt_1_1xoptional__assembly__adaptor.js | 5 + classxt_1_1xoptional__assembly__adaptor.png | Bin 0 -> 3668 bytes ..._1_1xoptional__assembly__base-members.html | 282 + classxt_1_1xoptional__assembly__base.html | 4727 ++++ classxt_1_1xoptional__assembly__base.js | 56 + classxt_1_1xoptional__assembly__base.png | Bin 0 -> 749 bytes ...l__assembly__linear__iterator-members.html | 126 + ...xoptional__assembly__linear__iterator.html | 638 + ...1xoptional__assembly__linear__iterator.png | Bin 0 -> 1696 bytes ...1xoptional__assembly__stepper-members.html | 128 + classxt_1_1xoptional__assembly__stepper.html | 694 + ...1xoptional__assembly__storage-members.html | 159 + classxt_1_1xoptional__assembly__storage.html | 1597 ++ classxt_1_1xrange-members.html | 122 + classxt_1_1xrange.html | 602 + classxt_1_1xrange.png | Bin 0 -> 633 bytes classxt_1_1xreducer-members.html | 207 + classxt_1_1xreducer.html | 1839 ++ classxt_1_1xreducer.js | 12 + classxt_1_1xreducer.png | Bin 0 -> 3839 bytes classxt_1_1xreducer__stepper-members.html | 127 + classxt_1_1xreducer__stepper.html | 684 + classxt_1_1xrepeat-members.html | 184 + classxt_1_1xrepeat.html | 1672 ++ classxt_1_1xrepeat.js | 14 + classxt_1_1xrepeat.png | Bin 0 -> 3111 bytes classxt_1_1xrepeat__stepper-members.html | 130 + classxt_1_1xrepeat__stepper.html | 698 + classxt_1_1xscalar-members.html | 275 + classxt_1_1xscalar.html | 3925 +++ classxt_1_1xscalar.js | 11 + classxt_1_1xscalar.png | Bin 0 -> 2601 bytes classxt_1_1xscalar__stepper-members.html | 127 + classxt_1_1xscalar__stepper.html | 654 + classxt_1_1xsemantic__base-members.html | 168 + classxt_1_1xsemantic__base.html | 1532 ++ classxt_1_1xsemantic__base.js | 28 + classxt_1_1xsemantic__base.png | Bin 0 -> 15603 bytes classxt_1_1xsharable__expression-members.html | 123 + classxt_1_1xsharable__expression.html | 200 + classxt_1_1xsharable__expression.png | Bin 0 -> 714 bytes classxt_1_1xshared__expression-members.html | 191 + classxt_1_1xshared__expression.html | 2690 ++ classxt_1_1xshared__expression.js | 5 + classxt_1_1xshared__expression.png | Bin 0 -> 822 bytes classxt_1_1xslice-members.html | 116 + classxt_1_1xslice.html | 223 + classxt_1_1xstepped__range-members.html | 122 + classxt_1_1xstepped__range.html | 608 + classxt_1_1xstepped__range.png | Bin 0 -> 750 bytes classxt_1_1xstepper-members.html | 131 + classxt_1_1xstepper.html | 736 + classxt_1_1xstrided__container-members.html | 313 + classxt_1_1xstrided__container.html | 1780 ++ classxt_1_1xstrided__container.js | 8 + classxt_1_1xstrided__container.png | Bin 0 -> 1796 bytes classxt_1_1xstrided__view-members.html | 297 + classxt_1_1xstrided__view.html | 3318 +++ classxt_1_1xstrided__view.js | 23 + classxt_1_1xstrided__view.png | Bin 0 -> 9961 bytes classxt_1_1xstrided__view__base-members.html | 211 + classxt_1_1xstrided__view__base.html | 2106 ++ classxt_1_1xstrided__view__base.js | 23 + classxt_1_1xstrided__view__base.png | Bin 0 -> 2510 bytes classxt_1_1xtensor__adaptor-members.html | 363 + classxt_1_1xtensor__adaptor.html | 1789 ++ classxt_1_1xtensor__adaptor.js | 8 + classxt_1_1xtensor__adaptor.png | Bin 0 -> 6147 bytes classxt_1_1xtensor__container-members.html | 377 + classxt_1_1xtensor__container.html | 2094 ++ classxt_1_1xtensor__container.js | 12 + classxt_1_1xtensor__container.png | Bin 0 -> 6088 bytes classxt_1_1xtensor__view-members.html | 363 + classxt_1_1xtensor__view.html | 1747 ++ classxt_1_1xtensor__view.js | 8 + classxt_1_1xtensor__view.png | Bin 0 -> 5882 bytes classxt_1_1xvectorizer-members.html | 111 + classxt_1_1xvectorizer.html | 224 + classxt_1_1xview-members.html | 350 + classxt_1_1xview.html | 4588 ++++ classxt_1_1xview.js | 21 + classxt_1_1xview.png | Bin 0 -> 7653 bytes classxt_1_1xview__semantic-members.html | 181 + classxt_1_1xview__semantic.html | 667 + classxt_1_1xview__semantic.js | 4 + classxt_1_1xview__semantic.png | Bin 0 -> 2616 bytes classxt_1_1xview__stepper-members.html | 126 + classxt_1_1xview__stepper.html | 650 + classxt__simd_1_1aligned__allocator.html | 112 + closed.png | Bin 0 -> 132 bytes deprecated.html | 109 + dir_d44c64559bbebec7f509842c48db8b23.html | 111 + dir_d44c64559bbebec7f509842c48db8b23.js | 4 + dir_ea185b87f60949e3b1bf14314f33a519.html | 253 + dir_ea185b87f60949e3b1bf14314f33a519.js | 75 + doc.svg | 12 + docd.svg | 12 + doxygen.css | 2045 ++ doxygen.svg | 28 + dynsections.js | 199 + files.html | 182 + files_dup.js | 4 + folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.svg | 17 + folderopend.svg | 12 + functions.html | 108 + functions_b.html | 112 + functions_c.html | 109 + functions_d.html | 110 + functions_dup.js | 20 + functions_e.html | 109 + functions_f.html | 109 + functions_func.html | 108 + functions_func.js | 20 + functions_func_b.html | 112 + functions_func_c.html | 109 + functions_func_d.html | 110 + functions_func_e.html | 109 + functions_func_f.html | 109 + functions_func_h.html | 107 + functions_func_i.html | 106 + functions_func_l.html | 106 + functions_func_m.html | 108 + functions_func_o.html | 119 + functions_func_p.html | 107 + functions_func_r.html | 109 + functions_func_s.html | 110 + functions_func_u.html | 107 + functions_func_v.html | 107 + functions_func_x.html | 129 + functions_h.html | 107 + functions_i.html | 106 + functions_l.html | 106 + functions_m.html | 108 + functions_o.html | 119 + functions_p.html | 107 + functions_r.html | 109 + functions_s.html | 110 + functions_u.html | 107 + functions_v.html | 107 + functions_x.html | 129 + group__acc__functions.html | 232 + group__acc__functions.js | 5 + group__arithmetic__operators.html | 475 + group__arithmetic__operators.js | 10 + group__basic__functions.html | 1261 + group__basic__functions.js | 24 + group__bitwise__operators.html | 543 + group__bitwise__operators.js | 11 + group__casting__operators.html | 157 + group__casting__operators.js | 4 + group__classif__functions.html | 387 + group__classif__functions.js | 8 + group__comparison__operators.html | 770 + group__comparison__operators.js | 15 + group__err__functions.html | 288 + group__err__functions.js | 7 + group__exp__functions.html | 420 + group__exp__functions.js | 10 + group__hyper__functions.html | 376 + group__hyper__functions.js | 9 + group__logical__operators.html | 888 + group__logical__operators.js | 18 + group__nan__functions.html | 753 + group__nan__functions.js | 13 + group__nearint__functions.html | 376 + group__nearint__functions.js | 9 + group__pow__functions.html | 450 + group__pow__functions.js | 10 + group__red__functions.html | 1343 + group__red__functions.js | 23 + group__trigo__functions.html | 432 + group__trigo__functions.js | 10 + group__xt__xadapt.html | 1100 + group__xt__xadapt.js | 18 + group__xt__xchunked__array.html | 315 + group__xt__xchunked__array.js | 6 + group__xt__xcomplex.html | 383 + group__xt__xcomplex.js | 9 + group__xt__xeval.html | 216 + group__xt__xeval.js | 5 + group__xt__xfunctor__view.html | 122 + group__xt__xfunctor__view.js | 9 + group__xt__xmanipulation.html | 1449 ++ group__xt__xmanipulation.js | 28 + group__xt__xshape.html | 316 + group__xt__xshape.js | 6 + group__xt__xsort.html | 907 + group__xt__xsort.js | 23 + group__xt__xstrides.html | 451 + group__xt__xstrides.js | 13 + hierarchy.html | 893 + hierarchy.js | 949 + index.html | 104 + jquery.js | 34 + menu.js | 136 + menudata.js | 126 + minus.svg | 8 + minusd.svg | 8 + namespacemembers.html | 139 + namespacemembers_b.html | 108 + namespacemembers_c.html | 122 + namespacemembers_d.html | 115 + namespacemembers_dup.js | 27 + namespacemembers_e.html | 117 + namespacemembers_enum.html | 109 + namespacemembers_f.html | 121 + namespacemembers_func.html | 139 + namespacemembers_func.js | 27 + namespacemembers_func_b.html | 108 + namespacemembers_func_c.html | 122 + namespacemembers_func_d.html | 115 + namespacemembers_func_e.html | 117 + namespacemembers_func_f.html | 121 + namespacemembers_func_g.html | 107 + namespacemembers_func_h.html | 111 + namespacemembers_func_i.html | 115 + namespacemembers_func_k.html | 106 + namespacemembers_func_l.html | 117 + namespacemembers_func_m.html | 114 + namespacemembers_func_n.html | 130 + namespacemembers_func_o.html | 127 + namespacemembers_func_p.html | 109 + namespacemembers_func_q.html | 106 + namespacemembers_func_r.html | 121 + namespacemembers_func_s.html | 124 + namespacemembers_func_t.html | 116 + namespacemembers_func_u.html | 107 + namespacemembers_func_v.html | 109 + namespacemembers_func_w.html | 106 + namespacemembers_func_x.html | 106 + namespacemembers_func_z.html | 107 + namespacemembers_g.html | 107 + namespacemembers_h.html | 112 + namespacemembers_i.html | 115 + namespacemembers_k.html | 106 + namespacemembers_l.html | 118 + namespacemembers_m.html | 114 + namespacemembers_n.html | 131 + namespacemembers_o.html | 127 + namespacemembers_p.html | 110 + namespacemembers_q.html | 107 + namespacemembers_r.html | 121 + namespacemembers_s.html | 127 + namespacemembers_t.html | 116 + namespacemembers_type.html | 114 + namespacemembers_u.html | 107 + namespacemembers_v.html | 109 + namespacemembers_w.html | 106 + namespacemembers_x.html | 115 + namespacemembers_z.html | 107 + namespaces.html | 422 + namespaces_dup.js | 4 + namespacext.html | 21491 ++++++++++++++++ namespacext.js | 664 + nav_f.png | Bin 0 -> 153 bytes nav_fd.png | Bin 0 -> 169 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes nav_hd.png | Bin 0 -> 114 bytes navtree.css | 149 + navtree.js | 559 + navtreedata.js | 69 + navtreeindex0.js | 253 + navtreeindex1.js | 253 + navtreeindex2.js | 253 + navtreeindex3.js | 253 + navtreeindex4.js | 253 + navtreeindex5.js | 253 + navtreeindex6.js | 253 + navtreeindex7.js | 253 + navtreeindex8.js | 253 + navtreeindex9.js | 126 + open.png | Bin 0 -> 123 bytes pages.html | 109 + plus.svg | 9 + plusd.svg | 9 + resize.js | 155 + search/all_0.js | 63 + search/all_1.js | 23 + search/all_10.js | 38 + search/all_11.js | 57 + search/all_12.js | 36 + search/all_13.js | 9 + search/all_14.js | 11 + search/all_15.js | 5 + search/all_16.js | 438 + search/all_17.js | 5 + search/all_2.js | 65 + search/all_3.js | 23 + search/all_4.js | 36 + search/all_5.js | 46 + search/all_6.js | 20 + search/all_7.js | 39 + search/all_8.js | 55 + search/all_9.js | 5 + search/all_a.js | 30 + search/all_b.js | 20 + search/all_c.js | 54 + search/all_d.js | 41 + search/all_e.js | 17 + search/all_f.js | 6 + search/classes_0.js | 18 + search/classes_1.js | 9 + search/classes_10.js | 23 + search/classes_11.js | 5 + search/classes_12.js | 5 + search/classes_13.js | 422 + search/classes_2.js | 38 + search/classes_3.js | 8 + search/classes_4.js | 19 + search/classes_5.js | 20 + search/classes_6.js | 16 + search/classes_7.js | 28 + search/classes_8.js | 41 + search/classes_9.js | 4 + search/classes_a.js | 12 + search/classes_b.js | 9 + search/classes_c.js | 24 + search/classes_d.js | 8 + search/classes_e.js | 17 + search/classes_f.js | 25 + search/close.svg | 18 + search/enums_0.js | 4 + search/enums_1.js | 4 + search/enums_2.js | 4 + search/enums_3.js | 4 + search/enums_4.js | 5 + search/enumvalues_0.js | 4 + search/enumvalues_1.js | 4 + search/enumvalues_2.js | 4 + search/enumvalues_3.js | 4 + search/enumvalues_4.js | 4 + search/enumvalues_5.js | 5 + search/enumvalues_6.js | 4 + search/enumvalues_7.js | 4 + search/enumvalues_8.js | 5 + search/enumvalues_9.js | 4 + search/enumvalues_a.js | 4 + search/enumvalues_b.js | 4 + search/enumvalues_c.js | 4 + search/functions_0.js | 40 + search/functions_1.js | 13 + search/functions_10.js | 23 + search/functions_11.js | 25 + search/functions_12.js | 14 + search/functions_13.js | 7 + search/functions_14.js | 9 + search/functions_15.js | 4 + search/functions_16.js | 28 + search/functions_17.js | 5 + search/functions_2.js | 24 + search/functions_3.js | 17 + search/functions_4.js | 18 + search/functions_5.js | 23 + search/functions_6.js | 5 + search/functions_7.js | 11 + search/functions_8.js | 13 + search/functions_9.js | 4 + search/functions_a.js | 16 + search/functions_b.js | 15 + search/functions_c.js | 28 + search/functions_d.js | 38 + search/functions_e.js | 9 + search/functions_f.js | 4 + search/groups_0.js | 11 + search/groups_1.js | 6 + search/groups_2.js | 8 + search/groups_3.js | 5 + search/groups_4.js | 9 + search/groups_5.js | 5 + search/groups_6.js | 4 + search/groups_7.js | 5 + search/groups_8.js | 5 + search/groups_9.js | 5 + search/groups_a.js | 6 + search/groups_b.js | 5 + search/groups_c.js | 4 + search/groups_d.js | 9 + search/groups_e.js | 5 + search/groups_f.js | 8 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 31 + search/mag_seld.svg | 31 + search/namespaces_0.js | 4 + search/pages_0.js | 4 + search/pages_1.js | 4 + search/search.css | 291 + search/search.js | 840 + search/searchdata.js | 39 + search/typedefs_0.js | 4 + search/typedefs_1.js | 4 + search/typedefs_2.js | 12 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes structxt_1_1acquire__ownership.html | 111 + structxt_1_1apply__cv-members.html | 108 + structxt_1_1apply__cv.html | 140 + ..._1_1big__promote__value__type-members.html | 108 + structxt_1_1big__promote__value__type.html | 140 + structxt_1_1buffer__inner__types.html | 112 + ...c_p_00_01_o_00_01_a_01_4_01_4-members.html | 120 + ...or_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html | 380 + ...or_3_01_i_00_01_c_i_01_4_01_4-members.html | 121 + ...r__adaptor_3_01_i_00_01_c_i_01_4_01_4.html | 400 + ...or_3_01_c_00_01_i_g_01_4_01_4-members.html | 121 + ...r__adaptor_3_01_c_00_01_i_g_01_4_01_4.html | 400 + structxt_1_1can__assign.html | 118 + structxt_1_1can__assign.png | Bin 0 -> 808 bytes ...1_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html | 121 + ...01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.png | Bin 0 -> 1621 bytes structxt_1_1check__policy_1_1full.html | 111 + structxt_1_1check__policy_1_1none.html | 111 + structxt_1_1check__strides__overlap.html | 112 + ...t__type_1_1column__major_01_4-members.html | 108 + ..._01layout__type_1_1column__major_01_4.html | 162 + ...yout__type_1_1row__major_01_4-members.html | 108 + ...p_3_01layout__type_1_1row__major_01_4.html | 162 + ...t_1_1common__difference__type-members.html | 108 + structxt_1_1common__difference__type.html | 140 + ...1common__difference__type_3_4-members.html | 108 + structxt_1_1common__difference__type_3_4.html | 137 + structxt_1_1common__size__type-members.html | 108 + structxt_1_1common__size__type.html | 140 + ...txt_1_1common__size__type_3_4-members.html | 108 + structxt_1_1common__size__type_3_4.html | 137 + structxt_1_1common__tensor__type.html | 118 + structxt_1_1common__tensor__type.png | Bin 0 -> 1108 bytes structxt_1_1common__value__type-members.html | 108 + structxt_1_1common__value__type.html | 140 + structxt_1_1conditional__cast__functor.html | 112 + ..._cast__functor_3_01false_00_01_t_01_4.html | 118 + ...__cast__functor_3_01false_00_01_t_01_4.png | Bin 0 -> 715 bytes ...functor_3_01true_00_01_t_01_4-members.html | 108 + ...__cast__functor_3_01true_00_01_t_01_4.html | 155 + structxt_1_1const__array-members.html | 133 + structxt_1_1const__array.html | 812 + structxt_1_1const__value-members.html | 114 + structxt_1_1const__value.html | 283 + structxt_1_1const__xclosure-members.html | 108 + structxt_1_1const__xclosure.html | 140 + ...ecay__t_3_01_e_01_4_01_4_01_4-members.html | 108 + ...std_1_1decay__t_3_01_e_01_4_01_4_01_4.html | 140 + ...ble__if__t_3_01true_01_4_01_4-members.html | 108 + ...d_1_1enable__if__t_3_01true_01_4_01_4.html | 140 + ...ctxt_1_1container__simd__return__type.html | 118 + structxt_1_1container__simd__return__type.png | Bin 0 -> 1574 bytes structxt_1_1convolve__mode_1_1full.html | 111 + structxt_1_1convolve__mode_1_1valid.html | 111 + structxt_1_1decay__all.html | 112 + ...3_01_s_3_01_x_8_8_8_01_4_01_4-members.html | 108 + ...ay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html | 140 + structxt_1_1disable__indexed__stepper.html | 118 + structxt_1_1disable__indexed__stepper.png | Bin 0 -> 1095 bytes structxt_1_1driven__align__mode-members.html | 108 + structxt_1_1driven__align__mode.html | 140 + structxt_1_1enable__indexed__stepper.html | 118 + structxt_1_1enable__indexed__stepper.png | Bin 0 -> 1080 bytes ...aluation__strategy_1_1immediate__type.html | 117 + ...valuation__strategy_1_1immediate__type.png | Bin 0 -> 815 bytes ...1_1evaluation__strategy_1_1lazy__type.html | 117 + ..._1_1evaluation__strategy_1_1lazy__type.png | Bin 0 -> 786 bytes ..._1_1extension_1_1expression__tag__and.html | 112 + ...__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html | 121 + ...n__tag__and_3_01_t1_00_01_t_8_8_8_01_4.png | Bin 0 -> 1206 bytes ..._tag__and_3_01_t_00_01_t_01_4-members.html | 108 + ...ression__tag__and_3_01_t_00_01_t_01_4.html | 140 + ...xtensor__expression__tag_01_4-members.html | 108 + ..._t_00_01xtensor__expression__tag_01_4.html | 130 + ...1_t_00_01xtensor__expression__tag_01_4.png | Bin 0 -> 1191 bytes ...ression__tag__and_3_01_t_01_4-members.html | 108 + ...n_1_1expression__tag__and_3_01_t_01_4.html | 140 + ..._expression__tag_00_01_t_01_4-members.html | 108 + ...xtensor__expression__tag_00_01_t_01_4.html | 149 + ...1xtensor__expression__tag_00_01_t_01_4.png | Bin 0 -> 1192 bytes ...xtensor__expression__tag_01_4-members.html | 108 + ...ag_00_01xtensor__expression__tag_01_4.html | 137 + ...n_1_1expression__tag__and_3_4-members.html | 108 + ...extension_1_1expression__tag__and_3_4.html | 137 + ...nsion_1_1get__expression__tag-members.html | 108 + ..._1_1extension_1_1get__expression__tag.html | 130 + ...t_1_1extension_1_1get__expression__tag.png | Bin 0 -> 951 bytes ...onal_3_01_t_00_01_b_01_4_01_4-members.html | 108 + ...1_1xoptional_3_01_t_00_01_b_01_4_01_4.html | 140 + ...1_1get__expression__tag__impl-members.html | 108 + ...tension_1_1get__expression__tag__impl.html | 149 + ...xtension_1_1get__expression__tag__impl.png | Bin 0 -> 1119 bytes ...1_1de048c22abe806a8cb61aa0c08ab63f2de.html | 140 + ...1_1de4e085c648bbd1efca51f7b5461e984a5.html | 108 + ...ptional__expression__tag_01_4-members.html | 109 + ..._00_01xoptional__expression__tag_01_4.html | 160 + ...ay__adaptor__optional__traits-members.html | 114 + ..._1_1xarray__adaptor__optional__traits.html | 162 + ...n_1_1xarray__adaptor__optional__traits.png | Bin 0 -> 1271 bytes ...1extension_1_1xarray__container__base.html | 112 + ...ptional__expression__tag_01_4-members.html | 109 + ..._00_01xoptional__expression__tag_01_4.html | 160 + ...xtensor__expression__tag_01_4-members.html | 108 + ..._c_00_01xtensor__expression__tag_01_4.html | 140 + ...__container__optional__traits-members.html | 114 + ..._1xarray__container__optional__traits.html | 162 + ...1_1xarray__container__optional__traits.png | Bin 0 -> 1282 bytes ...n_1_1xarray__optional__traits-members.html | 113 + ...extension_1_1xarray__optional__traits.html | 250 + ...1extension_1_1xarray__optional__traits.png | Bin 0 -> 1756 bytes ...ctxt_1_1extension_1_1xbroadcast__base.html | 121 + structxt_1_1extension_1_1xbroadcast__base.png | Bin 0 -> 1289 bytes ..._1extension_1_1xbroadcast__base__impl.html | 112 + ...n__tag_00_01_c_t_00_01_x_01_4-members.html | 108 + ...xpression__tag_00_01_c_t_00_01_x_01_4.html | 140 + ...n__tag_00_01_c_t_00_01_x_01_4-members.html | 108 + ...xpression__tag_00_01_c_t_00_01_x_01_4.html | 140 + ..._1_1extension_1_1xdynamic__view__base.html | 121 + ...t_1_1extension_1_1xdynamic__view__base.png | Bin 0 -> 1469 bytes ...tension_1_1xdynamic__view__base__impl.html | 112 + ..._c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html | 140 + ...t_00_b6d8a7e2879c1a8ee678dc4152371fc6.html | 108 + ..._c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html | 140 + ...00_01aef227a96c9a95959d74cc8b3d2137ea.html | 108 + structxt_1_1extension_1_1xfunction__base.html | 121 + structxt_1_1extension_1_1xfunction__base.png | Bin 0 -> 1267 bytes ...1_1extension_1_1xfunction__base__impl.html | 112 + ..._00_01_f_00_01_c_t_8_8_8_01_4-members.html | 108 + ...ion__tag_00_01_f_00_01_c_t_8_8_8_01_4.html | 140 + ..._00_01_f_00_01_c_t_8_8_8_01_4-members.html | 108 + ...ion__tag_00_01_f_00_01_c_t_8_8_8_01_4.html | 140 + ..._1_1extension_1_1xfunctor__view__base.html | 121 + ...t_1_1extension_1_1xfunctor__view__base.png | Bin 0 -> 1316 bytes ...tension_1_1xfunctor__view__base__impl.html | 112 + ...n__tag_00_01_f_00_01_c_t_01_4-members.html | 108 + ...xpression__tag_00_01_f_00_01_c_t_01_4.html | 140 + ...n__tag_00_01_f_00_01_c_t_01_4-members.html | 108 + ...xpression__tag_00_01_f_00_01_c_t_01_4.html | 140 + ...ctxt_1_1extension_1_1xgenerator__base.html | 121 + structxt_1_1extension_1_1xgenerator__base.png | Bin 0 -> 1327 bytes ..._1extension_1_1xgenerator__base__impl.html | 112 + ..._00_01_f_00_01_r_00_01_s_01_4-members.html | 108 + ...ion__tag_00_01_f_00_01_r_00_01_s_01_4.html | 140 + ..._00_01_f_00_01_r_00_01_s_01_4-members.html | 108 + ...ion__tag_00_01_f_00_01_r_00_01_s_01_4.html | 140 + ...xt_1_1extension_1_1xindex__view__base.html | 121 + ...txt_1_1extension_1_1xindex__view__base.png | Bin 0 -> 1294 bytes ...extension_1_1xindex__view__base__impl.html | 112 + ...n__tag_00_01_c_t_00_01_i_01_4-members.html | 108 + ...xpression__tag_00_01_c_t_00_01_i_01_4.html | 140 + ...n__tag_00_01_c_t_00_01_i_01_4-members.html | 108 + ...xpression__tag_00_01_c_t_00_01_i_01_4.html | 140 + ...0_01_c_t_00_01_x_00_01_o_01_4-members.html | 108 + ...0_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html | 140 + structxt_1_1extension_1_1xrepeat__base.html | 121 + structxt_1_1extension_1_1xrepeat__base.png | Bin 0 -> 1253 bytes ...t_1_1extension_1_1xrepeat__base__impl.html | 112 + ...n__tag_00_01_c_t_00_01_x_01_4-members.html | 108 + ...xpression__tag_00_01_c_t_00_01_x_01_4.html | 140 + ...n__tag_00_01_c_t_00_01_x_01_4-members.html | 108 + ...xpression__tag_00_01_c_t_00_01_x_01_4.html | 140 + structxt_1_1extension_1_1xscalar__base.html | 121 + structxt_1_1extension_1_1xscalar__base.png | Bin 0 -> 1342 bytes ...t_1_1extension_1_1xscalar__base__impl.html | 112 + ...xpression__tag_00_01_c_t_01_4-members.html | 108 + ...ional__expression__tag_00_01_c_t_01_4.html | 140 + ...xpression__tag_00_01_c_t_01_4-members.html | 108 + ...ensor__expression__tag_00_01_c_t_01_4.html | 140 + ..._1_1xscalar__optional__traits-members.html | 124 + ...xtension_1_1xscalar__optional__traits.html | 481 + ..._1_1extension_1_1xstrided__view__base.html | 121 + ...t_1_1extension_1_1xstrided__view__base.png | Bin 0 -> 1437 bytes ...tension_1_1xstrided__view__base__impl.html | 112 + ..._c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html | 140 + ...t_00_4a6b46e0ed70869936639a514f730fbb.html | 108 + ..._c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html | 140 + ...00_01b284f3952f1f4d8d4ad036b645dd2641.html | 108 + ...ptional__expression__tag_01_4-members.html | 109 + ..._00_01xoptional__expression__tag_01_4.html | 160 + ...or__adaptor__optional__traits-members.html | 114 + ...1_1xtensor__adaptor__optional__traits.html | 162 + ..._1_1xtensor__adaptor__optional__traits.png | Bin 0 -> 1204 bytes ...extension_1_1xtensor__container__base.html | 112 + ...ptional__expression__tag_01_4-members.html | 109 + ..._00_01xoptional__expression__tag_01_4.html | 160 + ...xtensor__expression__tag_01_4-members.html | 108 + ..._l_00_01xtensor__expression__tag_01_4.html | 140 + ...__container__optional__traits-members.html | 114 + ...1xtensor__container__optional__traits.html | 162 + ..._1xtensor__container__optional__traits.png | Bin 0 -> 1216 bytes ...nsion_1_1xtensor__empty__base-members.html | 108 + ..._1_1extension_1_1xtensor__empty__base.html | 137 + ..._1_1xtensor__optional__traits-members.html | 113 + ...xtension_1_1xtensor__optional__traits.html | 251 + ...extension_1_1xtensor__optional__traits.png | Bin 0 -> 2062 bytes ...ptional__expression__tag_01_4-members.html | 109 + ..._00_01xoptional__expression__tag_01_4.html | 160 + ...ensor__view__optional__traits-members.html | 114 + ...on_1_1xtensor__view__optional__traits.html | 162 + ...ion_1_1xtensor__view__optional__traits.png | Bin 0 -> 1180 bytes structxt_1_1extension_1_1xview__base.html | 121 + structxt_1_1extension_1_1xview__base.png | Bin 0 -> 1261 bytes ...txt_1_1extension_1_1xview__base__impl.html | 112 + ..._00_01_c_t_00_01_s_8_8_8_01_4-members.html | 108 + ...ion__tag_00_01_c_t_00_01_s_8_8_8_01_4.html | 140 + ..._00_01_c_t_00_01_s_8_8_8_01_4-members.html | 108 + ...ion__tag_00_01_c_t_00_01_s_8_8_8_01_4.html | 140 + structxt_1_1filter__fixed__shape.html | 118 + structxt_1_1filter__fixed__shape.png | Bin 0 -> 846 bytes structxt_1_1fixed__xreducer__shape__type.html | 112 + ..._shape_3_01_j_8_8_8_01_4_01_4-members.html | 108 + ...01fixed__shape_3_01_j_8_8_8_01_4_01_4.html | 140 + structxt_1_1forbid__simd.html | 118 + structxt_1_1forbid__simd.png | Bin 0 -> 574 bytes ..._1_1vector_3_01bool_00_01_a_01_4_01_4.html | 118 + ...d_1_1vector_3_01bool_00_01_a_01_4_01_4.png | Bin 0 -> 879 bytes ...amic__bitset_3_01_b_00_01_a_01_4_01_4.html | 118 + ...namic__bitset_3_01_b_00_01_a_01_4_01_4.png | Bin 0 -> 965 bytes ..._1_1vector_3_01bool_00_01_a_01_4_01_4.html | 118 + ...d_1_1vector_3_01bool_00_01_a_01_4_01_4.png | Bin 0 -> 753 bytes ...amic__bitset_3_01_b_00_01_a_01_4_01_4.html | 118 + ...namic__bitset_3_01_b_00_01_a_01_4_01_4.png | Bin 0 -> 891 bytes structxt_1_1get__init__type.html | 112 + ..._shape_3_01_x_8_8_8_01_4_01_4-members.html | 108 + ...01fixed__shape_3_01_x_8_8_8_01_4_01_4.html | 140 + structxt_1_1get__rank-members.html | 108 + structxt_1_1get__rank.html | 148 + ..._1_1rank_00_01void_07_08_08_4-members.html | 108 + ..._08_01_e_1_1rank_00_01void_07_08_08_4.html | 148 + structxt_1_1get__strides__type-members.html | 108 + structxt_1_1get__strides__type.html | 140 + ..._shape_3_01_i_8_8_8_01_4_01_4-members.html | 108 + ...01fixed__shape_3_01_i_8_8_8_01_4_01_4.html | 140 + ...c_p_00_01_o_00_01_a_01_4_01_4-members.html | 108 + ...or_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html | 140 + structxt_1_1get__value__type-members.html | 108 + structxt_1_1get__value__type.html | 140 + ...01_t_1_1value__type_01_4_01_4-members.html | 108 + ...ypename_01_t_1_1value__type_01_4_01_4.html | 140 + ...xt_1_1has__assign__conversion-members.html | 110 + structxt_1_1has__assign__conversion.html | 195 + structxt_1_1has__assign__to.html | 118 + structxt_1_1has__assign__to.png | Bin 0 -> 749 bytes ...1cons059ed553ffd14856020f06c40d9ce771.html | 118 + ...01cons059ed553ffd14856020f06c40d9ce771.png | Bin 0 -> 1483 bytes structxt_1_1has__data__interface.html | 118 + structxt_1_1has__data__interface.png | Bin 0 -> 737 bytes ...01_e_01_4_07_08_8data_07_08_08_4_01_4.html | 118 + ..._01_e_01_4_07_08_8data_07_08_08_4_01_4.png | Bin 0 -> 1133 bytes structxt_1_1has__fixed__rank-members.html | 108 + structxt_1_1has__fixed__rank.html | 140 + structxt_1_1has__iterator__interface.html | 118 + structxt_1_1has__iterator__interface.png | Bin 0 -> 750 bytes ...1_e_01_4_07_08_8begin_07_08_08_4_01_4.html | 118 + ...01_e_01_4_07_08_8begin_07_08_08_4_01_4.png | Bin 0 -> 1165 bytes structxt_1_1has__rank-members.html | 108 + structxt_1_1has__rank.html | 140 + ...ctxt_1_1has__sign__conversion-members.html | 110 + structxt_1_1has__sign__conversion.html | 193 + structxt_1_1has__simd__apply.html | 118 + structxt_1_1has__simd__apply.png | Bin 0 -> 1139 bytes structxt_1_1has__simd__interface.html | 118 + structxt_1_1has__simd__interface.png | Bin 0 -> 2171 bytes ...1_c_t_8_8_8_01_4_00_01_t_01_4-members.html | 106 + ...1_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html | 130 + ...01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.png | Bin 0 -> 1772 bytes ...or_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html | 121 + ...tor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png | Bin 0 -> 3524 bytes ...pplier__base_3_01_d_01_4_00_01_t_01_4.html | 121 + ...applier__base_3_01_d_01_4_00_01_t_01_4.png | Bin 0 -> 2173 bytes ...ew_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html | 121 + ...iew_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png | Bin 0 -> 3246 bytes ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 118 + ..._c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png | Bin 0 -> 1177 bytes structxt_1_1has__simd__type.html | 118 + structxt_1_1has__simd__type.png | Bin 0 -> 1247 bytes structxt_1_1has__storage__type.html | 118 + structxt_1_1has__storage__type.png | Bin 0 -> 748 bytes ...3_01_650a1762a9f827a241fdd5fca766bcf6.html | 118 + ..._3_01_650a1762a9f827a241fdd5fca766bcf6.png | Bin 0 -> 1915 bytes structxt_1_1has__strides.html | 118 + structxt_1_1has__strides.png | Bin 0 -> 662 bytes ...e_01_4_07_08_8strides_07_08_08_4_01_4.html | 118 + ..._e_01_4_07_08_8strides_07_08_08_4_01_4.png | Bin 0 -> 1090 bytes structxt_1_1index__from__shape-members.html | 108 + structxt_1_1index__from__shape.html | 140 + ...txt_1_1initializer__dimension-members.html | 108 + structxt_1_1initializer__dimension.html | 148 + structxt_1_1inner__aligned__mode.html | 111 + structxt_1_1inner__reference-members.html | 109 + structxt_1_1inner__reference.html | 160 + structxt_1_1invalid__type.html | 111 + structxt_1_1is__chunked__t.html | 118 + structxt_1_1is__chunked__t.png | Bin 0 -> 712 bytes structxt_1_1is__contiguous__container.html | 118 + structxt_1_1is__contiguous__container.png | Bin 0 -> 712 bytes ...tor_3_01_st_00_01_s_00_01_l_01_4_01_4.html | 118 + ...ator_3_01_st_00_01_s_00_01_l_01_4_01_4.png | Bin 0 -> 943 bytes ...r__adaptor_3_01_i_00_01_c_i_01_4_01_4.html | 121 + ...or__adaptor_3_01_i_00_01_c_i_01_4_01_4.png | Bin 0 -> 1451 bytes ...r__adaptor_3_01_c_00_01_i_g_01_4_01_4.html | 121 + ...er__adaptor_3_01_c_00_01_i_g_01_4_01_4.png | Bin 0 -> 1624 bytes structxt_1_1is__evaluation__strategy.html | 118 + structxt_1_1is__evaluation__strategy.png | Bin 0 -> 1090 bytes structxt_1_1is__indexed__stepper-members.html | 108 + structxt_1_1is__indexed__stepper.html | 148 + ...pper_3_01_t_00_01_b_01_4_01_4-members.html | 108 + ...xed__stepper_3_01_t_00_01_b_01_4_01_4.html | 148 + structxt_1_1is__iterator.html | 118 + structxt_1_1is__iterator.png | Bin 0 -> 663 bytes ..._01_41da12c429c255d2c81e18d875fbe6e98.html | 118 + ...e_01_41da12c429c255d2c81e18d875fbe6e98.png | Bin 0 -> 2143 bytes ..._1_1is__narrowing__conversion-members.html | 110 + structxt_1_1is__narrowing__conversion.html | 197 + structxt_1_1is__not__xdummy__iterator.html | 118 + structxt_1_1is__not__xdummy__iterator.png | Bin 0 -> 717 bytes ...tor_3_01is__const_00_01_c_t_01_4_01_4.html | 118 + ...ator_3_01is__const_00_01_c_t_01_4_01_4.png | Bin 0 -> 984 bytes structxt_1_1is__reducer__options.html | 121 + structxt_1_1is__reducer__options.png | Bin 0 -> 1393 bytes structxt_1_1is__reducer__options__impl.html | 118 + structxt_1_1is__reducer__options__impl.png | Bin 0 -> 729 bytes ...01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html | 118 + ..._01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.png | Bin 0 -> 919 bytes structxt_1_1is__xoptional__expression.html | 118 + structxt_1_1is__xoptional__expression.png | Bin 0 -> 1167 bytes structxt_1_1is__xtensor__expression.html | 118 + structxt_1_1is__xtensor__expression.png | Bin 0 -> 1116 bytes structxt_1_1keep__dims__type.html | 117 + structxt_1_1keep__dims__type.png | Bin 0 -> 601 bytes structxt_1_1make__invalid__type-members.html | 108 + structxt_1_1make__invalid__type.html | 140 + structxt_1_1make__void-members.html | 108 + structxt_1_1make__void.html | 140 + structxt_1_1math_1_1abs__fun-members.html | 109 + structxt_1_1math_1_1abs__fun.html | 185 + structxt_1_1math_1_1acos__fun-members.html | 109 + structxt_1_1math_1_1acos__fun.html | 185 + structxt_1_1math_1_1acosh__fun-members.html | 109 + structxt_1_1math_1_1acosh__fun.html | 185 + structxt_1_1math_1_1arg__fun-members.html | 109 + structxt_1_1math_1_1arg__fun.html | 185 + structxt_1_1math_1_1asin__fun-members.html | 109 + structxt_1_1math_1_1asin__fun.html | 185 + structxt_1_1math_1_1asinh__fun-members.html | 109 + structxt_1_1math_1_1asinh__fun.html | 185 + structxt_1_1math_1_1atan2__fun-members.html | 109 + structxt_1_1math_1_1atan2__fun.html | 205 + structxt_1_1math_1_1atan__fun-members.html | 109 + structxt_1_1math_1_1atan__fun.html | 185 + structxt_1_1math_1_1atanh__fun-members.html | 109 + structxt_1_1math_1_1atanh__fun.html | 185 + structxt_1_1math_1_1cbrt__fun-members.html | 109 + structxt_1_1math_1_1cbrt__fun.html | 185 + structxt_1_1math_1_1ceil__fun-members.html | 109 + structxt_1_1math_1_1ceil__fun.html | 185 + structxt_1_1math_1_1clamp__fun-members.html | 109 + structxt_1_1math_1_1clamp__fun.html | 217 + ...xt_1_1math_1_1conj__impl__fun-members.html | 109 + structxt_1_1math_1_1conj__impl__fun.html | 185 + structxt_1_1math_1_1cos__fun-members.html | 109 + structxt_1_1math_1_1cos__fun.html | 185 + structxt_1_1math_1_1cosh__fun-members.html | 109 + structxt_1_1math_1_1cosh__fun.html | 185 + structxt_1_1math_1_1deg2rad-members.html | 111 + structxt_1_1math_1_1deg2rad.html | 251 + structxt_1_1math_1_1erf__fun-members.html | 109 + structxt_1_1math_1_1erf__fun.html | 185 + structxt_1_1math_1_1erfc__fun-members.html | 109 + structxt_1_1math_1_1erfc__fun.html | 185 + structxt_1_1math_1_1exp2__fun-members.html | 109 + structxt_1_1math_1_1exp2__fun.html | 185 + structxt_1_1math_1_1exp__fun-members.html | 109 + structxt_1_1math_1_1exp__fun.html | 185 + structxt_1_1math_1_1expm1__fun-members.html | 109 + structxt_1_1math_1_1expm1__fun.html | 185 + structxt_1_1math_1_1fabs__fun-members.html | 109 + structxt_1_1math_1_1fabs__fun.html | 185 + structxt_1_1math_1_1fdim__fun-members.html | 109 + structxt_1_1math_1_1fdim__fun.html | 205 + structxt_1_1math_1_1floor__fun-members.html | 109 + structxt_1_1math_1_1floor__fun.html | 185 + structxt_1_1math_1_1fma__fun-members.html | 109 + structxt_1_1math_1_1fma__fun.html | 217 + structxt_1_1math_1_1fmax__fun-members.html | 109 + structxt_1_1math_1_1fmax__fun.html | 205 + structxt_1_1math_1_1fmin__fun-members.html | 109 + structxt_1_1math_1_1fmin__fun.html | 205 + structxt_1_1math_1_1fmod__fun-members.html | 109 + structxt_1_1math_1_1fmod__fun.html | 205 + structxt_1_1math_1_1hypot__fun-members.html | 109 + structxt_1_1math_1_1hypot__fun.html | 205 + ...ctxt_1_1math_1_1isfinite__fun-members.html | 109 + structxt_1_1math_1_1isfinite__fun.html | 185 + structxt_1_1math_1_1isinf__fun-members.html | 109 + structxt_1_1math_1_1isinf__fun.html | 185 + structxt_1_1math_1_1isnan__fun-members.html | 109 + structxt_1_1math_1_1isnan__fun.html | 185 + structxt_1_1math_1_1lgamma__fun-members.html | 109 + structxt_1_1math_1_1lgamma__fun.html | 185 + structxt_1_1math_1_1log10__fun-members.html | 109 + structxt_1_1math_1_1log10__fun.html | 185 + structxt_1_1math_1_1log1p__fun-members.html | 109 + structxt_1_1math_1_1log1p__fun.html | 185 + structxt_1_1math_1_1log2__fun-members.html | 109 + structxt_1_1math_1_1log2__fun.html | 185 + structxt_1_1math_1_1log__fun-members.html | 109 + structxt_1_1math_1_1log__fun.html | 185 + structxt_1_1math_1_1maximum-members.html | 109 + structxt_1_1math_1_1maximum.html | 210 + structxt_1_1math_1_1minimum-members.html | 109 + structxt_1_1math_1_1minimum.html | 210 + ...txt_1_1math_1_1nearbyint__fun-members.html | 109 + structxt_1_1math_1_1nearbyint__fun.html | 185 + structxt_1_1math_1_1norm__fun-members.html | 109 + structxt_1_1math_1_1norm__fun.html | 185 + structxt_1_1math_1_1pow__fun-members.html | 109 + structxt_1_1math_1_1pow__fun.html | 205 + structxt_1_1math_1_1rad2deg-members.html | 111 + structxt_1_1math_1_1rad2deg.html | 251 + ...txt_1_1math_1_1remainder__fun-members.html | 109 + structxt_1_1math_1_1remainder__fun.html | 205 + structxt_1_1math_1_1rint__fun-members.html | 109 + structxt_1_1math_1_1rint__fun.html | 185 + structxt_1_1math_1_1round__fun-members.html | 109 + structxt_1_1math_1_1round__fun.html | 185 + structxt_1_1math_1_1sign__fun-members.html | 108 + structxt_1_1math_1_1sign__fun.html | 152 + structxt_1_1math_1_1sign__impl-members.html | 110 + structxt_1_1math_1_1sign__impl.html | 225 + ...onal_3_01_t_00_01_b_01_4_01_4-members.html | 108 + ...1_1xoptional_3_01_t_00_01_b_01_4_01_4.html | 152 + structxt_1_1math_1_1sin__fun-members.html | 109 + structxt_1_1math_1_1sin__fun.html | 185 + structxt_1_1math_1_1sinh__fun-members.html | 109 + structxt_1_1math_1_1sinh__fun.html | 185 + structxt_1_1math_1_1sqrt__fun-members.html | 109 + structxt_1_1math_1_1sqrt__fun.html | 185 + structxt_1_1math_1_1tan__fun-members.html | 109 + structxt_1_1math_1_1tan__fun.html | 185 + structxt_1_1math_1_1tanh__fun-members.html | 109 + structxt_1_1math_1_1tanh__fun.html | 185 + structxt_1_1math_1_1tgamma__fun-members.html | 109 + structxt_1_1math_1_1tgamma__fun.html | 185 + structxt_1_1math_1_1trunc__fun-members.html | 109 + structxt_1_1math_1_1trunc__fun.html | 185 + structxt_1_1meta__identity-members.html | 108 + structxt_1_1meta__identity.html | 140 + structxt_1_1missing__type.html | 111 + ..._1_1nested__initializer__list-members.html | 108 + structxt_1_1nested__initializer__list.html | 140 + ...izer__list_3_01_t_00_010_01_4-members.html | 108 + ..._initializer__list_3_01_t_00_010_01_4.html | 140 + structxt_1_1no__ownership.html | 111 + structxt_1_1norm__type-members.html | 109 + structxt_1_1norm__type.html | 211 + structxt_1_1norm__type.png | Bin 0 -> 756 bytes structxt_1_1numeric__constants-members.html | 119 + structxt_1_1numeric__constants.html | 456 + ...tions_1_1print__options__impl-members.html | 111 + ...rint__options_1_1print__options__impl.html | 191 + structxt_1_1promote__shape-members.html | 108 + structxt_1_1promote__shape.html | 140 + structxt_1_1promote__strides-members.html | 108 + structxt_1_1promote__strides.html | 140 + structxt_1_1rebind__container.html | 112 + ...01_c_3_01_t_00_01_a_01_4_01_4-members.html | 110 + ...01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html | 180 + ...01_c_3_01_t_00_01_n_01_4_01_4-members.html | 108 + ...01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html | 140 + ...1_n_00_01_a_00_01_b_01_4_01_4-members.html | 110 + ...1_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html | 180 + structxt_1_1reducer__options-members.html | 117 + structxt_1_1reducer__options.html | 381 + structxt_1_1reducer__options.js | 6 + ..._1reducer__options_1_1initial__tester.html | 119 + ...1_1reducer__options_1_1initial__tester.png | Bin 0 -> 913 bytes ...3_01const_01xinitial_3_01_x_01_4_01_4.html | 119 + ..._3_01const_01xinitial_3_01_x_01_4_01_4.png | Bin 0 -> 1041 bytes ..._tester_3_01xinitial_3_01_x_01_4_01_4.html | 119 + ...__tester_3_01xinitial_3_01_x_01_4_01_4.png | Bin 0 -> 996 bytes structxt_1_1remove__class.html | 112 + ...07_args_8_8_8_08_01const_01_4-members.html | 108 + ..._1_5_08_07_args_8_8_8_08_01const_01_4.html | 140 + ...c_1_1_5_08_07_args_8_8_8_08_4-members.html | 108 + ...01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html | 140 + ...1_1select__dim__mapping__type-members.html | 108 + structxt_1_1select__dim__mapping__type.html | 140 + ..._shape_3_01_i_8_8_8_01_4_01_4-members.html | 108 + ...01fixed__shape_3_01_i_8_8_8_01_4_01_4.html | 140 + ...txt_1_1select__iterable__base-members.html | 108 + structxt_1_1select__iterable__base.html | 140 + structxt_1_1select__layout-members.html | 110 + structxt_1_1select__layout.html | 214 + structxt_1_1squared__norm__type-members.html | 109 + structxt_1_1squared__norm__type.html | 215 + structxt_1_1squared__norm__type.png | Bin 0 -> 819 bytes structxt_1_1static__dimension-members.html | 108 + structxt_1_1static__dimension.html | 148 + structxt_1_1static__string-members.html | 111 + structxt_1_1static__string.html | 233 + structxt_1_1stepper__tools-members.html | 119 + structxt_1_1stepper__tools.html | 468 + ...il_1_1check__strides__functor-members.html | 113 + ...gn__detail_1_1check__strides__functor.html | 318 + ...strided__assign__detail_1_1idx__tools.html | 112 + ...t__type_1_1column__major_01_4-members.html | 109 + ..._01layout__type_1_1column__major_01_4.html | 211 + ...yout__type_1_1row__major_01_4-members.html | 109 + ...s_3_01layout__type_1_1row__major_01_4.html | 211 + structxt_1_1temporary__container-members.html | 108 + structxt_1_1temporary__container.html | 140 + ...c_p_00_01_o_00_01_a_01_4_01_4-members.html | 108 + ...or_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html | 140 + ...or_3_01_i_00_01_c_i_01_4_01_4-members.html | 108 + ...r__adaptor_3_01_i_00_01_c_i_01_4_01_4.html | 140 + ...or_3_01_c_00_01_i_g_01_4_01_4-members.html | 108 + ...r__adaptor_3_01_c_00_01_i_g_01_4_01_4.html | 140 + structxt_1_1temporary__type-members.html | 108 + structxt_1_1temporary__type.html | 140 + ..._1_1temporary__type_01_4_01_4-members.html | 108 + ...1_t_01_4_1_1temporary__type_01_4_01_4.html | 140 + structxt_1_1temporary__type__from__tag.html | 112 + ..._expression__tag_00_01_t_01_4-members.html | 112 + ...xtensor__expression__tag_00_01_t_01_4.html | 233 + structxt_1_1tracking__allocator-members.html | 117 + structxt_1_1tracking__allocator.html | 329 + structxt_1_1tracking__allocator.js | 4 + structxt_1_1tracking__allocator.png | Bin 0 -> 618 bytes ...tracking__allocator_1_1rebind-members.html | 109 + ...ctxt_1_1tracking__allocator_1_1rebind.html | 165 + ...il_1_1norm__of__array__elements__impl.html | 112 + ..._t_00_01false_00_01false_01_4-members.html | 109 + ...mpl_3_01_t_00_01false_00_01false_01_4.html | 160 + ...1_t_00_01false_00_01true_01_4-members.html | 109 + ...impl_3_01_t_00_01false_00_01true_01_4.html | 160 + ...1_t_00_01true_00_01false_01_4-members.html | 109 + ...impl_3_01_t_00_01true_00_01false_01_4.html | 160 + ...ble_00_01false_00_01true_01_4-members.html | 109 + ...ng_01double_00_01false_00_01true_01_4.html | 155 + ..._5_00_01false_00_01false_01_4-members.html | 109 + ...1void_01_5_00_01false_00_01false_01_4.html | 155 + ...its__detail_1_1norm__of__scalar__impl.html | 112 + ...__impl_3_01_t_00_01false_01_4-members.html | 110 + ...__scalar__impl_3_01_t_00_01false_01_4.html | 193 + ...r__impl_3_01_t_00_01true_01_4-members.html | 110 + ...f__scalar__impl_3_01_t_00_01true_01_4.html | 193 + ...ail_1_1norm__of__vector__impl-members.html | 113 + ...its__detail_1_1norm__of__vector__impl.html | 224 + ...s__detail_1_1norm__type__base-members.html | 111 + ...1_1traits__detail_1_1norm__type__base.html | 213 + structxt_1_1tuple__idx__of-members.html | 108 + structxt_1_1tuple__idx__of.html | 148 + structxt_1_1tuple__idx__of__impl.html | 112 + ...t_00_01_types_8_8_8_01_4_01_4-members.html | 108 + ...le_3_01_t_00_01_types_8_8_8_01_4_01_4.html | 148 + ...u_00_01_types_8_8_8_01_4_01_4-members.html | 108 + ...le_3_01_u_00_01_types_8_8_8_01_4_01_4.html | 148 + ..._t_00_01std_1_1tuple_3_4_01_4-members.html | 108 + ..._i_00_01_t_00_01std_1_1tuple_3_4_01_4.html | 148 + ...ctxt_1_1view__temporary__type-members.html | 108 + structxt_1_1view__temporary__type.html | 140 + ...ctxt_1_1xaccumulator__functor-members.html | 115 + structxt_1_1xaccumulator__functor.html | 340 + structxt_1_1xaccumulator__functor.png | Bin 0 -> 1364 bytes structxt_1_1xall__tag-members.html | 108 + structxt_1_1xall__tag.html | 151 + structxt_1_1xclosure-members.html | 108 + structxt_1_1xclosure.html | 140 + ...ecay__t_3_01_e_01_4_01_4_01_4-members.html | 108 + ...std_1_1decay__t_3_01_e_01_4_01_4_01_4.html | 140 + ...ble__if__t_3_01true_01_4_01_4-members.html | 108 + ...d_1_1enable__if__t_3_01true_01_4_01_4.html | 140 + structxt_1_1xcontainer__inner__types.html | 112 + ...00_01_s_c_00_01_tag_01_4_01_4-members.html | 119 + ...00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html | 373 + ...00_01_s_c_00_01_tag_01_4_01_4-members.html | 119 + ...00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html | 373 + ...st_3_01_c_t_00_01_x_01_4_01_4-members.html | 111 + ...xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html | 200 + ..._3_01chunk__storage_01_4_01_4-members.html | 113 + ...d__array_3_01chunk__storage_01_4_01_4.html | 240 + ...00_01_l_00_01_f_s_t_01_4_01_4-members.html | 118 + ...00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html | 353 + ...00_01_s_h_00_01_tag_01_4_01_4-members.html | 119 + ...00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html | 373 + ...00_01_s_h_00_01_tag_01_4_01_4-members.html | 119 + ...00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html | 373 + ...1_f_00_01_c_t_8_8_8_01_4_01_4-members.html | 112 + ...tion_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html | 220 + ...or_3_01_f_00_01_c_t_01_4_01_4-members.html | 114 + ...r__adaptor_3_01_f_00_01_c_t_01_4_01_4.html | 260 + ...ew_3_01_f_00_01_c_t_01_4_01_4-members.html | 114 + ...ctor__view_3_01_f_00_01_c_t_01_4_01_4.html | 260 + ...1_c_00_01_r_00_01_s_01_4_01_4-members.html | 110 + ...ator_3_01_c_00_01_r_00_01_s_01_4_01_4.html | 180 + ...ew_3_01_c_t_00_01_i_01_4_01_4-members.html | 109 + ...ndex__view_3_01_c_t_00_01_i_01_4_01_4.html | 160 + ...1_c_t_d_00_01_c_t_m_01_4_01_4-members.html | 118 + ...view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html | 340 + ..._3_01_v_e_00_01_f_e_01_4_01_4-members.html | 113 + ...assembly_3_01_v_e_00_01_f_e_01_4_01_4.html | 240 + ...1_v_e_c_00_01_f_e_c_01_4_01_4-members.html | 113 + ...ptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html | 240 + ...c_t_00_01_x_00_01_o_01_4_01_4-members.html | 117 + ...f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html | 320 + ...at_3_01_c_t_00_01_r_01_4_01_4-members.html | 115 + ..._01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html | 293 + ..._01xscalar_3_01_c_t_01_4_01_4-members.html | 111 + ..._types_3_01xscalar_3_01_c_t_01_4_01_4.html | 200 + ...00_01_l_00_01_f_s_t_01_4_01_4-members.html | 119 + ...00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html | 373 + ...n_00_01_l_00_01_tag_01_4_01_4-members.html | 119 + ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 373 + ...n_00_01_l_00_01_tag_01_4_01_4-members.html | 119 + ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 373 + ...n_00_01_l_00_01_tag_01_4_01_4-members.html | 119 + ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 373 + ...1_c_t_00_01_s_8_8_8_01_4_01_4-members.html | 116 + ...view_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html | 325 + ..._1xcontainer__iterable__types-members.html | 110 + structxt_1_1xcontainer__iterable__types.html | 180 + structxt_1_1xcsv__config-members.html | 112 + structxt_1_1xcsv__config.html | 219 + structxt_1_1xellipsis__tag-members.html | 108 + structxt_1_1xellipsis__tag.html | 151 + structxt_1_1xexpression__tag-members.html | 108 + structxt_1_1xexpression__tag.html | 140 + structxt_1_1xfunction__cache.html | 118 + structxt_1_1xfunction__cache.png | Bin 0 -> 1055 bytes ...unctor__view__temporary__type-members.html | 108 + ...xt_1_1xfunctor__view__temporary__type.html | 140 + structxt_1_1xinitial-members.html | 110 + structxt_1_1xinitial.html | 215 + structxt_1_1xinitial.png | Bin 0 -> 546 bytes structxt_1_1xiterable__inner__types.html | 112 + ...00_01_s_c_00_01_tag_01_4_01_4-members.html | 106 + ...00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html | 134 + ..._00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png | Bin 0 -> 1433 bytes ...00_01_s_c_00_01_tag_01_4_01_4-members.html | 106 + ...00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html | 134 + ..._00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png | Bin 0 -> 1434 bytes ...st_3_01_c_t_00_01_x_01_4_01_4-members.html | 111 + ...xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html | 200 + ..._3_01chunk__storage_01_4_01_4-members.html | 111 + ...d__array_3_01chunk__storage_01_4_01_4.html | 200 + ...00_01_l_00_01_f_s_t_01_4_01_4-members.html | 112 + ...00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html | 220 + ...00_01_s_h_00_01_tag_01_4_01_4-members.html | 106 + ...00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html | 134 + ..._00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png | Bin 0 -> 1469 bytes ...00_01_s_h_00_01_tag_01_4_01_4-members.html | 106 + ...00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html | 134 + ..._00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png | Bin 0 -> 1448 bytes ...1_f_00_01_c_t_8_8_8_01_4_01_4-members.html | 110 + ...tion_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html | 180 + ...1_c_00_01_r_00_01_s_01_4_01_4-members.html | 110 + ...ator_3_01_c_00_01_r_00_01_s_01_4_01_4.html | 180 + ...ew_3_01_c_t_00_01_i_01_4_01_4-members.html | 110 + ...ndex__view_3_01_c_t_00_01_i_01_4_01_4.html | 180 + ...1_c_t_d_00_01_c_t_m_01_4_01_4-members.html | 111 + ...view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html | 200 + ..._3_01_v_e_00_01_f_e_01_4_01_4-members.html | 111 + ...assembly_3_01_v_e_00_01_f_e_01_4_01_4.html | 200 + ...1_v_e_c_00_01_f_e_c_01_4_01_4-members.html | 111 + ...ptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html | 200 + ...c_t_00_01_x_00_01_o_01_4_01_4-members.html | 111 + ...f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html | 200 + ...at_3_01_c_t_00_01_r_01_4_01_4-members.html | 112 + ..._01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html | 220 + ..._01xscalar_3_01_c_t_01_4_01_4-members.html | 112 + ..._types_3_01xscalar_3_01_c_t_01_4_01_4.html | 220 + ...00_01_l_00_01_f_s_t_01_4_01_4-members.html | 112 + ...00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html | 220 + ...n_00_01_l_00_01_tag_01_4_01_4-members.html | 106 + ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 134 + ..._c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png | Bin 0 -> 1385 bytes ...n_00_01_l_00_01_tag_01_4_01_4-members.html | 106 + ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 134 + ..._c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png | Bin 0 -> 1378 bytes ...n_00_01_l_00_01_tag_01_4_01_4-members.html | 106 + ...c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html | 134 + ..._c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png | Bin 0 -> 1355 bytes ...1_c_t_00_01_s_8_8_8_01_4_01_4-members.html | 113 + ...view_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html | 261 + structxt_1_1xnewaxis__tag-members.html | 108 + structxt_1_1xnewaxis__tag.html | 151 + ...bly__linear__iterator__traits-members.html | 113 + ...l__assembly__linear__iterator__traits.html | 240 + ...ctxt_1_1xoptional__comparable-members.html | 106 + structxt_1_1xoptional__comparable.html | 130 + structxt_1_1xoptional__comparable.png | Bin 0 -> 1369 bytes structxt_1_1xoptional__expression__tag.html | 111 + structxt_1_1xproxy__inner__types-members.html | 109 + structxt_1_1xproxy__inner__types.html | 160 + structxt_1_1xrange__adaptor-members.html | 119 + structxt_1_1xrange__adaptor.html | 542 + structxt_1_1xreducer__functors-members.html | 122 + structxt_1_1xreducer__functors.html | 562 + structxt_1_1xreducer__functors.png | Bin 0 -> 1312 bytes ...ctxt_1_1xreducer__shape__type-members.html | 108 + structxt_1_1xreducer__shape__type.html | 140 + ..._01_j_8_8_8_01_4_00_01_o_01_4-members.html | 108 + ..._shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html | 140 + ..._i2_0113732d5b63b22c20cb89d3a7b591d8f.html | 140 + ..._i2_027fcc88fe66eb75490a0dba142ef545f.html | 108 + ..._i2_02aafc87a49290e02ea3938a932d6c334.html | 109 + ..._i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html | 180 + ...3_01_9c73ff706755e2a1205ad25fb933e4d8.html | 108 + ...3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html | 140 + ...3_01_dd68458bef343598f52e1cee8de7e66e.html | 108 + ...3_01_f0fe2e231e25d4e5852b877ba4b36e02.html | 140 + structxt_1_1xtensor__expression__tag.html | 111 + structxt_1_1xview__shape__type-members.html | 108 + structxt_1_1xview__shape__type.html | 140 + ...8_8_8_01_4_00_01_s_8_8_8_01_4-members.html | 108 + ..._3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html | 140 + ..._01_l_01_4_00_01_s_8_8_8_01_4-members.html | 108 + ..._01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html | 140 + structxt__simd_1_1aligned__mode.html | 111 + ..._simd_1_1allocator__alignment-members.html | 108 + structxt__simd_1_1allocator__alignment.html | 140 + ..._simd_1_1container__alignment-members.html | 108 + structxt__simd_1_1container__alignment.html | 140 + structxt__simd_1_1is__batch__bool.html | 118 + structxt__simd_1_1is__batch__bool.png | Bin 0 -> 677 bytes structxt__simd_1_1is__batch__complex.html | 118 + structxt__simd_1_1is__batch__complex.png | Bin 0 -> 723 bytes ..._simd_1_1revert__simd__traits-members.html | 109 + structxt__simd_1_1revert__simd__traits.html | 173 + structxt__simd_1_1simd__condition.html | 118 + structxt__simd_1_1simd__condition.png | Bin 0 -> 706 bytes structxt__simd_1_1simd__traits-members.html | 111 + structxt__simd_1_1simd__traits.html | 213 + structxt__simd_1_1unaligned__mode.html | 111 + structxtl_1_1conjunction-members.html | 108 + structxtl_1_1conjunction.html | 148 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_ad.png | Bin 0 -> 135 bytes tab_b.png | Bin 0 -> 169 bytes tab_bd.png | Bin 0 -> 173 bytes tab_h.png | Bin 0 -> 177 bytes tab_hd.png | Bin 0 -> 180 bytes tab_s.png | Bin 0 -> 184 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 1 + topics.html | 133 + topics.js | 28 + xaccessible_8hpp_source.html | 454 + xaccumulator_8hpp_source.html | 475 + xadapt_8hpp_source.html | 590 + xarray_8hpp_source.html | 707 + xassign_8hpp_source.html | 1515 ++ xaxis__iterator_8hpp_source.html | 397 + xaxis__slice__iterator_8hpp_source.html | 417 + xblockwise__reducer_8hpp_source.html | 650 + ...ckwise__reducer__functors_8hpp_source.html | 630 + xbroadcast_8hpp_source.html | 517 + xbuffer__adaptor_8hpp_source.html | 1436 ++ xbuilder_8hpp_source.html | 1179 + xchunked__array_8hpp_source.html | 770 + xchunked__assign_8hpp_source.html | 508 + xchunked__view_8hpp_source.html | 416 + xcomplex_8hpp_source.html | 346 + xcontainer_8hpp_source.html | 1234 + xcsv_8hpp_source.html | 385 + xdynamic__view_8hpp_source.html | 972 + xeval_8hpp_source.html | 244 + xexception_8hpp_source.html | 496 + xexpression_8hpp_source.html | 903 + xexpression__holder_8hpp_source.html | 386 + xexpression__traits_8hpp_source.html | 342 + xfixed_8hpp_source.html | 1047 + xfunction_8hpp_source.html | 1242 + xfunctor__view_8hpp_source.html | 1633 ++ xgenerator_8hpp_source.html | 580 + xhistogram_8hpp_source.html | 624 + xindex__view_8hpp_source.html | 816 + xinfo_8hpp_source.html | 260 + xio_8hpp_source.html | 882 + xiterable_8hpp_source.html | 1238 + xiterator_8hpp_source.html | 1448 ++ xjson_8hpp_source.html | 279 + xlayout_8hpp_source.html | 204 + xmanipulation_8hpp_source.html | 1088 + xmasked__view_8hpp_source.html | 725 + xmath_8hpp_source.html | 2699 ++ xmime_8hpp_source.html | 544 + xmultiindex__iterator_8hpp_source.html | 245 + xnoalias_8hpp_source.html | 345 + xnorm_8hpp_source.html | 655 + xnpy_8hpp_source.html | 902 + xoffset__view_8hpp_source.html | 206 + xoperation_8hpp_source.html | 827 + xoptional_8hpp_source.html | 1603 ++ xoptional__assembly_8hpp_source.html | 784 + xoptional__assembly__base_8hpp_source.html | 1083 + xoptional__assembly__storage_8hpp_source.html | 694 + xpad_8hpp_source.html | 391 + xrandom_8hpp_source.html | 861 + xreducer_8hpp_source.html | 2021 ++ xrepeat_8hpp_source.html | 787 + xscalar_8hpp_source.html | 1252 + xsemantic_8hpp_source.html | 761 + xset__operation_8hpp_source.html | 271 + xshape_8hpp_source.html | 675 + xslice_8hpp_source.html | 1758 ++ xsort_8hpp_source.html | 1292 + xstorage_8hpp_source.html | 2107 ++ xstrided__view_8hpp_source.html | 958 + xstrided__view__base_8hpp_source.html | 1053 + xstrides_8hpp_source.html | 988 + xtensor_8hpp_source.html | 997 + xtensor__config_8hpp_source.html | 250 + xtensor__forward_8hpp_source.html | 249 + xtensor__simd_8hpp_source.html | 501 + xutils_8hpp_source.html | 1197 + xvectorize_8hpp_source.html | 219 + xview_8hpp_source.html | 2358 ++ xview__utils_8hpp_source.html | 400 + 1479 files changed, 356252 insertions(+) create mode 100644 .nojekyll create mode 100644 _formulas.tex create mode 100644 _formulas_dark.tex create mode 100644 annotated.html create mode 100644 annotated_dup.js create mode 100644 bc_s.png create mode 100644 bc_sd.png create mode 100644 classes.html create mode 100644 classxt_1_1aligned__array-members.html create mode 100644 classxt_1_1aligned__array.html create mode 100644 classxt_1_1aligned__array.png create mode 100644 classxt_1_1broadcast__error-members.html create mode 100644 classxt_1_1broadcast__error.html create mode 100644 classxt_1_1broadcast__error.png create mode 100644 classxt_1_1concatenate__error-members.html create mode 100644 classxt_1_1concatenate__error.html create mode 100644 classxt_1_1concatenate__error.png create mode 100644 classxt_1_1extension_1_1xbroadcast__optional-members.html create mode 100644 classxt_1_1extension_1_1xbroadcast__optional.html create mode 100644 classxt_1_1extension_1_1xbroadcast__optional.png create mode 100644 classxt_1_1extension_1_1xcontainer__optional__base-members.html create mode 100644 classxt_1_1extension_1_1xcontainer__optional__base.html create mode 100644 classxt_1_1extension_1_1xcontainer__optional__base.png create mode 100644 classxt_1_1extension_1_1xdynamic__view__optional-members.html create mode 100644 classxt_1_1extension_1_1xdynamic__view__optional.html create mode 100644 classxt_1_1extension_1_1xdynamic__view__optional.png create mode 100644 classxt_1_1extension_1_1xfunction__optional__base-members.html create mode 100644 classxt_1_1extension_1_1xfunction__optional__base.html create mode 100644 classxt_1_1extension_1_1xfunction__optional__base.png create mode 100644 classxt_1_1extension_1_1xfunctor__view__optional-members.html create mode 100644 classxt_1_1extension_1_1xfunctor__view__optional.html create mode 100644 classxt_1_1extension_1_1xfunctor__view__optional.png create mode 100644 classxt_1_1extension_1_1xgenerator__optional-members.html create mode 100644 classxt_1_1extension_1_1xgenerator__optional.html create mode 100644 classxt_1_1extension_1_1xgenerator__optional.png create mode 100644 classxt_1_1extension_1_1xindex__view__optional-members.html create mode 100644 classxt_1_1extension_1_1xindex__view__optional.html create mode 100644 classxt_1_1extension_1_1xindex__view__optional.png create mode 100644 classxt_1_1extension_1_1xoptional__empty__base-members.html create mode 100644 classxt_1_1extension_1_1xoptional__empty__base.html create mode 100644 classxt_1_1extension_1_1xreducer__optional-members.html create mode 100644 classxt_1_1extension_1_1xreducer__optional.html create mode 100644 classxt_1_1extension_1_1xreducer__optional.png create mode 100644 classxt_1_1extension_1_1xrepeat__optional-members.html create mode 100644 classxt_1_1extension_1_1xrepeat__optional.html create mode 100644 classxt_1_1extension_1_1xrepeat__optional.png create mode 100644 classxt_1_1extension_1_1xscalar__optional__base-members.html create mode 100644 classxt_1_1extension_1_1xscalar__optional__base.html create mode 100644 classxt_1_1extension_1_1xscalar__optional__base.png create mode 100644 classxt_1_1extension_1_1xstrided__view__optional-members.html create mode 100644 classxt_1_1extension_1_1xstrided__view__optional.html create mode 100644 classxt_1_1extension_1_1xstrided__view__optional.png create mode 100644 classxt_1_1extension_1_1xview__optional-members.html create mode 100644 classxt_1_1extension_1_1xview__optional.html create mode 100644 classxt_1_1extension_1_1xview__optional.png create mode 100644 classxt_1_1fixed__shape-members.html create mode 100644 classxt_1_1fixed__shape.html create mode 100644 classxt_1_1linear__assigner-members.html create mode 100644 classxt_1_1linear__assigner.html create mode 100644 classxt_1_1linear__assigner_3_01false_01_4-members.html create mode 100644 classxt_1_1linear__assigner_3_01false_01_4.html create mode 100644 classxt_1_1noalias__proxy-members.html create mode 100644 classxt_1_1noalias__proxy.html create mode 100644 classxt_1_1print__options_1_1edge__items-members.html create mode 100644 classxt_1_1print__options_1_1edge__items.html create mode 100644 classxt_1_1print__options_1_1line__width-members.html create mode 100644 classxt_1_1print__options_1_1line__width.html create mode 100644 classxt_1_1print__options_1_1precision-members.html create mode 100644 classxt_1_1print__options_1_1precision.html create mode 100644 classxt_1_1print__options_1_1threshold-members.html create mode 100644 classxt_1_1print__options_1_1threshold.html create mode 100644 classxt_1_1sequence__view-members.html create mode 100644 classxt_1_1sequence__view.html create mode 100644 classxt_1_1stepper__assigner-members.html create mode 100644 classxt_1_1stepper__assigner.html create mode 100644 classxt_1_1strided__loop__assigner-members.html create mode 100644 classxt_1_1strided__loop__assigner.html create mode 100644 classxt_1_1svector-members.html create mode 100644 classxt_1_1svector.html create mode 100644 classxt_1_1transpose__error-members.html create mode 100644 classxt_1_1transpose__error.html create mode 100644 classxt_1_1transpose__error.png create mode 100644 classxt_1_1uvector-members.html create mode 100644 classxt_1_1uvector.html create mode 100644 classxt_1_1xaccessible-members.html create mode 100644 classxt_1_1xaccessible.html create mode 100644 classxt_1_1xaccessible.js create mode 100644 classxt_1_1xaccessible.png create mode 100644 classxt_1_1xall-members.html create mode 100644 classxt_1_1xall.html create mode 100644 classxt_1_1xall.png create mode 100644 classxt_1_1xarray__adaptor-members.html create mode 100644 classxt_1_1xarray__adaptor.html create mode 100644 classxt_1_1xarray__adaptor.js create mode 100644 classxt_1_1xarray__adaptor.png create mode 100644 classxt_1_1xarray__container-members.html create mode 100644 classxt_1_1xarray__container.html create mode 100644 classxt_1_1xarray__container.js create mode 100644 classxt_1_1xarray__container.png create mode 100644 classxt_1_1xassign__traits-members.html create mode 100644 classxt_1_1xassign__traits.html create mode 100644 classxt_1_1xaxis__iterator-members.html create mode 100644 classxt_1_1xaxis__iterator.html create mode 100644 classxt_1_1xaxis__iterator.js create mode 100644 classxt_1_1xaxis__slice__iterator-members.html create mode 100644 classxt_1_1xaxis__slice__iterator.html create mode 100644 classxt_1_1xaxis__slice__iterator.js create mode 100644 classxt_1_1xblockwise__reducer-members.html create mode 100644 classxt_1_1xblockwise__reducer.html create mode 100644 classxt_1_1xbounded__iterator-members.html create mode 100644 classxt_1_1xbounded__iterator.html create mode 100644 classxt_1_1xbounded__iterator.png create mode 100644 classxt_1_1xbroadcast-members.html create mode 100644 classxt_1_1xbroadcast.html create mode 100644 classxt_1_1xbroadcast.js create mode 100644 classxt_1_1xbroadcast.png create mode 100644 classxt_1_1xbuffer__adaptor-members.html create mode 100644 classxt_1_1xbuffer__adaptor.html create mode 100644 classxt_1_1xbuffer__adaptor.png create mode 100644 classxt_1_1xbuffer__adaptor__base-members.html create mode 100644 classxt_1_1xbuffer__adaptor__base.html create mode 100644 classxt_1_1xchunk__iterator-members.html create mode 100644 classxt_1_1xchunk__iterator.html create mode 100644 classxt_1_1xchunk__iterator.png create mode 100644 classxt_1_1xchunked__array-members.html create mode 100644 classxt_1_1xchunked__array.html create mode 100644 classxt_1_1xchunked__array.png create mode 100644 classxt_1_1xchunked__assigner-members.html create mode 100644 classxt_1_1xchunked__assigner.html create mode 100644 classxt_1_1xchunked__semantic-members.html create mode 100644 classxt_1_1xchunked__semantic.html create mode 100644 classxt_1_1xchunked__semantic.png create mode 100644 classxt_1_1xchunked__view-members.html create mode 100644 classxt_1_1xchunked__view.html create mode 100644 classxt_1_1xconst__accessible-members.html create mode 100644 classxt_1_1xconst__accessible.html create mode 100644 classxt_1_1xconst__accessible.js create mode 100644 classxt_1_1xconst__accessible.png create mode 100644 classxt_1_1xconst__iterable-members.html create mode 100644 classxt_1_1xconst__iterable.html create mode 100644 classxt_1_1xconst__iterable.js create mode 100644 classxt_1_1xconst__iterable.png create mode 100644 classxt_1_1xcontainer-members.html create mode 100644 classxt_1_1xcontainer.html create mode 100644 classxt_1_1xcontainer.js create mode 100644 classxt_1_1xcontainer.png create mode 100644 classxt_1_1xcontainer__semantic-members.html create mode 100644 classxt_1_1xcontainer__semantic.html create mode 100644 classxt_1_1xcontainer__semantic.js create mode 100644 classxt_1_1xcontainer__semantic.png create mode 100644 classxt_1_1xcontiguous__iterable-members.html create mode 100644 classxt_1_1xcontiguous__iterable.html create mode 100644 classxt_1_1xcontiguous__iterable.js create mode 100644 classxt_1_1xcontiguous__iterable.png create mode 100644 classxt_1_1xdrop__slice-members.html create mode 100644 classxt_1_1xdrop__slice.html create mode 100644 classxt_1_1xdrop__slice.png create mode 100644 classxt_1_1xdummy__iterator-members.html create mode 100644 classxt_1_1xdummy__iterator.html create mode 100644 classxt_1_1xdummy__iterator.png create mode 100644 classxt_1_1xdynamic__view-members.html create mode 100644 classxt_1_1xdynamic__view.html create mode 100644 classxt_1_1xdynamic__view.js create mode 100644 classxt_1_1xdynamic__view.png create mode 100644 classxt_1_1xexpression-members.html create mode 100644 classxt_1_1xexpression.html create mode 100644 classxt_1_1xexpression.js create mode 100644 classxt_1_1xexpression.png create mode 100644 classxt_1_1xexpression__assigner-members.html create mode 100644 classxt_1_1xexpression__assigner.html create mode 100644 classxt_1_1xexpression__assigner.png create mode 100644 classxt_1_1xexpression__assigner__base.html create mode 100644 classxt_1_1xexpression__assigner__base.png create mode 100644 classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4-members.html create mode 100644 classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html create mode 100644 classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4-members.html create mode 100644 classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html create mode 100644 classxt_1_1xexpression__holder-members.html create mode 100644 classxt_1_1xexpression__holder.html create mode 100644 classxt_1_1xfiltration-members.html create mode 100644 classxt_1_1xfiltration.html create mode 100644 classxt_1_1xfiltration.js create mode 100644 classxt_1_1xfixed__adaptor-members.html create mode 100644 classxt_1_1xfixed__adaptor.html create mode 100644 classxt_1_1xfixed__adaptor.js create mode 100644 classxt_1_1xfixed__adaptor.png create mode 100644 classxt_1_1xfixed__container-members.html create mode 100644 classxt_1_1xfixed__container.html create mode 100644 classxt_1_1xfixed__container.js create mode 100644 classxt_1_1xfixed__container.png create mode 100644 classxt_1_1xfunction-members.html create mode 100644 classxt_1_1xfunction.html create mode 100644 classxt_1_1xfunction.js create mode 100644 classxt_1_1xfunction.png create mode 100644 classxt_1_1xfunction__iterator-members.html create mode 100644 classxt_1_1xfunction__iterator.html create mode 100644 classxt_1_1xfunction__iterator.png create mode 100644 classxt_1_1xfunction__stepper-members.html create mode 100644 classxt_1_1xfunction__stepper.html create mode 100644 classxt_1_1xfunctor__adaptor-members.html create mode 100644 classxt_1_1xfunctor__adaptor.html create mode 100644 classxt_1_1xfunctor__adaptor.js create mode 100644 classxt_1_1xfunctor__adaptor.png create mode 100644 classxt_1_1xfunctor__applier__base-members.html create mode 100644 classxt_1_1xfunctor__applier__base.html create mode 100644 classxt_1_1xfunctor__applier__base.js create mode 100644 classxt_1_1xfunctor__applier__base.png create mode 100644 classxt_1_1xfunctor__iterator-members.html create mode 100644 classxt_1_1xfunctor__iterator.html create mode 100644 classxt_1_1xfunctor__iterator.png create mode 100644 classxt_1_1xfunctor__stepper-members.html create mode 100644 classxt_1_1xfunctor__stepper.html create mode 100644 classxt_1_1xfunctor__view-members.html create mode 100644 classxt_1_1xfunctor__view.html create mode 100644 classxt_1_1xfunctor__view.js create mode 100644 classxt_1_1xfunctor__view.png create mode 100644 classxt_1_1xgenerator-members.html create mode 100644 classxt_1_1xgenerator.html create mode 100644 classxt_1_1xgenerator.js create mode 100644 classxt_1_1xgenerator.png create mode 100644 classxt_1_1xindex__view-members.html create mode 100644 classxt_1_1xindex__view.html create mode 100644 classxt_1_1xindex__view.js create mode 100644 classxt_1_1xindex__view.png create mode 100644 classxt_1_1xindexed__stepper-members.html create mode 100644 classxt_1_1xindexed__stepper.html create mode 100644 classxt_1_1xiterable-members.html create mode 100644 classxt_1_1xiterable.html create mode 100644 classxt_1_1xiterable.js create mode 100644 classxt_1_1xiterable.png create mode 100644 classxt_1_1xiterator-members.html create mode 100644 classxt_1_1xiterator.html create mode 100644 classxt_1_1xiterator.png create mode 100644 classxt_1_1xiterator__adaptor-members.html create mode 100644 classxt_1_1xiterator__adaptor.html create mode 100644 classxt_1_1xiterator__adaptor.png create mode 100644 classxt_1_1xiterator__owner__adaptor-members.html create mode 100644 classxt_1_1xiterator__owner__adaptor.html create mode 100644 classxt_1_1xiterator__owner__adaptor.png create mode 100644 classxt_1_1xkeep__slice-members.html create mode 100644 classxt_1_1xkeep__slice.html create mode 100644 classxt_1_1xkeep__slice.png create mode 100644 classxt_1_1xmasked__value.html create mode 100644 classxt_1_1xmasked__view-members.html create mode 100644 classxt_1_1xmasked__view.html create mode 100644 classxt_1_1xmasked__view.js create mode 100644 classxt_1_1xmasked__view.png create mode 100644 classxt_1_1xmasked__view__stepper-members.html create mode 100644 classxt_1_1xmasked__view__stepper.html create mode 100644 classxt_1_1xmultiindex__iterator-members.html create mode 100644 classxt_1_1xmultiindex__iterator.html create mode 100644 classxt_1_1xnewaxis-members.html create mode 100644 classxt_1_1xnewaxis.html create mode 100644 classxt_1_1xnewaxis.png create mode 100644 classxt_1_1xoptional__assembly-members.html create mode 100644 classxt_1_1xoptional__assembly.html create mode 100644 classxt_1_1xoptional__assembly.js create mode 100644 classxt_1_1xoptional__assembly.png create mode 100644 classxt_1_1xoptional__assembly__adaptor-members.html create mode 100644 classxt_1_1xoptional__assembly__adaptor.html create mode 100644 classxt_1_1xoptional__assembly__adaptor.js create mode 100644 classxt_1_1xoptional__assembly__adaptor.png create mode 100644 classxt_1_1xoptional__assembly__base-members.html create mode 100644 classxt_1_1xoptional__assembly__base.html create mode 100644 classxt_1_1xoptional__assembly__base.js create mode 100644 classxt_1_1xoptional__assembly__base.png create mode 100644 classxt_1_1xoptional__assembly__linear__iterator-members.html create mode 100644 classxt_1_1xoptional__assembly__linear__iterator.html create mode 100644 classxt_1_1xoptional__assembly__linear__iterator.png create mode 100644 classxt_1_1xoptional__assembly__stepper-members.html create mode 100644 classxt_1_1xoptional__assembly__stepper.html create mode 100644 classxt_1_1xoptional__assembly__storage-members.html create mode 100644 classxt_1_1xoptional__assembly__storage.html create mode 100644 classxt_1_1xrange-members.html create mode 100644 classxt_1_1xrange.html create mode 100644 classxt_1_1xrange.png create mode 100644 classxt_1_1xreducer-members.html create mode 100644 classxt_1_1xreducer.html create mode 100644 classxt_1_1xreducer.js create mode 100644 classxt_1_1xreducer.png create mode 100644 classxt_1_1xreducer__stepper-members.html create mode 100644 classxt_1_1xreducer__stepper.html create mode 100644 classxt_1_1xrepeat-members.html create mode 100644 classxt_1_1xrepeat.html create mode 100644 classxt_1_1xrepeat.js create mode 100644 classxt_1_1xrepeat.png create mode 100644 classxt_1_1xrepeat__stepper-members.html create mode 100644 classxt_1_1xrepeat__stepper.html create mode 100644 classxt_1_1xscalar-members.html create mode 100644 classxt_1_1xscalar.html create mode 100644 classxt_1_1xscalar.js create mode 100644 classxt_1_1xscalar.png create mode 100644 classxt_1_1xscalar__stepper-members.html create mode 100644 classxt_1_1xscalar__stepper.html create mode 100644 classxt_1_1xsemantic__base-members.html create mode 100644 classxt_1_1xsemantic__base.html create mode 100644 classxt_1_1xsemantic__base.js create mode 100644 classxt_1_1xsemantic__base.png create mode 100644 classxt_1_1xsharable__expression-members.html create mode 100644 classxt_1_1xsharable__expression.html create mode 100644 classxt_1_1xsharable__expression.png create mode 100644 classxt_1_1xshared__expression-members.html create mode 100644 classxt_1_1xshared__expression.html create mode 100644 classxt_1_1xshared__expression.js create mode 100644 classxt_1_1xshared__expression.png create mode 100644 classxt_1_1xslice-members.html create mode 100644 classxt_1_1xslice.html create mode 100644 classxt_1_1xstepped__range-members.html create mode 100644 classxt_1_1xstepped__range.html create mode 100644 classxt_1_1xstepped__range.png create mode 100644 classxt_1_1xstepper-members.html create mode 100644 classxt_1_1xstepper.html create mode 100644 classxt_1_1xstrided__container-members.html create mode 100644 classxt_1_1xstrided__container.html create mode 100644 classxt_1_1xstrided__container.js create mode 100644 classxt_1_1xstrided__container.png create mode 100644 classxt_1_1xstrided__view-members.html create mode 100644 classxt_1_1xstrided__view.html create mode 100644 classxt_1_1xstrided__view.js create mode 100644 classxt_1_1xstrided__view.png create mode 100644 classxt_1_1xstrided__view__base-members.html create mode 100644 classxt_1_1xstrided__view__base.html create mode 100644 classxt_1_1xstrided__view__base.js create mode 100644 classxt_1_1xstrided__view__base.png create mode 100644 classxt_1_1xtensor__adaptor-members.html create mode 100644 classxt_1_1xtensor__adaptor.html create mode 100644 classxt_1_1xtensor__adaptor.js create mode 100644 classxt_1_1xtensor__adaptor.png create mode 100644 classxt_1_1xtensor__container-members.html create mode 100644 classxt_1_1xtensor__container.html create mode 100644 classxt_1_1xtensor__container.js create mode 100644 classxt_1_1xtensor__container.png create mode 100644 classxt_1_1xtensor__view-members.html create mode 100644 classxt_1_1xtensor__view.html create mode 100644 classxt_1_1xtensor__view.js create mode 100644 classxt_1_1xtensor__view.png create mode 100644 classxt_1_1xvectorizer-members.html create mode 100644 classxt_1_1xvectorizer.html create mode 100644 classxt_1_1xview-members.html create mode 100644 classxt_1_1xview.html create mode 100644 classxt_1_1xview.js create mode 100644 classxt_1_1xview.png create mode 100644 classxt_1_1xview__semantic-members.html create mode 100644 classxt_1_1xview__semantic.html create mode 100644 classxt_1_1xview__semantic.js create mode 100644 classxt_1_1xview__semantic.png create mode 100644 classxt_1_1xview__stepper-members.html create mode 100644 classxt_1_1xview__stepper.html create mode 100644 classxt__simd_1_1aligned__allocator.html create mode 100644 closed.png create mode 100644 deprecated.html create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.js create mode 100644 dir_ea185b87f60949e3b1bf14314f33a519.html create mode 100644 dir_ea185b87f60949e3b1bf14314f33a519.js create mode 100644 doc.svg create mode 100644 docd.svg create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 files_dup.js create mode 100644 folderclosed.svg create mode 100644 folderclosedd.svg create mode 100644 folderopen.svg create mode 100644 folderopend.svg create mode 100644 functions.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_dup.js create mode 100644 functions_e.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func.js create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_o.html create mode 100644 functions_func_p.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_u.html create mode 100644 functions_func_v.html create mode 100644 functions_func_x.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_r.html create mode 100644 functions_s.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_x.html create mode 100644 group__acc__functions.html create mode 100644 group__acc__functions.js create mode 100644 group__arithmetic__operators.html create mode 100644 group__arithmetic__operators.js create mode 100644 group__basic__functions.html create mode 100644 group__basic__functions.js create mode 100644 group__bitwise__operators.html create mode 100644 group__bitwise__operators.js create mode 100644 group__casting__operators.html create mode 100644 group__casting__operators.js create mode 100644 group__classif__functions.html create mode 100644 group__classif__functions.js create mode 100644 group__comparison__operators.html create mode 100644 group__comparison__operators.js create mode 100644 group__err__functions.html create mode 100644 group__err__functions.js create mode 100644 group__exp__functions.html create mode 100644 group__exp__functions.js create mode 100644 group__hyper__functions.html create mode 100644 group__hyper__functions.js create mode 100644 group__logical__operators.html create mode 100644 group__logical__operators.js create mode 100644 group__nan__functions.html create mode 100644 group__nan__functions.js create mode 100644 group__nearint__functions.html create mode 100644 group__nearint__functions.js create mode 100644 group__pow__functions.html create mode 100644 group__pow__functions.js create mode 100644 group__red__functions.html create mode 100644 group__red__functions.js create mode 100644 group__trigo__functions.html create mode 100644 group__trigo__functions.js create mode 100644 group__xt__xadapt.html create mode 100644 group__xt__xadapt.js create mode 100644 group__xt__xchunked__array.html create mode 100644 group__xt__xchunked__array.js create mode 100644 group__xt__xcomplex.html create mode 100644 group__xt__xcomplex.js create mode 100644 group__xt__xeval.html create mode 100644 group__xt__xeval.js create mode 100644 group__xt__xfunctor__view.html create mode 100644 group__xt__xfunctor__view.js create mode 100644 group__xt__xmanipulation.html create mode 100644 group__xt__xmanipulation.js create mode 100644 group__xt__xshape.html create mode 100644 group__xt__xshape.js create mode 100644 group__xt__xsort.html create mode 100644 group__xt__xsort.js create mode 100644 group__xt__xstrides.html create mode 100644 group__xt__xstrides.js create mode 100644 hierarchy.html create mode 100644 hierarchy.js create mode 100644 index.html create mode 100644 jquery.js create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 minus.svg create mode 100644 minusd.svg create mode 100644 namespacemembers.html create mode 100644 namespacemembers_b.html create mode 100644 namespacemembers_c.html create mode 100644 namespacemembers_d.html create mode 100644 namespacemembers_dup.js create mode 100644 namespacemembers_e.html create mode 100644 namespacemembers_enum.html create mode 100644 namespacemembers_f.html create mode 100644 namespacemembers_func.html create mode 100644 namespacemembers_func.js create mode 100644 namespacemembers_func_b.html create mode 100644 namespacemembers_func_c.html create mode 100644 namespacemembers_func_d.html create mode 100644 namespacemembers_func_e.html create mode 100644 namespacemembers_func_f.html create mode 100644 namespacemembers_func_g.html create mode 100644 namespacemembers_func_h.html create mode 100644 namespacemembers_func_i.html create mode 100644 namespacemembers_func_k.html create mode 100644 namespacemembers_func_l.html create mode 100644 namespacemembers_func_m.html create mode 100644 namespacemembers_func_n.html create mode 100644 namespacemembers_func_o.html create mode 100644 namespacemembers_func_p.html create mode 100644 namespacemembers_func_q.html create mode 100644 namespacemembers_func_r.html create mode 100644 namespacemembers_func_s.html create mode 100644 namespacemembers_func_t.html create mode 100644 namespacemembers_func_u.html create mode 100644 namespacemembers_func_v.html create mode 100644 namespacemembers_func_w.html create mode 100644 namespacemembers_func_x.html create mode 100644 namespacemembers_func_z.html create mode 100644 namespacemembers_g.html create mode 100644 namespacemembers_h.html create mode 100644 namespacemembers_i.html create mode 100644 namespacemembers_k.html create mode 100644 namespacemembers_l.html create mode 100644 namespacemembers_m.html create mode 100644 namespacemembers_n.html create mode 100644 namespacemembers_o.html create mode 100644 namespacemembers_p.html create mode 100644 namespacemembers_q.html create mode 100644 namespacemembers_r.html create mode 100644 namespacemembers_s.html create mode 100644 namespacemembers_t.html create mode 100644 namespacemembers_type.html create mode 100644 namespacemembers_u.html create mode 100644 namespacemembers_v.html create mode 100644 namespacemembers_w.html create mode 100644 namespacemembers_x.html create mode 100644 namespacemembers_z.html create mode 100644 namespaces.html create mode 100644 namespaces_dup.js create mode 100644 namespacext.html create mode 100644 namespacext.js create mode 100644 nav_f.png create mode 100644 nav_fd.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 nav_hd.png create mode 100644 navtree.css create mode 100644 navtree.js create mode 100644 navtreedata.js create mode 100644 navtreeindex0.js create mode 100644 navtreeindex1.js create mode 100644 navtreeindex2.js create mode 100644 navtreeindex3.js create mode 100644 navtreeindex4.js create mode 100644 navtreeindex5.js create mode 100644 navtreeindex6.js create mode 100644 navtreeindex7.js create mode 100644 navtreeindex8.js create mode 100644 navtreeindex9.js create mode 100644 open.png create mode 100644 pages.html create mode 100644 plus.svg create mode 100644 plusd.svg create mode 100644 resize.js create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_10.js create mode 100644 search/all_11.js create mode 100644 search/all_12.js create mode 100644 search/all_13.js create mode 100644 search/all_14.js create mode 100644 search/all_15.js create mode 100644 search/all_16.js create mode 100644 search/all_17.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/all_e.js create mode 100644 search/all_f.js create mode 100644 search/classes_0.js create mode 100644 search/classes_1.js create mode 100644 search/classes_10.js create mode 100644 search/classes_11.js create mode 100644 search/classes_12.js create mode 100644 search/classes_13.js create mode 100644 search/classes_2.js create mode 100644 search/classes_3.js create mode 100644 search/classes_4.js create mode 100644 search/classes_5.js create mode 100644 search/classes_6.js create mode 100644 search/classes_7.js create mode 100644 search/classes_8.js create mode 100644 search/classes_9.js create mode 100644 search/classes_a.js create mode 100644 search/classes_b.js create mode 100644 search/classes_c.js create mode 100644 search/classes_d.js create mode 100644 search/classes_e.js create mode 100644 search/classes_f.js create mode 100644 search/close.svg create mode 100644 search/enums_0.js create mode 100644 search/enums_1.js create mode 100644 search/enums_2.js create mode 100644 search/enums_3.js create mode 100644 search/enums_4.js create mode 100644 search/enumvalues_0.js create mode 100644 search/enumvalues_1.js create mode 100644 search/enumvalues_2.js create mode 100644 search/enumvalues_3.js create mode 100644 search/enumvalues_4.js create mode 100644 search/enumvalues_5.js create mode 100644 search/enumvalues_6.js create mode 100644 search/enumvalues_7.js create mode 100644 search/enumvalues_8.js create mode 100644 search/enumvalues_9.js create mode 100644 search/enumvalues_a.js create mode 100644 search/enumvalues_b.js create mode 100644 search/enumvalues_c.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/functions_10.js create mode 100644 search/functions_11.js create mode 100644 search/functions_12.js create mode 100644 search/functions_13.js create mode 100644 search/functions_14.js create mode 100644 search/functions_15.js create mode 100644 search/functions_16.js create mode 100644 search/functions_17.js create mode 100644 search/functions_2.js create mode 100644 search/functions_3.js create mode 100644 search/functions_4.js create mode 100644 search/functions_5.js create mode 100644 search/functions_6.js create mode 100644 search/functions_7.js create mode 100644 search/functions_8.js create mode 100644 search/functions_9.js create mode 100644 search/functions_a.js create mode 100644 search/functions_b.js create mode 100644 search/functions_c.js create mode 100644 search/functions_d.js create mode 100644 search/functions_e.js create mode 100644 search/functions_f.js create mode 100644 search/groups_0.js create mode 100644 search/groups_1.js create mode 100644 search/groups_2.js create mode 100644 search/groups_3.js create mode 100644 search/groups_4.js create mode 100644 search/groups_5.js create mode 100644 search/groups_6.js create mode 100644 search/groups_7.js create mode 100644 search/groups_8.js create mode 100644 search/groups_9.js create mode 100644 search/groups_a.js create mode 100644 search/groups_b.js create mode 100644 search/groups_c.js create mode 100644 search/groups_d.js create mode 100644 search/groups_e.js create mode 100644 search/groups_f.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_sel.svg create mode 100644 search/mag_seld.svg create mode 100644 search/namespaces_0.js create mode 100644 search/pages_0.js create mode 100644 search/pages_1.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.js create mode 100644 search/typedefs_2.js create mode 100644 splitbar.png create mode 100644 splitbard.png create mode 100644 structxt_1_1acquire__ownership.html create mode 100644 structxt_1_1apply__cv-members.html create mode 100644 structxt_1_1apply__cv.html create mode 100644 structxt_1_1big__promote__value__type-members.html create mode 100644 structxt_1_1big__promote__value__type.html create mode 100644 structxt_1_1buffer__inner__types.html create mode 100644 structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html create mode 100644 structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html create mode 100644 structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html create mode 100644 structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html create mode 100644 structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html create mode 100644 structxt_1_1can__assign.html create mode 100644 structxt_1_1can__assign.png create mode 100644 structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html create mode 100644 structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.png create mode 100644 structxt_1_1check__policy_1_1full.html create mode 100644 structxt_1_1check__policy_1_1none.html create mode 100644 structxt_1_1check__strides__overlap.html create mode 100644 structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4-members.html create mode 100644 structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html create mode 100644 structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4-members.html create mode 100644 structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html create mode 100644 structxt_1_1common__difference__type-members.html create mode 100644 structxt_1_1common__difference__type.html create mode 100644 structxt_1_1common__difference__type_3_4-members.html create mode 100644 structxt_1_1common__difference__type_3_4.html create mode 100644 structxt_1_1common__size__type-members.html create mode 100644 structxt_1_1common__size__type.html create mode 100644 structxt_1_1common__size__type_3_4-members.html create mode 100644 structxt_1_1common__size__type_3_4.html create mode 100644 structxt_1_1common__tensor__type.html create mode 100644 structxt_1_1common__tensor__type.png create mode 100644 structxt_1_1common__value__type-members.html create mode 100644 structxt_1_1common__value__type.html create mode 100644 structxt_1_1conditional__cast__functor.html create mode 100644 structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html create mode 100644 structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.png create mode 100644 structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4-members.html create mode 100644 structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html create mode 100644 structxt_1_1const__array-members.html create mode 100644 structxt_1_1const__array.html create mode 100644 structxt_1_1const__value-members.html create mode 100644 structxt_1_1const__value.html create mode 100644 structxt_1_1const__xclosure-members.html create mode 100644 structxt_1_1const__xclosure.html create mode 100644 structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html create mode 100644 structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html create mode 100644 structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html create mode 100644 structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html create mode 100644 structxt_1_1container__simd__return__type.html create mode 100644 structxt_1_1container__simd__return__type.png create mode 100644 structxt_1_1convolve__mode_1_1full.html create mode 100644 structxt_1_1convolve__mode_1_1valid.html create mode 100644 structxt_1_1decay__all.html create mode 100644 structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1disable__indexed__stepper.html create mode 100644 structxt_1_1disable__indexed__stepper.png create mode 100644 structxt_1_1driven__align__mode-members.html create mode 100644 structxt_1_1driven__align__mode.html create mode 100644 structxt_1_1enable__indexed__stepper.html create mode 100644 structxt_1_1enable__indexed__stepper.png create mode 100644 structxt_1_1evaluation__strategy_1_1immediate__type.html create mode 100644 structxt_1_1evaluation__strategy_1_1immediate__type.png create mode 100644 structxt_1_1evaluation__strategy_1_1lazy__type.html create mode 100644 structxt_1_1evaluation__strategy_1_1lazy__type.png create mode 100644 structxt_1_1extension_1_1expression__tag__and.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.png create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.png create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.png create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_4-members.html create mode 100644 structxt_1_1extension_1_1expression__tag__and_3_4.html create mode 100644 structxt_1_1extension_1_1get__expression__tag-members.html create mode 100644 structxt_1_1extension_1_1get__expression__tag.html create mode 100644 structxt_1_1extension_1_1get__expression__tag.png create mode 100644 structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4-members.html create mode 100644 structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html create mode 100644 structxt_1_1extension_1_1get__expression__tag__impl-members.html create mode 100644 structxt_1_1extension_1_1get__expression__tag__impl.html create mode 100644 structxt_1_1extension_1_1get__expression__tag__impl.png create mode 100644 structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de048c22abe806a8cb61aa0c08ab63f2de.html create mode 100644 structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de4e085c648bbd1efca51f7b5461e984a5.html create mode 100644 structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xarray__adaptor__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xarray__adaptor__optional__traits.html create mode 100644 structxt_1_1extension_1_1xarray__adaptor__optional__traits.png create mode 100644 structxt_1_1extension_1_1xarray__container__base.html create mode 100644 structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xarray__container__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xarray__container__optional__traits.html create mode 100644 structxt_1_1extension_1_1xarray__container__optional__traits.png create mode 100644 structxt_1_1extension_1_1xarray__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xarray__optional__traits.html create mode 100644 structxt_1_1extension_1_1xarray__optional__traits.png create mode 100644 structxt_1_1extension_1_1xbroadcast__base.html create mode 100644 structxt_1_1extension_1_1xbroadcast__base.png create mode 100644 structxt_1_1extension_1_1xbroadcast__base__impl.html create mode 100644 structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html create mode 100644 structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html create mode 100644 structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html create mode 100644 structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html create mode 100644 structxt_1_1extension_1_1xdynamic__view__base.html create mode 100644 structxt_1_1extension_1_1xdynamic__view__base.png create mode 100644 structxt_1_1extension_1_1xdynamic__view__base__impl.html create mode 100644 structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html create mode 100644 structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_b6d8a7e2879c1a8ee678dc4152371fc6.html create mode 100644 structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html create mode 100644 structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01aef227a96c9a95959d74cc8b3d2137ea.html create mode 100644 structxt_1_1extension_1_1xfunction__base.html create mode 100644 structxt_1_1extension_1_1xfunction__base.png create mode 100644 structxt_1_1extension_1_1xfunction__base__impl.html create mode 100644 structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html create mode 100644 structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html create mode 100644 structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html create mode 100644 structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html create mode 100644 structxt_1_1extension_1_1xfunctor__view__base.html create mode 100644 structxt_1_1extension_1_1xfunctor__view__base.png create mode 100644 structxt_1_1extension_1_1xfunctor__view__base__impl.html create mode 100644 structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html create mode 100644 structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html create mode 100644 structxt_1_1extension_1_1xgenerator__base.html create mode 100644 structxt_1_1extension_1_1xgenerator__base.png create mode 100644 structxt_1_1extension_1_1xgenerator__base__impl.html create mode 100644 structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html create mode 100644 structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html create mode 100644 structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html create mode 100644 structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html create mode 100644 structxt_1_1extension_1_1xindex__view__base.html create mode 100644 structxt_1_1extension_1_1xindex__view__base.png create mode 100644 structxt_1_1extension_1_1xindex__view__base__impl.html create mode 100644 structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4-members.html create mode 100644 structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html create mode 100644 structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4-members.html create mode 100644 structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html create mode 100644 structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4-members.html create mode 100644 structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html create mode 100644 structxt_1_1extension_1_1xrepeat__base.html create mode 100644 structxt_1_1extension_1_1xrepeat__base.png create mode 100644 structxt_1_1extension_1_1xrepeat__base__impl.html create mode 100644 structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html create mode 100644 structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html create mode 100644 structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html create mode 100644 structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html create mode 100644 structxt_1_1extension_1_1xscalar__base.html create mode 100644 structxt_1_1extension_1_1xscalar__base.png create mode 100644 structxt_1_1extension_1_1xscalar__base__impl.html create mode 100644 structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html create mode 100644 structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4-members.html create mode 100644 structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html create mode 100644 structxt_1_1extension_1_1xscalar__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xscalar__optional__traits.html create mode 100644 structxt_1_1extension_1_1xstrided__view__base.html create mode 100644 structxt_1_1extension_1_1xstrided__view__base.png create mode 100644 structxt_1_1extension_1_1xstrided__view__base__impl.html create mode 100644 structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html create mode 100644 structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_4a6b46e0ed70869936639a514f730fbb.html create mode 100644 structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html create mode 100644 structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01b284f3952f1f4d8d4ad036b645dd2641.html create mode 100644 structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xtensor__adaptor__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html create mode 100644 structxt_1_1extension_1_1xtensor__adaptor__optional__traits.png create mode 100644 structxt_1_1extension_1_1xtensor__container__base.html create mode 100644 structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xtensor__container__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xtensor__container__optional__traits.html create mode 100644 structxt_1_1extension_1_1xtensor__container__optional__traits.png create mode 100644 structxt_1_1extension_1_1xtensor__empty__base-members.html create mode 100644 structxt_1_1extension_1_1xtensor__empty__base.html create mode 100644 structxt_1_1extension_1_1xtensor__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xtensor__optional__traits.html create mode 100644 structxt_1_1extension_1_1xtensor__optional__traits.png create mode 100644 structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html create mode 100644 structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html create mode 100644 structxt_1_1extension_1_1xtensor__view__optional__traits-members.html create mode 100644 structxt_1_1extension_1_1xtensor__view__optional__traits.html create mode 100644 structxt_1_1extension_1_1xtensor__view__optional__traits.png create mode 100644 structxt_1_1extension_1_1xview__base.html create mode 100644 structxt_1_1extension_1_1xview__base.png create mode 100644 structxt_1_1extension_1_1xview__base__impl.html create mode 100644 structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html create mode 100644 structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html create mode 100644 structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html create mode 100644 structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html create mode 100644 structxt_1_1filter__fixed__shape.html create mode 100644 structxt_1_1filter__fixed__shape.png create mode 100644 structxt_1_1fixed__xreducer__shape__type.html create mode 100644 structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1forbid__simd.html create mode 100644 structxt_1_1forbid__simd.png create mode 100644 structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.png create mode 100644 structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.png create mode 100644 structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.png create mode 100644 structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.png create mode 100644 structxt_1_1get__init__type.html create mode 100644 structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1get__rank-members.html create mode 100644 structxt_1_1get__rank.html create mode 100644 structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4-members.html create mode 100644 structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html create mode 100644 structxt_1_1get__strides__type-members.html create mode 100644 structxt_1_1get__strides__type.html create mode 100644 structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html create mode 100644 structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1get__value__type-members.html create mode 100644 structxt_1_1get__value__type.html create mode 100644 structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4-members.html create mode 100644 structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html create mode 100644 structxt_1_1has__assign__conversion-members.html create mode 100644 structxt_1_1has__assign__conversion.html create mode 100644 structxt_1_1has__assign__to.html create mode 100644 structxt_1_1has__assign__to.png create mode 100644 structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html create mode 100644 structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.png create mode 100644 structxt_1_1has__data__interface.html create mode 100644 structxt_1_1has__data__interface.png create mode 100644 structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html create mode 100644 structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.png create mode 100644 structxt_1_1has__fixed__rank-members.html create mode 100644 structxt_1_1has__fixed__rank.html create mode 100644 structxt_1_1has__iterator__interface.html create mode 100644 structxt_1_1has__iterator__interface.png create mode 100644 structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html create mode 100644 structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.png create mode 100644 structxt_1_1has__rank-members.html create mode 100644 structxt_1_1has__rank.html create mode 100644 structxt_1_1has__sign__conversion-members.html create mode 100644 structxt_1_1has__sign__conversion.html create mode 100644 structxt_1_1has__simd__apply.html create mode 100644 structxt_1_1has__simd__apply.png create mode 100644 structxt_1_1has__simd__interface.html create mode 100644 structxt_1_1has__simd__interface.png create mode 100644 structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4-members.html create mode 100644 structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html create mode 100644 structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.png create mode 100644 structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html create mode 100644 structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png create mode 100644 structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html create mode 100644 structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.png create mode 100644 structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html create mode 100644 structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png create mode 100644 structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1has__simd__type.html create mode 100644 structxt_1_1has__simd__type.png create mode 100644 structxt_1_1has__storage__type.html create mode 100644 structxt_1_1has__storage__type.png create mode 100644 structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html create mode 100644 structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.png create mode 100644 structxt_1_1has__strides.html create mode 100644 structxt_1_1has__strides.png create mode 100644 structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html create mode 100644 structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.png create mode 100644 structxt_1_1index__from__shape-members.html create mode 100644 structxt_1_1index__from__shape.html create mode 100644 structxt_1_1initializer__dimension-members.html create mode 100644 structxt_1_1initializer__dimension.html create mode 100644 structxt_1_1inner__aligned__mode.html create mode 100644 structxt_1_1inner__reference-members.html create mode 100644 structxt_1_1inner__reference.html create mode 100644 structxt_1_1invalid__type.html create mode 100644 structxt_1_1is__chunked__t.html create mode 100644 structxt_1_1is__chunked__t.png create mode 100644 structxt_1_1is__contiguous__container.html create mode 100644 structxt_1_1is__contiguous__container.png create mode 100644 structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.html create mode 100644 structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.png create mode 100644 structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html create mode 100644 structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.png create mode 100644 structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html create mode 100644 structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.png create mode 100644 structxt_1_1is__evaluation__strategy.html create mode 100644 structxt_1_1is__evaluation__strategy.png create mode 100644 structxt_1_1is__indexed__stepper-members.html create mode 100644 structxt_1_1is__indexed__stepper.html create mode 100644 structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4-members.html create mode 100644 structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html create mode 100644 structxt_1_1is__iterator.html create mode 100644 structxt_1_1is__iterator.png create mode 100644 structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.html create mode 100644 structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.png create mode 100644 structxt_1_1is__narrowing__conversion-members.html create mode 100644 structxt_1_1is__narrowing__conversion.html create mode 100644 structxt_1_1is__not__xdummy__iterator.html create mode 100644 structxt_1_1is__not__xdummy__iterator.png create mode 100644 structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html create mode 100644 structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.png create mode 100644 structxt_1_1is__reducer__options.html create mode 100644 structxt_1_1is__reducer__options.png create mode 100644 structxt_1_1is__reducer__options__impl.html create mode 100644 structxt_1_1is__reducer__options__impl.png create mode 100644 structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.png create mode 100644 structxt_1_1is__xoptional__expression.html create mode 100644 structxt_1_1is__xoptional__expression.png create mode 100644 structxt_1_1is__xtensor__expression.html create mode 100644 structxt_1_1is__xtensor__expression.png create mode 100644 structxt_1_1keep__dims__type.html create mode 100644 structxt_1_1keep__dims__type.png create mode 100644 structxt_1_1make__invalid__type-members.html create mode 100644 structxt_1_1make__invalid__type.html create mode 100644 structxt_1_1make__void-members.html create mode 100644 structxt_1_1make__void.html create mode 100644 structxt_1_1math_1_1abs__fun-members.html create mode 100644 structxt_1_1math_1_1abs__fun.html create mode 100644 structxt_1_1math_1_1acos__fun-members.html create mode 100644 structxt_1_1math_1_1acos__fun.html create mode 100644 structxt_1_1math_1_1acosh__fun-members.html create mode 100644 structxt_1_1math_1_1acosh__fun.html create mode 100644 structxt_1_1math_1_1arg__fun-members.html create mode 100644 structxt_1_1math_1_1arg__fun.html create mode 100644 structxt_1_1math_1_1asin__fun-members.html create mode 100644 structxt_1_1math_1_1asin__fun.html create mode 100644 structxt_1_1math_1_1asinh__fun-members.html create mode 100644 structxt_1_1math_1_1asinh__fun.html create mode 100644 structxt_1_1math_1_1atan2__fun-members.html create mode 100644 structxt_1_1math_1_1atan2__fun.html create mode 100644 structxt_1_1math_1_1atan__fun-members.html create mode 100644 structxt_1_1math_1_1atan__fun.html create mode 100644 structxt_1_1math_1_1atanh__fun-members.html create mode 100644 structxt_1_1math_1_1atanh__fun.html create mode 100644 structxt_1_1math_1_1cbrt__fun-members.html create mode 100644 structxt_1_1math_1_1cbrt__fun.html create mode 100644 structxt_1_1math_1_1ceil__fun-members.html create mode 100644 structxt_1_1math_1_1ceil__fun.html create mode 100644 structxt_1_1math_1_1clamp__fun-members.html create mode 100644 structxt_1_1math_1_1clamp__fun.html create mode 100644 structxt_1_1math_1_1conj__impl__fun-members.html create mode 100644 structxt_1_1math_1_1conj__impl__fun.html create mode 100644 structxt_1_1math_1_1cos__fun-members.html create mode 100644 structxt_1_1math_1_1cos__fun.html create mode 100644 structxt_1_1math_1_1cosh__fun-members.html create mode 100644 structxt_1_1math_1_1cosh__fun.html create mode 100644 structxt_1_1math_1_1deg2rad-members.html create mode 100644 structxt_1_1math_1_1deg2rad.html create mode 100644 structxt_1_1math_1_1erf__fun-members.html create mode 100644 structxt_1_1math_1_1erf__fun.html create mode 100644 structxt_1_1math_1_1erfc__fun-members.html create mode 100644 structxt_1_1math_1_1erfc__fun.html create mode 100644 structxt_1_1math_1_1exp2__fun-members.html create mode 100644 structxt_1_1math_1_1exp2__fun.html create mode 100644 structxt_1_1math_1_1exp__fun-members.html create mode 100644 structxt_1_1math_1_1exp__fun.html create mode 100644 structxt_1_1math_1_1expm1__fun-members.html create mode 100644 structxt_1_1math_1_1expm1__fun.html create mode 100644 structxt_1_1math_1_1fabs__fun-members.html create mode 100644 structxt_1_1math_1_1fabs__fun.html create mode 100644 structxt_1_1math_1_1fdim__fun-members.html create mode 100644 structxt_1_1math_1_1fdim__fun.html create mode 100644 structxt_1_1math_1_1floor__fun-members.html create mode 100644 structxt_1_1math_1_1floor__fun.html create mode 100644 structxt_1_1math_1_1fma__fun-members.html create mode 100644 structxt_1_1math_1_1fma__fun.html create mode 100644 structxt_1_1math_1_1fmax__fun-members.html create mode 100644 structxt_1_1math_1_1fmax__fun.html create mode 100644 structxt_1_1math_1_1fmin__fun-members.html create mode 100644 structxt_1_1math_1_1fmin__fun.html create mode 100644 structxt_1_1math_1_1fmod__fun-members.html create mode 100644 structxt_1_1math_1_1fmod__fun.html create mode 100644 structxt_1_1math_1_1hypot__fun-members.html create mode 100644 structxt_1_1math_1_1hypot__fun.html create mode 100644 structxt_1_1math_1_1isfinite__fun-members.html create mode 100644 structxt_1_1math_1_1isfinite__fun.html create mode 100644 structxt_1_1math_1_1isinf__fun-members.html create mode 100644 structxt_1_1math_1_1isinf__fun.html create mode 100644 structxt_1_1math_1_1isnan__fun-members.html create mode 100644 structxt_1_1math_1_1isnan__fun.html create mode 100644 structxt_1_1math_1_1lgamma__fun-members.html create mode 100644 structxt_1_1math_1_1lgamma__fun.html create mode 100644 structxt_1_1math_1_1log10__fun-members.html create mode 100644 structxt_1_1math_1_1log10__fun.html create mode 100644 structxt_1_1math_1_1log1p__fun-members.html create mode 100644 structxt_1_1math_1_1log1p__fun.html create mode 100644 structxt_1_1math_1_1log2__fun-members.html create mode 100644 structxt_1_1math_1_1log2__fun.html create mode 100644 structxt_1_1math_1_1log__fun-members.html create mode 100644 structxt_1_1math_1_1log__fun.html create mode 100644 structxt_1_1math_1_1maximum-members.html create mode 100644 structxt_1_1math_1_1maximum.html create mode 100644 structxt_1_1math_1_1minimum-members.html create mode 100644 structxt_1_1math_1_1minimum.html create mode 100644 structxt_1_1math_1_1nearbyint__fun-members.html create mode 100644 structxt_1_1math_1_1nearbyint__fun.html create mode 100644 structxt_1_1math_1_1norm__fun-members.html create mode 100644 structxt_1_1math_1_1norm__fun.html create mode 100644 structxt_1_1math_1_1pow__fun-members.html create mode 100644 structxt_1_1math_1_1pow__fun.html create mode 100644 structxt_1_1math_1_1rad2deg-members.html create mode 100644 structxt_1_1math_1_1rad2deg.html create mode 100644 structxt_1_1math_1_1remainder__fun-members.html create mode 100644 structxt_1_1math_1_1remainder__fun.html create mode 100644 structxt_1_1math_1_1rint__fun-members.html create mode 100644 structxt_1_1math_1_1rint__fun.html create mode 100644 structxt_1_1math_1_1round__fun-members.html create mode 100644 structxt_1_1math_1_1round__fun.html create mode 100644 structxt_1_1math_1_1sign__fun-members.html create mode 100644 structxt_1_1math_1_1sign__fun.html create mode 100644 structxt_1_1math_1_1sign__impl-members.html create mode 100644 structxt_1_1math_1_1sign__impl.html create mode 100644 structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4-members.html create mode 100644 structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html create mode 100644 structxt_1_1math_1_1sin__fun-members.html create mode 100644 structxt_1_1math_1_1sin__fun.html create mode 100644 structxt_1_1math_1_1sinh__fun-members.html create mode 100644 structxt_1_1math_1_1sinh__fun.html create mode 100644 structxt_1_1math_1_1sqrt__fun-members.html create mode 100644 structxt_1_1math_1_1sqrt__fun.html create mode 100644 structxt_1_1math_1_1tan__fun-members.html create mode 100644 structxt_1_1math_1_1tan__fun.html create mode 100644 structxt_1_1math_1_1tanh__fun-members.html create mode 100644 structxt_1_1math_1_1tanh__fun.html create mode 100644 structxt_1_1math_1_1tgamma__fun-members.html create mode 100644 structxt_1_1math_1_1tgamma__fun.html create mode 100644 structxt_1_1math_1_1trunc__fun-members.html create mode 100644 structxt_1_1math_1_1trunc__fun.html create mode 100644 structxt_1_1meta__identity-members.html create mode 100644 structxt_1_1meta__identity.html create mode 100644 structxt_1_1missing__type.html create mode 100644 structxt_1_1nested__initializer__list-members.html create mode 100644 structxt_1_1nested__initializer__list.html create mode 100644 structxt_1_1nested__initializer__list_3_01_t_00_010_01_4-members.html create mode 100644 structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html create mode 100644 structxt_1_1no__ownership.html create mode 100644 structxt_1_1norm__type-members.html create mode 100644 structxt_1_1norm__type.html create mode 100644 structxt_1_1norm__type.png create mode 100644 structxt_1_1numeric__constants-members.html create mode 100644 structxt_1_1numeric__constants.html create mode 100644 structxt_1_1print__options_1_1print__options__impl-members.html create mode 100644 structxt_1_1print__options_1_1print__options__impl.html create mode 100644 structxt_1_1promote__shape-members.html create mode 100644 structxt_1_1promote__shape.html create mode 100644 structxt_1_1promote__strides-members.html create mode 100644 structxt_1_1promote__strides.html create mode 100644 structxt_1_1rebind__container.html create mode 100644 structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4-members.html create mode 100644 structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4-members.html create mode 100644 structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html create mode 100644 structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4-members.html create mode 100644 structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html create mode 100644 structxt_1_1reducer__options-members.html create mode 100644 structxt_1_1reducer__options.html create mode 100644 structxt_1_1reducer__options.js create mode 100644 structxt_1_1reducer__options_1_1initial__tester.html create mode 100644 structxt_1_1reducer__options_1_1initial__tester.png create mode 100644 structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html create mode 100644 structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.png create mode 100644 structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html create mode 100644 structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.png create mode 100644 structxt_1_1remove__class.html create mode 100644 structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4-members.html create mode 100644 structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html create mode 100644 structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4-members.html create mode 100644 structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html create mode 100644 structxt_1_1select__dim__mapping__type-members.html create mode 100644 structxt_1_1select__dim__mapping__type.html create mode 100644 structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1select__iterable__base-members.html create mode 100644 structxt_1_1select__iterable__base.html create mode 100644 structxt_1_1select__layout-members.html create mode 100644 structxt_1_1select__layout.html create mode 100644 structxt_1_1squared__norm__type-members.html create mode 100644 structxt_1_1squared__norm__type.html create mode 100644 structxt_1_1squared__norm__type.png create mode 100644 structxt_1_1static__dimension-members.html create mode 100644 structxt_1_1static__dimension.html create mode 100644 structxt_1_1static__string-members.html create mode 100644 structxt_1_1static__string.html create mode 100644 structxt_1_1stepper__tools-members.html create mode 100644 structxt_1_1stepper__tools.html create mode 100644 structxt_1_1strided__assign__detail_1_1check__strides__functor-members.html create mode 100644 structxt_1_1strided__assign__detail_1_1check__strides__functor.html create mode 100644 structxt_1_1strided__assign__detail_1_1idx__tools.html create mode 100644 structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4-members.html create mode 100644 structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html create mode 100644 structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4-members.html create mode 100644 structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html create mode 100644 structxt_1_1temporary__container-members.html create mode 100644 structxt_1_1temporary__container.html create mode 100644 structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html create mode 100644 structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html create mode 100644 structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html create mode 100644 structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html create mode 100644 structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html create mode 100644 structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html create mode 100644 structxt_1_1temporary__type-members.html create mode 100644 structxt_1_1temporary__type.html create mode 100644 structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4-members.html create mode 100644 structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html create mode 100644 structxt_1_1temporary__type__from__tag.html create mode 100644 structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4-members.html create mode 100644 structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html create mode 100644 structxt_1_1tracking__allocator-members.html create mode 100644 structxt_1_1tracking__allocator.html create mode 100644 structxt_1_1tracking__allocator.js create mode 100644 structxt_1_1tracking__allocator.png create mode 100644 structxt_1_1tracking__allocator_1_1rebind-members.html create mode 100644 structxt_1_1tracking__allocator_1_1rebind.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__scalar__impl.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__vector__impl-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__of__vector__impl.html create mode 100644 structxt_1_1traits__detail_1_1norm__type__base-members.html create mode 100644 structxt_1_1traits__detail_1_1norm__type__base.html create mode 100644 structxt_1_1tuple__idx__of-members.html create mode 100644 structxt_1_1tuple__idx__of.html create mode 100644 structxt_1_1tuple__idx__of__impl.html create mode 100644 structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4-members.html create mode 100644 structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html create mode 100644 structxt_1_1view__temporary__type-members.html create mode 100644 structxt_1_1view__temporary__type.html create mode 100644 structxt_1_1xaccumulator__functor-members.html create mode 100644 structxt_1_1xaccumulator__functor.html create mode 100644 structxt_1_1xaccumulator__functor.png create mode 100644 structxt_1_1xall__tag-members.html create mode 100644 structxt_1_1xall__tag.html create mode 100644 structxt_1_1xclosure-members.html create mode 100644 structxt_1_1xclosure.html create mode 100644 structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html create mode 100644 structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html create mode 100644 structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html create mode 100644 structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1xcontainer__iterable__types-members.html create mode 100644 structxt_1_1xcontainer__iterable__types.html create mode 100644 structxt_1_1xcsv__config-members.html create mode 100644 structxt_1_1xcsv__config.html create mode 100644 structxt_1_1xellipsis__tag-members.html create mode 100644 structxt_1_1xellipsis__tag.html create mode 100644 structxt_1_1xexpression__tag-members.html create mode 100644 structxt_1_1xexpression__tag.html create mode 100644 structxt_1_1xfunction__cache.html create mode 100644 structxt_1_1xfunction__cache.png create mode 100644 structxt_1_1xfunctor__view__temporary__type-members.html create mode 100644 structxt_1_1xfunctor__view__temporary__type.html create mode 100644 structxt_1_1xinitial-members.html create mode 100644 structxt_1_1xinitial.html create mode 100644 structxt_1_1xinitial.png create mode 100644 structxt_1_1xiterable__inner__types.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png create mode 100644 structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html create mode 100644 structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html create mode 100644 structxt_1_1xnewaxis__tag-members.html create mode 100644 structxt_1_1xnewaxis__tag.html create mode 100644 structxt_1_1xoptional__assembly__linear__iterator__traits-members.html create mode 100644 structxt_1_1xoptional__assembly__linear__iterator__traits.html create mode 100644 structxt_1_1xoptional__comparable-members.html create mode 100644 structxt_1_1xoptional__comparable.html create mode 100644 structxt_1_1xoptional__comparable.png create mode 100644 structxt_1_1xoptional__expression__tag.html create mode 100644 structxt_1_1xproxy__inner__types-members.html create mode 100644 structxt_1_1xproxy__inner__types.html create mode 100644 structxt_1_1xrange__adaptor-members.html create mode 100644 structxt_1_1xrange__adaptor.html create mode 100644 structxt_1_1xreducer__functors-members.html create mode 100644 structxt_1_1xreducer__functors.html create mode 100644 structxt_1_1xreducer__functors.png create mode 100644 structxt_1_1xreducer__shape__type-members.html create mode 100644 structxt_1_1xreducer__shape__type.html create mode 100644 structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4-members.html create mode 100644 structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html create mode 100644 structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html create mode 100644 structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_027fcc88fe66eb75490a0dba142ef545f.html create mode 100644 structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_02aafc87a49290e02ea3938a932d6c334.html create mode 100644 structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html create mode 100644 structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_9c73ff706755e2a1205ad25fb933e4d8.html create mode 100644 structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html create mode 100644 structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_dd68458bef343598f52e1cee8de7e66e.html create mode 100644 structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html create mode 100644 structxt_1_1xtensor__expression__tag.html create mode 100644 structxt_1_1xview__shape__type-members.html create mode 100644 structxt_1_1xview__shape__type.html create mode 100644 structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4-members.html create mode 100644 structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html create mode 100644 structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4-members.html create mode 100644 structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html create mode 100644 structxt__simd_1_1aligned__mode.html create mode 100644 structxt__simd_1_1allocator__alignment-members.html create mode 100644 structxt__simd_1_1allocator__alignment.html create mode 100644 structxt__simd_1_1container__alignment-members.html create mode 100644 structxt__simd_1_1container__alignment.html create mode 100644 structxt__simd_1_1is__batch__bool.html create mode 100644 structxt__simd_1_1is__batch__bool.png create mode 100644 structxt__simd_1_1is__batch__complex.html create mode 100644 structxt__simd_1_1is__batch__complex.png create mode 100644 structxt__simd_1_1revert__simd__traits-members.html create mode 100644 structxt__simd_1_1revert__simd__traits.html create mode 100644 structxt__simd_1_1simd__condition.html create mode 100644 structxt__simd_1_1simd__condition.png create mode 100644 structxt__simd_1_1simd__traits-members.html create mode 100644 structxt__simd_1_1simd__traits.html create mode 100644 structxt__simd_1_1unaligned__mode.html create mode 100644 structxtl_1_1conjunction-members.html create mode 100644 structxtl_1_1conjunction.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_ad.png create mode 100644 tab_b.png create mode 100644 tab_bd.png create mode 100644 tab_h.png create mode 100644 tab_hd.png create mode 100644 tab_s.png create mode 100644 tab_sd.png create mode 100644 tabs.css create mode 100644 topics.html create mode 100644 topics.js create mode 100644 xaccessible_8hpp_source.html create mode 100644 xaccumulator_8hpp_source.html create mode 100644 xadapt_8hpp_source.html create mode 100644 xarray_8hpp_source.html create mode 100644 xassign_8hpp_source.html create mode 100644 xaxis__iterator_8hpp_source.html create mode 100644 xaxis__slice__iterator_8hpp_source.html create mode 100644 xblockwise__reducer_8hpp_source.html create mode 100644 xblockwise__reducer__functors_8hpp_source.html create mode 100644 xbroadcast_8hpp_source.html create mode 100644 xbuffer__adaptor_8hpp_source.html create mode 100644 xbuilder_8hpp_source.html create mode 100644 xchunked__array_8hpp_source.html create mode 100644 xchunked__assign_8hpp_source.html create mode 100644 xchunked__view_8hpp_source.html create mode 100644 xcomplex_8hpp_source.html create mode 100644 xcontainer_8hpp_source.html create mode 100644 xcsv_8hpp_source.html create mode 100644 xdynamic__view_8hpp_source.html create mode 100644 xeval_8hpp_source.html create mode 100644 xexception_8hpp_source.html create mode 100644 xexpression_8hpp_source.html create mode 100644 xexpression__holder_8hpp_source.html create mode 100644 xexpression__traits_8hpp_source.html create mode 100644 xfixed_8hpp_source.html create mode 100644 xfunction_8hpp_source.html create mode 100644 xfunctor__view_8hpp_source.html create mode 100644 xgenerator_8hpp_source.html create mode 100644 xhistogram_8hpp_source.html create mode 100644 xindex__view_8hpp_source.html create mode 100644 xinfo_8hpp_source.html create mode 100644 xio_8hpp_source.html create mode 100644 xiterable_8hpp_source.html create mode 100644 xiterator_8hpp_source.html create mode 100644 xjson_8hpp_source.html create mode 100644 xlayout_8hpp_source.html create mode 100644 xmanipulation_8hpp_source.html create mode 100644 xmasked__view_8hpp_source.html create mode 100644 xmath_8hpp_source.html create mode 100644 xmime_8hpp_source.html create mode 100644 xmultiindex__iterator_8hpp_source.html create mode 100644 xnoalias_8hpp_source.html create mode 100644 xnorm_8hpp_source.html create mode 100644 xnpy_8hpp_source.html create mode 100644 xoffset__view_8hpp_source.html create mode 100644 xoperation_8hpp_source.html create mode 100644 xoptional_8hpp_source.html create mode 100644 xoptional__assembly_8hpp_source.html create mode 100644 xoptional__assembly__base_8hpp_source.html create mode 100644 xoptional__assembly__storage_8hpp_source.html create mode 100644 xpad_8hpp_source.html create mode 100644 xrandom_8hpp_source.html create mode 100644 xreducer_8hpp_source.html create mode 100644 xrepeat_8hpp_source.html create mode 100644 xscalar_8hpp_source.html create mode 100644 xsemantic_8hpp_source.html create mode 100644 xset__operation_8hpp_source.html create mode 100644 xshape_8hpp_source.html create mode 100644 xslice_8hpp_source.html create mode 100644 xsort_8hpp_source.html create mode 100644 xstorage_8hpp_source.html create mode 100644 xstrided__view_8hpp_source.html create mode 100644 xstrided__view__base_8hpp_source.html create mode 100644 xstrides_8hpp_source.html create mode 100644 xtensor_8hpp_source.html create mode 100644 xtensor__config_8hpp_source.html create mode 100644 xtensor__forward_8hpp_source.html create mode 100644 xtensor__simd_8hpp_source.html create mode 100644 xutils_8hpp_source.html create mode 100644 xvectorize_8hpp_source.html create mode 100644 xview_8hpp_source.html create mode 100644 xview__utils_8hpp_source.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/_formulas.tex b/_formulas.tex new file mode 100644 index 000000000..70e228c61 --- /dev/null +++ b/_formulas.tex @@ -0,0 +1,31 @@ +\documentclass{article} +\usepackage{ifthen} +\usepackage{epsfig} +\usepackage[utf8]{inputenc} +\usepackage{xcolor} +\usepackage{newunicodechar} + \makeatletter + \def\doxynewunicodechar#1#2{% + \@tempswafalse + \edef\nuc@tempa{\detokenize{#1}}% + \if\relax\nuc@tempa\relax + \nuc@emptyargerr + \else + \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% + \nuc@check + \if@tempswa + \@namedef{u8:\nuc@tempa}{#2}% + \fi + \fi + } + \makeatother + \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus + \doxynewunicodechar{²}{${}^{2}$}% Superscript two + \doxynewunicodechar{³}{${}^{3}$}% Superscript three + +\pagestyle{empty} +\begin{document} +$ 2 \pi $ +\pagebreak + +\end{document} diff --git a/_formulas_dark.tex b/_formulas_dark.tex new file mode 100644 index 000000000..b3926e389 --- /dev/null +++ b/_formulas_dark.tex @@ -0,0 +1,33 @@ +\documentclass{article} +\usepackage{ifthen} +\usepackage{epsfig} +\usepackage[utf8]{inputenc} +\usepackage{xcolor} +\color{white} +\pagecolor{black} +\usepackage{newunicodechar} + \makeatletter + \def\doxynewunicodechar#1#2{% + \@tempswafalse + \edef\nuc@tempa{\detokenize{#1}}% + \if\relax\nuc@tempa\relax + \nuc@emptyargerr + \else + \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% + \nuc@check + \if@tempswa + \@namedef{u8:\nuc@tempa}{#2}% + \fi + \fi + } + \makeatother + \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus + \doxynewunicodechar{²}{${}^{2}$}% Superscript two + \doxynewunicodechar{³}{${}^{3}$}% Superscript three + +\pagestyle{empty} +\begin{document} +$ 2 \pi $ +\pagebreak + +\end{document} diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..70b495c87 --- /dev/null +++ b/annotated.html @@ -0,0 +1,609 @@ + + + + + + + +xtensor: Class List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NxtStandard mathematical functions for xexpressions
 Nxt_simd
 Nxtl
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 000000000..6e063c163 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,511 @@ +var annotated_dup = +[ + [ "xt", "namespacext.html", [ + [ "check_policy", null, [ + [ "full", "structxt_1_1check__policy_1_1full.html", null ], + [ "none", "structxt_1_1check__policy_1_1none.html", null ] + ] ], + [ "convolve_mode", null, [ + [ "full", "structxt_1_1convolve__mode_1_1full.html", null ], + [ "valid", "structxt_1_1convolve__mode_1_1valid.html", null ] + ] ], + [ "evaluation_strategy", null, [ + [ "immediate_type", "structxt_1_1evaluation__strategy_1_1immediate__type.html", null ], + [ "lazy_type", "structxt_1_1evaluation__strategy_1_1lazy__type.html", null ] + ] ], + [ "extension", null, [ + [ "expression_tag_and", "structxt_1_1extension_1_1expression__tag__and.html", null ], + [ "expression_tag_and< T >", "structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html", null ], + [ "expression_tag_and< T, T >", "structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html", null ], + [ "expression_tag_and< T, xtensor_expression_tag >", "structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html", null ], + [ "expression_tag_and< T1, T... >", "structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html", null ], + [ "expression_tag_and< xtensor_expression_tag, T >", "structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html", null ], + [ "expression_tag_and< xtensor_expression_tag, xtensor_expression_tag >", "structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html", null ], + [ "expression_tag_and<>", "structxt_1_1extension_1_1expression__tag__and_3_4.html", null ], + [ "get_expression_tag", "structxt_1_1extension_1_1get__expression__tag.html", null ], + [ "get_expression_tag< xtl::xoptional< T, B > >", "structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "get_expression_tag_impl", "structxt_1_1extension_1_1get__expression__tag__impl.html", null ], + [ "get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >", "structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de048c22abe806a8cb61aa0c08ab63f2de.html", null ], + [ "xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >", "structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html", null ], + [ "xarray_adaptor_optional_traits", "structxt_1_1extension_1_1xarray__adaptor__optional__traits.html", null ], + [ "xarray_container_base", "structxt_1_1extension_1_1xarray__container__base.html", null ], + [ "xarray_container_base< EC, L, SC, xoptional_expression_tag >", "structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html", null ], + [ "xarray_container_base< EC, L, SC, xtensor_expression_tag >", "structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html", null ], + [ "xarray_container_optional_traits", "structxt_1_1extension_1_1xarray__container__optional__traits.html", null ], + [ "xarray_optional_traits", "structxt_1_1extension_1_1xarray__optional__traits.html", null ], + [ "xbroadcast_base", "structxt_1_1extension_1_1xbroadcast__base.html", null ], + [ "xbroadcast_base_impl", "structxt_1_1extension_1_1xbroadcast__base__impl.html", null ], + [ "xbroadcast_base_impl< xoptional_expression_tag, CT, X >", "structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "xbroadcast_base_impl< xtensor_expression_tag, CT, X >", "structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "xbroadcast_optional", "classxt_1_1extension_1_1xbroadcast__optional.html", null ], + [ "xcontainer_optional_base", "classxt_1_1extension_1_1xcontainer__optional__base.html", null ], + [ "xdynamic_view_base", "structxt_1_1extension_1_1xdynamic__view__base.html", null ], + [ "xdynamic_view_base_impl", "structxt_1_1extension_1_1xdynamic__view__base__impl.html", null ], + [ "xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "xdynamic_view_optional", "classxt_1_1extension_1_1xdynamic__view__optional.html", null ], + [ "xfunction_base", "structxt_1_1extension_1_1xfunction__base.html", null ], + [ "xfunction_base_impl", "structxt_1_1extension_1_1xfunction__base__impl.html", null ], + [ "xfunction_base_impl< xoptional_expression_tag, F, CT... >", "structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html", null ], + [ "xfunction_base_impl< xtensor_expression_tag, F, CT... >", "structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html", null ], + [ "xfunction_optional_base", "classxt_1_1extension_1_1xfunction__optional__base.html", null ], + [ "xfunctor_view_base", "structxt_1_1extension_1_1xfunctor__view__base.html", null ], + [ "xfunctor_view_base_impl", "structxt_1_1extension_1_1xfunctor__view__base__impl.html", null ], + [ "xfunctor_view_base_impl< xoptional_expression_tag, F, CT >", "structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html", null ], + [ "xfunctor_view_base_impl< xtensor_expression_tag, F, CT >", "structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html", null ], + [ "xfunctor_view_optional", "classxt_1_1extension_1_1xfunctor__view__optional.html", null ], + [ "xgenerator_base", "structxt_1_1extension_1_1xgenerator__base.html", null ], + [ "xgenerator_base_impl", "structxt_1_1extension_1_1xgenerator__base__impl.html", null ], + [ "xgenerator_base_impl< xoptional_expression_tag, F, R, S >", "structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html", null ], + [ "xgenerator_base_impl< xtensor_expression_tag, F, R, S >", "structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html", null ], + [ "xgenerator_optional", "classxt_1_1extension_1_1xgenerator__optional.html", null ], + [ "xindex_view_base", "structxt_1_1extension_1_1xindex__view__base.html", null ], + [ "xindex_view_base_impl", "structxt_1_1extension_1_1xindex__view__base__impl.html", null ], + [ "xindex_view_base_impl< xoptional_expression_tag, CT, I >", "structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html", null ], + [ "xindex_view_base_impl< xtensor_expression_tag, CT, I >", "structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html", null ], + [ "xindex_view_optional", "classxt_1_1extension_1_1xindex__view__optional.html", null ], + [ "xoptional_empty_base", "classxt_1_1extension_1_1xoptional__empty__base.html", null ], + [ "xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >", "structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html", null ], + [ "xreducer_optional", "classxt_1_1extension_1_1xreducer__optional.html", null ], + [ "xrepeat_base", "structxt_1_1extension_1_1xrepeat__base.html", null ], + [ "xrepeat_base_impl", "structxt_1_1extension_1_1xrepeat__base__impl.html", null ], + [ "xrepeat_base_impl< xoptional_expression_tag, CT, X >", "structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "xrepeat_base_impl< xtensor_expression_tag, CT, X >", "structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "xrepeat_optional", "classxt_1_1extension_1_1xrepeat__optional.html", null ], + [ "xscalar_base", "structxt_1_1extension_1_1xscalar__base.html", null ], + [ "xscalar_base_impl", "structxt_1_1extension_1_1xscalar__base__impl.html", null ], + [ "xscalar_base_impl< xoptional_expression_tag, CT >", "structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html", null ], + [ "xscalar_base_impl< xtensor_expression_tag, CT >", "structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html", null ], + [ "xscalar_optional_base", "classxt_1_1extension_1_1xscalar__optional__base.html", null ], + [ "xscalar_optional_traits", "structxt_1_1extension_1_1xscalar__optional__traits.html", null ], + [ "xstrided_view_base", "structxt_1_1extension_1_1xstrided__view__base.html", null ], + [ "xstrided_view_base_impl", "structxt_1_1extension_1_1xstrided__view__base__impl.html", null ], + [ "xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "xstrided_view_optional", "classxt_1_1extension_1_1xstrided__view__optional.html", null ], + [ "xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >", "structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html", null ], + [ "xtensor_adaptor_optional_traits", "structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html", null ], + [ "xtensor_container_base", "structxt_1_1extension_1_1xtensor__container__base.html", null ], + [ "xtensor_container_base< EC, N, L, xoptional_expression_tag >", "structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html", null ], + [ "xtensor_container_base< EC, N, L, xtensor_expression_tag >", "structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html", null ], + [ "xtensor_container_optional_traits", "structxt_1_1extension_1_1xtensor__container__optional__traits.html", null ], + [ "xtensor_empty_base", "structxt_1_1extension_1_1xtensor__empty__base.html", null ], + [ "xtensor_optional_traits", "structxt_1_1extension_1_1xtensor__optional__traits.html", null ], + [ "xtensor_view_base< EC, N, L, xoptional_expression_tag >", "structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html", null ], + [ "xtensor_view_optional_traits", "structxt_1_1extension_1_1xtensor__view__optional__traits.html", null ], + [ "xview_base", "structxt_1_1extension_1_1xview__base.html", null ], + [ "xview_base_impl", "structxt_1_1extension_1_1xview__base__impl.html", null ], + [ "xview_base_impl< xoptional_expression_tag, CT, S... >", "structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html", null ], + [ "xview_base_impl< xtensor_expression_tag, CT, S... >", "structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html", null ], + [ "xview_optional", "classxt_1_1extension_1_1xview__optional.html", null ] + ] ], + [ "math", null, [ + [ "abs_fun", "structxt_1_1math_1_1abs__fun.html", null ], + [ "acos_fun", "structxt_1_1math_1_1acos__fun.html", null ], + [ "acosh_fun", "structxt_1_1math_1_1acosh__fun.html", null ], + [ "arg_fun", "structxt_1_1math_1_1arg__fun.html", null ], + [ "asin_fun", "structxt_1_1math_1_1asin__fun.html", null ], + [ "asinh_fun", "structxt_1_1math_1_1asinh__fun.html", null ], + [ "atan2_fun", "structxt_1_1math_1_1atan2__fun.html", null ], + [ "atan_fun", "structxt_1_1math_1_1atan__fun.html", null ], + [ "atanh_fun", "structxt_1_1math_1_1atanh__fun.html", null ], + [ "cbrt_fun", "structxt_1_1math_1_1cbrt__fun.html", null ], + [ "ceil_fun", "structxt_1_1math_1_1ceil__fun.html", null ], + [ "clamp_fun", "structxt_1_1math_1_1clamp__fun.html", null ], + [ "conj_impl_fun", "structxt_1_1math_1_1conj__impl__fun.html", null ], + [ "cos_fun", "structxt_1_1math_1_1cos__fun.html", null ], + [ "cosh_fun", "structxt_1_1math_1_1cosh__fun.html", null ], + [ "deg2rad", "structxt_1_1math_1_1deg2rad.html", null ], + [ "erf_fun", "structxt_1_1math_1_1erf__fun.html", null ], + [ "erfc_fun", "structxt_1_1math_1_1erfc__fun.html", null ], + [ "exp2_fun", "structxt_1_1math_1_1exp2__fun.html", null ], + [ "exp_fun", "structxt_1_1math_1_1exp__fun.html", null ], + [ "expm1_fun", "structxt_1_1math_1_1expm1__fun.html", null ], + [ "fabs_fun", "structxt_1_1math_1_1fabs__fun.html", null ], + [ "fdim_fun", "structxt_1_1math_1_1fdim__fun.html", null ], + [ "floor_fun", "structxt_1_1math_1_1floor__fun.html", null ], + [ "fma_fun", "structxt_1_1math_1_1fma__fun.html", null ], + [ "fmax_fun", "structxt_1_1math_1_1fmax__fun.html", null ], + [ "fmin_fun", "structxt_1_1math_1_1fmin__fun.html", null ], + [ "fmod_fun", "structxt_1_1math_1_1fmod__fun.html", null ], + [ "hypot_fun", "structxt_1_1math_1_1hypot__fun.html", null ], + [ "isfinite_fun", "structxt_1_1math_1_1isfinite__fun.html", null ], + [ "isinf_fun", "structxt_1_1math_1_1isinf__fun.html", null ], + [ "isnan_fun", "structxt_1_1math_1_1isnan__fun.html", null ], + [ "lgamma_fun", "structxt_1_1math_1_1lgamma__fun.html", null ], + [ "log10_fun", "structxt_1_1math_1_1log10__fun.html", null ], + [ "log1p_fun", "structxt_1_1math_1_1log1p__fun.html", null ], + [ "log2_fun", "structxt_1_1math_1_1log2__fun.html", null ], + [ "log_fun", "structxt_1_1math_1_1log__fun.html", null ], + [ "maximum", "structxt_1_1math_1_1maximum.html", null ], + [ "minimum", "structxt_1_1math_1_1minimum.html", null ], + [ "nearbyint_fun", "structxt_1_1math_1_1nearbyint__fun.html", null ], + [ "norm_fun", "structxt_1_1math_1_1norm__fun.html", null ], + [ "pow_fun", "structxt_1_1math_1_1pow__fun.html", null ], + [ "rad2deg", "structxt_1_1math_1_1rad2deg.html", null ], + [ "remainder_fun", "structxt_1_1math_1_1remainder__fun.html", null ], + [ "rint_fun", "structxt_1_1math_1_1rint__fun.html", null ], + [ "round_fun", "structxt_1_1math_1_1round__fun.html", null ], + [ "sign_fun", "structxt_1_1math_1_1sign__fun.html", null ], + [ "sign_impl", "structxt_1_1math_1_1sign__impl.html", null ], + [ "sign_impl< xtl::xoptional< T, B > >", "structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "sin_fun", "structxt_1_1math_1_1sin__fun.html", null ], + [ "sinh_fun", "structxt_1_1math_1_1sinh__fun.html", null ], + [ "sqrt_fun", "structxt_1_1math_1_1sqrt__fun.html", null ], + [ "tan_fun", "structxt_1_1math_1_1tan__fun.html", null ], + [ "tanh_fun", "structxt_1_1math_1_1tanh__fun.html", null ], + [ "tgamma_fun", "structxt_1_1math_1_1tgamma__fun.html", null ], + [ "trunc_fun", "structxt_1_1math_1_1trunc__fun.html", null ] + ] ], + [ "print_options", null, [ + [ "edge_items", "classxt_1_1print__options_1_1edge__items.html", null ], + [ "line_width", "classxt_1_1print__options_1_1line__width.html", null ], + [ "precision", "classxt_1_1print__options_1_1precision.html", null ], + [ "print_options_impl", "structxt_1_1print__options_1_1print__options__impl.html", null ], + [ "threshold", "classxt_1_1print__options_1_1threshold.html", null ] + ] ], + [ "strided_assign_detail", null, [ + [ "check_strides_functor", "structxt_1_1strided__assign__detail_1_1check__strides__functor.html", null ], + [ "idx_tools", "structxt_1_1strided__assign__detail_1_1idx__tools.html", null ], + [ "idx_tools< layout_type::column_major >", "structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html", null ], + [ "idx_tools< layout_type::row_major >", "structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html", null ] + ] ], + [ "traits_detail", null, [ + [ "norm_of_array_elements_impl", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html", null ], + [ "norm_of_array_elements_impl< long double, false, true >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html", null ], + [ "norm_of_array_elements_impl< T, false, false >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html", null ], + [ "norm_of_array_elements_impl< T, false, true >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html", null ], + [ "norm_of_array_elements_impl< T, true, false >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html", null ], + [ "norm_of_array_elements_impl< void *, false, false >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html", null ], + [ "norm_of_scalar_impl", "structxt_1_1traits__detail_1_1norm__of__scalar__impl.html", null ], + [ "norm_of_scalar_impl< T, false >", "structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html", null ], + [ "norm_of_scalar_impl< T, true >", "structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html", null ], + [ "norm_of_vector_impl", "structxt_1_1traits__detail_1_1norm__of__vector__impl.html", null ], + [ "norm_type_base", "structxt_1_1traits__detail_1_1norm__type__base.html", null ] + ] ], + [ "acquire_ownership", "structxt_1_1acquire__ownership.html", null ], + [ "aligned_array", "classxt_1_1aligned__array.html", null ], + [ "apply_cv", "structxt_1_1apply__cv.html", null ], + [ "big_promote_value_type", "structxt_1_1big__promote__value__type.html", null ], + [ "broadcast_error", "classxt_1_1broadcast__error.html", null ], + [ "buffer_inner_types", "structxt_1_1buffer__inner__types.html", null ], + [ "buffer_inner_types< xbuffer_adaptor< CP, O, A > >", "structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "buffer_inner_types< xiterator_adaptor< I, CI > >", "structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "buffer_inner_types< xiterator_owner_adaptor< C, IG > >", "structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "can_assign", "structxt_1_1can__assign.html", null ], + [ "can_assign< xstrided_view< CT, S, L, FST >, RHS >", "structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html", null ], + [ "check_strides_overlap", "structxt_1_1check__strides__overlap.html", null ], + [ "check_strides_overlap< layout_type::column_major >", "structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html", null ], + [ "check_strides_overlap< layout_type::row_major >", "structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html", null ], + [ "common_difference_type", "structxt_1_1common__difference__type.html", null ], + [ "common_difference_type<>", "structxt_1_1common__difference__type_3_4.html", null ], + [ "common_size_type", "structxt_1_1common__size__type.html", null ], + [ "common_size_type<>", "structxt_1_1common__size__type_3_4.html", null ], + [ "common_tensor_type", "structxt_1_1common__tensor__type.html", null ], + [ "common_value_type", "structxt_1_1common__value__type.html", null ], + [ "concatenate_error", "classxt_1_1concatenate__error.html", null ], + [ "conditional_cast_functor", "structxt_1_1conditional__cast__functor.html", null ], + [ "conditional_cast_functor< false, T >", "structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html", null ], + [ "conditional_cast_functor< true, T >", "structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html", null ], + [ "const_array", "structxt_1_1const__array.html", null ], + [ "const_value", "structxt_1_1const__value.html", null ], + [ "const_xclosure", "structxt_1_1const__xclosure.html", null ], + [ "const_xclosure< E, disable_xexpression< std::decay_t< E > > >", "structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html", null ], + [ "const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >", "structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html", null ], + [ "container_simd_return_type", "structxt_1_1container__simd__return__type.html", null ], + [ "decay_all", "structxt_1_1decay__all.html", null ], + [ "decay_all< S< X... > >", "structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "disable_indexed_stepper", "structxt_1_1disable__indexed__stepper.html", null ], + [ "driven_align_mode", "structxt_1_1driven__align__mode.html", null ], + [ "enable_indexed_stepper", "structxt_1_1enable__indexed__stepper.html", null ], + [ "filter_fixed_shape", "structxt_1_1filter__fixed__shape.html", null ], + [ "fixed_shape", "classxt_1_1fixed__shape.html", null ], + [ "fixed_xreducer_shape_type", "structxt_1_1fixed__xreducer__shape__type.html", null ], + [ "fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >", "structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html", null ], + [ "forbid_simd", "structxt_1_1forbid__simd.html", null ], + [ "forbid_simd< const std::vector< bool, A > >", "structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html", null ], + [ "forbid_simd< const xtl::xdynamic_bitset< B, A > >", "structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html", null ], + [ "forbid_simd< std::vector< bool, A > >", "structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html", null ], + [ "forbid_simd< xtl::xdynamic_bitset< B, A > >", "structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html", null ], + [ "get_init_type", "structxt_1_1get__init__type.html", null ], + [ "get_init_type< V, fixed_shape< X... > >", "structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "get_rank", "structxt_1_1get__rank.html", null ], + [ "get_rank< E, decltype((void) E::rank, void())>", "structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html", null ], + [ "get_strides_type", "structxt_1_1get__strides__type.html", null ], + [ "get_strides_type< fixed_shape< I... > >", "structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html", null ], + [ "get_strides_type< xbuffer_adaptor< CP, O, A > >", "structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "get_value_type", "structxt_1_1get__value__type.html", null ], + [ "get_value_type< T, void_t< typename T::value_type > >", "structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html", null ], + [ "has_assign_conversion", "structxt_1_1has__assign__conversion.html", null ], + [ "has_assign_to", "structxt_1_1has__assign__to.html", null ], + [ "has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >", "structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html", null ], + [ "has_data_interface", "structxt_1_1has__data__interface.html", null ], + [ "has_data_interface< E, void_t< decltype(std::declval< E >().data())> >", "structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html", null ], + [ "has_fixed_rank", "structxt_1_1has__fixed__rank.html", null ], + [ "has_iterator_interface", "structxt_1_1has__iterator__interface.html", null ], + [ "has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >", "structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html", null ], + [ "has_rank", "structxt_1_1has__rank.html", null ], + [ "has_sign_conversion", "structxt_1_1has__sign__conversion.html", null ], + [ "has_simd_apply", "structxt_1_1has__simd__apply.html", null ], + [ "has_simd_interface", "structxt_1_1has__simd__interface.html", null ], + [ "has_simd_interface< xfunction< F, CT... >, T >", "structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xfunctor_adaptor< F, CT >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xfunctor_applier_base< D >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xfunctor_view< F, CT >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xtensor_view< EC, N, L, Tag > >", "structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "has_simd_type", "structxt_1_1has__simd__type.html", null ], + [ "has_storage_type", "structxt_1_1has__storage__type.html", null ], + [ "has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >", "structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html", null ], + [ "has_strides", "structxt_1_1has__strides.html", null ], + [ "has_strides< E, void_t< decltype(std::declval< E >().strides())> >", "structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html", null ], + [ "index_from_shape", "structxt_1_1index__from__shape.html", null ], + [ "initializer_dimension", "structxt_1_1initializer__dimension.html", null ], + [ "inner_aligned_mode", "structxt_1_1inner__aligned__mode.html", null ], + [ "inner_reference", "structxt_1_1inner__reference.html", null ], + [ "invalid_type", "structxt_1_1invalid__type.html", null ], + [ "is_chunked_t", "structxt_1_1is__chunked__t.html", null ], + [ "is_contiguous_container", "structxt_1_1is__contiguous__container.html", null ], + [ "is_contiguous_container< xiterator< St, S, L > >", "structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.html", null ], + [ "is_contiguous_container< xiterator_adaptor< I, CI > >", "structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "is_contiguous_container< xiterator_owner_adaptor< C, IG > >", "structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "is_evaluation_strategy", "structxt_1_1is__evaluation__strategy.html", null ], + [ "is_indexed_stepper", "structxt_1_1is__indexed__stepper.html", null ], + [ "is_indexed_stepper< xindexed_stepper< T, B > >", "structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "is_iterator", "structxt_1_1is__iterator.html", null ], + [ "is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >", "structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.html", null ], + [ "is_narrowing_conversion", "structxt_1_1is__narrowing__conversion.html", null ], + [ "is_not_xdummy_iterator", "structxt_1_1is__not__xdummy__iterator.html", null ], + [ "is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >", "structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html", null ], + [ "is_reducer_options", "structxt_1_1is__reducer__options.html", null ], + [ "is_reducer_options_impl", "structxt_1_1is__reducer__options__impl.html", null ], + [ "is_reducer_options_impl< std::tuple< X... > >", "structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "is_xoptional_expression", "structxt_1_1is__xoptional__expression.html", null ], + [ "is_xtensor_expression", "structxt_1_1is__xtensor__expression.html", null ], + [ "keep_dims_type", "structxt_1_1keep__dims__type.html", null ], + [ "linear_assigner", "classxt_1_1linear__assigner.html", null ], + [ "linear_assigner< false >", "classxt_1_1linear__assigner_3_01false_01_4.html", null ], + [ "make_invalid_type", "structxt_1_1make__invalid__type.html", null ], + [ "make_void", "structxt_1_1make__void.html", null ], + [ "meta_identity", "structxt_1_1meta__identity.html", null ], + [ "missing_type", "structxt_1_1missing__type.html", null ], + [ "nested_initializer_list", "structxt_1_1nested__initializer__list.html", null ], + [ "nested_initializer_list< T, 0 >", "structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html", null ], + [ "no_ownership", "structxt_1_1no__ownership.html", null ], + [ "noalias_proxy", "classxt_1_1noalias__proxy.html", null ], + [ "norm_type", "structxt_1_1norm__type.html", null ], + [ "numeric_constants", "structxt_1_1numeric__constants.html", null ], + [ "promote_shape", "structxt_1_1promote__shape.html", null ], + [ "promote_strides", "structxt_1_1promote__strides.html", null ], + [ "rebind_container", "structxt_1_1rebind__container.html", null ], + [ "rebind_container< X, C< T, A > >", "structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html", null ], + [ "rebind_container< X, C< T, N > >", "structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html", null ], + [ "rebind_container< X, svector< T, N, A, B > >", "structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html", null ], + [ "reducer_options", "structxt_1_1reducer__options.html", "structxt_1_1reducer__options" ], + [ "remove_class", "structxt_1_1remove__class.html", null ], + [ "remove_class< R(C::*)(Args...) const >", "structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html", null ], + [ "remove_class< R(C::*)(Args...)>", "structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html", null ], + [ "select_dim_mapping_type", "structxt_1_1select__dim__mapping__type.html", null ], + [ "select_dim_mapping_type< fixed_shape< I... > >", "structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html", null ], + [ "select_iterable_base", "structxt_1_1select__iterable__base.html", null ], + [ "select_layout", "structxt_1_1select__layout.html", null ], + [ "sequence_view", "classxt_1_1sequence__view.html", null ], + [ "squared_norm_type", "structxt_1_1squared__norm__type.html", null ], + [ "static_dimension", "structxt_1_1static__dimension.html", null ], + [ "static_string", "structxt_1_1static__string.html", null ], + [ "stepper_assigner", "classxt_1_1stepper__assigner.html", null ], + [ "stepper_tools", "structxt_1_1stepper__tools.html", null ], + [ "strided_loop_assigner", "classxt_1_1strided__loop__assigner.html", null ], + [ "svector", "classxt_1_1svector.html", null ], + [ "temporary_container", "structxt_1_1temporary__container.html", null ], + [ "temporary_container< xbuffer_adaptor< CP, O, A > >", "structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "temporary_container< xiterator_adaptor< I, CI > >", "structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "temporary_container< xiterator_owner_adaptor< C, IG > >", "structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "temporary_type", "structxt_1_1temporary__type.html", null ], + [ "temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >", "structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html", null ], + [ "temporary_type_from_tag", "structxt_1_1temporary__type__from__tag.html", null ], + [ "temporary_type_from_tag< xtensor_expression_tag, T >", "structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html", null ], + [ "tracking_allocator", "structxt_1_1tracking__allocator.html", "structxt_1_1tracking__allocator" ], + [ "transpose_error", "classxt_1_1transpose__error.html", null ], + [ "tuple_idx_of", "structxt_1_1tuple__idx__of.html", null ], + [ "tuple_idx_of_impl", "structxt_1_1tuple__idx__of__impl.html", null ], + [ "tuple_idx_of_impl< I, T, std::tuple< T, Types... > >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html", null ], + [ "tuple_idx_of_impl< I, T, std::tuple< U, Types... > >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html", null ], + [ "tuple_idx_of_impl< I, T, std::tuple<> >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html", null ], + [ "uvector", "classxt_1_1uvector.html", null ], + [ "view_temporary_type", "structxt_1_1view__temporary__type.html", null ], + [ "xaccessible", "classxt_1_1xaccessible.html", "classxt_1_1xaccessible" ], + [ "xaccumulator_functor", "structxt_1_1xaccumulator__functor.html", null ], + [ "xall", "classxt_1_1xall.html", null ], + [ "xall_tag", "structxt_1_1xall__tag.html", null ], + [ "xarray_adaptor", "classxt_1_1xarray__adaptor.html", "classxt_1_1xarray__adaptor" ], + [ "xarray_container", "classxt_1_1xarray__container.html", "classxt_1_1xarray__container" ], + [ "xassign_traits", "classxt_1_1xassign__traits.html", null ], + [ "xaxis_iterator", "classxt_1_1xaxis__iterator.html", "classxt_1_1xaxis__iterator" ], + [ "xaxis_slice_iterator", "classxt_1_1xaxis__slice__iterator.html", "classxt_1_1xaxis__slice__iterator" ], + [ "xblockwise_reducer", "classxt_1_1xblockwise__reducer.html", null ], + [ "xbounded_iterator", "classxt_1_1xbounded__iterator.html", null ], + [ "xbroadcast", "classxt_1_1xbroadcast.html", "classxt_1_1xbroadcast" ], + [ "xbuffer_adaptor", "classxt_1_1xbuffer__adaptor.html", null ], + [ "xbuffer_adaptor_base", "classxt_1_1xbuffer__adaptor__base.html", null ], + [ "xchunk_iterator", "classxt_1_1xchunk__iterator.html", null ], + [ "xchunked_array", "classxt_1_1xchunked__array.html", null ], + [ "xchunked_assigner", "classxt_1_1xchunked__assigner.html", null ], + [ "xchunked_semantic", "classxt_1_1xchunked__semantic.html", null ], + [ "xchunked_view", "classxt_1_1xchunked__view.html", null ], + [ "xclosure", "structxt_1_1xclosure.html", null ], + [ "xclosure< E, disable_xexpression< std::decay_t< E > > >", "structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html", null ], + [ "xclosure< xshared_expression< E >, std::enable_if_t< true > >", "structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html", null ], + [ "xconst_accessible", "classxt_1_1xconst__accessible.html", "classxt_1_1xconst__accessible" ], + [ "xconst_iterable", "classxt_1_1xconst__iterable.html", "classxt_1_1xconst__iterable" ], + [ "xcontainer", "classxt_1_1xcontainer.html", "classxt_1_1xcontainer" ], + [ "xcontainer_inner_types", "structxt_1_1xcontainer__inner__types.html", null ], + [ "xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xbroadcast< CT, X > >", "structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xchunked_array< chunk_storage > >", "structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >", "structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfunction< F, CT... > >", "structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfunctor_adaptor< F, CT > >", "structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfunctor_view< F, CT > >", "structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xgenerator< C, R, S > >", "structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xindex_view< CT, I > >", "structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xmasked_view< CTD, CTM > >", "structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xoptional_assembly< VE, FE > >", "structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >", "structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xreducer< F, CT, X, O > >", "structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xrepeat< CT, R > >", "structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xscalar< CT > >", "structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xstrided_view< CT, S, L, FST > >", "structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xview< CT, S... > >", "structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html", null ], + [ "xcontainer_iterable_types", "structxt_1_1xcontainer__iterable__types.html", null ], + [ "xcontainer_semantic", "classxt_1_1xcontainer__semantic.html", "classxt_1_1xcontainer__semantic" ], + [ "xcontiguous_iterable", "classxt_1_1xcontiguous__iterable.html", "classxt_1_1xcontiguous__iterable" ], + [ "xcsv_config", "structxt_1_1xcsv__config.html", null ], + [ "xdrop_slice", "classxt_1_1xdrop__slice.html", null ], + [ "xdummy_iterator", "classxt_1_1xdummy__iterator.html", null ], + [ "xdynamic_view", "classxt_1_1xdynamic__view.html", "classxt_1_1xdynamic__view" ], + [ "xellipsis_tag", "structxt_1_1xellipsis__tag.html", null ], + [ "xexpression", "classxt_1_1xexpression.html", "classxt_1_1xexpression" ], + [ "xexpression_assigner", "classxt_1_1xexpression__assigner.html", null ], + [ "xexpression_assigner_base", "classxt_1_1xexpression__assigner__base.html", null ], + [ "xexpression_assigner_base< xoptional_expression_tag >", "classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html", null ], + [ "xexpression_assigner_base< xtensor_expression_tag >", "classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html", null ], + [ "xexpression_holder", "classxt_1_1xexpression__holder.html", null ], + [ "xexpression_tag", "structxt_1_1xexpression__tag.html", null ], + [ "xfiltration", "classxt_1_1xfiltration.html", "classxt_1_1xfiltration" ], + [ "xfixed_adaptor", "classxt_1_1xfixed__adaptor.html", "classxt_1_1xfixed__adaptor" ], + [ "xfixed_container", "classxt_1_1xfixed__container.html", "classxt_1_1xfixed__container" ], + [ "xfunction", "classxt_1_1xfunction.html", "classxt_1_1xfunction" ], + [ "xfunction_cache", "structxt_1_1xfunction__cache.html", null ], + [ "xfunction_iterator", "classxt_1_1xfunction__iterator.html", null ], + [ "xfunction_stepper", "classxt_1_1xfunction__stepper.html", null ], + [ "xfunctor_adaptor", "classxt_1_1xfunctor__adaptor.html", "classxt_1_1xfunctor__adaptor" ], + [ "xfunctor_applier_base", "classxt_1_1xfunctor__applier__base.html", "classxt_1_1xfunctor__applier__base" ], + [ "xfunctor_iterator", "classxt_1_1xfunctor__iterator.html", null ], + [ "xfunctor_stepper", "classxt_1_1xfunctor__stepper.html", null ], + [ "xfunctor_view", "classxt_1_1xfunctor__view.html", "classxt_1_1xfunctor__view" ], + [ "xfunctor_view_temporary_type", "structxt_1_1xfunctor__view__temporary__type.html", null ], + [ "xgenerator", "classxt_1_1xgenerator.html", "classxt_1_1xgenerator" ], + [ "xindex_view", "classxt_1_1xindex__view.html", "classxt_1_1xindex__view" ], + [ "xindexed_stepper", "classxt_1_1xindexed__stepper.html", null ], + [ "xinitial", "structxt_1_1xinitial.html", null ], + [ "xiterable", "classxt_1_1xiterable.html", "classxt_1_1xiterable" ], + [ "xiterable_inner_types", "structxt_1_1xiterable__inner__types.html", null ], + [ "xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xbroadcast< CT, X > >", "structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html", null ], + [ "xiterable_inner_types< xchunked_array< chunk_storage > >", "structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html", null ], + [ "xiterable_inner_types< xdynamic_view< CT, S, L, FST > >", "structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xfunction< F, CT... > >", "structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html", null ], + [ "xiterable_inner_types< xgenerator< C, R, S > >", "structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html", null ], + [ "xiterable_inner_types< xindex_view< CT, I > >", "structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html", null ], + [ "xiterable_inner_types< xmasked_view< CTD, CTM > >", "structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html", null ], + [ "xiterable_inner_types< xoptional_assembly< VE, FE > >", "structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html", null ], + [ "xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >", "structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html", null ], + [ "xiterable_inner_types< xreducer< F, CT, X, O > >", "structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html", null ], + [ "xiterable_inner_types< xrepeat< CT, R > >", "structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html", null ], + [ "xiterable_inner_types< xscalar< CT > >", "structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html", null ], + [ "xiterable_inner_types< xstrided_view< CT, S, L, FST > >", "structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xview< CT, S... > >", "structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html", null ], + [ "xiterator", "classxt_1_1xiterator.html", null ], + [ "xiterator_adaptor", "classxt_1_1xiterator__adaptor.html", null ], + [ "xiterator_owner_adaptor", "classxt_1_1xiterator__owner__adaptor.html", null ], + [ "xkeep_slice", "classxt_1_1xkeep__slice.html", null ], + [ "xmasked_value", "classxt_1_1xmasked__value.html", null ], + [ "xmasked_view", "classxt_1_1xmasked__view.html", "classxt_1_1xmasked__view" ], + [ "xmasked_view_stepper", "classxt_1_1xmasked__view__stepper.html", null ], + [ "xmultiindex_iterator", "classxt_1_1xmultiindex__iterator.html", null ], + [ "xnewaxis", "classxt_1_1xnewaxis.html", null ], + [ "xnewaxis_tag", "structxt_1_1xnewaxis__tag.html", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html", "classxt_1_1xoptional__assembly" ], + [ "xoptional_assembly_adaptor", "classxt_1_1xoptional__assembly__adaptor.html", "classxt_1_1xoptional__assembly__adaptor" ], + [ "xoptional_assembly_base", "classxt_1_1xoptional__assembly__base.html", "classxt_1_1xoptional__assembly__base" ], + [ "xoptional_assembly_linear_iterator", "classxt_1_1xoptional__assembly__linear__iterator.html", null ], + [ "xoptional_assembly_linear_iterator_traits", "structxt_1_1xoptional__assembly__linear__iterator__traits.html", null ], + [ "xoptional_assembly_stepper", "classxt_1_1xoptional__assembly__stepper.html", null ], + [ "xoptional_assembly_storage", "classxt_1_1xoptional__assembly__storage.html", null ], + [ "xoptional_comparable", "structxt_1_1xoptional__comparable.html", null ], + [ "xoptional_expression_tag", "structxt_1_1xoptional__expression__tag.html", null ], + [ "xproxy_inner_types", "structxt_1_1xproxy__inner__types.html", null ], + [ "xrange", "classxt_1_1xrange.html", null ], + [ "xrange_adaptor", "structxt_1_1xrange__adaptor.html", null ], + [ "xreducer", "classxt_1_1xreducer.html", "classxt_1_1xreducer" ], + [ "xreducer_functors", "structxt_1_1xreducer__functors.html", null ], + [ "xreducer_shape_type", "structxt_1_1xreducer__shape__type.html", null ], + [ "xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html", null ], + [ "xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html", null ], + [ "xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html", null ], + [ "xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >", "structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html", null ], + [ "xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >", "structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html", null ], + [ "xreducer_stepper", "classxt_1_1xreducer__stepper.html", null ], + [ "xrepeat", "classxt_1_1xrepeat.html", "classxt_1_1xrepeat" ], + [ "xrepeat_stepper", "classxt_1_1xrepeat__stepper.html", null ], + [ "xscalar", "classxt_1_1xscalar.html", "classxt_1_1xscalar" ], + [ "xscalar_stepper", "classxt_1_1xscalar__stepper.html", null ], + [ "xsemantic_base", "classxt_1_1xsemantic__base.html", "classxt_1_1xsemantic__base" ], + [ "xsharable_expression", "classxt_1_1xsharable__expression.html", null ], + [ "xshared_expression", "classxt_1_1xshared__expression.html", "classxt_1_1xshared__expression" ], + [ "xslice", "classxt_1_1xslice.html", null ], + [ "xstepped_range", "classxt_1_1xstepped__range.html", null ], + [ "xstepper", "classxt_1_1xstepper.html", null ], + [ "xstrided_container", "classxt_1_1xstrided__container.html", "classxt_1_1xstrided__container" ], + [ "xstrided_view", "classxt_1_1xstrided__view.html", "classxt_1_1xstrided__view" ], + [ "xstrided_view_base", "classxt_1_1xstrided__view__base.html", "classxt_1_1xstrided__view__base" ], + [ "xtensor_adaptor", "classxt_1_1xtensor__adaptor.html", "classxt_1_1xtensor__adaptor" ], + [ "xtensor_container", "classxt_1_1xtensor__container.html", "classxt_1_1xtensor__container" ], + [ "xtensor_expression_tag", "structxt_1_1xtensor__expression__tag.html", null ], + [ "xtensor_view", "classxt_1_1xtensor__view.html", "classxt_1_1xtensor__view" ], + [ "xvectorizer", "classxt_1_1xvectorizer.html", null ], + [ "xview", "classxt_1_1xview.html", "classxt_1_1xview" ], + [ "xview_semantic", "classxt_1_1xview__semantic.html", "classxt_1_1xview__semantic" ], + [ "xview_shape_type", "structxt_1_1xview__shape__type.html", null ], + [ "xview_shape_type< fixed_shape< I... >, S... >", "structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html", null ], + [ "xview_shape_type< std::array< I, L >, S... >", "structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html", null ], + [ "xview_stepper", "classxt_1_1xview__stepper.html", null ] + ] ], + [ "xt_simd", null, [ + [ "aligned_allocator", "classxt__simd_1_1aligned__allocator.html", null ], + [ "aligned_mode", "structxt__simd_1_1aligned__mode.html", null ], + [ "allocator_alignment", "structxt__simd_1_1allocator__alignment.html", null ], + [ "container_alignment", "structxt__simd_1_1container__alignment.html", null ], + [ "is_batch_bool", "structxt__simd_1_1is__batch__bool.html", null ], + [ "is_batch_complex", "structxt__simd_1_1is__batch__complex.html", null ], + [ "revert_simd_traits", "structxt__simd_1_1revert__simd__traits.html", null ], + [ "simd_condition", "structxt__simd_1_1simd__condition.html", null ], + [ "simd_traits", "structxt__simd_1_1simd__traits.html", null ], + [ "unaligned_mode", "structxt__simd_1_1unaligned__mode.html", null ] + ] ], + [ "xtl", null, [ + [ "conjunction", "structxtl_1_1conjunction.html", null ] + ] ] +]; \ No newline at end of file diff --git a/bc_s.png b/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/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..80f64a1ce --- /dev/null +++ b/classes.html @@ -0,0 +1,167 @@ + + + + + + + +xtensor: Class Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | I | K | L | M | N | P | R | S | T | U | V | X
+
+
+
A
+
abs_fun (xt::math)
acos_fun (xt::math)
acosh_fun (xt::math)
acquire_ownership (xt)
aligned_allocator (xt_simd)
aligned_array (xt)
aligned_mode (xt_simd)
allocator_alignment (xt_simd)
apply_cv (xt)
arg_fun (xt::math)
asin_fun (xt::math)
asinh_fun (xt::math)
atan2_fun (xt::math)
atan_fun (xt::math)
atanh_fun (xt::math)
+
+
B
+
big_promote_value_type (xt)
broadcast_error (xt)
buffer_inner_types (xt)
buffer_inner_types< xbuffer_adaptor< CP, O, A > > (xt)
buffer_inner_types< xiterator_adaptor< I, CI > > (xt)
buffer_inner_types< xiterator_owner_adaptor< C, IG > > (xt)
+
+
C
+
can_assign (xt)
can_assign< xstrided_view< CT, S, L, FST >, RHS > (xt)
cbrt_fun (xt::math)
ceil_fun (xt::math)
check_strides_functor (xt::strided_assign_detail)
check_strides_overlap (xt)
check_strides_overlap< layout_type::column_major > (xt)
check_strides_overlap< layout_type::row_major > (xt)
clamp_fun (xt::math)
common_difference_type (xt)
common_difference_type<> (xt)
common_size_type (xt)
common_size_type<> (xt)
common_tensor_type (xt)
common_value_type (xt)
concatenate_error (xt)
conditional_cast_functor (xt)
conditional_cast_functor< false, T > (xt)
conditional_cast_functor< true, T > (xt)
conj_impl_fun (xt::math)
conjunction (xtl)
const_array (xt)
const_value (xt)
const_xclosure (xt)
const_xclosure< E, disable_xexpression< std::decay_t< E > > > (xt)
const_xclosure< xshared_expression< E > &, std::enable_if_t< true > > (xt)
container_alignment (xt_simd)
container_simd_return_type (xt)
cos_fun (xt::math)
cosh_fun (xt::math)
+
+
D
+
decay_all (xt)
decay_all< S< X... > > (xt)
deg2rad (xt::math)
disable_indexed_stepper (xt)
driven_align_mode (xt)
+
+
E
+
edge_items (xt::print_options)
enable_indexed_stepper (xt)
erf_fun (xt::math)
erfc_fun (xt::math)
exp2_fun (xt::math)
exp_fun (xt::math)
expm1_fun (xt::math)
expression_tag_and (xt::extension)
expression_tag_and< T > (xt::extension)
expression_tag_and< T, T > (xt::extension)
expression_tag_and< T, xtensor_expression_tag > (xt::extension)
expression_tag_and< T1, T... > (xt::extension)
expression_tag_and< xtensor_expression_tag, T > (xt::extension)
expression_tag_and< xtensor_expression_tag, xtensor_expression_tag > (xt::extension)
expression_tag_and<> (xt::extension)
+
+
F
+
fabs_fun (xt::math)
fdim_fun (xt::math)
filter_fixed_shape (xt)
fixed_shape (xt)
fixed_xreducer_shape_type (xt)
fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > > (xt)
floor_fun (xt::math)
fma_fun (xt::math)
fmax_fun (xt::math)
fmin_fun (xt::math)
fmod_fun (xt::math)
forbid_simd (xt)
forbid_simd< const std::vector< bool, A > > (xt)
forbid_simd< const xtl::xdynamic_bitset< B, A > > (xt)
forbid_simd< std::vector< bool, A > > (xt)
forbid_simd< xtl::xdynamic_bitset< B, A > > (xt)
full (xt::check_policy)
full (xt::convolve_mode)
+
+
G
+
get_expression_tag (xt::extension)
get_expression_tag< xtl::xoptional< T, B > > (xt::extension)
get_expression_tag_impl (xt::extension)
get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > > (xt::extension)
get_init_type (xt)
get_init_type< V, fixed_shape< X... > > (xt)
get_rank (xt)
get_rank< E, decltype((void) E::rank, void())> (xt)
get_strides_type (xt)
get_strides_type< fixed_shape< I... > > (xt)
get_strides_type< xbuffer_adaptor< CP, O, A > > (xt)
get_value_type (xt)
get_value_type< T, void_t< typename T::value_type > > (xt)
+
+
H
+
has_assign_conversion (xt)
has_assign_to (xt)
has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> > (xt)
has_data_interface (xt)
has_data_interface< E, void_t< decltype(std::declval< E >().data())> > (xt)
has_fixed_rank (xt)
has_iterator_interface (xt)
has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> > (xt)
has_rank (xt)
has_sign_conversion (xt)
has_simd_apply (xt)
has_simd_interface (xt)
has_simd_interface< xfunction< F, CT... >, T > (xt)
has_simd_interface< xfunctor_adaptor< F, CT >, T > (xt)
has_simd_interface< xfunctor_applier_base< D >, T > (xt)
has_simd_interface< xfunctor_view< F, CT >, T > (xt)
has_simd_interface< xtensor_view< EC, N, L, Tag > > (xt)
has_simd_type (xt)
has_storage_type (xt)
has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > > (xt)
has_strides (xt)
has_strides< E, void_t< decltype(std::declval< E >().strides())> > (xt)
hypot_fun (xt::math)
+
+
I
+
idx_tools (xt::strided_assign_detail)
idx_tools< layout_type::column_major > (xt::strided_assign_detail)
idx_tools< layout_type::row_major > (xt::strided_assign_detail)
immediate_type (xt::evaluation_strategy)
index_from_shape (xt)
reducer_options::initial_tester (xt)
reducer_options::initial_tester< const xinitial< X > > (xt)
reducer_options::initial_tester< xinitial< X > > (xt)
initializer_dimension (xt)
inner_aligned_mode (xt)
inner_reference (xt)
invalid_type (xt)
is_batch_bool (xt_simd)
is_batch_complex (xt_simd)
is_chunked_t (xt)
is_contiguous_container (xt)
is_contiguous_container< xiterator< St, S, L > > (xt)
is_contiguous_container< xiterator_adaptor< I, CI > > (xt)
is_contiguous_container< xiterator_owner_adaptor< C, IG > > (xt)
is_evaluation_strategy (xt)
is_indexed_stepper (xt)
is_indexed_stepper< xindexed_stepper< T, B > > (xt)
is_iterator (xt)
is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> > (xt)
is_narrowing_conversion (xt)
is_not_xdummy_iterator (xt)
is_not_xdummy_iterator< xdummy_iterator< is_const, CT > > (xt)
is_reducer_options (xt)
is_reducer_options_impl (xt)
is_reducer_options_impl< std::tuple< X... > > (xt)
is_xoptional_expression (xt)
is_xtensor_expression (xt)
isfinite_fun (xt::math)
isinf_fun (xt::math)
isnan_fun (xt::math)
+
+
K
+
keep_dims_type (xt)
+
+
L
+
lazy_type (xt::evaluation_strategy)
lgamma_fun (xt::math)
line_width (xt::print_options)
linear_assigner (xt)
linear_assigner< false > (xt)
log10_fun (xt::math)
log1p_fun (xt::math)
log2_fun (xt::math)
log_fun (xt::math)
+
+
M
+
make_invalid_type (xt)
make_void (xt)
maximum (xt::math)
meta_identity (xt)
minimum (xt::math)
missing_type (xt)
+
+
N
+
nearbyint_fun (xt::math)
nested_initializer_list (xt)
nested_initializer_list< T, 0 > (xt)
no_ownership (xt)
noalias_proxy (xt)
none (xt::check_policy)
norm_fun (xt::math)
norm_of_array_elements_impl (xt::traits_detail)
norm_of_array_elements_impl< long double, false, true > (xt::traits_detail)
norm_of_array_elements_impl< T, false, false > (xt::traits_detail)
norm_of_array_elements_impl< T, false, true > (xt::traits_detail)
norm_of_array_elements_impl< T, true, false > (xt::traits_detail)
norm_of_array_elements_impl< void *, false, false > (xt::traits_detail)
norm_of_scalar_impl (xt::traits_detail)
norm_of_scalar_impl< T, false > (xt::traits_detail)
norm_of_scalar_impl< T, true > (xt::traits_detail)
norm_of_vector_impl (xt::traits_detail)
norm_type (xt)
norm_type_base (xt::traits_detail)
numeric_constants (xt)
+
+
P
+
pow_fun (xt::math)
precision (xt::print_options)
print_options_impl (xt::print_options)
promote_shape (xt)
promote_strides (xt)
+
+
R
+
rad2deg (xt::math)
tracking_allocator::rebind (xt)
rebind_container (xt)
rebind_container< X, C< T, A > > (xt)
rebind_container< X, C< T, N > > (xt)
rebind_container< X, svector< T, N, A, B > > (xt)
reducer_options (xt)
remainder_fun (xt::math)
remove_class (xt)
remove_class< R(C::*)(Args...) const > (xt)
remove_class< R(C::*)(Args...)> (xt)
revert_simd_traits (xt_simd)
rint_fun (xt::math)
round_fun (xt::math)
+
+
S
+
select_dim_mapping_type (xt)
select_dim_mapping_type< fixed_shape< I... > > (xt)
select_iterable_base (xt)
select_layout (xt)
sequence_view (xt)
sign_fun (xt::math)
sign_impl (xt::math)
sign_impl< xtl::xoptional< T, B > > (xt::math)
simd_condition (xt_simd)
simd_traits (xt_simd)
sin_fun (xt::math)
sinh_fun (xt::math)
sqrt_fun (xt::math)
squared_norm_type (xt)
static_dimension (xt)
static_string (xt)
stepper_assigner (xt)
stepper_tools (xt)
strided_loop_assigner (xt)
svector (xt)
+
+
T
+
tan_fun (xt::math)
tanh_fun (xt::math)
temporary_container (xt)
temporary_container< xbuffer_adaptor< CP, O, A > > (xt)
temporary_container< xiterator_adaptor< I, CI > > (xt)
temporary_container< xiterator_owner_adaptor< C, IG > > (xt)
temporary_type (xt)
temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > > (xt)
temporary_type_from_tag (xt)
temporary_type_from_tag< xtensor_expression_tag, T > (xt)
tgamma_fun (xt::math)
threshold (xt::print_options)
tracking_allocator (xt)
transpose_error (xt)
trunc_fun (xt::math)
tuple_idx_of (xt)
tuple_idx_of_impl (xt)
tuple_idx_of_impl< I, T, std::tuple< T, Types... > > (xt)
tuple_idx_of_impl< I, T, std::tuple< U, Types... > > (xt)
tuple_idx_of_impl< I, T, std::tuple<> > (xt)
+
+
U
+
unaligned_mode (xt_simd)
uvector (xt)
+
+
V
+
valid (xt::convolve_mode)
view_temporary_type (xt)
+
+
X
+
xaccessible (xt)
xaccumulator_functor (xt)
xall (xt)
xall_tag (xt)
xarray_adaptor (xt)
xarray_adaptor_base< EC, L, SC, xoptional_expression_tag > (xt::extension)
xarray_adaptor_optional_traits (xt::extension)
xarray_container (xt)
xarray_container_base (xt::extension)
xarray_container_base< EC, L, SC, xoptional_expression_tag > (xt::extension)
xarray_container_base< EC, L, SC, xtensor_expression_tag > (xt::extension)
xarray_container_optional_traits (xt::extension)
xarray_optional_traits (xt::extension)
xassign_traits (xt)
xaxis_iterator (xt)
xaxis_slice_iterator (xt)
xblockwise_reducer (xt)
xbounded_iterator (xt)
xbroadcast (xt)
xbroadcast_base (xt::extension)
xbroadcast_base_impl (xt::extension)
xbroadcast_base_impl< xoptional_expression_tag, CT, X > (xt::extension)
xbroadcast_base_impl< xtensor_expression_tag, CT, X > (xt::extension)
xbroadcast_optional (xt::extension)
xbuffer_adaptor (xt)
xbuffer_adaptor_base (xt)
xchunk_iterator (xt)
xchunked_array (xt)
xchunked_assigner (xt)
xchunked_semantic (xt)
xchunked_view (xt)
xclosure (xt)
xclosure< E, disable_xexpression< std::decay_t< E > > > (xt)
xclosure< xshared_expression< E >, std::enable_if_t< true > > (xt)
xconst_accessible (xt)
xconst_iterable (xt)
xcontainer (xt)
xcontainer_inner_types (xt)
xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > > (xt)
xcontainer_inner_types< xarray_container< EC, L, SC, Tag > > (xt)
xcontainer_inner_types< xbroadcast< CT, X > > (xt)
xcontainer_inner_types< xchunked_array< chunk_storage > > (xt)
xcontainer_inner_types< xdynamic_view< CT, S, L, FST > > (xt)
xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > (xt)
xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > > (xt)
xcontainer_inner_types< xfunction< F, CT... > > (xt)
xcontainer_inner_types< xfunctor_adaptor< F, CT > > (xt)
xcontainer_inner_types< xfunctor_view< F, CT > > (xt)
xcontainer_inner_types< xgenerator< C, R, S > > (xt)
xcontainer_inner_types< xindex_view< CT, I > > (xt)
xcontainer_inner_types< xmasked_view< CTD, CTM > > (xt)
xcontainer_inner_types< xoptional_assembly< VE, FE > > (xt)
xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > > (xt)
xcontainer_inner_types< xreducer< F, CT, X, O > > (xt)
xcontainer_inner_types< xrepeat< CT, R > > (xt)
xcontainer_inner_types< xscalar< CT > > (xt)
xcontainer_inner_types< xstrided_view< CT, S, L, FST > > (xt)
xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > > (xt)
xcontainer_inner_types< xtensor_container< EC, N, L, Tag > > (xt)
xcontainer_inner_types< xtensor_view< EC, N, L, Tag > > (xt)
xcontainer_inner_types< xview< CT, S... > > (xt)
xcontainer_iterable_types (xt)
xcontainer_optional_base (xt::extension)
xcontainer_semantic (xt)
xcontiguous_iterable (xt)
xcsv_config (xt)
xdrop_slice (xt)
xdummy_iterator (xt)
xdynamic_view (xt)
xdynamic_view_base (xt::extension)
xdynamic_view_base_impl (xt::extension)
xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST > (xt::extension)
xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST > (xt::extension)
xdynamic_view_optional (xt::extension)
xellipsis_tag (xt)
xexpression (xt)
xexpression_assigner (xt)
xexpression_assigner_base (xt)
xexpression_assigner_base< xoptional_expression_tag > (xt)
xexpression_assigner_base< xtensor_expression_tag > (xt)
xexpression_holder (xt)
xexpression_tag (xt)
xfiltration (xt)
xfixed_adaptor (xt)
xfixed_container (xt)
xfunction (xt)
xfunction_base (xt::extension)
xfunction_base_impl (xt::extension)
xfunction_base_impl< xoptional_expression_tag, F, CT... > (xt::extension)
xfunction_base_impl< xtensor_expression_tag, F, CT... > (xt::extension)
xfunction_cache (xt)
xfunction_iterator (xt)
xfunction_optional_base (xt::extension)
xfunction_stepper (xt)
xfunctor_adaptor (xt)
xfunctor_applier_base (xt)
xfunctor_iterator (xt)
xfunctor_stepper (xt)
xfunctor_view (xt)
xfunctor_view_base (xt::extension)
xfunctor_view_base_impl (xt::extension)
xfunctor_view_base_impl< xoptional_expression_tag, F, CT > (xt::extension)
xfunctor_view_base_impl< xtensor_expression_tag, F, CT > (xt::extension)
xfunctor_view_optional (xt::extension)
xfunctor_view_temporary_type (xt)
xgenerator (xt)
xgenerator_base (xt::extension)
xgenerator_base_impl (xt::extension)
xgenerator_base_impl< xoptional_expression_tag, F, R, S > (xt::extension)
xgenerator_base_impl< xtensor_expression_tag, F, R, S > (xt::extension)
xgenerator_optional (xt::extension)
xindex_view (xt)
xindex_view_base (xt::extension)
xindex_view_base_impl (xt::extension)
xindex_view_base_impl< xoptional_expression_tag, CT, I > (xt::extension)
xindex_view_base_impl< xtensor_expression_tag, CT, I > (xt::extension)
xindex_view_optional (xt::extension)
xindexed_stepper (xt)
xinitial (xt)
xiterable (xt)
xiterable_inner_types (xt)
xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > > (xt)
xiterable_inner_types< xarray_container< EC, L, SC, Tag > > (xt)
xiterable_inner_types< xbroadcast< CT, X > > (xt)
xiterable_inner_types< xchunked_array< chunk_storage > > (xt)
xiterable_inner_types< xdynamic_view< CT, S, L, FST > > (xt)
xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > (xt)
xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > > (xt)
xiterable_inner_types< xfunction< F, CT... > > (xt)
xiterable_inner_types< xgenerator< C, R, S > > (xt)
xiterable_inner_types< xindex_view< CT, I > > (xt)
xiterable_inner_types< xmasked_view< CTD, CTM > > (xt)
xiterable_inner_types< xoptional_assembly< VE, FE > > (xt)
xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > > (xt)
xiterable_inner_types< xreducer< F, CT, X, O > > (xt)
xiterable_inner_types< xrepeat< CT, R > > (xt)
xiterable_inner_types< xscalar< CT > > (xt)
xiterable_inner_types< xstrided_view< CT, S, L, FST > > (xt)
xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > > (xt)
xiterable_inner_types< xtensor_container< EC, N, L, Tag > > (xt)
xiterable_inner_types< xtensor_view< EC, N, L, Tag > > (xt)
xiterable_inner_types< xview< CT, S... > > (xt)
xiterator (xt)
xiterator_adaptor (xt)
xiterator_owner_adaptor (xt)
xkeep_slice (xt)
xmasked_value (xt)
xmasked_view (xt)
xmasked_view_stepper (xt)
xmultiindex_iterator (xt)
xnewaxis (xt)
xnewaxis_tag (xt)
xoptional_assembly (xt)
xoptional_assembly_adaptor (xt)
xoptional_assembly_base (xt)
xoptional_assembly_linear_iterator (xt)
xoptional_assembly_linear_iterator_traits (xt)
xoptional_assembly_stepper (xt)
xoptional_assembly_storage (xt)
xoptional_comparable (xt)
xoptional_empty_base (xt::extension)
xoptional_expression_tag (xt)
xproxy_inner_types (xt)
xrange (xt)
xrange_adaptor (xt)
xreducer (xt)
xreducer_base_impl< xoptional_expression_tag, F, CT, X, O > (xt::extension)
xreducer_functors (xt)
xreducer_optional (xt::extension)
xreducer_shape_type (xt)
xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O > (xt)
xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type > (xt)
xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type > (xt)
xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type > (xt)
xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type > (xt)
xreducer_stepper (xt)
xrepeat (xt)
xrepeat_base (xt::extension)
xrepeat_base_impl (xt::extension)
xrepeat_base_impl< xoptional_expression_tag, CT, X > (xt::extension)
xrepeat_base_impl< xtensor_expression_tag, CT, X > (xt::extension)
xrepeat_optional (xt::extension)
xrepeat_stepper (xt)
xscalar (xt)
xscalar_base (xt::extension)
xscalar_base_impl (xt::extension)
xscalar_base_impl< xoptional_expression_tag, CT > (xt::extension)
xscalar_base_impl< xtensor_expression_tag, CT > (xt::extension)
xscalar_optional_base (xt::extension)
xscalar_optional_traits (xt::extension)
xscalar_stepper (xt)
xsemantic_base (xt)
xsharable_expression (xt)
xshared_expression (xt)
xslice (xt)
xstepped_range (xt)
xstepper (xt)
xstrided_container (xt)
xstrided_view (xt)
xstrided_view_base (xt::extension)
xstrided_view_base (xt)
xstrided_view_base_impl (xt::extension)
xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST > (xt::extension)
xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST > (xt::extension)
xstrided_view_optional (xt::extension)
xtensor_adaptor (xt)
xtensor_adaptor_base< EC, N, L, xoptional_expression_tag > (xt::extension)
xtensor_adaptor_optional_traits (xt::extension)
xtensor_container (xt)
xtensor_container_base (xt::extension)
xtensor_container_base< EC, N, L, xoptional_expression_tag > (xt::extension)
xtensor_container_base< EC, N, L, xtensor_expression_tag > (xt::extension)
xtensor_container_optional_traits (xt::extension)
xtensor_empty_base (xt::extension)
xtensor_expression_tag (xt)
xtensor_optional_traits (xt::extension)
xtensor_view (xt)
xtensor_view_base< EC, N, L, xoptional_expression_tag > (xt::extension)
xtensor_view_optional_traits (xt::extension)
xvectorizer (xt)
xview (xt)
xview_base (xt::extension)
xview_base_impl (xt::extension)
xview_base_impl< xoptional_expression_tag, CT, S... > (xt::extension)
xview_base_impl< xtensor_expression_tag, CT, S... > (xt::extension)
xview_optional (xt::extension)
xview_semantic (xt)
xview_shape_type (xt)
xview_shape_type< fixed_shape< I... >, S... > (xt)
xview_shape_type< std::array< I, L >, S... > (xt)
xview_stepper (xt)
+
+
+
+ + + + diff --git a/classxt_1_1aligned__array-members.html b/classxt_1_1aligned__array-members.html new file mode 100644 index 000000000..341e63682 --- /dev/null +++ b/classxt_1_1aligned__array-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::aligned_array< T, N, Align > Member List
+
+
+ +

This is the complete list of members for xt::aligned_array< T, N, Align >, including all inherited members.

+ + +
allocator_type typedef (defined in xt::aligned_array< T, N, Align >)xt::aligned_array< T, N, Align >
+
+ + + + diff --git a/classxt_1_1aligned__array.html b/classxt_1_1aligned__array.html new file mode 100644 index 000000000..11be15421 --- /dev/null +++ b/classxt_1_1aligned__array.html @@ -0,0 +1,153 @@ + + + + + + + +xtensor: xt::aligned_array< T, N, Align > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::aligned_array< T, N, Align > Class Template Reference
+
+
+ +

This array class is modeled after std::array but adds optional alignment through a template parameter. + More...

+ +

#include <xstorage.hpp>

+
+Inheritance diagram for xt::aligned_array< T, N, Align >:
+
+
+ +
+ + + + +

+Public Types

using allocator_type = std::conditional_t< Align !=0, xt_simd::aligned_allocator< T, Align >, std::allocator< T > >
 
+

Detailed Description

+
template<class T, std::size_t N, std::size_t Align = ( 0 != 0 ? 0 : alignof( T ))>
+class xt::aligned_array< T, N, Align >

This array class is modeled after std::array but adds optional alignment through a template parameter.

+

To be moved to xtl, along with the rest of xstorage.hpp

+ +

Definition at line 1429 of file xstorage.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class T , std::size_t N, std::size_t Align = ( 0 != 0 ? 0 : alignof( T ))>
+ + + + +
using xt::aligned_array< T, N, Align >::allocator_type = std::conditional_t<Align != 0, xt_simd::aligned_allocator<T, Align>, std::allocator<T> >
+
+ +

Definition at line 1435 of file xstorage.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1aligned__array.png b/classxt_1_1aligned__array.png new file mode 100644 index 0000000000000000000000000000000000000000..3be83a0fd9abe52f7e3cecf3ca920e0c500e1a52 GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^2Z1<%gBeIpU-r-gNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cv(aNqz?Jb2RO6+k)8k|4ie1|S~{%$a6iVPIe?@pN$vsbG9N_ioW^1)i30 z^P9E*)z|s+JUhSR%G$$;ZpJx63LZ5cP0=%E>gq~(>glK}oZMN&G-=N2YL>*ay-Oed zTjBfnk%YbPg*CS_?L0r6fBaj(eCg7M5%-;cAFo#EO34yE_;bETk&nHqfzj4Io3-m& z8n^7!DO|_#>5tM$#=8nD%%`6fkqn&tmE)0ozR{gii>4`rq$}NE4_dR1!$~I3=+25K zMulCU?Kvhfoi{l6*brz+V$*4>6Y2H=?2#MWy46*x-YnI56>IdA+u)_G!b!u@wf|?{ zZs(lGUNPgr%^!7Y-5#GJEg3z}O%iPpnePD7*Y- z?YG%~LQ-s-)b2|+U3-|g!Fxmc70rW&p{aqM0TLO3uis8%IT`i;MAJpH?yle$M;Dy@ zp!EE+-rV85g~Z3%b{K|H*Ct^72IM!iS6PO6g-Q!3eK3hc8&f{kv9dpNw*z + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::broadcast_error Member List
+
+
+ +

This is the complete list of members for xt::broadcast_error, including all inherited members.

+ + +
broadcast_error(const char *msg) (defined in xt::broadcast_error)xt::broadcast_errorinlineexplicit
+
+ + + + diff --git a/classxt_1_1broadcast__error.html b/classxt_1_1broadcast__error.html new file mode 100644 index 000000000..f6886ae7a --- /dev/null +++ b/classxt_1_1broadcast__error.html @@ -0,0 +1,155 @@ + + + + + + + +xtensor: xt::broadcast_error Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::broadcast_error Class Reference
+
+
+
+Inheritance diagram for xt::broadcast_error:
+
+
+ +
+ + + + +

+Public Member Functions

 broadcast_error (const char *msg)
 
+

Detailed Description

+
+

Definition at line 64 of file xexception.hpp.

+

Constructor & Destructor Documentation

+ +

◆ broadcast_error()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::broadcast_error::broadcast_error (const char * msg)
+
+inlineexplicit
+
+ +

Definition at line 68 of file xexception.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1broadcast__error.png b/classxt_1_1broadcast__error.png new file mode 100644 index 0000000000000000000000000000000000000000..7c459eaf09d491555ba840257beabab36f8ae38f GIT binary patch literal 549 zcmeAS@N?(olHy`uVBq!ia0vp^{mhF42Mz$mgC|{H0hHq`3GxeO0P?}WoN4wI1_s6ro-U3d6^w7^UYypfz~ho0 zXZ7>Hew^qOhF7=BCeG8VmN@89#GG6UmfpcSe#D(^(}3eezEFH z-ls9=xH>KlT*olKe&hLQ z+usu+S%02Cn7V!5&_)JBgL3@;Y=-8sIP ze}{1Sp)$trkN)khl8a&3;n>X0@YZw(!-Y7k3~|>AmvbZu{?L@SWWK zve2|{{^2R7F0NGBxijywR{7${W$8N~N^s@b%)V2-G48RLwX3mqNO|O%togw==M-#q z)<6HG_w(LUy{s=@S?b?)(0ygOY?Em3`sYT+%K!QuJAL)co0!LTMnETl-PP$m>HBN; YIPt#vy**o(10$5d)78&qol`;+0Ax!Dr2qf` literal 0 HcmV?d00001 diff --git a/classxt_1_1concatenate__error-members.html b/classxt_1_1concatenate__error-members.html new file mode 100644 index 000000000..f99213625 --- /dev/null +++ b/classxt_1_1concatenate__error-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::concatenate_error Member List
+
+
+ +

This is the complete list of members for xt::concatenate_error, including all inherited members.

+ + +
concatenate_error(const char *msg) (defined in xt::concatenate_error)xt::concatenate_errorinlineexplicit
+
+ + + + diff --git a/classxt_1_1concatenate__error.html b/classxt_1_1concatenate__error.html new file mode 100644 index 000000000..87b3fcb08 --- /dev/null +++ b/classxt_1_1concatenate__error.html @@ -0,0 +1,155 @@ + + + + + + + +xtensor: xt::concatenate_error Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::concatenate_error Class Reference
+
+
+
+Inheritance diagram for xt::concatenate_error:
+
+
+ +
+ + + + +

+Public Member Functions

 concatenate_error (const char *msg)
 
+

Detailed Description

+
+

Definition at line 81 of file xexception.hpp.

+

Constructor & Destructor Documentation

+ +

◆ concatenate_error()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::concatenate_error::concatenate_error (const char * msg)
+
+inlineexplicit
+
+ +

Definition at line 85 of file xexception.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1concatenate__error.png b/classxt_1_1concatenate__error.png new file mode 100644 index 0000000000000000000000000000000000000000..92b410b75509e0bc9c529f0b71e1ff1a31a42643 GIT binary patch literal 556 zcmV+{0@MA8P)x~0000RP)t-s|Ns90 z008Lh^>vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0005E zNkle%9Oo+K1z)oL5lCuqzq`8(52_Y$H z2(h^zA>P}*vx5&IBOfGcI%<10 zdNNK`aQUj4v)vbFI^ zv{Cye1f{A5!iR>$sIOngksW^i5Q4tB4C!V^9b4;?oPP7Oy#{0_4JB!0`3IH|l7bS# zL6GER1Aq_h1^~0|3J|y31t_inac7uMaS4dbj)VY!XbF)J0D=-CApis=L_z=vN{EC2 z5R?!J0U+pCAV_kyfo5iNEg=%Z%z{o3uMmy;zP_tVL9FGHvPVOymIv?8v$Gbl+4;|N zEvuBmIs8e`>?Hr_I>*gh%^l5Zdl4MrI<`H zUHAV%)Ga)Ph{xXR6=U;Q>ls7{lvcsieIHF(w uY_9OEYWBCV`5M~yX5DtPQC)*$FU!Ii+sV_(X0000 + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xbroadcast_optional< CT, X > Member List
+
+ +
+ + + + diff --git a/classxt_1_1extension_1_1xbroadcast__optional.html b/classxt_1_1extension_1_1xbroadcast__optional.html new file mode 100644 index 000000000..9966ae60f --- /dev/null +++ b/classxt_1_1extension_1_1xbroadcast__optional.html @@ -0,0 +1,307 @@ + + + + + + + +xtensor: xt::extension::xbroadcast_optional< CT, X > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xbroadcast_optional< CT, X > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xbroadcast_optional< CT, X >:
+
+
+ + +xt::extension::xoptional_empty_base< xbroadcast< CT, X > > + +
+ + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using value_expression = xbroadcast< xt::detail::value_expression_t< CT >, X >
 
using flag_expression = xbroadcast< xt::detail::flag_expression_t< CT >, X >
 
using const_value_expression = value_expression
 
using const_flag_expression = flag_expression
 
- Public Types inherited from xt::extension::xoptional_empty_base< xbroadcast< CT, X > >
using expression_tag = xoptional_expression_tag
 
+ + + + + +

+Public Member Functions

const_value_expression value () const
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xbroadcast< CT, X > >
xbroadcast< CT, X > & derived_cast () noexcept
 
const xbroadcast< CT, X > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT, class X>
+class xt::extension::xbroadcast_optional< CT, X >
+

Definition at line 559 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xbroadcast_optional< CT, X >::const_flag_expression = flag_expression
+
+ +

Definition at line 567 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xbroadcast_optional< CT, X >::const_value_expression = value_expression
+
+ +

Definition at line 566 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xbroadcast_optional< CT, X >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 563 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xbroadcast_optional< CT, X >::flag_expression = xbroadcast<xt::detail::flag_expression_t<CT>, X>
+
+ +

Definition at line 565 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xbroadcast_optional< CT, X >::value_expression = xbroadcast<xt::detail::value_expression_t<CT>, X>
+
+ +

Definition at line 564 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value()

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
auto xt::extension::xbroadcast_optional< CT, X >::has_value () const
+
+inline
+
+ +

Definition at line 1047 of file xoptional.hpp.

+ +
+
+ +

◆ value()

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
auto xt::extension::xbroadcast_optional< CT, X >::value () const
+
+inline
+
+ +

Definition at line 1041 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xbroadcast__optional.png b/classxt_1_1extension_1_1xbroadcast__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..268e8d0511b87ab424ad738c060c5947ea2a6b74 GIT binary patch literal 1215 zcmeAS@N?(olHy`uVBq!ia0y~yU`ztC12~w0q=Stj<7F|elLhl1uhzY_?d+QeS=%Dt$mbTzdfxr~_g?h#^;Y5A-pTBij9$B1F5lit zr@gRqrBp=Is=ZtH?b=hzWhi{Rz4O`4B$dgvYG)_Q-A?27czI7O|Jb#%#{!=>o^7jk zf49ZhY%X*DwaYg9b7Pvn2WjMZP1VU&Ug4B6JKA5EZ|YZpj|H=uJczPSl)3qsxQQp+ic#uGmki* z>#ai}x1xgdK0ywRh`x?>_xRrTg^Mfc~|5U4|PO zADz0qMr^)}AU7dJc=gO5;zY5+>|6i#6Y~$OPaq24=wlaGM9E*Of9X@ea*!Or9%YcHY=Z$znZN0r%&hK8X2{d>`!`UsQfQRjX+RL z-WAY4y{QEl*K=4H_It-O2rx0|vnDZoxN<$*fQ`W&%!y`Qtkay~{`6pK#?=||r~mAp{{DO2ra!7HZDQ}$@g=El?VogJ^TtV&fN8I?z3>0A z=NmS<85HK+J~bgZ|5?ZOvvy_yljdFi+`(W^sy(ax z&R + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xcontainer_optional_base< T > Member List
+
+ +
+ + + + diff --git a/classxt_1_1extension_1_1xcontainer__optional__base.html b/classxt_1_1extension_1_1xcontainer__optional__base.html new file mode 100644 index 000000000..e0e66d1fd --- /dev/null +++ b/classxt_1_1extension_1_1xcontainer__optional__base.html @@ -0,0 +1,389 @@ + + + + + + + +xtensor: xt::extension::xcontainer_optional_base< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xcontainer_optional_base< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xcontainer_optional_base< T >:
+
+
+ + +xt::extension::xoptional_empty_base< T::derived_type > + +
+ + + + + + + + + + + + + + + + + +

+Public Types

using traits = T
 
using value_expression = typename traits::value_expression
 
using flag_expression = typename traits::flag_expression
 
using const_value_expression = typename traits::const_value_expression
 
using const_flag_expression = typename traits::const_flag_expression
 
using expression_tag = xoptional_expression_tag
 
- Public Types inherited from xt::extension::xoptional_empty_base< T::derived_type >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< T::derived_type >
T::derived_type & derived_cast () noexcept
 
const T::derived_type & derived_cast () const noexcept
 
+

Detailed Description

+
template<class T>
+class xt::extension::xcontainer_optional_base< T >
+

Definition at line 337 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class T >
+ + + + +
using xt::extension::xcontainer_optional_base< T >::const_flag_expression = typename traits::const_flag_expression
+
+ +

Definition at line 345 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class T >
+ + + + +
using xt::extension::xcontainer_optional_base< T >::const_value_expression = typename traits::const_value_expression
+
+ +

Definition at line 344 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class T >
+ + + + +
using xt::extension::xcontainer_optional_base< T >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 346 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class T >
+ + + + +
using xt::extension::xcontainer_optional_base< T >::flag_expression = typename traits::flag_expression
+
+ +

Definition at line 343 of file xoptional.hpp.

+ +
+
+ +

◆ traits

+ +
+
+
+template<class T >
+ + + + +
using xt::extension::xcontainer_optional_base< T >::traits = T
+
+ +

Definition at line 341 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class T >
+ + + + +
using xt::extension::xcontainer_optional_base< T >::value_expression = typename traits::value_expression
+
+ +

Definition at line 342 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::extension::xcontainer_optional_base< T >::has_value ()
+
+inline
+
+ +

Definition at line 948 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::extension::xcontainer_optional_base< T >::has_value () const
+
+inline
+
+ +

Definition at line 954 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::extension::xcontainer_optional_base< T >::value ()
+
+inline
+
+ +

Definition at line 936 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::extension::xcontainer_optional_base< T >::value () const
+
+inline
+
+ +

Definition at line 942 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xcontainer__optional__base.png b/classxt_1_1extension_1_1xcontainer__optional__base.png new file mode 100644 index 0000000000000000000000000000000000000000..a9bd99f3e68eeb2972236428ba2510dfda1e4dbb GIT binary patch literal 1162 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ks12~w03f*F8(FfeDDeT9L6Mby*9F{Fa=?cDc8a}0Qn zTtDrTcK?58H7lR@zhcHKD%1O{a;hY}H`PyDvp!;4s;BPhO?O1ZCizT!qO0mSsYioz zQi_Y`1QlhkCKbs*=M585mVbPaGeafXcG%=y1ruK)aY=Gy$UlHVb6|MQb~_sXxE_h zU(p6m+q+jMJSds0&-qTYR^U$dPt_aUEUUf6i=){8zMQ4HPTzMXFNa+&U+7~+$K6x6 z8RqKOitc{!md$6Q59c|qCr3}7PrjyIILrUs=}wuF_6sT{(_i`;mHfHocPXq;b}oaY zfXTeH?+>_}TG#Y%E#iHC$~K~Z>H4J4=_UMfnpMx_YToUBv}*5dU5meG61#FYCJN_vFnv(W^Q~dB?ep&o}=wS$uo> zryupww{!m#eEst0k(!13vFmwB6((-AOAenFylTB!f6}YZsVt#a?6iu`x4CNlo5>T- zez)bhzInpAglAjLH=SueeJ|Z)-|9}4+EtrF-|%03yP7>oUt{~VYnM;tow%Xqo^I0f zgp= + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xdynamic_view_optional< CT, S, L, FST > Member List
+
+
+ +

This is the complete list of members for xt::extension::xdynamic_view_optional< CT, S, L, FST >, including all inherited members.

+ + + + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
const_value_expression typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
expression_tag typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
flag_expression typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
has_value() (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >inline
has_value() const (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >inline
ucft typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
ucvt typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
uft typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
uvt typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
value() (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >inline
value() const (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >inline
value_expression typedef (defined in xt::extension::xdynamic_view_optional< CT, S, L, FST >)xt::extension::xdynamic_view_optional< CT, S, L, FST >
+
+ + + + diff --git a/classxt_1_1extension_1_1xdynamic__view__optional.html b/classxt_1_1extension_1_1xdynamic__view__optional.html new file mode 100644 index 000000000..31311a602 --- /dev/null +++ b/classxt_1_1extension_1_1xdynamic__view__optional.html @@ -0,0 +1,449 @@ + + + + + + + +xtensor: xt::extension::xdynamic_view_optional< CT, S, L, FST > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xdynamic_view_optional< CT, S, L, FST > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xdynamic_view_optional< CT, S, L, FST >:
+
+
+ + +xt::extension::xoptional_empty_base< xdynamic_view< CT, S, L, FST > > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using uvt = typename std::decay_t< CT >::value_expression
 
using uft = typename std::decay_t< CT >::flag_expression
 
using ucvt = typename std::decay_t< CT >::const_value_expression
 
using ucft = typename std::decay_t< CT >::const_flag_expression
 
using value_expression = xdynamic_view< uvt, S, L, typename FST::template rebind_t< uvt > >
 
using flag_expression = xdynamic_view< uft, S, L, typename FST::template rebind_t< uft > >
 
using const_value_expression = xdynamic_view< ucvt, S, L, typename FST::template rebind_t< ucvt > >
 
using const_flag_expression = xdynamic_view< ucft, S, L, typename FST::template rebind_t< ucft > >
 
- Public Types inherited from xt::extension::xoptional_empty_base< xdynamic_view< CT, S, L, FST > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xdynamic_view< CT, S, L, FST > >
xdynamic_view< CT, S, L, FST > & derived_cast () noexcept
 
const xdynamic_view< CT, S, L, FST > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT, class S, layout_type L, class FST>
+class xt::extension::xdynamic_view_optional< CT, S, L, FST >
+

Definition at line 524 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::const_flag_expression = xdynamic_view<ucft, S, L, typename FST::template rebind_t<ucft> >
+
+ +

Definition at line 536 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::const_value_expression = xdynamic_view<ucvt, S, L, typename FST::template rebind_t<ucvt> >
+
+ +

Definition at line 535 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 528 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::flag_expression = xdynamic_view<uft, S, L, typename FST::template rebind_t<uft> >
+
+ +

Definition at line 534 of file xoptional.hpp.

+ +
+
+ +

◆ ucft

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::ucft = typename std::decay_t<CT>::const_flag_expression
+
+ +

Definition at line 532 of file xoptional.hpp.

+ +
+
+ +

◆ ucvt

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::ucvt = typename std::decay_t<CT>::const_value_expression
+
+ +

Definition at line 531 of file xoptional.hpp.

+ +
+
+ +

◆ uft

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::uft = typename std::decay_t<CT>::flag_expression
+
+ +

Definition at line 530 of file xoptional.hpp.

+ +
+
+ +

◆ uvt

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::uvt = typename std::decay_t<CT>::value_expression
+
+ +

Definition at line 529 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xdynamic_view_optional< CT, S, L, FST >::value_expression = xdynamic_view<uvt, S, L, typename FST::template rebind_t<uvt> >
+
+ +

Definition at line 533 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xdynamic_view_optional< CT, S, L, FST >::has_value ()
+
+inline
+
+ +

Definition at line 1022 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xdynamic_view_optional< CT, S, L, FST >::has_value () const
+
+inline
+
+ +

Definition at line 1028 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xdynamic_view_optional< CT, S, L, FST >::value ()
+
+inline
+
+ +

Definition at line 1010 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xdynamic_view_optional< CT, S, L, FST >::value () const
+
+inline
+
+ +

Definition at line 1016 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xdynamic__view__optional.png b/classxt_1_1extension_1_1xdynamic__view__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc85c089d49f99901be6b93d5b3abba7f478b65 GIT binary patch literal 1415 zcmcK4|3A}t00;2TVto9>*&E{3hN>fD{eVjpNvZ~ z+@j%DE#Ee^>C%^lBtz3p`bxHuW7cBar~C55{Q>v>;r)KSU+?$h{nPXDW(4?o85w+S z004jyMDm0I0K-Ldz(PHAE?Ajrh%ROUJ{02I+#DK*m1^3#->SB3v^lb}sC~Glr3LK+ zk?yPL*`j3FFAzZYe+}n(m!trIT?To2P>y3%mtP{awuYxKHN@4tm}88Ud~rtqNXdA6 zm2uRB>wJ< z zgtu-iIW}RtlzNk@0Nd1#0z+<+td7m~6y`GCJz{rwCK+WfNKpR#>)E%od>*?=PepYI zQDW@Jvc1RF;k~63!4>x^!lRZBQ~M`Nw~Bo37fi#t!&yZ>HT*VWqv=%X{Fk-0%^acZ zY5zrSj5ufddSJ(a+fF^{?i%yDs$m-2F}tCSHk!kk%5Us*48&$*j?*beV|&d@6`OOb z?Fg$vk1GiyNnJdtdDgqTHLp^#qyj?ESX@|8yxNI3lS3iKkg7E?8+%K+<=QgF#|yDe z10P%-vMu1ZDT;dQX{jlE@5AK9N4>mHtgdnERG3w@o9&8YJxtX4jR&!-r_u{4CLtNi zPU5CBMWhiTyI)ijDO=Z_`X=eh(VosF*VIwdt#|6>=NB$LcuBN1OKGDBlNf`Bi&X~tkmZA{+X zSx;n$wgB!tJ>gZ+J%86RPzw)LhV6e34(W4MjK zzC3zg;fck-tcwnCUkFfnI4oc?JY*e!Y0<6V0Fm>yxnpgCrrTM|f%fu2eZXlg3DaU| z00SH8pQ|$T`u|-GzW`YN)%I$F5dAv}X`3>#61BLVTu=BjF$B z=Td(9&bTw<`K`kuv1Dh@8|nOz>_;8WSz7s zI|x#%Ra*w~r2>_kiS}yY7JAz%t)h(THR9bY2zklmIMc)<*3fE*ZvZ2k=vf6|M;Xo% oLM1^@4O5w9n=1ii8+pharb`}!zhQ4gM88Y`BKmpqc0^|V2?*Az)&Kwi literal 0 HcmV?d00001 diff --git a/classxt_1_1extension_1_1xfunction__optional__base-members.html b/classxt_1_1extension_1_1xfunction__optional__base-members.html new file mode 100644 index 000000000..97bf6a509 --- /dev/null +++ b/classxt_1_1extension_1_1xfunction__optional__base-members.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xfunction_optional_base< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::extension::xfunction_optional_base< F, CT >, including all inherited members.

+ + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
const_value_expression typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
expression_tag typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
flag_expression typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
flag_functor typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
has_value() const (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >inline
has_value_impl(std::index_sequence< I... >) const -> const_flag_expression (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >inline
value() const (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >inline
value_expression typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
value_functor typedef (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >
value_impl(std::index_sequence< I... >) const -> const_value_expression (defined in xt::extension::xfunction_optional_base< F, CT >)xt::extension::xfunction_optional_base< F, CT >inline
+
+ + + + diff --git a/classxt_1_1extension_1_1xfunction__optional__base.html b/classxt_1_1extension_1_1xfunction__optional__base.html new file mode 100644 index 000000000..6d1cdd831 --- /dev/null +++ b/classxt_1_1extension_1_1xfunction__optional__base.html @@ -0,0 +1,419 @@ + + + + + + + +xtensor: xt::extension::xfunction_optional_base< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xfunction_optional_base< F, CT > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xfunction_optional_base< F, CT >:
+
+
+ + +xt::extension::xoptional_empty_base< xfunction< F, CT... > > + +
+ + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using value_functor = F
 
using flag_functor = xt::detail::optional_bitwise< bool >
 
using value_expression = xfunction< value_functor, xt::detail::value_expression_t< CT >... >
 
using flag_expression = xfunction< flag_functor, xt::detail::flag_expression_t< CT >... >
 
using const_value_expression = value_expression
 
using const_flag_expression = flag_expression
 
- Public Types inherited from xt::extension::xoptional_empty_base< xfunction< F, CT... > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + + + +

+Public Member Functions

const_value_expression value () const
 
const_flag_expression has_value () const
 
template<std::size_t... I>
auto value_impl (std::index_sequence< I... >) const -> const_value_expression
 
template<std::size_t... I>
auto has_value_impl (std::index_sequence< I... >) const -> const_flag_expression
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xfunction< F, CT... > >
xfunction< F, CT... > & derived_cast () noexcept
 
const xfunction< F, CT... > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class F, class... CT>
+class xt::extension::xfunction_optional_base< F, CT >
+

Definition at line 485 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::const_flag_expression = flag_expression
+
+ +

Definition at line 496 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::const_value_expression = value_expression
+
+ +

Definition at line 495 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 489 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::flag_expression = xfunction<flag_functor, xt::detail::flag_expression_t<CT>...>
+
+ +

Definition at line 494 of file xoptional.hpp.

+ +
+
+ +

◆ flag_functor

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::flag_functor = xt::detail::optional_bitwise<bool>
+
+ +

Definition at line 491 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::value_expression = xfunction<value_functor, xt::detail::value_expression_t<CT>...>
+
+ +

Definition at line 493 of file xoptional.hpp.

+ +
+
+ +

◆ value_functor

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::extension::xfunction_optional_base< F, CT >::value_functor = F
+
+ +

Definition at line 490 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::extension::xfunction_optional_base< F, CT >::has_value () const
+
+inline
+
+ +

Definition at line 973 of file xoptional.hpp.

+ +
+
+ +

◆ has_value_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I>
+ + + + + +
+ + + + + + + + +
auto xt::extension::xfunction_optional_base< F, CT >::has_value_impl (std::index_sequence< I... > ) const -> const_flag_expression +
+
+inline
+
+ +

Definition at line 991 of file xoptional.hpp.

+ +
+
+ +

◆ value()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::extension::xfunction_optional_base< F, CT >::value () const
+
+inline
+
+ +

Definition at line 967 of file xoptional.hpp.

+ +
+
+ +

◆ value_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I>
+ + + + + +
+ + + + + + + + +
auto xt::extension::xfunction_optional_base< F, CT >::value_impl (std::index_sequence< I... > ) const -> const_value_expression +
+
+inline
+
+ +

Definition at line 980 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xfunction__optional__base.png b/classxt_1_1extension_1_1xfunction__optional__base.png new file mode 100644 index 0000000000000000000000000000000000000000..cbae266deadab14d653e2e093072f0e0465f785f GIT binary patch literal 1208 zcmeAS@N?(olHy`uVBq!ia0y~yU`ztC12~w0q=blT%g* z8G5#9!5FKYV?2s3+}UL`Ic0tR^{L-4YcwBjt^HrIesjIViZ}Kuw^y`T720){3rv3E zY1<*tQ}ObT&MAxi(YN#`*({cRwChrg-(G|A^4-y2E##^;pFMc)&(HcV`)qG&t-S1> zv;UgR)pg(bZ72LT{APcwbl#yDF;AE}kF#{?pti zhWB2YsBW&w*rC3vf~&Ig$BhSlH})2Be-anmJ|XY?)7d6*`#lTmU(ASceKT$UH4U{1 z$K4(_eNi`g|5)f_PFkY$>WY_kO7Dta_FI^BWrzA)>MdXW3sD^lm6#>v+s7lm;WSQ{ZV(}vCsd6w)6kKp|NLY-PU~7B>Ss(pYLA# z_D1RP^1Y{Iw#qG7XU?y3dxL9o-_>n1mzrot-9OorxpBf0>9yjMpPYYv@|()eD~Hc{ zOxnM=eEUCff%o%Q?c-2CoBz~(Qejo~{_`sy?TXcwm`ucTh52Hc=nCWXF$?Pyk$dG|Wn~~W881oD* zT7vXp*zp%?E?wfKsp_RMY09J}5~@j_T%k(SmIS~Vdz&iuB?&$+{IMynRBt_d-`ToP z9lxL7{~hK$w_>Z5G^&r_B4es^|4m&ceHA?xgQcF24&&a>e2= z3$nWVEIzl+Eqqr|owYl1cYQ_64T(DLja|PMDw%(?cYSs2P|bd3>(z_Q&P=gi^kdLk> z-YeP_?NTmV|F7wfzCvE+m!%1p?#kD&PkM4}Q(#QfpQObFzjsaEwJ373l=RW_igMDf z^2g8I(wg?$fid-Bx^jFYAuzl`*UC+ISc(uD6cPp80V4lHgr8x>aA^ z4@kLXFa5h%;QjsOVU_8Z-c9qkB>C51;u>HuUp)>C=koz5fei}vtLBe_yga7{c}@7o ZZ2d|z^Rm_bLSPxg;OXk;vd$@?2>|m5Jh=b> literal 0 HcmV?d00001 diff --git a/classxt_1_1extension_1_1xfunctor__view__optional-members.html b/classxt_1_1extension_1_1xfunctor__view__optional-members.html new file mode 100644 index 000000000..30616b0e8 --- /dev/null +++ b/classxt_1_1extension_1_1xfunctor__view__optional-members.html @@ -0,0 +1,120 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xfunctor_view_optional< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::extension::xfunctor_view_optional< F, CT >, including all inherited members.

+ + + + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
const_value_expression typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
expression_tag typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
flag_expression typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
has_value() (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >inline
has_value() const (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >inline
ucft typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
ucvt typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
uft typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
uvt typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
value() (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >inline
value() const (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >inline
value_expression typedef (defined in xt::extension::xfunctor_view_optional< F, CT >)xt::extension::xfunctor_view_optional< F, CT >
+
+ + + + diff --git a/classxt_1_1extension_1_1xfunctor__view__optional.html b/classxt_1_1extension_1_1xfunctor__view__optional.html new file mode 100644 index 000000000..694e31b3a --- /dev/null +++ b/classxt_1_1extension_1_1xfunctor__view__optional.html @@ -0,0 +1,449 @@ + + + + + + + +xtensor: xt::extension::xfunctor_view_optional< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xfunctor_view_optional< F, CT > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xfunctor_view_optional< F, CT >:
+
+
+ + +xt::extension::xoptional_empty_base< xfunctor_view< F, CT > > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using uvt = typename std::decay_t< CT >::value_expression
 
using uft = typename std::decay_t< CT >::flag_expression
 
using ucvt = typename std::decay_t< CT >::const_value_expression
 
using ucft = typename std::decay_t< CT >::const_flag_expression
 
using value_expression = xfunctor_view< F, uvt >
 
using flag_expression = uft
 
using const_value_expression = xfunctor_view< F, ucvt >
 
using const_flag_expression = ucft
 
- Public Types inherited from xt::extension::xoptional_empty_base< xfunctor_view< F, CT > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xfunctor_view< F, CT > >
xfunctor_view< F, CT > & derived_cast () noexcept
 
const xfunctor_view< F, CT > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class F, class CT>
+class xt::extension::xfunctor_view_optional< F, CT >
+

Definition at line 587 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::const_flag_expression = ucft
+
+ +

Definition at line 599 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::const_value_expression = xfunctor_view<F, ucvt>
+
+ +

Definition at line 598 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 591 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::flag_expression = uft
+
+ +

Definition at line 597 of file xoptional.hpp.

+ +
+
+ +

◆ ucft

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::ucft = typename std::decay_t<CT>::const_flag_expression
+
+ +

Definition at line 595 of file xoptional.hpp.

+ +
+
+ +

◆ ucvt

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::ucvt = typename std::decay_t<CT>::const_value_expression
+
+ +

Definition at line 594 of file xoptional.hpp.

+ +
+
+ +

◆ uft

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::uft = typename std::decay_t<CT>::flag_expression
+
+ +

Definition at line 593 of file xoptional.hpp.

+ +
+
+ +

◆ uvt

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::uvt = typename std::decay_t<CT>::value_expression
+
+ +

Definition at line 592 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::extension::xfunctor_view_optional< F, CT >::value_expression = xfunctor_view<F, uvt>
+
+ +

Definition at line 596 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xfunctor_view_optional< F, CT >::has_value ()
+
+inline
+
+ +

Definition at line 1072 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xfunctor_view_optional< F, CT >::has_value () const
+
+inline
+
+ +

Definition at line 1078 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xfunctor_view_optional< F, CT >::value ()
+
+inline
+
+ +

Definition at line 1060 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xfunctor_view_optional< F, CT >::value () const
+
+inline
+
+ +

Definition at line 1066 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xfunctor__view__optional.png b/classxt_1_1extension_1_1xfunctor__view__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c7d7e87fd7a0e7b3a52998f6afd1d8de9b1046 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%12~w0r149>O+ZRIz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aCORlGjV@L(#+qrLpOtg7g zX3x`F{r-Q~d8>Gpnm4iB_BcrB6Bc;Lxu5*UHQO_p6@z<-BQIZo=$}cYpbcCe;M` zE7cf(TKUns{Z;MtiNCs4(yb=sUwhWH&Aa&f_F1`N)yrkKy}mW`{Qv6Li_?u$XWvV% zjxV-({oY!)<+H?V`Q$9Vt!pFp^6@{u)lf5yRbM$h@piXu9VJG_T3@z zTJh7vt>4Se)jOPjyLkWOLay@cS$(#NpI4|w+O^oZ?qj!|xLe(7XJ_|`Y>(~FzAXLv zGGW_}GATau3D=M0l|6Ra9~Z%P;rF3OGPi|if46qEn>DlNYowj2eA=S=yt9J84;ArN zzLl3>bo#{nw4XnWgWT0w*iZN_iPWuc+B0G6R@bjVy7KRmgHHcGuNV2^>y~Nrx&+E$2Azv#sNHQo!mvFRVOng=JfM*6sbblX23V7nxsGPR_qRH}@~wlh^I5d@ngR z&bc}9$?jd^zpuspbDQ@6l8pMv*T3?fsLWJ~j8;-V8K7D;i6<1sxXS!1(a+-QVRWk(6$XAlL_II+2UwP+aRq1E`-7_^P7vFvV!2lN>vWa9OLw2xt~(?8zR^L|qgmS`-^?xB(YZxBbh+}m zedm%7RmsX7yBe@jyY}Dx^>trVu3md+z--?g<>OF>2*WrJgdLPFMMx5cvo04Z?evQ{=cUu zytf9Xx*)@youE{~1u6J^A9KD=)e?Q`cVn*UPB7hE+BE5x>3fzV-np ztTkt!&Mdh4jmOL_PrX*^UFHV%mtpbM-x4dH?AznN&Uwkm;i5xe(5%QqW&IB}8*6%S-#-Vhhbv Tvjok6r4fUttDnm{r-UW|LQP2| literal 0 HcmV?d00001 diff --git a/classxt_1_1extension_1_1xgenerator__optional-members.html b/classxt_1_1extension_1_1xgenerator__optional-members.html new file mode 100644 index 000000000..469c3442b --- /dev/null +++ b/classxt_1_1extension_1_1xgenerator__optional-members.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xgenerator_optional< F, R, S > Member List
+
+
+ +

This is the complete list of members for xt::extension::xgenerator_optional< F, R, S >, including all inherited members.

+ + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
const_value_expression typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
expression_tag typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
flag_closure typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
flag_expression typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
flag_functor typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
has_value() const (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >inline
value() const (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >inline
value_closure typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
value_expression typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
value_functor typedef (defined in xt::extension::xgenerator_optional< F, R, S >)xt::extension::xgenerator_optional< F, R, S >
+
+ + + + diff --git a/classxt_1_1extension_1_1xgenerator__optional.html b/classxt_1_1extension_1_1xgenerator__optional.html new file mode 100644 index 000000000..2ce1d7212 --- /dev/null +++ b/classxt_1_1extension_1_1xgenerator__optional.html @@ -0,0 +1,387 @@ + + + + + + + +xtensor: xt::extension::xgenerator_optional< F, R, S > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xgenerator_optional< F, R, S > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xgenerator_optional< F, R, S >:
+
+
+ + +xt::extension::xoptional_empty_base< xgenerator< F, R, S > > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using value_closure = typename R::value_closure
 
using flag_closure = typename R::flag_closure
 
using value_functor = detail::value_functor_t< F >
 
using flag_functor = detail::flag_functor_t< F >
 
using value_expression = xgenerator< value_functor, value_closure, S >
 
using flag_expression = xgenerator< flag_functor, flag_closure, S >
 
using const_value_expression = value_expression
 
using const_flag_expression = flag_expression
 
- Public Types inherited from xt::extension::xoptional_empty_base< xgenerator< F, R, S > >
using expression_tag = xoptional_expression_tag
 
+ + + + + +

+Public Member Functions

const_value_expression value () const
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xgenerator< F, R, S > >
xgenerator< F, R, S > & derived_cast () noexcept
 
const xgenerator< F, R, S > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class F, class R, class S>
+class xt::extension::xgenerator_optional< F, R, S >
+

Definition at line 854 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::const_flag_expression = flag_expression
+
+ +

Definition at line 866 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::const_value_expression = value_expression
+
+ +

Definition at line 865 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 858 of file xoptional.hpp.

+ +
+
+ +

◆ flag_closure

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::flag_closure = typename R::flag_closure
+
+ +

Definition at line 860 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::flag_expression = xgenerator<flag_functor, flag_closure, S>
+
+ +

Definition at line 864 of file xoptional.hpp.

+ +
+
+ +

◆ flag_functor

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::flag_functor = detail::flag_functor_t<F>
+
+ +

Definition at line 862 of file xoptional.hpp.

+ +
+
+ +

◆ value_closure

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::value_closure = typename R::value_closure
+
+ +

Definition at line 859 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::value_expression = xgenerator<value_functor, value_closure, S>
+
+ +

Definition at line 863 of file xoptional.hpp.

+ +
+
+ +

◆ value_functor

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::extension::xgenerator_optional< F, R, S >::value_functor = detail::value_functor_t<F>
+
+ +

Definition at line 861 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value()

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + +
auto xt::extension::xgenerator_optional< F, R, S >::has_value () const
+
+inline
+
+ +

Definition at line 1230 of file xoptional.hpp.

+ +
+
+ +

◆ value()

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + +
auto xt::extension::xgenerator_optional< F, R, S >::value () const
+
+inline
+
+ +

Definition at line 1222 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xgenerator__optional.png b/classxt_1_1extension_1_1xgenerator__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..c6bedff2055454bcba970d618c7e9349af7304a5 GIT binary patch literal 1275 zcmb`H{a4a=6vw}0GuIRCv}R~5ZRBLj`Gk)v2`9-{MI2`ANN8C~xF*gh705jHU~WgU zulNwAw4;GNXiuUkQ!LXWd{}-R1ZI{eQzLb!;A@)7zV*}ofZZSN=XLMr-e2y0pIZVFXYMKky@=`S%eu$g z+uPB6ECko0f1e7N(Xjv;f3$!l6$1dU^b{CI*_nlztTan*1+S!L`u88u*w)Hd$0X&S zXl!_A-jFT5_=lT;Ix^o$qR0BsVS#r!&Bs+63Bm*%Mdqe;=qG_YiWHzvUYEdCi(eRb zkAgg!E?1kdB4b?E-rbN`ay(i$Z?LE7Z>}h+8NmpXUN6L_va1T)(qshe zV?^LuaW|Bu=iU0Ngp&17*M0G>OV=E~udk~!$VcM$`6dh(o;t!8H%y$aA-?xGNPhdQ zIR&e^^Q1OGm%?>S6FH50sniN}qA0OX#ovPO?g;vY98oBf9N}flmGbm$q}C&i=MoM* zc)l#_kzlgFFla05J!g+1(01VD zscyDF#^ATp?xK}Z8mW@=j8fIscO`Ww8p&`s|9Z>Vkw36v5R>rMNyO);z) z+Z~ITd>9EUmgQS%88jQRNn4g3Y1wFm`PMhDnq0LjZktG;8&5{4ru}!>>Au_OurvxL zaaI8HK{@~Ga!Yur@prjY%GnM@ui?c*PhX-v1J!;W+LEAW1IJP+T)O94FS#g(^k_7$ zc_A_BXXlNLkIohLGWSiTF)M^54o$Ec@q9)^)qM zJr3-FcjFfIbSm$rN_@~H8L8Slv96bk)li?jTDbda&XhhF+f-RMSdQcc536zJMIHVV zK3}dRkIwB=7;tF{!-kA^7@>lru45IK^vc=-W*jdNSiv|2{cCP<`=GI-r_%$biyQia z`F{pwCiPY{+Qj;^J9X90-Z_jWR=;p&z + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xindex_view_optional< CT, I > Member List
+
+
+ +

This is the complete list of members for xt::extension::xindex_view_optional< CT, I >, including all inherited members.

+ + + + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
const_value_expression typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
expression_tag typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
flag_expression typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
has_value() (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >inline
has_value() const (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >inline
ucft typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
ucvt typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
uft typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
uvt typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
value() (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >inline
value() const (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >inline
value_expression typedef (defined in xt::extension::xindex_view_optional< CT, I >)xt::extension::xindex_view_optional< CT, I >
+
+ + + + diff --git a/classxt_1_1extension_1_1xindex__view__optional.html b/classxt_1_1extension_1_1xindex__view__optional.html new file mode 100644 index 000000000..ac86efdae --- /dev/null +++ b/classxt_1_1extension_1_1xindex__view__optional.html @@ -0,0 +1,449 @@ + + + + + + + +xtensor: xt::extension::xindex_view_optional< CT, I > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xindex_view_optional< CT, I > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xindex_view_optional< CT, I >:
+
+
+ + +xt::extension::xoptional_empty_base< xindex_view< CT, I > > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using uvt = typename std::decay_t< CT >::value_expression
 
using ucvt = typename std::decay_t< CT >::const_value_expression
 
using uft = typename std::decay_t< CT >::flag_expression
 
using ucft = typename std::decay_t< CT >::const_flag_expression
 
using value_expression = xindex_view< uvt, I >
 
using flag_expression = xindex_view< uft, I >
 
using const_value_expression = xindex_view< ucvt, I >
 
using const_flag_expression = xindex_view< ucft, I >
 
- Public Types inherited from xt::extension::xoptional_empty_base< xindex_view< CT, I > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xindex_view< CT, I > >
xindex_view< CT, I > & derived_cast () noexcept
 
const xindex_view< CT, I > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT, class I>
+class xt::extension::xindex_view_optional< CT, I >
+

Definition at line 622 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::const_flag_expression = xindex_view<ucft, I>
+
+ +

Definition at line 634 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::const_value_expression = xindex_view<ucvt, I>
+
+ +

Definition at line 633 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 626 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::flag_expression = xindex_view<uft, I>
+
+ +

Definition at line 632 of file xoptional.hpp.

+ +
+
+ +

◆ ucft

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::ucft = typename std::decay_t<CT>::const_flag_expression
+
+ +

Definition at line 630 of file xoptional.hpp.

+ +
+
+ +

◆ ucvt

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::ucvt = typename std::decay_t<CT>::const_value_expression
+
+ +

Definition at line 628 of file xoptional.hpp.

+ +
+
+ +

◆ uft

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::uft = typename std::decay_t<CT>::flag_expression
+
+ +

Definition at line 629 of file xoptional.hpp.

+ +
+
+ +

◆ uvt

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::uvt = typename std::decay_t<CT>::value_expression
+
+ +

Definition at line 627 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::extension::xindex_view_optional< CT, I >::value_expression = xindex_view<uvt, I>
+
+ +

Definition at line 631 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::extension::xindex_view_optional< CT, I >::has_value ()
+
+inline
+
+ +

Definition at line 1103 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::extension::xindex_view_optional< CT, I >::has_value () const
+
+inline
+
+ +

Definition at line 1109 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::extension::xindex_view_optional< CT, I >::value ()
+
+inline
+
+ +

Definition at line 1091 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::extension::xindex_view_optional< CT, I >::value () const
+
+inline
+
+ +

Definition at line 1097 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xindex__view__optional.png b/classxt_1_1extension_1_1xindex__view__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fda166ce29fef2ea82266ff7233062a9dd99cb GIT binary patch literal 1227 zcmeAS@N?(olHy`uVBq!ia0y~yU`z(G12~w0cSOb7^H$7fo(x6`0@pqdRlfvMVOO!7~gdrgW(^PwDYA3OhMN zC3z~0@l-;5(wh<+D=9V4_3bZD{8~Bv+=FAg?)|8F^*KOp{?qDz#fA5*dptia^0Q$v zR?ECqZ9Oyn`ug2H(`P<=tCPQ`vU2myq>W{NHuN5}`}ukQ_Ip)kzSEAceqXlk=A^mz z%d8YOufJQszesiKul#wtZp186$=*Hdcxy>-t8esyiA!^vA0C`swq~v3*N;w%XJ)_c zbB@t1yY_YF|MX`S$9{XSlUsYZ_?YkC75}r>W=vl7Y-Q!qK5z3kw!97!uRr=(OU;cn z-rsrsXyK2`QNO18ERX%}DJLH!XB7APnB4OyL%)mnQ(|JxviZ&j{r~6NQM`PuIP1{9cyTge&H2X*eS&|9@mg& zqwVj@_I}^GNH(tTy4c%aDb_RQe!WxtL1z21n43$Y^%wumy7TN;Z}c%=0p(+}<@cwp zO>28~Fx6vH+*Y~CPo95GshlK}6~OKJ$-2aFMSg${oeKr6POwdRFfGvuAcXI zVr%dKGnos4Oa~ydBTR^`0jQUuBh-jKjK5CDmQI6J_Rmf~{}(jLEmynxr|-{( z&m})Dzd2`YSIMch>g?K`@~zgDf2^MN8v@hXx$LzP%U_(AjP5TzJ@^0ap6#9I-nT}5 z)Oz|o+f}&xep##KDb1BLu05^mzF@HKZ|WPZ$IF(~m&;wBeJbzVy?9`<3ft9e`IY0x z>blpry=nq{x>9a$sQNkk`|4L8-Ig7?xnqX+-u0qyKNO|eKE9gycw_P&t4}@U|D$KV zyf&xW?5poa;}Cv5XU{6n_1BX345-ST%3|{v}Xj=J81)tN*J3 yrR7wUJ-b4UrY!+RIh0{5F+Ip@)s&z`U-+FDYA@aXXfdeRV(@hJb6Mw<&;$Tt%wEs{ literal 0 HcmV?d00001 diff --git a/classxt_1_1extension_1_1xoptional__empty__base-members.html b/classxt_1_1extension_1_1xoptional__empty__base-members.html new file mode 100644 index 000000000..929218d0a --- /dev/null +++ b/classxt_1_1extension_1_1xoptional__empty__base-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xoptional_empty_base< D > Member List
+
+
+ +

This is the complete list of members for xt::extension::xoptional_empty_base< D >, including all inherited members.

+ + + + +
derived_cast() noexcept (defined in xt::extension::xoptional_empty_base< D >)xt::extension::xoptional_empty_base< D >inlineprotected
derived_cast() const noexcept (defined in xt::extension::xoptional_empty_base< D >)xt::extension::xoptional_empty_base< D >inlineprotected
expression_tag typedef (defined in xt::extension::xoptional_empty_base< D >)xt::extension::xoptional_empty_base< D >
+
+ + + + diff --git a/classxt_1_1extension_1_1xoptional__empty__base.html b/classxt_1_1extension_1_1xoptional__empty__base.html new file mode 100644 index 000000000..939f0367d --- /dev/null +++ b/classxt_1_1extension_1_1xoptional__empty__base.html @@ -0,0 +1,207 @@ + + + + + + + +xtensor: xt::extension::xoptional_empty_base< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xoptional_empty_base< D > Class Template Reference
+
+
+ + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
+ + + + + +

+Protected Member Functions

D & derived_cast () noexcept
 
const D & derived_cast () const noexcept
 
+

Detailed Description

+
template<class D>
+class xt::extension::xoptional_empty_base< D >
+

Definition at line 57 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ expression_tag

+ +
+
+
+template<class D >
+ + + + +
using xt::extension::xoptional_empty_base< D >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 61 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ derived_cast() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
const D & xt::extension::xoptional_empty_base< D >::derived_cast () const
+
+inlineprotectednoexcept
+
+ +

Definition at line 892 of file xoptional.hpp.

+ +
+
+ +

◆ derived_cast() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
D & xt::extension::xoptional_empty_base< D >::derived_cast ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 886 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xreducer__optional-members.html b/classxt_1_1extension_1_1xreducer__optional-members.html new file mode 100644 index 000000000..801160746 --- /dev/null +++ b/classxt_1_1extension_1_1xreducer__optional-members.html @@ -0,0 +1,120 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xreducer_optional< F, CT, X, O > Member List
+
+
+ +

This is the complete list of members for xt::extension::xreducer_optional< F, CT, X, O >, including all inherited members.

+ + + + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
const_value_expression typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
expression_tag typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
flag_expression typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
flag_reducer typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
has_value() const (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >inline
rebound_functors_type typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
rebound_reduce_options_flag typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
rebound_reduce_options_values typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
rebound_result_type typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
result_type typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
value() const (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >inline
value_expression typedef (defined in xt::extension::xreducer_optional< F, CT, X, O >)xt::extension::xreducer_optional< F, CT, X, O >
+
+ + + + diff --git a/classxt_1_1extension_1_1xreducer__optional.html b/classxt_1_1extension_1_1xreducer__optional.html new file mode 100644 index 000000000..5b7578437 --- /dev/null +++ b/classxt_1_1extension_1_1xreducer__optional.html @@ -0,0 +1,427 @@ + + + + + + + +xtensor: xt::extension::xreducer_optional< F, CT, X, O > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xreducer_optional< F, CT, X, O > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xreducer_optional< F, CT, X, O >:
+
+
+ + +xt::extension::xoptional_empty_base< xreducer< F, CT, X, O > > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using result_type = typename F::init_value_type
 
using rebound_result_type = typename result_type::value_type
 
using rebound_functors_type = typename F::template rebind_t< rebound_result_type >
 
using rebound_reduce_options_values = typename O::template rebind_t< rebound_result_type >
 
using rebound_reduce_options_flag = typename O::template rebind_t< bool >
 
using flag_reducer = xreducer_functors< xt::detail::optional_bitwise< bool >, xt::const_value< bool > >
 
using flag_expression = xreducer< flag_reducer, xt::detail::flag_expression_t< CT >, X, rebound_reduce_options_flag >
 
using value_expression = xreducer< rebound_functors_type, xt::detail::value_expression_t< CT >, X, rebound_reduce_options_values >
 
using const_value_expression = value_expression
 
using const_flag_expression = flag_expression
 
- Public Types inherited from xt::extension::xoptional_empty_base< xreducer< F, CT, X, O > >
using expression_tag = xoptional_expression_tag
 
+ + + + + +

+Public Member Functions

const_value_expression value () const
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xreducer< F, CT, X, O > >
xreducer< F, CT, X, O > & derived_cast () noexcept
 
const xreducer< F, CT, X, O > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class F, class CT, class X, class O>
+class xt::extension::xreducer_optional< F, CT, X, O >
+

Definition at line 657 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::const_flag_expression = flag_expression
+
+ +

Definition at line 674 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::const_value_expression = value_expression
+
+ +

Definition at line 673 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 661 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::flag_expression = xreducer<flag_reducer, xt::detail::flag_expression_t<CT>, X, rebound_reduce_options_flag>
+
+ +

Definition at line 670 of file xoptional.hpp.

+ +
+
+ +

◆ flag_reducer

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::flag_reducer = xreducer_functors<xt::detail::optional_bitwise<bool>, xt::const_value<bool> >
+
+ +

Definition at line 669 of file xoptional.hpp.

+ +
+
+ +

◆ rebound_functors_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::rebound_functors_type = typename F::template rebind_t<rebound_result_type>
+
+ +

Definition at line 665 of file xoptional.hpp.

+ +
+
+ +

◆ rebound_reduce_options_flag

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::rebound_reduce_options_flag = typename O::template rebind_t<bool>
+
+ +

Definition at line 667 of file xoptional.hpp.

+ +
+
+ +

◆ rebound_reduce_options_values

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::rebound_reduce_options_values = typename O::template rebind_t<rebound_result_type>
+
+ +

Definition at line 666 of file xoptional.hpp.

+ +
+
+ +

◆ rebound_result_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::rebound_result_type = typename result_type::value_type
+
+ +

Definition at line 664 of file xoptional.hpp.

+ +
+
+ +

◆ result_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::result_type = typename F::init_value_type
+
+ +

Definition at line 662 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::extension::xreducer_optional< F, CT, X, O >::value_expression = xreducer<rebound_functors_type, xt::detail::value_expression_t<CT>, X, rebound_reduce_options_values>
+
+ +

Definition at line 671 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::extension::xreducer_optional< F, CT, X, O >::has_value () const
+
+inline
+
+ +

Definition at line 1138 of file xoptional.hpp.

+ +
+
+ +

◆ value()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::extension::xreducer_optional< F, CT, X, O >::value () const
+
+inline
+
+ +

Definition at line 1122 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xreducer__optional.png b/classxt_1_1extension_1_1xreducer__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..b2baad92bfaae113bd935003108f2457f9ec6338 GIT binary patch literal 1292 zcmciC`BRfe7zgkd+e*biXwh=1wE6-fa;O|ikf4RZw@`wBkl|{|C6_1!DG-xdD>{ra zU<@FliIxDN3`jH(Zm`k800|ffB%}}(Okg;o0TN9}=xe9?Cv<;!_Vet{?Ck7(XNy9D z1B{KVi~s;IhEDi}0)PPlcF32X!F71uHV>YxLxRHnH#Rn4&MmH;FZrwPu&cv4i;AJS zzP>(qJ&ZicfcLiKga(HJaR2Y{+*CCN0H0Ste#gS|43_SSvsd>aE?4EA`ct}5H2h@i zx8-7QCV9ot|1{!j$yHM}wmfNz)8NAx=l!7NZtk`1i;y7TF%=|k`-rh-3@A?h+bi9U z8{s)ospg#Yx@s=7g&OKmb!#Pw4$+)s#(s(XSs5tz;!r`_*xj#4P6V=BRP+EkJ!J%a zNcfn9Z!$?o#p5R%Br;~?q^w|aQmLCF*tB?IJyw`IN7<9uDQSde=`1H{!aG;k)@kzQ zN2^^-sUz}*ybY5Wb}MC|)$pMBU@8@xQN{Cr+I1)mCEH`={I*Sdb>?|m?9vk%*s%;Y z96XIivArop503Gf$5JBPViYMl-U&0`GIgo$%{l=++WQ^$48HAF+N*)gj$h{WCfeuz zb2nJhFqL+wQb)~S-o?GPI9Qs@pPyQo`6KF8R4Q(}DtXOVn_v+*cQXrpUn;-T%03Vt zNf;m{RQ8U(k z`ze~Qe%-ipR;&MplJ1&73%D@U^R}Q=fsFqmhi@o3#Wx?F-682J?~+et&ld6tjqV}V zRJ$di=LMu-9kd}DN**-kTME;ZNNxwq;U3toDQ33(<_HCcE002?IHb8R*=&l}1Lhak zhG8-{Lq0XqJ`!Ei|412DP0Q1P6YYM51RN#Cy4ny|&gbwCU z|7F4nc-N`fbkP)uX~H1^XN|__9q{7*2X@>?!n_AF&PWNosD=R_@c#hK_o<;Acc{r} zF9jVy$lOsBNG`e54Zh#|5p$q6OU^BI;jL;OW*$wxdt1fQL;I4_MToK_?T+>z1W+tD zj!YeoUbIc6mv@7fjZUv=?rwAF77kl{){(Ircg@=D_{XriuvWgbE(9)GWgR5wwhO>yKnVZTTr;V!C&@ahu< zs@h17{?27ZQiV3!HJ(QA2*OXhN#*|D$ + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xrepeat_optional< CT, X > Member List
+
+ +
+ + + + diff --git a/classxt_1_1extension_1_1xrepeat__optional.html b/classxt_1_1extension_1_1xrepeat__optional.html new file mode 100644 index 000000000..03887db33 --- /dev/null +++ b/classxt_1_1extension_1_1xrepeat__optional.html @@ -0,0 +1,250 @@ + + + + + + + +xtensor: xt::extension::xrepeat_optional< CT, X > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xrepeat_optional< CT, X > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xrepeat_optional< CT, X >:
+
+
+ + +xt::extension::xoptional_empty_base< xrepeat< CT, X > > + +
+ + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using value_expression = xbroadcast< xt::detail::value_expression_t< CT >, X >
 
using flag_expression = xbroadcast< xt::detail::flag_expression_t< CT >, X >
 
using const_value_expression = value_expression
 
using const_flag_expression = flag_expression
 
- Public Types inherited from xt::extension::xoptional_empty_base< xrepeat< CT, X > >
using expression_tag = xoptional_expression_tag
 
+ + + + + +

+Public Member Functions

+const_value_expression value () const
 
+const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xrepeat< CT, X > >
xrepeat< CT, X > & derived_cast () noexcept
 
const xrepeat< CT, X > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT, class X>
+class xt::extension::xrepeat_optional< CT, X >
+

Definition at line 694 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xrepeat_optional< CT, X >::const_flag_expression = flag_expression
+
+ +

Definition at line 702 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xrepeat_optional< CT, X >::const_value_expression = value_expression
+
+ +

Definition at line 701 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xrepeat_optional< CT, X >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 698 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xrepeat_optional< CT, X >::flag_expression = xbroadcast<xt::detail::flag_expression_t<CT>, X>
+
+ +

Definition at line 700 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::extension::xrepeat_optional< CT, X >::value_expression = xbroadcast<xt::detail::value_expression_t<CT>, X>
+
+ +

Definition at line 699 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xrepeat__optional.png b/classxt_1_1extension_1_1xrepeat__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..db4cb70abe6da084b476a4f96c2b2ea0f0c0a5a0 GIT binary patch literal 1168 zcmciC{WIGK7y$4v>o)VUt7(?9I@dHVw@w}1C6StXYkWh(B%7*vske?rhRBI}NsCe4 zwK?Ci)g+BurJ+)H7$J%H)^-e&DrG{1RYPbboRA}pEY~0W344Bcp3n08dT z7g7^gaZx9jr7ySPxHZo)+%;G4dl|QoOYzG{0P`*xETkNvGN3L)m~Rj@ArphD6_A~lvqLjo5%dGzDR&vFngt#rIZ+89IE9GSutmYU$TH7L; z^M}>Ce>@p|jl=S;z^B>x>Wf0G7z)m#d$WoA5!_5-_v-o3gZ7TzzVo!@Z?F^kapf#I zo%tN^bJ3iNq4Wsb(sFJyj(-&fH^>-)vJs_T5R_Jy&$}8h;cn0!x6~HV;Yx>+b>1Xm zS(NpwM&ZV-JsXodLpv|RntL(IwbQP zqp{~wLs@0v6=i#)bWDx91%_>iRN}~jW)KfdrNsQ~Gunni-$5GIXOZU+mSfzgY%RAX zCcQf!Sqv0Kr*!W-849;a;_S$R-}u7-XsxsN0VL==u%+n;r?3nKuAZTAvA+>B35Qj| zps<^6Fqv`J{em3?yk#@OMuLr=?tXR<$p+QO*#8IoiU2`=v<#%W!_{*ws&@4>#d-vI+6$l)EKsTKbL-t|Sb literal 0 HcmV?d00001 diff --git a/classxt_1_1extension_1_1xscalar__optional__base-members.html b/classxt_1_1extension_1_1xscalar__optional__base-members.html new file mode 100644 index 000000000..3d35c6d80 --- /dev/null +++ b/classxt_1_1extension_1_1xscalar__optional__base-members.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xscalar_optional_base< CT > Member List
+
+ +
+ + + + diff --git a/classxt_1_1extension_1_1xscalar__optional__base.html b/classxt_1_1extension_1_1xscalar__optional__base.html new file mode 100644 index 000000000..3d020bdd2 --- /dev/null +++ b/classxt_1_1extension_1_1xscalar__optional__base.html @@ -0,0 +1,389 @@ + + + + + + + +xtensor: xt::extension::xscalar_optional_base< CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xscalar_optional_base< CT > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xscalar_optional_base< CT >:
+
+
+ + +xt::extension::xoptional_empty_base< xscalar< CT > > + +
+ + + + + + + + + + + + + + + + + +

+Public Types

using traits = xscalar_optional_traits< CT >
 
using value_expression = typename traits::value_expression
 
using flag_expression = typename traits::flag_expression
 
using const_value_expression = typename traits::const_value_expression
 
using const_flag_expression = typename traits::const_flag_expression
 
using expression_tag = xoptional_expression_tag
 
- Public Types inherited from xt::extension::xoptional_empty_base< xscalar< CT > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xscalar< CT > >
xscalar< CT > & derived_cast () noexcept
 
const xscalar< CT > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT>
+class xt::extension::xscalar_optional_base< CT >
+

Definition at line 305 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT >
+ + + + +
using xt::extension::xscalar_optional_base< CT >::const_flag_expression = typename traits::const_flag_expression
+
+ +

Definition at line 313 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT >
+ + + + +
using xt::extension::xscalar_optional_base< CT >::const_value_expression = typename traits::const_value_expression
+
+ +

Definition at line 312 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT >
+ + + + +
using xt::extension::xscalar_optional_base< CT >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 314 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT >
+ + + + +
using xt::extension::xscalar_optional_base< CT >::flag_expression = typename traits::flag_expression
+
+ +

Definition at line 311 of file xoptional.hpp.

+ +
+
+ +

◆ traits

+ +
+
+
+template<class CT >
+ + + + +
using xt::extension::xscalar_optional_base< CT >::traits = xscalar_optional_traits<CT>
+
+ +

Definition at line 309 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT >
+ + + + +
using xt::extension::xscalar_optional_base< CT >::value_expression = typename traits::value_expression
+
+ +

Definition at line 310 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xscalar_optional_base< CT >::has_value ()
+
+inline
+
+ +

Definition at line 917 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xscalar_optional_base< CT >::has_value () const
+
+inline
+
+ +

Definition at line 923 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xscalar_optional_base< CT >::value ()
+
+inline
+
+ +

Definition at line 905 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::extension::xscalar_optional_base< CT >::value () const
+
+inline
+
+ +

Definition at line 911 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xscalar__optional__base.png b/classxt_1_1extension_1_1xscalar__optional__base.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0001fc7dccc73da95ff6ee00499f552489b818 GIT binary patch literal 1136 zcmeAS@N?(olHy`uVBq!ia0y~yV6+CZ12~w0WT2bU4Im{Q;1lBd|Nnm=^TnI5rTvGN zTNr2-NK8NT;=q9eK=I&7msbGgI7@>3f*F8(FfeDDeT9L6`M0NwV@L(#+quzw+L{6` z%??>d|ApI>+47uR9P?z$^Iv_Nju!4VP`T3B68~gQ@r2@YrxhlrI85qpv7Yor@SVpc z_Z`Zf@(=q|YE9k=d6xBLr(adM`6&bT^@PNjNpE)YOpvSp{rp?2iuxbva+S)- z-5l}H@_w(anee3N^4)v8jP~9(=iX>~J6eW6x70T8@9EFg_kY!_nqKq&XGiYuu=U~J zxAX69S+;iW54#%?uXD?Na=3+kE!8KT*yXcIeg6%s*{7dAkDdN9db_m$$Bd6fGfwO( ziREjJU4Aciug=x)lQx$L&$zMpp!?O_B`3MV*0#TEdwqSo@n322x6+ZSOFz$yeE;q4 zg?m@-PTa3w?*1%JE4C!uX_n#g>izN8v$}3KpS}I8V&%E{t2Tc%I)AfquU)$D@v>KG zs_O5aMHX#rPfwnvS{Gbd9|_SwdZcVTHEvPrgEP6lSu0w>E1fV*Ivxa z)xRYDJ!fW@EtgM}{@u+gKN;`&HK?fjoKu|ihil)#yJhFL-%cy|cIMW^C-Wb?zfpdF z$7{RyeJcOgV?>M1ou}YvTg`Cb`zK}wMg|?>cMJ!Pp7%e&%)tMUk0Hk9N~;Y+fdEj@ zdj>OuJW!~n#hT%RAW*=42dxC+-{~!#(ljL~ip_HplV_C59nVSq1?rx5hvusMC*!9dA_*eOh$q<%bO8?66n){eSl8d_VuTTSfPSWBH^lM|{gCnIzr4du?5f$0aWF zyKk98x;N|3h}^yQ=DkN18LMBfoX5Mme(B-O?t3lc4Cmedy<_QbOE=-YRTAqDtKZdJ zsq1C*RAkZ;U>dq@ux(M1ZFl199KG_dp-;5FUAXJ??%uh`-CLf?x(m5otyQu9{rKcI zxnFM|N0m4KI=PDH+uhvixN`S@`|iljtX_HL%-JKWtG53vKOXz?-ntyqlWz}J%zXC7 zxB9eY_Aw*QJuK)jcUpD`T$4lz2`o$GIIQM1d{PMlK zRjxk0ba(IPyo&Sx{#BOmD-;ZUck?>yjpu9D-aGYWp04wdK zNYg#2{>QwjOYBdH`+csyo7-MJIet=!<7L-LcAjsnJwJWCzGLzdeP#5Zef$s_^iSod Xn{ap}yRg;*%LWEdS3j3^P6 + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xstrided_view_optional< CT, S, L, FST > Member List
+
+
+ +

This is the complete list of members for xt::extension::xstrided_view_optional< CT, S, L, FST >, including all inherited members.

+ + + + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
const_value_expression typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
expression_tag typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
flag_expression typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
has_value() (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >inline
has_value() const (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >inline
ucft typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
ucvt typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
uft typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
uvt typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
value() (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >inline
value() const (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >inline
value_expression typedef (defined in xt::extension::xstrided_view_optional< CT, S, L, FST >)xt::extension::xstrided_view_optional< CT, S, L, FST >
+
+ + + + diff --git a/classxt_1_1extension_1_1xstrided__view__optional.html b/classxt_1_1extension_1_1xstrided__view__optional.html new file mode 100644 index 000000000..ae5f9286c --- /dev/null +++ b/classxt_1_1extension_1_1xstrided__view__optional.html @@ -0,0 +1,449 @@ + + + + + + + +xtensor: xt::extension::xstrided_view_optional< CT, S, L, FST > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xstrided_view_optional< CT, S, L, FST > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xstrided_view_optional< CT, S, L, FST >:
+
+
+ + +xt::extension::xoptional_empty_base< xstrided_view< CT, S, L, FST > > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using uvt = typename std::decay_t< CT >::value_expression
 
using uft = typename std::decay_t< CT >::flag_expression
 
using ucvt = typename std::decay_t< CT >::const_value_expression
 
using ucft = typename std::decay_t< CT >::const_flag_expression
 
using value_expression = xstrided_view< uvt, S, L, typename FST::template rebind_t< uvt > >
 
using flag_expression = xstrided_view< uft, S, L, typename FST::template rebind_t< uft > >
 
using const_value_expression = xstrided_view< ucvt, S, L, typename FST::template rebind_t< ucvt > >
 
using const_flag_expression = xstrided_view< ucft, S, L, typename FST::template rebind_t< ucft > >
 
- Public Types inherited from xt::extension::xoptional_empty_base< xstrided_view< CT, S, L, FST > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xstrided_view< CT, S, L, FST > >
xstrided_view< CT, S, L, FST > & derived_cast () noexcept
 
const xstrided_view< CT, S, L, FST > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT, class S, layout_type L, class FST>
+class xt::extension::xstrided_view_optional< CT, S, L, FST >
+

Definition at line 722 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::const_flag_expression = xstrided_view<ucft, S, L, typename FST::template rebind_t<ucft> >
+
+ +

Definition at line 734 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::const_value_expression = xstrided_view<ucvt, S, L, typename FST::template rebind_t<ucvt> >
+
+ +

Definition at line 733 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 726 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::flag_expression = xstrided_view<uft, S, L, typename FST::template rebind_t<uft> >
+
+ +

Definition at line 732 of file xoptional.hpp.

+ +
+
+ +

◆ ucft

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::ucft = typename std::decay_t<CT>::const_flag_expression
+
+ +

Definition at line 730 of file xoptional.hpp.

+ +
+
+ +

◆ ucvt

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::ucvt = typename std::decay_t<CT>::const_value_expression
+
+ +

Definition at line 729 of file xoptional.hpp.

+ +
+
+ +

◆ uft

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::uft = typename std::decay_t<CT>::flag_expression
+
+ +

Definition at line 728 of file xoptional.hpp.

+ +
+
+ +

◆ uvt

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::uvt = typename std::decay_t<CT>::value_expression
+
+ +

Definition at line 727 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + +
using xt::extension::xstrided_view_optional< CT, S, L, FST >::value_expression = xstrided_view<uvt, S, L, typename FST::template rebind_t<uvt> >
+
+ +

Definition at line 731 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xstrided_view_optional< CT, S, L, FST >::has_value ()
+
+inline
+
+ +

Definition at line 1172 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xstrided_view_optional< CT, S, L, FST >::has_value () const
+
+inline
+
+ +

Definition at line 1178 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xstrided_view_optional< CT, S, L, FST >::value ()
+
+inline
+
+ +

Definition at line 1160 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::extension::xstrided_view_optional< CT, S, L, FST >::value () const
+
+inline
+
+ +

Definition at line 1166 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xstrided__view__optional.png b/classxt_1_1extension_1_1xstrided__view__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..89f20943fa6df8e04fbcc980f3828bab1f85f447 GIT binary patch literal 1395 zcmb`H`#;oa6vv+#p_M6H*~)$ETbbOtj7x5-jQAp^p^1>JR=G_Ql1nCSp=_9tBBRJ? z8PT9H8{6i#j7vl_V@63BlR-?wh}rM%->}aQ=Q-#3oYy(8*E#RklSXiJ#HeVf001zs z6P^eFstEB3YZVZC4s)y(xikr`o(^)k9C0T0`m1B$>3uWu*Sj@+woHv$%n5Uiykdzi zrTS?!{Ax>GxX(FW9h+X2btV_oNINR&637~Jco4ftrc3OgH_-%Gz+YLzUW&R)Y#HD*~q)hGf5h86b*-Lc(=MV8{THd3v1)GZe=`MY$AVk zz=d`&EO)sVN=F#gKKnXkENf@J!xd$q^R&h#Y1=&;e(X57hbo1I^_k`NOeChqs&lf7qOAdPa5mLm0{_Qt^lWgu? z$V`t3VtLQJC>Gw#Eu@PI3uSZNtja^Jy`-v+<&A_VK|2HPStT{FZ&7}CIWY0%hl~`u z_b9XPI=!@Q!NqV7pc| z!sizC!jCmBcC~(chH5pU6bYuRglp?X#w~9J4y@f24fk@5D71c-MA-SKk7;`aAANGL zNTXKFu7yq_KV6q(_VtxNN`j2z+{b?UJH%tij(Kt%2i*vy@A2wIYhKB1i=A2OLv zR5H#`T=O+^Ec!B7us*w@m^UWN(S`;6Ha-3w6Dh-bL(&we$;}^=3fV(T57BC{B?)YY z+f?izp%*F@(iWi*jEri+dE-PdTfU$S4ukg|sI}nRR1ZyW4IryiK=V_bgk&`kdmNy_ zkcu^U?}g}E1^`7tkOL7FU=2W!1I^WFHDEzPl91~EYf{sCf;09y(Yb@331J~vN1Xz7 zRHHMYgCszOkY>~|FLM-I*~Ir$9yVV~KAjry?d{{AK9fp|d)h`;mlK4tA%#v#jsh&R zlW)v~{veotQPhJQ9^JWWUohQMA`g3?hG=*intQjmAZukf@4zCCXLS3>2%lW48kb=0 zn*V+M@iwjgoXgDnpS0$`CF)Le8^My``{xA$u{g;}Z>J=K+U4=c`0==Rl=(<#r)43^ z@~}YRWLMyF$dp0lT?&`uj$$Y9;b!L-RF1yAQQwsbRT!HvewUJs-B&Hm%d&fUCArh+_PU?L?}W zZozzMOByE|f}`Yj5le%Vkoe;z;}`Sy$5bo%p*%57QYCGdNuuwxAO0M=J-wQeYg%@r zs4?b5NUz}%_nKKFxC9a%F@FazaFMu-iVJ60#w{GNP0JYJY-5nCc9xHQ^OuPa?K+M@ zvjdf{Wrp<)X)iiHDB-(>HdWnMA%5S4sS}kYS`{3jP`MN3e@U6ZCS%(B)ubwUW}3J3 z8bgJ8WPA!FOfdj36=4RBtN;* + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::extension::xview_optional< CT, S > Member List
+
+
+ +

This is the complete list of members for xt::extension::xview_optional< CT, S >, including all inherited members.

+ + + + + + + + + + + + + + +
const_flag_expression typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
const_value_expression typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
expression_tag typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
flag_expression typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
has_value() (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >inline
has_value() const (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >inline
ucft typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
ucvt typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
uft typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
uvt typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
value() (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >inline
value() const (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >inline
value_expression typedef (defined in xt::extension::xview_optional< CT, S >)xt::extension::xview_optional< CT, S >
+
+ + + + diff --git a/classxt_1_1extension_1_1xview__optional.html b/classxt_1_1extension_1_1xview__optional.html new file mode 100644 index 000000000..c3de2e8b6 --- /dev/null +++ b/classxt_1_1extension_1_1xview__optional.html @@ -0,0 +1,449 @@ + + + + + + + +xtensor: xt::extension::xview_optional< CT, S > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::extension::xview_optional< CT, S > Class Template Reference
+
+
+
+Inheritance diagram for xt::extension::xview_optional< CT, S >:
+
+
+ + +xt::extension::xoptional_empty_base< xview< CT, S... > > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using expression_tag = xoptional_expression_tag
 
using uvt = typename std::decay_t< CT >::value_expression
 
using uft = typename std::decay_t< CT >::flag_expression
 
using ucvt = typename std::decay_t< CT >::const_value_expression
 
using ucft = typename std::decay_t< CT >::const_flag_expression
 
using value_expression = xview< uvt, S... >
 
using flag_expression = xview< uft, S... >
 
using const_value_expression = xview< ucvt, S... >
 
using const_flag_expression = xview< ucft, S... >
 
- Public Types inherited from xt::extension::xoptional_empty_base< xview< CT, S... > >
using expression_tag = xoptional_expression_tag
 
+ + + + + + + + + +

+Public Member Functions

value_expression value ()
 
const_value_expression value () const
 
flag_expression has_value ()
 
const_flag_expression has_value () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::extension::xoptional_empty_base< xview< CT, S... > >
xview< CT, S... > & derived_cast () noexcept
 
const xview< CT, S... > & derived_cast () const noexcept
 
+

Detailed Description

+
template<class CT, class... S>
+class xt::extension::xview_optional< CT, S >
+

Definition at line 757 of file xoptional.hpp.

+

Member Typedef Documentation

+ +

◆ const_flag_expression

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::const_flag_expression = xview<ucft, S...>
+
+ +

Definition at line 769 of file xoptional.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::const_value_expression = xview<ucvt, S...>
+
+ +

Definition at line 768 of file xoptional.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 761 of file xoptional.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::flag_expression = xview<uft, S...>
+
+ +

Definition at line 767 of file xoptional.hpp.

+ +
+
+ +

◆ ucft

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::ucft = typename std::decay_t<CT>::const_flag_expression
+
+ +

Definition at line 765 of file xoptional.hpp.

+ +
+
+ +

◆ ucvt

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::ucvt = typename std::decay_t<CT>::const_value_expression
+
+ +

Definition at line 764 of file xoptional.hpp.

+ +
+
+ +

◆ uft

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::uft = typename std::decay_t<CT>::flag_expression
+
+ +

Definition at line 763 of file xoptional.hpp.

+ +
+
+ +

◆ uvt

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::uvt = typename std::decay_t<CT>::value_expression
+
+ +

Definition at line 762 of file xoptional.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::extension::xview_optional< CT, S >::value_expression = xview<uvt, S...>
+
+ +

Definition at line 766 of file xoptional.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ has_value() [1/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::extension::xview_optional< CT, S >::has_value ()
+
+inline
+
+ +

Definition at line 1203 of file xoptional.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::extension::xview_optional< CT, S >::has_value () const
+
+inline
+
+ +

Definition at line 1209 of file xoptional.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::extension::xview_optional< CT, S >::value ()
+
+inline
+
+ +

Definition at line 1191 of file xoptional.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::extension::xview_optional< CT, S >::value () const
+
+inline
+
+ +

Definition at line 1197 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1extension_1_1xview__optional.png b/classxt_1_1extension_1_1xview__optional.png new file mode 100644 index 0000000000000000000000000000000000000000..95d74492ae6c493579deefe580992ac507ddfd2d GIT binary patch literal 1179 zcmeAS@N?(olHy`uVBq!ia0y~yVDtyF12~w06yqovXS(cj@bb#Jk+9@BGW%|GIhOHw%6RtkxiO{Uw@XdUx0l_ndZT|W=KX?ypZ?zYZg(#${)XNA;_b<+jjuhv zJ-zRUoyq!n=6;*DR0*qi@2)DpX)l~9B|LkZqf+o~wPz=%U%U3K@l&Pqjh?l?d$;fS zejQf7I%r z@q^5{O+KN!j~h>1dUH>?W__B_PKRsjawo>Ddtd(Px#PkE+Fxy_-?Y0I{aMVt`PaVl zw|$E$x>ml=_1V^W;>vf~-+T65=XYn45WF?neQv+>?wy>IWL7=_#>DlxPd$rPc{VAZ z-2VFJ*MCgsw+8U6TH%|uxlZNfn&sj@dH(;&e6Moy`Io$TDnIQtD<&;W^)=Kz^=K+IrAVTL~-hW|nOFuoYt1bb;t z3G&i&nzUqsils({*QEJP%T<1A!Wbu8pI3C9Jkr1B`-^#bf74>Ef0uu}TX&s3dAbV! zUmJhVPnS*#eY^ZCu8ytDvnq1^$2(@hu^*l>_gb&HyG`zQw`utCTh>qPDjnYXRlfLM zY=8Ho+R81jN)H52s`;|0UhSlbs%h?Dea~gSXU?*;=39PE$;j5OREWPZCB1a{+s!Jm z*H?eM_si+y{!{1Q2(AUDtbJ04FW2QRKdo1H-+peV)#p3O_Mh)8{wGpgJW1$N<%`gH z#}90KHOH+YdcMlb$jYPDoApmGY?y5sBLArJ#kcPk=hay4XV|}8>vgI4(+YR9d)=i) zzZlQgta-ff+#I%JI`w^%x^*j_+tgdv%RS-R6Li0r_1)vWruhdmE8o@XoZmKW_OCd$ zYkILy7oD=7Eu-pbS7lo7bxHrlSKs|FZ_Gbbtn05zopr0EW*=KL7v# literal 0 HcmV?d00001 diff --git a/classxt_1_1fixed__shape-members.html b/classxt_1_1fixed__shape-members.html new file mode 100644 index 000000000..f837c6e11 --- /dev/null +++ b/classxt_1_1fixed__shape-members.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::fixed_shape< X > Member List
+
+
+ +

This is the complete list of members for xt::fixed_shape< X >, including all inherited members.

+ + + + + + + + + + + + + + + + +
begin() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
cast_type typedef (defined in xt::fixed_shape< X >)xt::fixed_shape< X >
cbegin() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
cend() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
const_iterator typedef (defined in xt::fixed_shape< X >)xt::fixed_shape< X >
empty() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
end() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
get() (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inlinestatic
operator cast_type() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
operator[](std::size_t idx) const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
rbegin() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
rend() const (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inline
size() (defined in xt::fixed_shape< X >)xt::fixed_shape< X >inlinestatic
size_type typedef (defined in xt::fixed_shape< X >)xt::fixed_shape< X >
value_type typedef (defined in xt::fixed_shape< X >)xt::fixed_shape< X >
+
+ + + + diff --git a/classxt_1_1fixed__shape.html b/classxt_1_1fixed__shape.html new file mode 100644 index 000000000..99c411f95 --- /dev/null +++ b/classxt_1_1fixed__shape.html @@ -0,0 +1,562 @@ + + + + + + + +xtensor: xt::fixed_shape< X > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::fixed_shape< X > Class Template Reference
+
+
+ +

Fixed shape implementation for compile time defined arrays. + More...

+ +

#include <xstorage.hpp>

+ + + + + + + + + + +

+Public Types

using cast_type = const_array< std::size_t, sizeof...(X)>
 
using value_type = std::size_t
 
using size_type = std::size_t
 
using const_iterator = typename cast_type::const_iterator
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

constexpr operator cast_type () const
 
constexpr auto begin () const
 
constexpr auto end () const
 
auto rbegin () const
 
auto rend () const
 
constexpr auto cbegin () const
 
constexpr auto cend () const
 
constexpr std::size_t operator[] (std::size_t idx) const
 
constexpr bool empty () const
 
+ + + + + + +

+Static Public Member Functions

static constexpr std::size_t size ()
 
template<std::size_t idx>
static constexpr auto get ()
 
+

Detailed Description

+
template<std::size_t... X>
+class xt::fixed_shape< X >

Fixed shape implementation for compile time defined arrays.

+
See also
xshape
+ +

Definition at line 1661 of file xstorage.hpp.

+

Member Typedef Documentation

+ +

◆ cast_type

+ +
+
+
+template<std::size_t... X>
+ + + + +
using xt::fixed_shape< X >::cast_type = const_array<std::size_t, sizeof...(X)>
+
+ +

Definition at line 1669 of file xstorage.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<std::size_t... X>
+ + + + +
using xt::fixed_shape< X >::const_iterator = typename cast_type::const_iterator
+
+ +

Definition at line 1674 of file xstorage.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<std::size_t... X>
+ + + + +
using xt::fixed_shape< X >::size_type = std::size_t
+
+ +

Definition at line 1673 of file xstorage.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<std::size_t... X>
+ + + + +
using xt::fixed_shape< X >::value_type = std::size_t
+
+ +

Definition at line 1672 of file xstorage.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
constexpr auto xt::fixed_shape< X >::begin () const
+
+inlineconstexpr
+
+ +

Definition at line 1693 of file xstorage.hpp.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
constexpr auto xt::fixed_shape< X >::cbegin () const
+
+inlineconstexpr
+
+ +

Definition at line 1713 of file xstorage.hpp.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
constexpr auto xt::fixed_shape< X >::cend () const
+
+inlineconstexpr
+
+ +

Definition at line 1718 of file xstorage.hpp.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
constexpr bool xt::fixed_shape< X >::empty () const
+
+inlineconstexpr
+
+ +

Definition at line 1728 of file xstorage.hpp.

+ +
+
+ +

◆ end()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
constexpr auto xt::fixed_shape< X >::end () const
+
+inlineconstexpr
+
+ +

Definition at line 1698 of file xstorage.hpp.

+ +
+
+ +

◆ get()

+ +
+
+
+template<std::size_t... X>
+
+template<std::size_t idx>
+ + + + + +
+ + + + + + + +
static constexpr auto xt::fixed_shape< X >::get ()
+
+inlinestaticconstexpr
+
+ +

Definition at line 1682 of file xstorage.hpp.

+ +
+
+ +

◆ operator cast_type()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
constexpr xt::fixed_shape< X >::operator cast_type () const
+
+inlineconstexpr
+
+ +

Definition at line 1688 of file xstorage.hpp.

+ +
+
+ +

◆ operator[]()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + + +
constexpr std::size_t xt::fixed_shape< X >::operator[] (std::size_t idx) const
+
+inlineconstexpr
+
+ +

Definition at line 1723 of file xstorage.hpp.

+ +
+
+ +

◆ rbegin()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
auto xt::fixed_shape< X >::rbegin () const
+
+inline
+
+ +

Definition at line 1703 of file xstorage.hpp.

+ +
+
+ +

◆ rend()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
auto xt::fixed_shape< X >::rend () const
+
+inline
+
+ +

Definition at line 1708 of file xstorage.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<std::size_t... X>
+ + + + + +
+ + + + + + + +
static constexpr std::size_t xt::fixed_shape< X >::size ()
+
+inlinestaticconstexpr
+
+ +

Definition at line 1676 of file xstorage.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1linear__assigner-members.html b/classxt_1_1linear__assigner-members.html new file mode 100644 index 000000000..0527f1768 --- /dev/null +++ b/classxt_1_1linear__assigner-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::linear_assigner< simd_assign > Member List
+
+
+ +

This is the complete list of members for xt::linear_assigner< simd_assign >, including all inherited members.

+ + +
run(E1 &e1, const E2 &e2) (defined in xt::linear_assigner< simd_assign >)xt::linear_assigner< simd_assign >inlinestatic
+
+ + + + diff --git a/classxt_1_1linear__assigner.html b/classxt_1_1linear__assigner.html new file mode 100644 index 000000000..e992fa711 --- /dev/null +++ b/classxt_1_1linear__assigner.html @@ -0,0 +1,165 @@ + + + + + + + +xtensor: xt::linear_assigner< simd_assign > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::linear_assigner< simd_assign > Class Template Reference
+
+
+ + + + + +

+Static Public Member Functions

template<class E1 , class E2 >
static void run (E1 &e1, const E2 &e2)
 
+

Detailed Description

+
template<bool simd_assign>
+class xt::linear_assigner< simd_assign >
+

Definition at line 146 of file xassign.hpp.

+

Member Function Documentation

+ +

◆ run()

+ +
+
+
+template<bool simd_assign>
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::linear_assigner< simd_assign >::run (E1 & e1,
const E2 & e2 
)
+
+inlinestatic
+
+ +

Definition at line 709 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1linear__assigner_3_01false_01_4-members.html b/classxt_1_1linear__assigner_3_01false_01_4-members.html new file mode 100644 index 000000000..d8cb69a6b --- /dev/null +++ b/classxt_1_1linear__assigner_3_01false_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::linear_assigner< false > Member List
+
+
+ +

This is the complete list of members for xt::linear_assigner< false >, including all inherited members.

+ + +
run(E1 &e1, const E2 &e2) (defined in xt::linear_assigner< false >)xt::linear_assigner< false >inlinestatic
+
+ + + + diff --git a/classxt_1_1linear__assigner_3_01false_01_4.html b/classxt_1_1linear__assigner_3_01false_01_4.html new file mode 100644 index 000000000..e60dc6d34 --- /dev/null +++ b/classxt_1_1linear__assigner_3_01false_01_4.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::linear_assigner< false > Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::linear_assigner< false > Class Reference
+
+
+ + + + + +

+Static Public Member Functions

template<class E1 , class E2 >
static void run (E1 &e1, const E2 &e2)
 
+

Detailed Description

+
+

Definition at line 155 of file xassign.hpp.

+

Member Function Documentation

+ +

◆ run()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::linear_assigner< false >::run (E1 & e1,
const E2 & e2 
)
+
+inlinestatic
+
+ +

Definition at line 794 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1noalias__proxy-members.html b/classxt_1_1noalias__proxy-members.html new file mode 100644 index 000000000..edbcc5ec3 --- /dev/null +++ b/classxt_1_1noalias__proxy-members.html @@ -0,0 +1,135 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::noalias_proxy< A > Member List
+
+
+ +

This is the complete list of members for xt::noalias_proxy< A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
noalias_proxy(A a) noexcept (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator%=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator%=(const xexpression< E > &e) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator%=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator&=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator&=(const xexpression< E > &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator&=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator*=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator*=(const xexpression< E > &e) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator*=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator+=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator+=(const xexpression< E > &e) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator+=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator-=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator-=(const xexpression< E > &e) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator-=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator/=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator/=(const xexpression< E > &e) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator/=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator=(const xexpression< E > &e) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator^=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator^=(const xexpression< E > &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator^=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator|=(const E &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >
operator|=(const xexpression< E > &) (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
operator|=(const E &e) -> disable_xexpression< E, A > (defined in xt::noalias_proxy< A >)xt::noalias_proxy< A >inline
+
+ + + + diff --git a/classxt_1_1noalias__proxy.html b/classxt_1_1noalias__proxy.html new file mode 100644 index 000000000..7c9655a92 --- /dev/null +++ b/classxt_1_1noalias__proxy.html @@ -0,0 +1,828 @@ + + + + + + + +xtensor: xt::noalias_proxy< A > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::noalias_proxy< A > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 noalias_proxy (A a) noexcept
 
+template<class E >
disable_xexpression< E, A > operator= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, A > operator^= (const E &)
 
template<class E >
operator= (const xexpression< E > &e)
 
template<class E >
operator+= (const xexpression< E > &e)
 
template<class E >
operator-= (const xexpression< E > &e)
 
template<class E >
operator*= (const xexpression< E > &e)
 
template<class E >
operator/= (const xexpression< E > &e)
 
template<class E >
operator%= (const xexpression< E > &e)
 
template<class E >
operator&= (const xexpression< E > &)
 
template<class E >
operator|= (const xexpression< E > &)
 
template<class E >
operator^= (const xexpression< E > &)
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, A >
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, A >
 
+

Detailed Description

+
template<class A>
+class xt::noalias_proxy< A >
+

Definition at line 19 of file xnoalias.hpp.

+

Constructor & Destructor Documentation

+ +

◆ noalias_proxy()

+ +
+
+
+template<class A >
+ + + + + +
+ + + + + + + + +
xt::noalias_proxy< A >::noalias_proxy (a)
+
+inlinenoexcept
+
+ +

Definition at line 92 of file xnoalias.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator%=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator%= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 134 of file xnoalias.hpp.

+ +
+
+ +

◆ operator%=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator%= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 197 of file xnoalias.hpp.

+ +
+
+ +

◆ operator&=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator&= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 141 of file xnoalias.hpp.

+ +
+
+ +

◆ operator&=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator&= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 204 of file xnoalias.hpp.

+ +
+
+ +

◆ operator*=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator*= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 120 of file xnoalias.hpp.

+ +
+
+ +

◆ operator*=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator*= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 183 of file xnoalias.hpp.

+ +
+
+ +

◆ operator+=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator+= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 106 of file xnoalias.hpp.

+ +
+
+ +

◆ operator+=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator+= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 169 of file xnoalias.hpp.

+ +
+
+ +

◆ operator-=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator-= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 113 of file xnoalias.hpp.

+ +
+
+ +

◆ operator-=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator-= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 176 of file xnoalias.hpp.

+ +
+
+ +

◆ operator/=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator/= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 127 of file xnoalias.hpp.

+ +
+
+ +

◆ operator/=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator/= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 190 of file xnoalias.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 99 of file xnoalias.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 162 of file xnoalias.hpp.

+ +
+
+ +

◆ operator^=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator^= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 155 of file xnoalias.hpp.

+ +
+
+ +

◆ operator^=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator^= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 218 of file xnoalias.hpp.

+ +
+
+ +

◆ operator|=() [1/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::noalias_proxy< A >::operator|= (const E & e) -> disable_xexpression<E, A> +
+
+inline
+
+ +

Definition at line 148 of file xnoalias.hpp.

+ +
+
+ +

◆ operator|=() [2/2]

+ +
+
+
+template<class A >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
A xt::noalias_proxy< A >::operator|= (const xexpression< E > & e)
+
+inline
+
+ +

Definition at line 211 of file xnoalias.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xnoalias.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1print__options_1_1edge__items-members.html b/classxt_1_1print__options_1_1edge__items-members.html new file mode 100644 index 000000000..d8b760c63 --- /dev/null +++ b/classxt_1_1print__options_1_1edge__items-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::print_options::edge_items Member List
+
+
+ +

This is the complete list of members for xt::print_options::edge_items, including all inherited members.

+ + + + +
edge_items(int value) (defined in xt::print_options::edge_items)xt::print_options::edge_itemsinline
id() (defined in xt::print_options::edge_items)xt::print_options::edge_itemsinlinestatic
value() const (defined in xt::print_options::edge_items)xt::print_options::edge_itemsinline
+
+ + + + diff --git a/classxt_1_1print__options_1_1edge__items.html b/classxt_1_1print__options_1_1edge__items.html new file mode 100644 index 000000000..ddbbfcd8b --- /dev/null +++ b/classxt_1_1print__options_1_1edge__items.html @@ -0,0 +1,222 @@ + + + + + + + +xtensor: xt::print_options::edge_items Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::print_options::edge_items Class Reference
+
+
+ +

io manipulator used to set the number of egde items if the summarization is triggered. + More...

+ +

#include <xio.hpp>

+ + + + + + +

+Public Member Functions

 edge_items (int value)
 
int value () const
 
+ + + +

+Static Public Member Functions

static int id ()
 
+

Detailed Description

+

io manipulator used to set the number of egde items if the summarization is triggered.

+
using po = xt::print_options;
+
xt::xarray<double> a = xt::rand::randn<double>({2000, 500});
+
std::cout << po::edge_items(5) << a << std::endl;
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+

Definition at line 166 of file xio.hpp.

+

Constructor & Destructor Documentation

+ +

◆ edge_items()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::print_options::edge_items::edge_items (int value)
+
+inline
+
+ +

Definition at line 166 of file xio.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
static int xt::print_options::edge_items::id ()
+
+inlinestatic
+
+ +

Definition at line 166 of file xio.hpp.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
int xt::print_options::edge_items::value () const
+
+inline
+
+ +

Definition at line 166 of file xio.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xio.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1print__options_1_1line__width-members.html b/classxt_1_1print__options_1_1line__width-members.html new file mode 100644 index 000000000..2844028b5 --- /dev/null +++ b/classxt_1_1print__options_1_1line__width-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::print_options::line_width Member List
+
+
+ +

This is the complete list of members for xt::print_options::line_width, including all inherited members.

+ + + + +
id() (defined in xt::print_options::line_width)xt::print_options::line_widthinlinestatic
line_width(int value) (defined in xt::print_options::line_width)xt::print_options::line_widthinline
value() const (defined in xt::print_options::line_width)xt::print_options::line_widthinline
+
+ + + + diff --git a/classxt_1_1print__options_1_1line__width.html b/classxt_1_1print__options_1_1line__width.html new file mode 100644 index 000000000..2664824ca --- /dev/null +++ b/classxt_1_1print__options_1_1line__width.html @@ -0,0 +1,222 @@ + + + + + + + +xtensor: xt::print_options::line_width Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::print_options::line_width Class Reference
+
+
+ +

io manipulator used to set the width of the lines when printing an expression. + More...

+ +

#include <xio.hpp>

+ + + + + + +

+Public Member Functions

 line_width (int value)
 
int value () const
 
+ + + +

+Static Public Member Functions

static int id ()
 
+

Detailed Description

+

io manipulator used to set the width of the lines when printing an expression.

+
using po = xt::print_options;
+
xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}};
+
std::cout << po::line_width(100) << a << std::endl;
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+

Definition at line 138 of file xio.hpp.

+

Constructor & Destructor Documentation

+ +

◆ line_width()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::print_options::line_width::line_width (int value)
+
+inline
+
+ +

Definition at line 138 of file xio.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
static int xt::print_options::line_width::id ()
+
+inlinestatic
+
+ +

Definition at line 138 of file xio.hpp.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
int xt::print_options::line_width::value () const
+
+inline
+
+ +

Definition at line 138 of file xio.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xio.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1print__options_1_1precision-members.html b/classxt_1_1print__options_1_1precision-members.html new file mode 100644 index 000000000..f0c5bedbb --- /dev/null +++ b/classxt_1_1print__options_1_1precision-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::print_options::precision Member List
+
+
+ +

This is the complete list of members for xt::print_options::precision, including all inherited members.

+ + + + +
id() (defined in xt::print_options::precision)xt::print_options::precisioninlinestatic
precision(int value) (defined in xt::print_options::precision)xt::print_options::precisioninline
value() const (defined in xt::print_options::precision)xt::print_options::precisioninline
+
+ + + + diff --git a/classxt_1_1print__options_1_1precision.html b/classxt_1_1print__options_1_1precision.html new file mode 100644 index 000000000..7bcacc76e --- /dev/null +++ b/classxt_1_1print__options_1_1precision.html @@ -0,0 +1,222 @@ + + + + + + + +xtensor: xt::print_options::precision Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::print_options::precision Class Reference
+
+
+ +

io manipulator used to set the precision of the floating point values when printing an expression. + More...

+ +

#include <xio.hpp>

+ + + + + + +

+Public Member Functions

 precision (int value)
 
int value () const
 
+ + + +

+Static Public Member Functions

static int id ()
 
+

Detailed Description

+

io manipulator used to set the precision of the floating point values when printing an expression.

+
using po = xt::print_options;
+
xt::xarray<double> a = xt::rand::randn<double>({2000, 500});
+
std::cout << po::precision(5) << a << std::endl;
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+

Definition at line 180 of file xio.hpp.

+

Constructor & Destructor Documentation

+ +

◆ precision()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::print_options::precision::precision (int value)
+
+inline
+
+ +

Definition at line 180 of file xio.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
static int xt::print_options::precision::id ()
+
+inlinestatic
+
+ +

Definition at line 180 of file xio.hpp.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
int xt::print_options::precision::value () const
+
+inline
+
+ +

Definition at line 180 of file xio.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xio.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1print__options_1_1threshold-members.html b/classxt_1_1print__options_1_1threshold-members.html new file mode 100644 index 000000000..5ce431c7d --- /dev/null +++ b/classxt_1_1print__options_1_1threshold-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::print_options::threshold Member List
+
+
+ +

This is the complete list of members for xt::print_options::threshold, including all inherited members.

+ + + + +
id() (defined in xt::print_options::threshold)xt::print_options::thresholdinlinestatic
threshold(int value) (defined in xt::print_options::threshold)xt::print_options::thresholdinline
value() const (defined in xt::print_options::threshold)xt::print_options::thresholdinline
+
+ + + + diff --git a/classxt_1_1print__options_1_1threshold.html b/classxt_1_1print__options_1_1threshold.html new file mode 100644 index 000000000..b37c6dbc3 --- /dev/null +++ b/classxt_1_1print__options_1_1threshold.html @@ -0,0 +1,222 @@ + + + + + + + +xtensor: xt::print_options::threshold Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::print_options::threshold Class Reference
+
+
+ +

io manipulator used to set the threshold after which summarization is triggered. + More...

+ +

#include <xio.hpp>

+ + + + + + +

+Public Member Functions

 threshold (int value)
 
int value () const
 
+ + + +

+Static Public Member Functions

static int id ()
 
+

Detailed Description

+

io manipulator used to set the threshold after which summarization is triggered.

+
using po = xt::print_options;
+
xt::xarray<double> a = xt::rand::randn<double>({2000, 500});
+
std::cout << po::threshold(50) << a << std::endl;
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+

Definition at line 152 of file xio.hpp.

+

Constructor & Destructor Documentation

+ +

◆ threshold()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::print_options::threshold::threshold (int value)
+
+inline
+
+ +

Definition at line 152 of file xio.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
static int xt::print_options::threshold::id ()
+
+inlinestatic
+
+ +

Definition at line 152 of file xio.hpp.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
int xt::print_options::threshold::value () const
+
+inline
+
+ +

Definition at line 152 of file xio.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xio.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1sequence__view-members.html b/classxt_1_1sequence__view-members.html new file mode 100644 index 000000000..cf3b385f3 --- /dev/null +++ b/classxt_1_1sequence__view-members.html @@ -0,0 +1,135 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::sequence_view< E, Start, End > Member List
+
+
+ +

This is the complete list of members for xt::sequence_view< E, Start, End >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
back() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
begin() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
cbegin() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
cend() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
const_iterator typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
const_pointer typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
const_reference typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
const_reverse_iterator typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
crbegin() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
crend() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
difference_type typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
empty() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
end() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
front() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
iterator typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
operator T() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
operator[](std::size_t idx) const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
pointer typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
rbegin() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
reference typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
rend() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
reverse_iterator typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
sequence_view(const E &container) (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >explicit
sequence_view(const sequence_view< E, OS, OE > &other) (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >explicit
size() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
size_type typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
storage() const (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
value_type typedef (defined in xt::sequence_view< E, Start, End >)xt::sequence_view< E, Start, End >
+
+ + + + diff --git a/classxt_1_1sequence__view.html b/classxt_1_1sequence__view.html new file mode 100644 index 000000000..cb3f065a3 --- /dev/null +++ b/classxt_1_1sequence__view.html @@ -0,0 +1,762 @@ + + + + + + + +xtensor: xt::sequence_view< E, Start, End > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::sequence_view< E, Start, End > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using value_type = typename E::value_type
 
using reference = typename E::reference
 
using const_reference = typename E::const_reference
 
using pointer = typename E::pointer
 
using const_pointer = typename E::const_pointer
 
using size_type = typename E::size_type
 
using difference_type = typename E::difference_type
 
using iterator = typename E::iterator
 
using const_iterator = typename E::const_iterator
 
using reverse_iterator = typename E::reverse_iterator
 
using const_reverse_iterator = typename E::const_reverse_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 sequence_view (const E &container)
 
template<std::ptrdiff_t OS, std::ptrdiff_t OE>
 sequence_view (const sequence_view< E, OS, OE > &other)
 
template<class T , class R = decltype(std::declval<T>().begin())>
 operator T () const
 
bool empty () const
 
size_type size () const
 
const_reference operator[] (std::size_t idx) const
 
const_iterator end () const
 
const_iterator begin () const
 
const_iterator cend () const
 
const_iterator cbegin () const
 
const_reverse_iterator rend () const
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator crend () const
 
const_reverse_iterator crbegin () const
 
const_reference front () const
 
const_reference back () const
 
const E & storage () const
 
+

Detailed Description

+
template<class E, std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+class xt::sequence_view< E, Start, End >
+

Definition at line 1746 of file xstorage.hpp.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::const_iterator = typename E::const_iterator
+
+ +

Definition at line 1760 of file xstorage.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::const_pointer = typename E::const_pointer
+
+ +

Definition at line 1754 of file xstorage.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::const_reference = typename E::const_reference
+
+ +

Definition at line 1752 of file xstorage.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::const_reverse_iterator = typename E::const_reverse_iterator
+
+ +

Definition at line 1762 of file xstorage.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::difference_type = typename E::difference_type
+
+ +

Definition at line 1757 of file xstorage.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::iterator = typename E::iterator
+
+ +

Definition at line 1759 of file xstorage.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::pointer = typename E::pointer
+
+ +

Definition at line 1753 of file xstorage.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::reference = typename E::reference
+
+ +

Definition at line 1751 of file xstorage.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::reverse_iterator = typename E::reverse_iterator
+
+ +

Definition at line 1761 of file xstorage.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::size_type = typename E::size_type
+
+ +

Definition at line 1756 of file xstorage.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End = -1>
+ + + + +
using xt::sequence_view< E, Start, End >::value_type = typename E::value_type
+
+ +

Definition at line 1750 of file xstorage.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ sequence_view() [1/2]

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + +
+ + + + + + + + +
xt::sequence_view< E, Start, End >::sequence_view (const E & container)
+
+explicit
+
+ +

Definition at line 1797 of file xstorage.hpp.

+ +
+
+ +

◆ sequence_view() [2/2]

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+
+template<std::ptrdiff_t OS, std::ptrdiff_t OE>
+ + + + + +
+ + + + + + + + +
xt::sequence_view< E, Start, End >::sequence_view (const sequence_view< E, OS, OE > & other)
+
+explicit
+
+ +

Definition at line 1804 of file xstorage.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ back()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::back () const
+
+ +

Definition at line 1905 of file xstorage.hpp.

+ +
+
+ +

◆ begin()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::begin () const
+
+ +

Definition at line 1857 of file xstorage.hpp.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::cbegin () const
+
+ +

Definition at line 1869 of file xstorage.hpp.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::cend () const
+
+ +

Definition at line 1863 of file xstorage.hpp.

+ +
+
+ +

◆ crbegin()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::crbegin () const
+
+ +

Definition at line 1893 of file xstorage.hpp.

+ +
+
+ +

◆ crend()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::crend () const
+
+ +

Definition at line 1887 of file xstorage.hpp.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
bool xt::sequence_view< E, Start, End >::empty () const
+
+ +

Definition at line 1819 of file xstorage.hpp.

+ +
+
+ +

◆ end()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::end () const
+
+ +

Definition at line 1844 of file xstorage.hpp.

+ +
+
+ +

◆ front()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::front () const
+
+ +

Definition at line 1899 of file xstorage.hpp.

+ +
+
+ +

◆ operator T()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+
+template<class T , class R >
+ + + + + + + +
xt::sequence_view< E, Start, End >::operator T () const
+
+ +

Definition at line 1811 of file xstorage.hpp.

+ +
+
+ +

◆ operator[]()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + + +
auto xt::sequence_view< E, Start, End >::operator[] (std::size_t idx) const
+
+ +

Definition at line 1838 of file xstorage.hpp.

+ +
+
+ +

◆ rbegin()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::rbegin () const
+
+ +

Definition at line 1881 of file xstorage.hpp.

+ +
+
+ +

◆ rend()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::rend () const
+
+ +

Definition at line 1875 of file xstorage.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
auto xt::sequence_view< E, Start, End >::size () const
+
+ +

Definition at line 1825 of file xstorage.hpp.

+ +
+
+ +

◆ storage()

+ +
+
+
+template<class E , std::ptrdiff_t Start, std::ptrdiff_t End>
+ + + + + + + +
const E & xt::sequence_view< E, Start, End >::storage () const
+
+ +

Definition at line 1918 of file xstorage.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1stepper__assigner-members.html b/classxt_1_1stepper__assigner-members.html new file mode 100644 index 000000000..e306680c1 --- /dev/null +++ b/classxt_1_1stepper__assigner-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::stepper_assigner< E1, E2, L > Member List
+
+
+ +

This is the complete list of members for xt::stepper_assigner< E1, E2, L >, including all inherited members.

+ + + + + + + + + + + + + +
difference_type typedef (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >
index_type typedef (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >
lhs_iterator typedef (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >
reset(size_type i) (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >inline
rhs_iterator typedef (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >
run() (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >inline
shape_type typedef (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >
size_type typedef (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >
step(size_type i) (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >inline
step(size_type i, size_type n) (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >inline
stepper_assigner(E1 &e1, const E2 &e2) (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >inline
to_end(layout_type) (defined in xt::stepper_assigner< E1, E2, L >)xt::stepper_assigner< E1, E2, L >inline
+
+ + + + diff --git a/classxt_1_1stepper__assigner.html b/classxt_1_1stepper__assigner.html new file mode 100644 index 000000000..f4dd446f2 --- /dev/null +++ b/classxt_1_1stepper__assigner.html @@ -0,0 +1,457 @@ + + + + + + + +xtensor: xt::stepper_assigner< E1, E2, L > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::stepper_assigner< E1, E2, L > Class Template Reference
+
+
+ + + + + + + + + + + + + + +

+Public Types

using lhs_iterator = typename E1::stepper
 
using rhs_iterator = typename E2::const_stepper
 
using shape_type = typename E1::shape_type
 
using index_type = xindex_type_t< shape_type >
 
using size_type = typename lhs_iterator::size_type
 
using difference_type = typename lhs_iterator::difference_type
 
+ + + + + + + + + + + + + +

+Public Member Functions

 stepper_assigner (E1 &e1, const E2 &e2)
 
void run ()
 
void step (size_type i)
 
void step (size_type i, size_type n)
 
void reset (size_type i)
 
void to_end (layout_type)
 
+

Detailed Description

+
template<class E1, class E2, layout_type L>
+class xt::stepper_assigner< E1, E2, L >
+

Definition at line 110 of file xassign.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + +
using xt::stepper_assigner< E1, E2, L >::difference_type = typename lhs_iterator::difference_type
+
+ +

Definition at line 119 of file xassign.hpp.

+ +
+
+ +

◆ index_type

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + +
using xt::stepper_assigner< E1, E2, L >::index_type = xindex_type_t<shape_type>
+
+ +

Definition at line 117 of file xassign.hpp.

+ +
+
+ +

◆ lhs_iterator

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + +
using xt::stepper_assigner< E1, E2, L >::lhs_iterator = typename E1::stepper
+
+ +

Definition at line 114 of file xassign.hpp.

+ +
+
+ +

◆ rhs_iterator

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + +
using xt::stepper_assigner< E1, E2, L >::rhs_iterator = typename E2::const_stepper
+
+ +

Definition at line 115 of file xassign.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + +
using xt::stepper_assigner< E1, E2, L >::shape_type = typename E1::shape_type
+
+ +

Definition at line 116 of file xassign.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + +
using xt::stepper_assigner< E1, E2, L >::size_type = typename lhs_iterator::size_type
+
+ +

Definition at line 118 of file xassign.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ stepper_assigner()

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::stepper_assigner< E1, E2, L >::stepper_assigner (E1 & e1,
const E2 & e2 
)
+
+inline
+
+ +

Definition at line 651 of file xassign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ reset()

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + + +
+ + + + + + + + +
void xt::stepper_assigner< E1, E2, L >::reset (size_type i)
+
+inline
+
+ +

Definition at line 690 of file xassign.hpp.

+ +
+
+ +

◆ run()

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + + +
+ + + + + + + +
void xt::stepper_assigner< E1, E2, L >::run ()
+
+inline
+
+ +

Definition at line 660 of file xassign.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + + +
+ + + + + + + + +
void xt::stepper_assigner< E1, E2, L >::step (size_type i)
+
+inline
+
+ +

Definition at line 676 of file xassign.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::stepper_assigner< E1, E2, L >::step (size_type i,
size_type n 
)
+
+inline
+
+ +

Definition at line 683 of file xassign.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class E1 , class E2 , layout_type L>
+ + + + + +
+ + + + + + + + +
void xt::stepper_assigner< E1, E2, L >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 697 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1strided__loop__assigner-members.html b/classxt_1_1strided__loop__assigner-members.html new file mode 100644 index 000000000..730809467 --- /dev/null +++ b/classxt_1_1strided__loop__assigner-members.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::strided_loop_assigner< simd > Member List
+
+
+ +

This is the complete list of members for xt::strided_loop_assigner< simd >, including all inherited members.

+ + + + + + + + + +
get_loop_sizes(E1 &e1, const E2 &e2) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >static
get_loop_sizes(E1 &e1, const E2 &e2) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >inline
loop_sizes_t typedef (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >
run(E1 &e1, const E2 &e2, const loop_sizes_t &loop_sizes) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >inlinestatic
run(E1 &e1, const E2 &e2) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >static
run(E1 &e1, const E2 &e2) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >inline
run(E1 &, const E2 &, const loop_sizes_t &) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >inline
run(E1 &e1, const E2 &e2) (defined in xt::strided_loop_assigner< simd >)xt::strided_loop_assigner< simd >inline
+
+ + + + diff --git a/classxt_1_1strided__loop__assigner.html b/classxt_1_1strided__loop__assigner.html new file mode 100644 index 000000000..927ea13bd --- /dev/null +++ b/classxt_1_1strided__loop__assigner.html @@ -0,0 +1,379 @@ + + + + + + + +xtensor: xt::strided_loop_assigner< simd > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::strided_loop_assigner< simd > Class Template Reference
+
+
+ + + + +

+Public Types

using loop_sizes_t = strided_assign_detail::loop_sizes_t
 
+ + + + + + + + + + +

+Public Member Functions

template<class E1 , class E2 >
strided_assign_detail::loop_sizes_t get_loop_sizes (E1 &e1, const E2 &e2)
 
void run (E1 &e1, const E2 &e2)
 
void run (E1 &, const E2 &, const loop_sizes_t &)
 
void run (E1 &e1, const E2 &e2)
 
+ + + + + + + + + + +

+Static Public Member Functions

template<class E1 , class E2 >
static void run (E1 &e1, const E2 &e2, const loop_sizes_t &loop_sizes)
 
+template<class E1 , class E2 >
static loop_sizes_t get_loop_sizes (E1 &e1, const E2 &e2)
 
+template<class E1 , class E2 >
static void run (E1 &e1, const E2 &e2)
 
+

Detailed Description

+
template<bool simd>
+class xt::strided_loop_assigner< simd >
+

Definition at line 189 of file xassign.hpp.

+

Member Typedef Documentation

+ +

◆ loop_sizes_t

+ +
+
+
+template<bool simd>
+ + + + +
using xt::strided_loop_assigner< simd >::loop_sizes_t = strided_assign_detail::loop_sizes_t
+
+ +

Definition at line 193 of file xassign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ get_loop_sizes()

+ +
+
+
+template<bool simd>
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
strided_assign_detail::loop_sizes_t xt::strided_loop_assigner< simd >::get_loop_sizes (E1 & e1,
const E2 & e2 
)
+
+inline
+
+ +

Definition at line 1099 of file xassign.hpp.

+ +
+
+ +

◆ run() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::strided_loop_assigner< false >::run (E1 & ,
const E2 & ,
const loop_sizes_t &  
)
+
+inline
+
+ +

Definition at line 1354 of file xassign.hpp.

+ +
+
+ +

◆ run() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::strided_loop_assigner< true >::run (E1 & e1,
const E2 & e2 
)
+
+inline
+
+ +

Definition at line 1338 of file xassign.hpp.

+ +
+
+ +

◆ run() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::strided_loop_assigner< false >::run (E1 & e1,
const E2 & e2 
)
+
+inline
+
+ +

Definition at line 1360 of file xassign.hpp.

+ +
+
+ +

◆ run() [4/4]

+ +
+
+
+template<bool simd>
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::strided_loop_assigner< simd >::run (E1 & e1,
const E2 & e2,
const loop_sizes_t & loop_sizes 
)
+
+inlinestatic
+
+ +

Definition at line 1108 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1svector-members.html b/classxt_1_1svector-members.html new file mode 100644 index 000000000..44b143a3d --- /dev/null +++ b/classxt_1_1svector-members.html @@ -0,0 +1,183 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::svector< T, N, A, Init > Member List
+
+
+ +

This is the complete list of members for xt::svector< T, N, A, Init >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alignment (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >static
allocator_type typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
assign(size_type n, const value_type &v) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
assign(std::initializer_list< V > il) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
assign(IT other_begin, IT other_end) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
at(size_type idx) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
at(size_type idx) const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
back() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
back() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
begin() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
begin() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
capacity() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
cbegin() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
cend() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
clear() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
const_iterator typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
const_pointer typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
const_reference typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
const_reverse_iterator typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
crbegin() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
crend() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
data() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
data() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
difference_type typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
empty() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
end() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
end() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
erase(const_iterator cit) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
erase(const_iterator cfirst, const_iterator clast) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
front() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
front() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
get_allocator() const noexcept (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
insert(const_iterator it, const T &elt) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
insert(const_iterator pos, It first, It last) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
insert(const_iterator pos, std::initializer_list< T > l) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
insert(const_iterator pos, It first, It last) -> iterator (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
iterator typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
max_size() const noexcept (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
on_stack() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator=(const svector &rhs) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator=(svector &&rhs) noexcept(std::is_nothrow_move_assignable< value_type >::value) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator=(const std::vector< T > &rhs) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator=(std::initializer_list< T > il) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator=(const svector< T, N2, A, I2 > &rhs) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
operator=(const svector< T, N2, A, I2 > &rhs) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator[](size_type idx) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
operator[](size_type idx) const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
pointer typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
pop_back() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
push_back(const T &elt) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
push_back(T &&elt) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
rbegin() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
rbegin() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
reference typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
rend() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
rend() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
reserve(size_type n) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
resize(size_type n) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
reverse_iterator typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
self_type typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
shrink_to_fit() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
size() const (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
size_type typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
svector() noexcept (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
svector(const allocator_type &alloc) noexcept (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inlineexplicit
svector(size_type n, const allocator_type &alloc=allocator_type()) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inlineexplicit
svector(size_type n, const value_type &v, const allocator_type &alloc=allocator_type()) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
svector(std::initializer_list< T > il, const allocator_type &alloc=allocator_type()) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
svector(const std::vector< T > &vec) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
svector(IT begin, IT end, const allocator_type &alloc=allocator_type()) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
svector(const svector< T, N2, A, I2 > &rhs) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inlineexplicit
svector(const svector &other) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
svector(svector &&other) noexcept(std::is_nothrow_move_constructible< value_type >::value) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
swap(svector< T, ON, OA, InitA > &rhs) (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
value_type typedef (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >
~svector() (defined in xt::svector< T, N, A, Init >)xt::svector< T, N, A, Init >inline
+
+ + + + diff --git a/classxt_1_1svector.html b/classxt_1_1svector.html new file mode 100644 index 000000000..0518c774c --- /dev/null +++ b/classxt_1_1svector.html @@ -0,0 +1,2425 @@ + + + + + + + +xtensor: xt::svector< T, N, A, Init > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::svector< T, N, A, Init > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = svector< T, N, A, Init >
 
using allocator_type = A
 
using size_type = typename std::allocator_traits< A >::size_type
 
using value_type = typename std::allocator_traits< A >::value_type
 
using pointer = typename std::allocator_traits< A >::pointer
 
using const_pointer = typename std::allocator_traits< A >::const_pointer
 
using reference = value_type &
 
using const_reference = const value_type &
 
using difference_type = typename std::allocator_traits< A >::difference_type
 
using iterator = pointer
 
using const_iterator = const_pointer
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 svector (const allocator_type &alloc) noexcept
 
 svector (size_type n, const allocator_type &alloc=allocator_type())
 
 svector (size_type n, const value_type &v, const allocator_type &alloc=allocator_type())
 
 svector (std::initializer_list< T > il, const allocator_type &alloc=allocator_type())
 
 svector (const std::vector< T > &vec)
 
template<class IT , class = detail::require_input_iter<IT>>
 svector (IT begin, IT end, const allocator_type &alloc=allocator_type())
 
template<std::size_t N2, bool I2, class = std::enable_if_t<N != N2, void>>
 svector (const svector< T, N2, A, I2 > &rhs)
 
svectoroperator= (const svector &rhs)
 
svectoroperator= (svector &&rhs) noexcept(std::is_nothrow_move_assignable< value_type >::value)
 
svectoroperator= (const std::vector< T > &rhs)
 
svectoroperator= (std::initializer_list< T > il)
 
+template<std::size_t N2, bool I2, class = std::enable_if_t<N != N2, void>>
svectoroperator= (const svector< T, N2, A, I2 > &rhs)
 
 svector (const svector &other)
 
 svector (svector &&other) noexcept(std::is_nothrow_move_constructible< value_type >::value)
 
void assign (size_type n, const value_type &v)
 
template<class V >
void assign (std::initializer_list< V > il)
 
template<class IT >
void assign (IT other_begin, IT other_end)
 
reference operator[] (size_type idx)
 
const_reference operator[] (size_type idx) const
 
reference at (size_type idx)
 
const_reference at (size_type idx) const
 
pointer data ()
 
const_pointer data () const
 
void push_back (const T &elt)
 
void push_back (T &&elt)
 
void pop_back ()
 
iterator begin ()
 
const_iterator begin () const
 
const_iterator cbegin () const
 
iterator end ()
 
const_iterator end () const
 
const_iterator cend () const
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator crbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
const_reverse_iterator crend () const
 
bool empty () const
 
size_type size () const
 
void resize (size_type n)
 
size_type max_size () const noexcept
 
size_type capacity () const
 
void reserve (size_type n)
 
void shrink_to_fit ()
 
void clear ()
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
bool on_stack ()
 
iterator erase (const_iterator cit)
 
iterator erase (const_iterator cfirst, const_iterator clast)
 
iterator insert (const_iterator it, const T &elt)
 
+template<class It >
iterator insert (const_iterator pos, It first, It last)
 
iterator insert (const_iterator pos, std::initializer_list< T > l)
 
template<std::size_t ON, class OA , bool InitA>
void swap (svector< T, ON, OA, InitA > &rhs)
 
allocator_type get_allocator () const noexcept
 
template<std::size_t N2, bool I2, class >
svector< T, N, A, Init > & operator= (const svector< T, N2, A, I2 > &rhs)
 
template<class It >
auto insert (const_iterator pos, It first, It last) -> iterator
 
+ + + +

+Static Public Attributes

static constexpr std::size_t alignment
 
+

Detailed Description

+
template<class T, std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+class xt::svector< T, N, A, Init >
+

Definition at line 641 of file xstorage.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::allocator_type = A
+
+ +

Definition at line 646 of file xstorage.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::const_iterator = const_pointer
+
+ +

Definition at line 656 of file xstorage.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::const_pointer = typename std::allocator_traits<A>::const_pointer
+
+ +

Definition at line 650 of file xstorage.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::const_reference = const value_type&
+
+ +

Definition at line 652 of file xstorage.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::const_reverse_iterator = std::reverse_iterator<const_iterator>
+
+ +

Definition at line 658 of file xstorage.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::difference_type = typename std::allocator_traits<A>::difference_type
+
+ +

Definition at line 653 of file xstorage.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::iterator = pointer
+
+ +

Definition at line 655 of file xstorage.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::pointer = typename std::allocator_traits<A>::pointer
+
+ +

Definition at line 649 of file xstorage.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::reference = value_type&
+
+ +

Definition at line 651 of file xstorage.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::reverse_iterator = std::reverse_iterator<iterator>
+
+ +

Definition at line 657 of file xstorage.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::self_type = svector<T, N, A, Init>
+
+ +

Definition at line 645 of file xstorage.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::size_type = typename std::allocator_traits<A>::size_type
+
+ +

Definition at line 647 of file xstorage.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + +
using xt::svector< T, N, A, Init >::value_type = typename std::allocator_traits<A>::value_type
+
+ +

Definition at line 648 of file xstorage.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ svector() [1/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
xt::svector< T, N, A, Init >::svector ()
+
+inlinenoexcept
+
+ +

Definition at line 786 of file xstorage.hpp.

+ +
+
+ +

◆ ~svector()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
xt::svector< T, N, A, Init >::~svector ()
+
+inline
+
+ +

Definition at line 777 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [2/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
xt::svector< T, N, A, Init >::svector (const allocator_type & alloc)
+
+inlineexplicitnoexcept
+
+ +

Definition at line 792 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [3/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::svector< T, N, A, Init >::svector (size_type n,
const allocator_type & alloc = allocator_type() 
)
+
+inlineexplicit
+
+ +

Definition at line 798 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [4/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::svector< T, N, A, Init >::svector (size_type n,
const value_type & v,
const allocator_type & alloc = allocator_type() 
)
+
+inline
+
+ +

Definition at line 834 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [5/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::svector< T, N, A, Init >::svector (std::initializer_list< T > il,
const allocator_type & alloc = allocator_type() 
)
+
+inline
+
+ +

Definition at line 841 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [6/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
xt::svector< T, N, A, Init >::svector (const std::vector< T > & vec)
+
+inline
+
+ +

Definition at line 828 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [7/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+
+template<class IT , class >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::svector< T, N, A, Init >::svector (IT begin,
IT end,
const allocator_type & alloc = allocator_type() 
)
+
+inline
+
+ +

Definition at line 813 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [8/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+
+template<std::size_t N2, bool I2, class >
+ + + + + +
+ + + + + + + + +
xt::svector< T, N, A, Init >::svector (const svector< T, N2, A, I2 > & rhs)
+
+inlineexplicit
+
+ +

Definition at line 821 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [9/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
xt::svector< T, N, A, Init >::svector (const svector< T, N, A, Init > & other)
+
+inline
+
+ +

Definition at line 890 of file xstorage.hpp.

+ +
+
+ +

◆ svector() [10/10]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
xt::svector< T, N, A, Init >::svector (svector< T, N, A, Init > && other)
+
+inlinenoexcept
+
+ +

Definition at line 899 of file xstorage.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign() [1/3]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+
+template<class IT >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::svector< T, N, A, Init >::assign (IT other_begin,
IT other_end 
)
+
+inline
+
+ +

Definition at line 925 of file xstorage.hpp.

+ +
+
+ +

◆ assign() [2/3]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::svector< T, N, A, Init >::assign (size_type n,
const value_type & v 
)
+
+inline
+
+ +

Definition at line 906 of file xstorage.hpp.

+ +
+
+ +

◆ assign() [3/3]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+
+template<class V >
+ + + + + +
+ + + + + + + + +
void xt::svector< T, N, A, Init >::assign (std::initializer_list< V > il)
+
+inline
+
+ +

Definition at line 918 of file xstorage.hpp.

+ +
+
+ +

◆ at() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
auto xt::svector< T, N, A, Init >::at (size_type idx)
+
+inline
+
+ +

Definition at line 949 of file xstorage.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
auto xt::svector< T, N, A, Init >::at (size_type idx) const
+
+inline
+
+ +

Definition at line 959 of file xstorage.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::back ()
+
+inline
+
+ +

Definition at line 1153 of file xstorage.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::back () const
+
+inline
+
+ +

Definition at line 1160 of file xstorage.hpp.

+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::begin ()
+
+inline
+
+ +

Definition at line 1055 of file xstorage.hpp.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::begin () const
+
+inline
+
+ +

Definition at line 1061 of file xstorage.hpp.

+ +
+
+ +

◆ capacity()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::capacity () const
+
+inline
+
+ +

Definition at line 1002 of file xstorage.hpp.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::cbegin () const
+
+inline
+
+ +

Definition at line 1067 of file xstorage.hpp.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::cend () const
+
+inline
+
+ +

Definition at line 1085 of file xstorage.hpp.

+ +
+
+ +

◆ clear()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
void xt::svector< T, N, A, Init >::clear ()
+
+inline
+
+ +

Definition at line 1023 of file xstorage.hpp.

+ +
+
+ +

◆ crbegin()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::crbegin () const
+
+inline
+
+ +

Definition at line 1103 of file xstorage.hpp.

+ +
+
+ +

◆ crend()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::crend () const
+
+inline
+
+ +

Definition at line 1121 of file xstorage.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::data ()
+
+inline
+
+ +

Definition at line 969 of file xstorage.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::data () const
+
+inline
+
+ +

Definition at line 975 of file xstorage.hpp.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::empty () const
+
+inline
+
+ +

Definition at line 1133 of file xstorage.hpp.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::end ()
+
+inline
+
+ +

Definition at line 1073 of file xstorage.hpp.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::end () const
+
+inline
+
+ +

Definition at line 1079 of file xstorage.hpp.

+ +
+
+ +

◆ erase() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::svector< T, N, A, Init >::erase (const_iterator cfirst,
const_iterator clast 
)
+
+inline
+
+ +

Definition at line 1189 of file xstorage.hpp.

+ +
+
+ +

◆ erase() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
auto xt::svector< T, N, A, Init >::erase (const_iterator cit)
+
+inline
+
+ +

Definition at line 1179 of file xstorage.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::front ()
+
+inline
+
+ +

Definition at line 1139 of file xstorage.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::front () const
+
+inline
+
+ +

Definition at line 1146 of file xstorage.hpp.

+ +
+
+ +

◆ get_allocator()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::get_allocator () const
+
+inlinenoexcept
+
+ +

Definition at line 1173 of file xstorage.hpp.

+ +
+
+ +

◆ insert() [1/3]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::svector< T, N, A, Init >::insert (const_iterator it,
const T & elt 
)
+
+inline
+
+ +

Definition at line 1205 of file xstorage.hpp.

+ +
+
+ +

◆ insert() [2/3]

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::svector< T, N, A, Init >::insert (const_iterator pos,
It first,
It last 
) -> iterator +
+
+inline
+
+ +

Definition at line 1237 of file xstorage.hpp.

+ +
+
+ +

◆ insert() [3/3]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::svector< T, N, A, Init >::insert (const_iterator pos,
std::initializer_list< T > l 
)
+
+inline
+
+ +

Definition at line 1258 of file xstorage.hpp.

+ +
+
+ +

◆ max_size()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::max_size () const
+
+inlinenoexcept
+
+ +

Definition at line 996 of file xstorage.hpp.

+ +
+
+ +

◆ on_stack()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::on_stack ()
+
+inline
+
+ +

Definition at line 1167 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [1/5]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
svector< T, N, A, Init > & xt::svector< T, N, A, Init >::operator= (const std::vector< T > & rhs)
+
+inline
+
+ +

Definition at line 863 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [2/5]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
svector< T, N, A, Init > & xt::svector< T, N, A, Init >::operator= (const svector< T, N, A, Init > & rhs)
+
+inline
+
+ +

Definition at line 848 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [3/5]

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+
+template<std::size_t N2, bool I2, class >
+ + + + + +
+ + + + + + + + +
svector< T, N, A, Init > & xt::svector< T, N, A, Init >::operator= (const svector< T, N2, A, I2 > & rhs)
+
+inline
+
+ +

Definition at line 880 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [4/5]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
svector< T, N, A, Init > & xt::svector< T, N, A, Init >::operator= (std::initializer_list< T > il)
+
+inline
+
+ +

Definition at line 873 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [5/5]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
svector< T, N, A, Init > & xt::svector< T, N, A, Init >::operator= (svector< T, N, A, Init > && rhs)
+
+inlinenoexcept
+
+ +

Definition at line 855 of file xstorage.hpp.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
auto xt::svector< T, N, A, Init >::operator[] (size_type idx)
+
+inline
+
+ +

Definition at line 937 of file xstorage.hpp.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
auto xt::svector< T, N, A, Init >::operator[] (size_type idx) const
+
+inline
+
+ +

Definition at line 943 of file xstorage.hpp.

+ +
+
+ +

◆ pop_back()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + + + +
void xt::svector< T, N, A, Init >::pop_back ()
+
+ +

Definition at line 1049 of file xstorage.hpp.

+ +
+
+ +

◆ push_back() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + + + + +
void xt::svector< T, N, A, Init >::push_back (const T & elt)
+
+ +

Definition at line 1029 of file xstorage.hpp.

+ +
+
+ +

◆ push_back() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + + + + +
void xt::svector< T, N, A, Init >::push_back (T && elt)
+
+ +

Definition at line 1039 of file xstorage.hpp.

+ +
+
+ +

◆ rbegin() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::rbegin ()
+
+inline
+
+ +

Definition at line 1091 of file xstorage.hpp.

+ +
+
+ +

◆ rbegin() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::rbegin () const
+
+inline
+
+ +

Definition at line 1097 of file xstorage.hpp.

+ +
+
+ +

◆ rend() [1/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::rend ()
+
+inline
+
+ +

Definition at line 1109 of file xstorage.hpp.

+ +
+
+ +

◆ rend() [2/2]

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::rend () const
+
+inline
+
+ +

Definition at line 1115 of file xstorage.hpp.

+ +
+
+ +

◆ reserve()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + + +
void xt::svector< T, N, A, Init >::reserve (size_type n)
+
+inline
+
+ +

Definition at line 1008 of file xstorage.hpp.

+ +
+
+ +

◆ resize()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + + + + +
void xt::svector< T, N, A, Init >::resize (size_type n)
+
+ +

Definition at line 981 of file xstorage.hpp.

+ +
+
+ +

◆ shrink_to_fit()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
void xt::svector< T, N, A, Init >::shrink_to_fit ()
+
+inline
+
+ +

Definition at line 1017 of file xstorage.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+ + + + + +
+ + + + + + + +
auto xt::svector< T, N, A, Init >::size () const
+
+inline
+
+ +

Definition at line 1127 of file xstorage.hpp.

+ +
+
+ +

◆ swap()

+ +
+
+
+template<class T , std::size_t N, class A , bool Init>
+
+template<std::size_t ON, class OA , bool InitA>
+ + + + + +
+ + + + + + + + +
void xt::svector< T, N, A, Init >::swap (svector< T, ON, OA, InitA > & rhs)
+
+inline
+
+ +

Definition at line 1278 of file xstorage.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ alignment

+ +
+
+
+template<class T , std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
+ + + + + +
+ + + + +
constexpr std::size_t xt::svector< T, N, A, Init >::alignment
+
+staticconstexpr
+
+Initial value:
= detail::allocator_alignment<A>::value != 0
+
? detail::allocator_alignment<A>::value
+
: alignof(T)
+
+

Definition at line 663 of file xstorage.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1transpose__error-members.html b/classxt_1_1transpose__error-members.html new file mode 100644 index 000000000..93e63fda9 --- /dev/null +++ b/classxt_1_1transpose__error-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::transpose_error Member List
+
+
+ +

This is the complete list of members for xt::transpose_error, including all inherited members.

+ + +
transpose_error(const char *msg) (defined in xt::transpose_error)xt::transpose_errorinlineexplicit
+
+ + + + diff --git a/classxt_1_1transpose__error.html b/classxt_1_1transpose__error.html new file mode 100644 index 000000000..159e997af --- /dev/null +++ b/classxt_1_1transpose__error.html @@ -0,0 +1,155 @@ + + + + + + + +xtensor: xt::transpose_error Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::transpose_error Class Reference
+
+
+
+Inheritance diagram for xt::transpose_error:
+
+
+ +
+ + + + +

+Public Member Functions

 transpose_error (const char *msg)
 
+

Detailed Description

+
+

Definition at line 160 of file xexception.hpp.

+

Constructor & Destructor Documentation

+ +

◆ transpose_error()

+ +
+
+ + + + + +
+ + + + + + + + +
xt::transpose_error::transpose_error (const char * msg)
+
+inlineexplicit
+
+ +

Definition at line 164 of file xexception.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1transpose__error.png b/classxt_1_1transpose__error.png new file mode 100644 index 0000000000000000000000000000000000000000..1bb9a0d3c6ab3600172232b489da51e5101694d2 GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^Wk4Lj!3-pS_Y`sfDd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=E9hJzX3_Dj46+y*urY0#A#& zx!=A2o!h7EU$S=Fa;_b_DE7%x0*6Y*N|^Q4R=JlAa1yh^T_9xH4R-PC7vI{3ZsPSGvhLECQby;#_@ zR=ix`cpXRP@sCA8FTQR$QNH0}YWAGR6P(to>y}RX_xbX>-*1h=PFR&iR3BaP<71=J zbiZwav7c|Oe?0B5-@5A8f7bu8T*j{HIWOC;(PPs_wP`BS*$2BiO2irNTxDkXmCf_* zqr@TE=GYa=JDNBAUo%-spo@AjC+9eI)|mDU;kzH6HD4FgTr z=qDu;&K{c;_^;sDwe3gqdWAmmNOQlxTz;cQCHiU3+~n-FWj}XG{YtjFzt7lz@ihrL{9KMdn{NGZ$53~R2nA!S-hQ_}ZpBonX)z^2; is;uPR!$7}Y=f5 + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::uvector< T, A > Member List
+
+
+ +

This is the complete list of members for xt::uvector< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
at(size_type i) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
at(size_type i) const (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
back() (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
back() const (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
begin() noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
begin() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
capacity() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
cbegin() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
cend() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
clear() (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
const_iterator typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
const_pointer typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
const_reference typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
const_reverse_iterator typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
crbegin() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
crend() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
data() noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
data() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
difference_type typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
empty() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
end() noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
end() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
front() (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
front() const (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
get_allocator() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
iterator typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
max_size() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
operator=(const uvector &) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
operator=(uvector &&rhs) noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
operator[](size_type i) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
operator[](size_type i) const (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
pointer typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
rbegin() noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
rbegin() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
reference typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
rend() noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
rend() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
reserve(size_type new_cap) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
resize(size_type size) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
reverse_iterator typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
shrink_to_fit() (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
size() const noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
size_type typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
swap(uvector &rhs) noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector() noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(const allocator_type &alloc) noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inlineexplicit
uvector(size_type count, const allocator_type &alloc=allocator_type()) (defined in xt::uvector< T, A >)xt::uvector< T, A >inlineexplicit
uvector(size_type count, const_reference value, const allocator_type &alloc=allocator_type()) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(InputIt first, InputIt last, const allocator_type &alloc=allocator_type()) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(std::initializer_list< T > init, const allocator_type &alloc=allocator_type()) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(const uvector &rhs) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(const uvector &rhs, const allocator_type &alloc) (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(uvector &&rhs) noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
uvector(uvector &&rhs, const allocator_type &alloc) noexcept (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
value_type typedef (defined in xt::uvector< T, A >)xt::uvector< T, A >
~uvector() (defined in xt::uvector< T, A >)xt::uvector< T, A >inline
+
+ + + + diff --git a/classxt_1_1uvector.html b/classxt_1_1uvector.html new file mode 100644 index 000000000..28df3cc87 --- /dev/null +++ b/classxt_1_1uvector.html @@ -0,0 +1,1850 @@ + + + + + + + +xtensor: xt::uvector< T, A > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::uvector< T, A > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using allocator_type = A
 
using value_type = typename std::allocator_traits< A >::value_type
 
using reference = value_type &
 
using const_reference = const value_type &
 
using pointer = typename std::allocator_traits< A >::pointer
 
using const_pointer = typename std::allocator_traits< A >::const_pointer
 
using size_type = typename std::allocator_traits< A >::size_type
 
using difference_type = typename std::allocator_traits< A >::difference_type
 
using iterator = pointer
 
using const_iterator = const_pointer
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 uvector (const allocator_type &alloc) noexcept
 
 uvector (size_type count, const allocator_type &alloc=allocator_type())
 
 uvector (size_type count, const_reference value, const allocator_type &alloc=allocator_type())
 
template<class InputIt , class = detail::require_input_iter<InputIt>>
 uvector (InputIt first, InputIt last, const allocator_type &alloc=allocator_type())
 
 uvector (std::initializer_list< T > init, const allocator_type &alloc=allocator_type())
 
 uvector (const uvector &rhs)
 
 uvector (const uvector &rhs, const allocator_type &alloc)
 
uvectoroperator= (const uvector &)
 
 uvector (uvector &&rhs) noexcept
 
 uvector (uvector &&rhs, const allocator_type &alloc) noexcept
 
uvectoroperator= (uvector &&rhs) noexcept
 
allocator_type get_allocator () const noexcept
 
bool empty () const noexcept
 
size_type size () const noexcept
 
void resize (size_type size)
 
size_type max_size () const noexcept
 
void reserve (size_type new_cap)
 
size_type capacity () const noexcept
 
void shrink_to_fit ()
 
void clear ()
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference at (size_type i)
 
const_reference at (size_type i) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
pointer data () noexcept
 
const_pointer data () const noexcept
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator begin () const 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
 
void swap (uvector &rhs) noexcept
 
+

Detailed Description

+
template<class T, class A = std::allocator<T>>
+class xt::uvector< T, A >
+

Definition at line 42 of file xstorage.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::allocator_type = A
+
+ +

Definition at line 46 of file xstorage.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::const_iterator = const_pointer
+
+ +

Definition at line 58 of file xstorage.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::const_pointer = typename std::allocator_traits<A>::const_pointer
+
+ +

Definition at line 52 of file xstorage.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::const_reference = const value_type&
+
+ +

Definition at line 50 of file xstorage.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::const_reverse_iterator = std::reverse_iterator<const_iterator>
+
+ +

Definition at line 60 of file xstorage.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::difference_type = typename std::allocator_traits<A>::difference_type
+
+ +

Definition at line 55 of file xstorage.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::iterator = pointer
+
+ +

Definition at line 57 of file xstorage.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::pointer = typename std::allocator_traits<A>::pointer
+
+ +

Definition at line 51 of file xstorage.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::reference = value_type&
+
+ +

Definition at line 49 of file xstorage.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::reverse_iterator = std::reverse_iterator<iterator>
+
+ +

Definition at line 59 of file xstorage.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::size_type = typename std::allocator_traits<A>::size_type
+
+ +

Definition at line 54 of file xstorage.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class T , class A = std::allocator<T>>
+ + + + +
using xt::uvector< T, A >::value_type = typename std::allocator_traits<A>::value_type
+
+ +

Definition at line 48 of file xstorage.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ uvector() [1/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
xt::uvector< T, A >::uvector ()
+
+inlinenoexcept
+
+ +

Definition at line 239 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [2/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
xt::uvector< T, A >::uvector (const allocator_type & alloc)
+
+inlineexplicitnoexcept
+
+ +

Definition at line 245 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [3/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::uvector< T, A >::uvector (size_type count,
const allocator_type & alloc = allocator_type() 
)
+
+inlineexplicit
+
+ +

Definition at line 253 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [4/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::uvector< T, A >::uvector (size_type count,
const_reference value,
const allocator_type & alloc = allocator_type() 
)
+
+inline
+
+ +

Definition at line 266 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [5/10]

+ +
+
+
+template<class T , class A >
+
+template<class InputIt , class >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::uvector< T, A >::uvector (InputIt first,
InputIt last,
const allocator_type & alloc = allocator_type() 
)
+
+inline
+
+ +

Definition at line 281 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [6/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::uvector< T, A >::uvector (std::initializer_list< T > init,
const allocator_type & alloc = allocator_type() 
)
+
+inline
+
+ +

Definition at line 290 of file xstorage.hpp.

+ +
+
+ +

◆ ~uvector()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
xt::uvector< T, A >::~uvector ()
+
+inline
+
+ +

Definition at line 299 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [7/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
xt::uvector< T, A >::uvector (const uvector< T, A > & rhs)
+
+inline
+
+ +

Definition at line 307 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [8/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::uvector< T, A >::uvector (const uvector< T, A > & rhs,
const allocator_type & alloc 
)
+
+inline
+
+ +

Definition at line 318 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [9/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
xt::uvector< T, A >::uvector (uvector< T, A > && rhs)
+
+inlinenoexcept
+
+ +

Definition at line 349 of file xstorage.hpp.

+ +
+
+ +

◆ uvector() [10/10]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::uvector< T, A >::uvector (uvector< T, A > && rhs,
const allocator_type & alloc 
)
+
+inlinenoexcept
+
+ +

Definition at line 359 of file xstorage.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
auto xt::uvector< T, A >::at (size_type i)
+
+inline
+
+ +

Definition at line 443 of file xstorage.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
auto xt::uvector< T, A >::at (size_type i) const
+
+inline
+
+ +

Definition at line 453 of file xstorage.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::back ()
+
+inline
+
+ +

Definition at line 475 of file xstorage.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::back () const
+
+inline
+
+ +

Definition at line 481 of file xstorage.hpp.

+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 511 of file xstorage.hpp.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::begin ()
+
+inlinenoexcept
+
+ +

Definition at line 499 of file xstorage.hpp.

+ +
+
+ +

◆ capacity()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::capacity () const
+
+inlinenoexcept
+
+ +

Definition at line 414 of file xstorage.hpp.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 523 of file xstorage.hpp.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 529 of file xstorage.hpp.

+ +
+
+ +

◆ clear()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
void xt::uvector< T, A >::clear ()
+
+inline
+
+ +

Definition at line 425 of file xstorage.hpp.

+ +
+
+ +

◆ crbegin()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 559 of file xstorage.hpp.

+ +
+
+ +

◆ crend()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::crend () const
+
+inlinenoexcept
+
+ +

Definition at line 565 of file xstorage.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::data () const
+
+inlinenoexcept
+
+ +

Definition at line 493 of file xstorage.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::data ()
+
+inlinenoexcept
+
+ +

Definition at line 487 of file xstorage.hpp.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
bool xt::uvector< T, A >::empty () const
+
+inlinenoexcept
+
+ +

Definition at line 385 of file xstorage.hpp.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 517 of file xstorage.hpp.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::end ()
+
+inlinenoexcept
+
+ +

Definition at line 505 of file xstorage.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::front ()
+
+inline
+
+ +

Definition at line 463 of file xstorage.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::front () const
+
+inline
+
+ +

Definition at line 469 of file xstorage.hpp.

+ +
+
+ +

◆ get_allocator()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::get_allocator () const
+
+inlinenoexcept
+
+ +

Definition at line 379 of file xstorage.hpp.

+ +
+
+ +

◆ max_size()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::max_size () const
+
+inlinenoexcept
+
+ +

Definition at line 403 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
uvector< T, A > & xt::uvector< T, A >::operator= (const uvector< T, A > & rhs)
+
+inline
+
+ +

Definition at line 327 of file xstorage.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
uvector< T, A > & xt::uvector< T, A >::operator= (uvector< T, A > && rhs)
+
+inlinenoexcept
+
+ +

Definition at line 369 of file xstorage.hpp.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
auto xt::uvector< T, A >::operator[] (size_type i)
+
+inline
+
+ +

Definition at line 431 of file xstorage.hpp.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
auto xt::uvector< T, A >::operator[] (size_type i) const
+
+inline
+
+ +

Definition at line 437 of file xstorage.hpp.

+ +
+
+ +

◆ rbegin() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 547 of file xstorage.hpp.

+ +
+
+ +

◆ rbegin() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 535 of file xstorage.hpp.

+ +
+
+ +

◆ rend() [1/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::rend () const
+
+inlinenoexcept
+
+ +

Definition at line 553 of file xstorage.hpp.

+ +
+
+ +

◆ rend() [2/2]

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::rend ()
+
+inlinenoexcept
+
+ +

Definition at line 541 of file xstorage.hpp.

+ +
+
+ +

◆ reserve()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
void xt::uvector< T, A >::reserve (size_type new_cap)
+
+inline
+
+ +

Definition at line 409 of file xstorage.hpp.

+ +
+
+ +

◆ resize()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
void xt::uvector< T, A >::resize (size_type size)
+
+inline
+
+ +

Definition at line 397 of file xstorage.hpp.

+ +
+
+ +

◆ shrink_to_fit()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
void xt::uvector< T, A >::shrink_to_fit ()
+
+inline
+
+ +

Definition at line 420 of file xstorage.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + +
auto xt::uvector< T, A >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 391 of file xstorage.hpp.

+ +
+
+ +

◆ swap()

+ +
+
+
+template<class T , class A >
+ + + + + +
+ + + + + + + + +
void xt::uvector< T, A >::swap (uvector< T, A > & rhs)
+
+inlinenoexcept
+
+ +

Definition at line 571 of file xstorage.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xaccessible-members.html b/classxt_1_1xaccessible-members.html new file mode 100644 index 000000000..93ecd1e32 --- /dev/null +++ b/classxt_1_1xaccessible-members.html @@ -0,0 +1,149 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xaccessible< D > Member List
+
+
+ +

This is the complete list of members for xt::xaccessible< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(Args... args) (defined in xt::xaccessible< D >)xt::xaccessible< D >
at(Args... args) -> referencext::xaccessible< D >inline
at(Args... args) const (defined in xt::xaccessible< D >)xt::xaccessible< D >
at(Args... args) const -> const_referencext::xaccessible< D >inline
back()xt::xaccessible< D >inline
back() constxt::xaccessible< D >inline
base_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >
const_reference typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
derived_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >
dimension() const noexceptxt::xconst_accessible< D >inline
front()xt::xaccessible< D >inline
front() constxt::xaccessible< D >inline
in_bounds(Args... args) constxt::xconst_accessible< D >inline
inner_types typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator[](const S &index) (defined in xt::xaccessible< D >)xt::xaccessible< D >
operator[](std::initializer_list< I > index) (defined in xt::xaccessible< D >)xt::xaccessible< D >
operator[](size_type i) (defined in xt::xaccessible< D >)xt::xaccessible< D >inline
operator[](const S &index) -> disable_integral_t< S, reference >xt::xaccessible< D >inline
operator[](std::initializer_list< I > index) -> reference (defined in xt::xaccessible< D >)xt::xaccessible< D >inline
operator[](const S &index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](std::initializer_list< I > index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](size_type i) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
periodic(Args... args) (defined in xt::xaccessible< D >)xt::xaccessible< D >
periodic(Args... args) -> referencext::xaccessible< D >inline
periodic(Args... args) const (defined in xt::xaccessible< D >)xt::xaccessible< D >
periodic(Args... args) const -> const_referencext::xaccessible< D >inline
reference typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >
shape(size_type index) constxt::xconst_accessible< D >inline
size() const noexceptxt::xconst_accessible< D >inline
size_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >
xaccessible()=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
xaccessible(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
xaccessible(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
~xaccessible()=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
~xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
+
+ + + + diff --git a/classxt_1_1xaccessible.html b/classxt_1_1xaccessible.html new file mode 100644 index 000000000..652c1216d --- /dev/null +++ b/classxt_1_1xaccessible.html @@ -0,0 +1,797 @@ + + + + + + + +xtensor: xt::xaccessible< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xaccessible< D > Class Template Reference
+
+
+ +

Base class for implementation of common expression access methods. + More...

+ +

#include <xaccessible.hpp>

+
+Inheritance diagram for xt::xaccessible< D >:
+
+
+ + +xt::xconst_accessible< D > +xt::xcontainer< xarray_adaptor< EC, L, SC, Tag > > +xt::xcontainer< xarray_container< EC, L, SC, Tag > > +xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > > +xt::xcontainer< xtensor_adaptor< EC, N, L, Tag > > +xt::xcontainer< xtensor_container< EC, N, L, Tag > > +xt::xcontainer< xtensor_view< EC, N, L, Tag > > +xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > > +xt::xfunctor_applier_base< xfunctor_view< F, CT > > +xt::xcontainer< D > +xt::xfunctor_applier_base< D > +xt::xstrided_view_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Types

using base_type = xconst_accessible< D >
 
using derived_type = typename base_type::derived_type
 
using reference = typename base_type::reference
 
using size_type = typename base_type::size_type
 
- Public Types inherited from xt::xconst_accessible< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
reference at (Args... args)
 
+template<class S >
disable_integral_t< S, reference > operator[] (const S &index)
 
+template<class I >
reference operator[] (std::initializer_list< I > index)
 
reference operator[] (size_type i)
 
+template<class... Args>
reference periodic (Args... args)
 
reference front ()
 Returns a reference to the first element of the expression.
 
reference back ()
 Returns a reference to the last element of the expression.
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) -> reference
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
- Public Member Functions inherited from xt::xconst_accessible< D >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

xaccessible (const xaccessible &)=default
 
+xaccessibleoperator= (const xaccessible &)=default
 
xaccessible (xaccessible &&)=default
 
+xaccessibleoperator= (xaccessible &&)=default
 
- Protected Member Functions inherited from xt::xconst_accessible< D >
xconst_accessible (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+

Detailed Description

+
template<class D>
+class xt::xaccessible< D >

Base class for implementation of common expression access methods.

+

The xaccessible class implements access methods common to all expressions.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xaccessible provides the interface.
+
+
+ +

Definition at line 87 of file xaccessible.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xaccessible< D >::base_type = xconst_accessible<D>
+
+ +

Definition at line 91 of file xaccessible.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xaccessible< D >::derived_type = typename base_type::derived_type
+
+ +

Definition at line 92 of file xaccessible.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xaccessible< D >::reference = typename base_type::reference
+
+ +

Definition at line 93 of file xaccessible.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xaccessible< D >::size_type = typename base_type::size_type
+
+ +

Definition at line 94 of file xaccessible.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::at (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 274 of file xaccessible.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 175 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::back ()
+
+inline
+
+ +

Returns a reference to the last element of the expression.

+ +

Definition at line 334 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 59 of file xaccessible.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::front ()
+
+inline
+
+ +

Returns a reference to the first element of the expression.

+ +

Definition at line 325 of file xaccessible.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 58 of file xaccessible.hpp.

+ +
+
+ +

◆ operator[]() [1/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::operator[] (const S & index) -> disable_integral_t<S, reference> +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression.

+
Parameters
+ + +
indexa sequence of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices in the list should be equal or greater than the number of dimensions of the expression.
+
+
+ +

Definition at line 288 of file xaccessible.hpp.

+ +
+
+ +

◆ operator[]() [2/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::operator[] (size_type i)
+
+inline
+
+ +

Definition at line 301 of file xaccessible.hpp.

+ +
+
+ +

◆ operator[]() [3/3]

+ +
+
+
+template<class D >
+
+template<class I >
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::operator[] (std::initializer_list< I > index) -> reference +
+
+inline
+
+ +

Definition at line 295 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::periodic (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 315 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 217 of file xaccessible.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xaccessible.js b/classxt_1_1xaccessible.js new file mode 100644 index 000000000..a663cf03e --- /dev/null +++ b/classxt_1_1xaccessible.js @@ -0,0 +1,12 @@ +var classxt_1_1xaccessible = +[ + [ "at", "classxt_1_1xaccessible.html#abd1a88f04c122d8d066a5b2abc7f2c8f", null ], + [ "at", "classxt_1_1xaccessible.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xaccessible.html#a905660a4d87f4d3e7b651bcf6bb690d0", null ], + [ "back", "classxt_1_1xaccessible.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "front", "classxt_1_1xaccessible.html#ad36ac2c194e7e6f470548dad89e88ca2", null ], + [ "front", "classxt_1_1xaccessible.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "operator[]", "classxt_1_1xaccessible.html#a45649ae70e8ea6cbda28caa423347c96", null ], + [ "periodic", "classxt_1_1xaccessible.html#a038772dfb1936fa221a220c5ded4ac05", null ], + [ "periodic", "classxt_1_1xaccessible.html#a34d4a20e640737443fd0a7266b77b2b2", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xaccessible.png b/classxt_1_1xaccessible.png new file mode 100644 index 0000000000000000000000000000000000000000..b171a1d25456ac878c948d2838bd2424515e6317 GIT binary patch literal 9542 zcmd^FYgkiPy0#!tQQ&mEP(@&-jY_M4;{}vUz}{?1A&g9=G=x~MD3G8KLPAIi45fIZ z4b@a5Bx;po5l}z^2_ynTkwHo*mxv(=_XJ}SAoqkMXKmE+OwXCibAHS@&z$unI~KeMkof*ERRF!;U1EB52xzi+qO z!J+)A4qwt%v1{vF>95lt%J1L559Z@&{r?WmEz8^&6So9>UL3&=jDaOfV10=9_WVBk z6{T2_#rV*nuuu8!{y@HcC9;$A$~z4!FO<$}yOP;U-*!D>+@}-PZi({mt_^c@{opg& z_q0ib+o~^9Scq-!I2MkrOQxL_M1J1rd>QuUj@Z|$^EP(93Qk+*BQdneIC#Vuk+xY1*OOb0DYwL(-H7l@dEXAs)-NsbjQFZzto0z7{vuGBkSriOzwV7>H zJkFwKOC^*W+|@bMt|xp(YVY!y_SM>`mCy}V<*D}CMyk|~;bqODaa_twuR7RGQe-bI z4g&v&(q>GwAVo!@l~A?Ndsyj?Hbns$)(U1UV#>-%^!}i zy}QnDMervq+-3 z2lktEFi1o&)~!0Loj04!pVfeYJORB*E*Rd6FQ?V%boghlD+J@&0${+{3*LDI^Qtx& zXHp-LZ7$iAZ8FKg#k#=b;DlkBHfyRNlF6_@Q*S}*T8h+uE5Mg=SK;Avqe`=sy;?gz zGjBz=P-_HWIjwyz=6N&8NKz}ObUOWGOlGt(KoG%S#7!@}Q{m89DZet3<;gE^wh>B| z#NXsL=G$i8^8y>ShgA_x^_0&{iq}w4QB(^5_$=j&y>1aR>eM+)d;984p;+w7Nx8Gx zZ$WA*Mb6c)lZ#c`NbFmt7r~cj5;}VEfi=eENEGuh2G!1Fb8bK zEof6J_Ow!eiinNf%5Zjd+HRIH*SI>ZJi&_HdYx)Xy&Aif38qU=l*ewp0S@Az6aTCO zGd3^aIjj#*qyYlhEf^8N^{;Wv3kvdCYNo+_8_$^@%3-D>gq8e^3OYN2j#T%aT6@Qf zczHb79t2j(>sQG%axum=Q}cO0nx<2PjAAFZQ*QxmC>_QAd+2+!Q4Gm>Dz7D%cV!oo z>ox+PvF?y<-Y=}_#Ne{bSvNHpt68(bO2_aBR$8)e$NYga{O||L9ZdJkmdqraW^@gM z8ppj5*k!)gWL1gKEcS53BJE|blB2fCurVkDQ6a+Ki9lW{N(!DV*f`Xmc(GdX2TPeY zKMc!oiw;ua{ zf;DMErLf^4goWzb`VCz_;+C2-nS`huTG#*xlD8bJ?>X`7@;7$H`PecLv=*?F z(X}0$x`KuOH6Oje%8PV$B;n#`7mpCvJydg@T%GK%xvg@&IS_gEz(@c42U@WM`r?sW z;0Y^Q7kFqEVjp7u`@f$M#4azRfY??u@^nhsJJrvnRw=#^Kj>e@w;2HSj?{tt>}k2c zKzEkEk$dc-;tTFKe3KB`fVTzWwhUrAd-aUcC=-cf-Nl+F(S4;xjLhI2#9K)VrNLYu z@usZTeLoB5UXyyM7|!!=)KH z46)4F6?3Sr10$@rw4*~@lxail?R$yrt3J-=fgTEW34NjTc9P3)R5p&wAvJY$ViEC{ zyrihcY63eqo7;uaPo}XLiU?P2U9hEab>`{=v>pYgL+WIXxhCBp@QpBj;LbJ{v~!Q1 zhga!4dw$4fPo|OI5MY{yK?p8<4H7(h&sboB6N$1#bc|YmIUIYmWwQDpH(FC1$!r>) z#t5-fQMHsb%7bSx_mvGtjxArm)O_(_6QdtXlFaT$D#^AmEyvCG+dJjcwFl6fM%2t+ z$SL{H*C;C?R zx^PT)e6q>o2kxU;d|hxVYpcXxAl{alOBU*$LtODBBZT19nA=#H&?~(y8>vE7mU^hz zOdBZ^Gf;F17Z`q7KTFuSxGPor1@y_;dz8>!)KEfzqV|URXipTjX7FAmENG>VM4fEj z8zrHX!XJ%GJ+z~QYS~DS6uh5q4K-n6t0>G|DL-l^>=#&P zCccb#1W5ij;U8+bOU)B5(g%HOsOj0B^1h0}>BeDBNrO?BZd{~n)rmgN2$ogXi@F9668}y9q)o@KDDZJ{B5}pn!$6|S zvqVZAI6rDL7@_JcQM6uGtPv<~lD}^K9gDr2fLb7`x>IrXQ17tIwlq(ktxfrrwYd9% z^$QfsQb@Fv(k8t@jzp!+A+}vYW_|Y>jgfVG0}J})mc7oA-vfI22V=H~(if+~(WihlSRn2;m|(BtVZu|`FsxY6YZOWNkmHq1?3_2mLTyy=^=cx zp7H~X2sHm#`K!;ufa$&iAu;$(v#&?rK@8P&f5DBUT5*rTV#Tp4WSQvSR+lI<$7>%f zkaH|#G(JX#b!2V4Vz4?3Mx!7~N^Hfy8@MNRr?5Dr z`lO!2m6s(XNozpBU1u5@J<>9LcP5q`;!WWrT;ERxi98u_7}^1~Z)n zIQ72$%v;Dxw`Hjk2Tq6|_mF}+RM(<5Gm1UbIhl-Oj$#Qh)T+vGEDXfgcVLG8SkR8H z;Oc{>*25oJ288{p(u8O>U*4BS3HX_Q4M-Wb0)Dpxr(U?VC}c8OLZ9k0Ba6~q^a^9c zte?PoNB0h=>0k!KuwT&qwz=5f79c2DX${D;8C!$rC4XjgY}0UU$PQfl_m)A+Ox`=b-wMcZhd7q(0MWm#@DiaRZ_q&KZCF&@3Hn{gTr77`{Rqq$paf zK0z1@Gl@ql&RG^3R8wiAS=-^+W_AKQ?h4b;`hG=mFMoo>=)YGfEj?^CH-%#=M$R?{ z2-(|Zzp>~De_p9nK<2kF%ccwP^Ko@x-79Y{*VZqE`%MG`TW68Qn`=N2+wGf^X$u#N z>>tx6lK?02;(=#W36}aFv^GEu=pXB6EJ^++mY{zF)QhLoYveEEPU#R$`-rv)m{>1t zuV3ny=kiA7C!oVj_tPF8`@sIEM%eDz&B0_q-KNZlZu0=Pq5lS7gMz9%G6d^(a90DQ z&&6899v0vJE;z$pmdTbUf(_nD3bmQ^defTcQJt zN`O+;)hlAld1Jj(=8<$zw`G|?i8$yD{{|8#<;%36wc@L|%2rV{CGmSzuql8;bp+`~|M!f(keb-BLr?kiK?Zq}cy?)7kf2+aKdch0sCC8pq0WH$L zQJ}d#3^!cA@bqM$Vgq6I|>OW_(6Qtb`G4EQTP3)gSlA5F@2WNi9*!CcTYCt@n10n-HG2;VVS)nQB z8?4##Yr!5qv~udD98^g_uc;xn#oG=^jNK>Ukm6pbOc2H;z6%IGL@@Y5|<0P8mPrdtc#~g~s3e>_JwYB>FBl*-O4#hG!`fm~NSt;72yOSoSRI za#0IMqQiEL;5jL{{>NjbJY;UTl5;her6|zhLTmnns6FXrEB2@8xYV6}&@(UBu6uw# z(wt^~hT>!&rBt|KHmg;XvRwgT`7|gN33(Lw3yHyeJnrGHb_h4uKZXaR^nD+@bgO_9 zGNEbex!vo`L79M6j4{NpWEBl=%H$dHdO4{Jt;@bVoqYOwWQ}S4mb=2EL-w;TAstb6 z3}lko;>g~e=vlhbzg@a| z2ZGX#vsL~#e)2EC{K9Vj7py6xS%E+a)2+oW6ST=ZYLQQgt#Eg_X#>Gg(lkD$MAAfx z%yDgp%c5VBlLsfi!C#Y18?oGoq*5W4?}x!|d|eJ!PZ!t0@BWX`Ytz)Fs z&F+sj*5!Oph+kil)qbCz~l+p(kSnV`Jc}J8%Rnb#xvb8DI=fqCHRJ2Z?ng!V< zT@)$Zx2uRm3}tdv7wL^L9>>^sd1$=kLLft<F2W1o0)2pz4**8z_l@ z(K)~ogq(3NU!Xo*{QqAo>hq4dh+0a^Q)JldbeP9Ns5V<0_;8NPpDaKDE=QcoDT}$n zGfsLy^+bh3uJJ31zW~-`h{`*EX+xJ8PgRO8iKw(mC?$%VNF+buCx`Gx&4fra!|is> zu=R>O6*^hwQBBt6ajf>}kKMl_vawc4;IPz4ZthkEv<(&mr1w#tA^lj(?m8QGP?jYJ z7Mu7S{JXg|efZHh{^b1em2%P(Sf%iDmV&x%uZRM6Q3cAzQ|ySuzz>A4czE6r3$70k zUaJZSNma5bUFep|f}VW7zpB;MOt}W-Yg!}$H5YO&W4TLS60eEOOC9UA(nO>jQ#7uo zXMiakmqxuXO4|KxeLtF`6hmW=@n7H1ipRK#o(}PCQTy{G=X+&AahnoaIQebsv+{UW zDTS2JZD)TXZ{z^~WKGZH5go_Nn(QI@!)y+Jl7vp8ox>j@RH17)q9~tf$SMqbRqJ1v z@$YoDrb+Q7xmcmC&q6I6zY%hdm--W1(Xg9|EW@RTe|Rd#Ivv>bNrU+mMo8i}THUI< zi8M0Q+0moOv=y~U7TRG7(mDVosufyU?MtMaTAG*^2-FH-kw9%9)pF1ow4VnBBh)G^ zXM?F4V2SkGl#meuP3h`-!F?ddp&$h0#(5-(6BQ$$=(P=U>&WSxw&9lYzr@pJk@E*QjQ{> zpKmK%Yz`7xc9mQdiQE*B@+1_s;EQ~LGpXpgV91QR3u?7%)j&}`x^)|!yf;cV5h;vP zVaxgSMG3%m$UQT^{>gC#{KCDrXVWsMUX1~ou&p2fhs~vviw#d->3Hd+{jW5`mPCOk z1f7jA9C+;{0EY^z2;6vaN^$Ikf$%*W4pkB_y{CT_lQ?jh7Lb*$He&8TA}wrIEtu$I zUYVGZF=3`{5I3yMgRhtnf~qQq>8ABm(_xF!^pIotk#uzB{-THoUP~D-w2W($DbMIm z5JKvRq0uLUN!urm+~r~Xk)45#?6k4tN9gF_{ zc49({>H{2a*d2w>w!MY9xCp16dA#?D?z;IbI6?e%;K{Ospuoe$mk~7GHz`~!Lt`2+ zISUH_-5wVrX*Ez`)C!T#sh?(2DnFv_fgbU9EF5quE&&}c20c|Sm=Xf*2z?J>q#2M4 z0s5!EW8J?Dkr@%q#z)F#t{fkmAEH12w-?RNOBz<$r>}$$D`WQP`gx1LDyEJns?wg3Gh7 zxKsg{h1SH~VjsnMu6H7tGkxV|QI7ys1B#I`EYwo~0Fi$5=~Tl<$Jk*isn1eQ$fFgF z){IYkTfDOjQMAMLfbFeak+@BSBesP)4{bxTga7ep5rPz#yJO@umdvl_7Fs_p(vyd8^yEszmEuU!s zjj$4kn=|uxRoUt)qObdhG(HO~9(vEque}@qS3m`b4CJ{Vfu%BE55Af3Z0eZx>5H_c n9fCOS;*o?C2^Xi1+Z{8^JLp5*wy&UXMj_shd9V7N1Nr{})Sip} literal 0 HcmV?d00001 diff --git a/classxt_1_1xall-members.html b/classxt_1_1xall-members.html new file mode 100644 index 000000000..84664510f --- /dev/null +++ b/classxt_1_1xall-members.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xall< T > Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + +
contains(size_type i) const noexcept (defined in xt::xall< T >)xt::xall< T >inline
convert() const noexcept (defined in xt::xall< T >)xt::xall< T >inline
operator xall< S >() const noexcept (defined in xt::xall< T >)xt::xall< T >inline
operator!=(const self_type &rhs) const noexcept (defined in xt::xall< T >)xt::xall< T >inline
operator()(size_type i) const noexcept (defined in xt::xall< T >)xt::xall< T >inline
operator==(const self_type &rhs) const noexcept (defined in xt::xall< T >)xt::xall< T >inline
revert_index(std::size_t i) const noexcept (defined in xt::xall< T >)xt::xall< T >inline
self_type typedef (defined in xt::xall< T >)xt::xall< T >
size() const noexcept (defined in xt::xall< T >)xt::xall< T >inline
size_type typedef (defined in xt::xall< T >)xt::xall< T >
step_size() const noexcept (defined in xt::xall< T >)xt::xall< T >inline
step_size(std::size_t i, std::size_t n=1) const noexcept (defined in xt::xall< T >)xt::xall< T >inline
xall()=default (defined in xt::xall< T >)xt::xall< T >
xall(size_type size) noexcept (defined in xt::xall< T >)xt::xall< T >inlineexplicit
+
+ + + + diff --git a/classxt_1_1xall.html b/classxt_1_1xall.html new file mode 100644 index 000000000..8b09ccec2 --- /dev/null +++ b/classxt_1_1xall.html @@ -0,0 +1,563 @@ + + + + + + + +xtensor: xt::xall< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xall< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::xall< T >:
+
+
+ + +xt::xslice< xall< T > > + +
+ + + + + + + + + +

+Public Types

using size_type = T
 
using self_type = xall< T >
 
- Public Types inherited from xt::xslice< xall< T > >
using derived_type = xall< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xall (size_type size) noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
 operator xall< S > () const noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
xall< S > convert () const noexcept
 
size_type operator() (size_type i) const noexcept
 
size_type size () const noexcept
 
size_type step_size () const noexcept
 
size_type step_size (std::size_t i, std::size_t n=1) const noexcept
 
size_type revert_index (std::size_t i) const noexcept
 
bool contains (size_type i) const noexcept
 
bool operator== (const self_type &rhs) const noexcept
 
bool operator!= (const self_type &rhs) const noexcept
 
- Public Member Functions inherited from xt::xslice< xall< T > >
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xslice< xall< T > >
xslice (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (const xslice &)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class T>
+class xt::xall< T >
+

Definition at line 194 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ self_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xall< T >::self_type = xall<T>
+
+ +

Definition at line 199 of file xslice.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xall< T >::size_type = T
+
+ +

Definition at line 198 of file xslice.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xall()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
xt::xall< T >::xall (size_type size)
+
+inlineexplicitnoexcept
+
+ +

Definition at line 1216 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ contains()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xall< T >::contains (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1266 of file xslice.hpp.

+ +
+
+ +

◆ convert()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xall< S > xt::xall< T >::convert () const
+
+inlinenoexcept
+
+ +

Definition at line 1230 of file xslice.hpp.

+ +
+
+ +

◆ operator xall< S >()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xt::xall< T >::operator xall< S > () const
+
+inlinenoexcept
+
+ +

Definition at line 1223 of file xslice.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xall< T >::operator!= (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1278 of file xslice.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xall< T >::operator() (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1236 of file xslice.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xall< T >::operator== (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1272 of file xslice.hpp.

+ +
+
+ +

◆ revert_index()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xall< T >::revert_index (std::size_t i) const
+
+inlinenoexcept
+
+ +

Definition at line 1260 of file xslice.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xall< T >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1242 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xall< T >::step_size () const
+
+inlinenoexcept
+
+ +

Definition at line 1248 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xall< T >::step_size (std::size_t i,
std::size_t n = 1 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1254 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xall.png b/classxt_1_1xall.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f8b772286e8aa2d57df990158d34fbeecf1d96 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^tw0>W!3-oBzPn8VlF|V_A+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#J9*c)B=-R4~4so7>N%$kWoU zX!!Ym{l`k}9e10$ss+L}s@aS>cKeIW9KYlOW zo}>AO)2F_C$-E`9x9)^@<=GuhK41Uh`@Y@&iLxt2X6L$xuM4~Ckv>cR`m+00kGkGG z=r~!i=fkmy*WWFgGGpg0qna4;XP3)gFIuK$z5kb+mWAi#WA`~c{elBnSUsy)k2Z-| zKDUWx_^`~6!64Q + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xarray_adaptor< EC, L, SC, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xarray_adaptor< EC, L, SC, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >inline
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
base_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_closure_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
extension_base typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexceptxt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >inline
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xarray_adaptor &) (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >inline
operator=(xarray_adaptor &&) (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >inline
operator=(temporary_type &&) (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >inline
operator=(const xexpression< E > &e) (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
operator=(const xexpression< E > &e) -> self_type &xt::xarray_adaptor< EC, L, SC, Tag >inline
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
rank (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >static
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reset_buffer(P &&pointer, S &&size) (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) &xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >inline
resize(S &&shape, bool force=false)xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >inline
resize(S &&shape, layout_type l)xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >inline
resize(S &&shape, const strides_type &strides)xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
semantic_base typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
shape() const noexceptxt::xcontainer< D >
shape_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
temporary_type typedef (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
xarray_adaptor(storage_type &&storage)xt::xarray_adaptor< EC, L, SC, Tag >inline
xarray_adaptor(const storage_type &storage)xt::xarray_adaptor< EC, L, SC, Tag >inline
xarray_adaptor(D &&storage, const shape_type &shape, layout_type l=L)xt::xarray_adaptor< EC, L, SC, Tag >inline
xarray_adaptor(D &&storage, const shape_type &shape, const strides_type &strides)xt::xarray_adaptor< EC, L, SC, Tag >inline
xarray_adaptor(const xarray_adaptor &)=default (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
xarray_adaptor(xarray_adaptor &&)=default (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer< xarray_adaptor< EC, L, SC, Tag > > (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xarray_adaptor()=default (defined in xt::xarray_adaptor< EC, L, SC, Tag >)xt::xarray_adaptor< EC, L, SC, Tag >
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xarray__adaptor.html b/classxt_1_1xarray__adaptor.html new file mode 100644 index 000000000..83450b64f --- /dev/null +++ b/classxt_1_1xarray__adaptor.html @@ -0,0 +1,1789 @@ + + + + + + + +xtensor: xt::xarray_adaptor< EC, L, SC, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xarray_adaptor< EC, L, SC, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container adaptor with tensor semantic. + More...

+ +

#include <xarray.hpp>

+
+Inheritance diagram for xt::xarray_adaptor< EC, L, SC, Tag >:
+
+
+ + +xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > > +xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > > +xt::xcontainer< D > +xt::xsemantic_base< D > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using container_closure_type = EC
 
using self_type = xarray_adaptor< EC, L, SC, Tag >
 
using base_type = xstrided_container< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using extension_base = extension::xarray_adaptor_base_t< EC, L, SC, Tag >
 
using storage_type = typename base_type::storage_type
 
using allocator_type = typename base_type::allocator_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >
using base_type = xcontainer< xarray_adaptor< EC, L, SC, Tag > >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
- Public Types inherited from xt::xcontainer< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >
using base_type = xsemantic_base< xarray_adaptor< EC, L, SC, Tag > >
 
using derived_type = xarray_adaptor< EC, L, SC, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xarray_adaptor (const xarray_adaptor &)=default
 
xarray_adaptor (xarray_adaptor &&)=default
 
+template<class E >
xarray_adaptoroperator= (const xexpression< E > &e)
 
Constructors
 xarray_adaptor (storage_type &&storage)
 Constructs an xarray_adaptor of the given stl-like container.
 
 xarray_adaptor (const storage_type &storage)
 Constructs an xarray_adaptor of the given stl-like container.
 
template<class D >
 xarray_adaptor (D &&storage, const shape_type &shape, layout_type l=L)
 Constructs an xarray_adaptor of the given stl-like container, with the specified shape and layout_type.
 
template<class D >
 xarray_adaptor (D &&storage, const shape_type &shape, const strides_type &strides)
 Constructs an xarray_adaptor of the given stl-like container, with the specified shape and strides.
 
xarray_adaptoroperator= (const xarray_adaptor &)
 
xarray_adaptoroperator= (xarray_adaptor &&)
 
xarray_adaptoroperator= (temporary_type &&)
 
- Public Member Functions inherited from xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >
void resize (S &&shape, bool force=false)
 Resizes the container.
 
void resize (S &&shape, layout_type l)
 Resizes the container.
 
void resize (S &&shape, const strides_type &strides)
 Resizes the container.
 
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 Reshapes the container and keeps old elements.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=base_type::static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
- Public Member Functions inherited from xt::xcontainer< D >
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + +

+Static Public Attributes

static constexpr std::size_t rank = SIZE_MAX
 
- Static Public Attributes inherited from xt::xcontainer< D >
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + +

+Friends

class xcontainer< xarray_adaptor< EC, L, SC, Tag > >
 
+ + + + + + + + +

Extended copy semantic

template<class P , class S >
void reset_buffer (P &&pointer, S &&size)
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >
xstrided_container (const xstrided_container &)=default
 
xstrided_container (xstrided_container &&)=default
 
+xstrided_containeroperator= (const xstrided_container &)=default
 
+xstrided_containeroperator= (xstrided_container &&)=default
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&) noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept
 
inner_shape_type & shape_impl () noexcept
 
const inner_shape_type & shape_impl () const noexcept
 
inner_strides_type & strides_impl () noexcept
 
const inner_strides_type & strides_impl () const noexcept
 
inner_backstrides_type & backstrides_impl () noexcept
 
const inner_backstrides_type & backstrides_impl () const noexcept
 
void reshape_impl (S &&shape, std::true_type, layout_type layout=base_type::static_layout)
 
void reshape_impl (S &&shape, std::false_type, layout_type layout=base_type::static_layout)
 
layout_typemutable_layout () noexcept
 
- Protected Member Functions inherited from xt::xcontainer< D >
xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class EC, layout_type L, class SC, class Tag>
+class xt::xarray_adaptor< EC, L, SC, Tag >

Dense multidimensional container adaptor with tensor semantic.

+

The xarray_adaptor class implements a dense multidimensional container adaptor with tensor semantic. It is used to provide a multidimensional container semantic and a tensor semantic to stl-like containers.

+
Template Parameters
+ + + + + +
ECThe closure for the container type to adapt.
LThe layout_type of the adaptor.
SCThe type of the containers holding the shape and the strides.
TagThe expression tag.
+
+
+
See also
xstrided_container, xcontainer
+ +

Definition at line 214 of file xarray.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::allocator_type = typename base_type::allocator_type
+
+ +

Definition at line 227 of file xarray.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 230 of file xarray.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::base_type = xstrided_container<self_type>
+
+ +

Definition at line 223 of file xarray.hpp.

+ +
+
+ +

◆ container_closure_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::container_closure_type = EC
+
+ +

Definition at line 220 of file xarray.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::expression_tag = Tag
+
+ +

Definition at line 232 of file xarray.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::extension_base = extension::xarray_adaptor_base_t<EC, L, SC, Tag>
+
+ +

Definition at line 225 of file xarray.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::self_type = xarray_adaptor<EC, L, SC, Tag>
+
+ +

Definition at line 222 of file xarray.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 224 of file xarray.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 228 of file xarray.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 226 of file xarray.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 229 of file xarray.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_adaptor< EC, L, SC, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 231 of file xarray.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xarray_adaptor() [1/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_adaptor< EC, L, SC, Tag >::xarray_adaptor (storage_type && storage)
+
+inline
+
+ +

Constructs an xarray_adaptor of the given stl-like container.

+
Parameters
+ + +
storagethe container to adapt
+
+
+ +

Definition at line 550 of file xarray.hpp.

+ +
+
+ +

◆ xarray_adaptor() [2/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_adaptor< EC, L, SC, Tag >::xarray_adaptor (const storage_type & storage)
+
+inline
+
+ +

Constructs an xarray_adaptor of the given stl-like container.

+
Parameters
+ + +
storagethe container to adapt
+
+
+ +

Definition at line 561 of file xarray.hpp.

+ +
+
+ +

◆ xarray_adaptor() [3/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xarray_adaptor< EC, L, SC, Tag >::xarray_adaptor (D && storage,
const shape_type & shape,
layout_type l = L 
)
+
+inline
+
+ +

Constructs an xarray_adaptor of the given stl-like container, with the specified shape and layout_type.

+
Parameters
+ + + + +
storagethe container to adapt
shapethe shape of the xarray_adaptor
lthe layout_type of the xarray_adaptor
+
+
+ +

Definition at line 576 of file xarray.hpp.

+ +
+
+ +

◆ xarray_adaptor() [4/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xarray_adaptor< EC, L, SC, Tag >::xarray_adaptor (D && storage,
const shape_type & shape,
const strides_type & strides 
)
+
+inline
+
+ +

Constructs an xarray_adaptor of the given stl-like container, with the specified shape and strides.

+
Parameters
+ + + + +
storagethe container to adapt
shapethe shape of the xarray_adaptor
stridesthe strides of the xarray_adaptor
+
+
+ +

Definition at line 592 of file xarray.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator=() [1/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xarray_adaptor< EC, L, SC, Tag >::operator= (const xarray_adaptor< EC, L, SC, Tag > & rhs)
+
+inline
+
+ +

Definition at line 606 of file xarray.hpp.

+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xarray_adaptor< EC, L, SC, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 640 of file xarray.hpp.

+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xarray_adaptor< EC, L, SC, Tag >::operator= (temporary_type && rhs)
+
+inline
+
+ +

Definition at line 622 of file xarray.hpp.

+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xarray_adaptor< EC, L, SC, Tag >::operator= (xarray_adaptor< EC, L, SC, Tag > && rhs)
+
+inline
+
+ +

Definition at line 614 of file xarray.hpp.

+ +
+
+ +

◆ reset_buffer()

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class P , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xarray_adaptor< EC, L, SC, Tag >::reset_buffer (P && pointer,
S && size 
)
+
+inline
+
+ +

Definition at line 661 of file xarray.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xarray_adaptor< EC, L, SC, Tag > >

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xarray_adaptor< EC, L, SC, Tag > >
+
+friend
+
+ +

Definition at line 264 of file xarray.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ rank

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xarray_adaptor< EC, L, SC, Tag >::rank = SIZE_MAX
+
+staticconstexpr
+
+ +

Definition at line 233 of file xarray.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xarray__adaptor.js b/classxt_1_1xarray__adaptor.js new file mode 100644 index 000000000..54c057600 --- /dev/null +++ b/classxt_1_1xarray__adaptor.js @@ -0,0 +1,8 @@ +var classxt_1_1xarray__adaptor = +[ + [ "xarray_adaptor", "classxt_1_1xarray__adaptor.html#acc36cdfcb52803d3996a97569929eb72", null ], + [ "xarray_adaptor", "classxt_1_1xarray__adaptor.html#a7f70baf14dbcdfeffa82a4dc56d995e4", null ], + [ "xarray_adaptor", "classxt_1_1xarray__adaptor.html#a04e029bca1b4fbf0bb361898b93182fc", null ], + [ "xarray_adaptor", "classxt_1_1xarray__adaptor.html#a32fe6b670e042fff5d9a1f7c4d99c125", null ], + [ "operator=", "classxt_1_1xarray__adaptor.html#aece6f91aa92298df35846b524613828b", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xarray__adaptor.png b/classxt_1_1xarray__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..414c39bd98483449fc4b6162f9abeb43315d9204 GIT binary patch literal 6326 zcmd5>X;{-&)<@Jzi-LtwC@9D%QWqALeMwqT6sbhTXaG%E6blFuBP1+Iv{oDx$!KcX zNi9WcAVO3?mLw>f7KADi1SDaT2mu0wkc}jBlVCgVOh3%L^FGfz_d^K(`@iShd(Q9v z&XTl4{`*#aV)luSj?OCI{d_eSLjBcph-8^Jg&k@r5J)0XpD+&2Z7peXXNo`laulFOTAuO!o7G3Je0!CE-~H`&lLw>RFA9UCDb3O<2-A&)rJiN zGe&$k+}yX+`-?B?hppKqROefWtKh8`ztZFIm`!wpB}0zGTUW=Jlz~L1hY4Lh`dbqliEi%Q3a&Ev5nvGCL){FassARJGqHnQbOVs>#)vJocFCDh3nG^WEmXJT2x<^iGVf>oWAL( z9Y#UhLsAoyfNmlUcGu6N3>#dQM}77lhP-?=R3mj&?g1j6ZH9&Qg+KCu#UKl z`N&f4X0az*Y&5Rfs^nvjG?Djg0(lv93b`xAh)-^VzLQLh^j}HRoRaXgJxuYZcZCS( z3?TidpZ(cakJ5V z*|KGxNUj(^hv%Y~0Hf=EV*>1}rzg3tQL=jaIHPV;H*nvE0n!1r4Zo;IiM}6yuJ(eS zBv<Yt|-rF7Dzji}NI35l^3Rl#{0bK5dcXgPz zBt_HqM$;5^jqVGnjeZ&rz~R8@RqWn*BmT6xk-Y}l0LJ!oPEa(MX+ZCgDU3fjE;C8@6iST{s-yO>UGSEz$62DO1OZgv`jW|28Ue<`EeZcvJ}?@WsmYJ-p=!mPNDr(frR61wa&_|WUcV`=5Q5LZH78)L#R&La@lH_Sh9g1v5#>@Fo4 zo-iPq^2tU19=y-UBLyuo(u(A;^@IlJne(goef{<=vP~JA^-*QD?|#A;HSbz`?Cs{)#{6jy;8X8l zEP2jr((bf)%uAZJ%C51qEq?TUcSyq0+~W4wFhw+Ke|)@JMn8&Hvx4vMHY76l9|a4>N}veiJ%!=EU(&6QmIrG8bAUrGVF0+ z2S-nq%;R9Rig}hbd(dTK7m~A4(SQ(Slu@Zr?d<{{z84!DT_`pYM8@4<_lgwKbl|~6 zwFfw-(>f7n^ck(tNsp>EUVh*Q0oKe9pI0ClfJyb-E+NfsNNo%ly zm}Ir2v`h`zmQX7*5dd~zX3*vL)yOcg7|dMd{uOsm9l#jWsN^&eI2%$eaFJlGIv4^u zA-NDCsJVarKEGxaVAC^5tB?Tu)#dkIdo1&$f9G}<@I;>scE_21{VuPaE_lU%Gg(h+{R7R@7!Sfck6F)r&UY z@4Pz6_@e&q5y9%|#v`Mvr|tIxmBxPA4fDtiAp!TWdbqGH7(I!}Pug{%$$z)SWefU? z>&h7>dT)-7uh%Vj!{_s(>zGVt>`Gnd+dL4k&>SVn!C^_gHH+WI??;D{h3(Rh^9ONlULW#pTU9qkjs%l5&} zq_>pC>gK_nY)izH-3wB}o@v-GBH|wn2L?VaBL`u!3rXR+9BGCY?OL zC(1^;^2?iVe-b_wV}&O>HglET{p9w$B=kCgpvW5XlWM!)ST zWJJRJ?RLb&|8fzJfVbjYe&`7Y(6*ZJX!*F`*|$&7g1f@#(B(4ofx{>CLya~AfP zoD>;mT~<4^!+pK`$syd>OUBVIiNZOB(fT}HcqzKOVDsCyx`^izjbo+Zio5$aJDtCO z4U^W!?0gy3ZG5I=0rQ(af&*EL_%5W#)pcp{ey5q3s+~{ID^T%n+E|8>`C|JL0_;$osYgxq&aEFp~ z)r|TxHE5gK*hPCa`F|Pp8kJh11_Uzb(IV;o8?Su0y8{BgoJnE|x*{cO2_!s#g{tY#1B3CrL4Qo z!b|B!Vd3a66>m>q2x+aHm}FaLUcQfKhAreWm3kVshL3H1Ctu^>AxgUO{7B)De8pDY zHoCI%y&E?pS3u-^WMJ9CT0tI+bG0DVS-PvL3mj|PLK)Ji!V-%Ps67!foV1abKXc9H zQi>dkOc!~4N?4c6iHWAsW*tG^jh}-YQ#g&4*`&*6ce>^z?2@{lgNPqAK7BdX)NJK| zT4eV;ExYg7N&IN|arV9rOjA;P#e(wK^0z5c!6j_ky!1%-Zk+5F>F!d>E9?Tq2NT^t zhd(39krzX|*X+x7t!c~ex_><{Ao={DM|6gNpe3J&nQE5J#TI8q(khY*Y}l|D<&To@ z&3RaM&NB1QcRng~%G8&EpiuSDKij~6c(~n~Ltt=`B{{;;wC!yS{72%;is~@M<@3_0 z<>{2M5%W4>6T$RK2iy%s5(RAS@Rk}8TLZoPU-?=1cVr=>99>Bh(vPbGOo&^Xu|j3g z8h*DbHkx+uMDvsi4YIr*a*Hhf9Glv0g!+`9`MmQXDc7ayTn;3v{ke45*}T6OhwjZI z`=!^is6K+C&3P!y+AsAx1}=xFGQ$;@Kgpsw6eRMldqEY%AI>w4_$}M(nq^Mrf?~y{ z_wD*8cF#O`D(MxT-j{6IA{$X^3WA^3tC}CNeFRNs$|XzBNflXdC&xpG1qjM*RRw-+ zIQ|uj(kOey7JYko2Y0UPLb18alie5IMz%|>k2&+Cv)Eir(uh${RH#)68*!j z2j`m*DjPLGAO_XZuTL7s+^Qx25WIh6ragF^^X(jiB&S1IH+yKXBZQbz3R)CfN}S%v z4vNNl9W14c$K*V&x~)_eBs_UE4gLB%5Wg%eik^(EWxmQAmS?v-Sui56%W>u~M(gqu zJM+4`1XpF`CRzV^DZs%dVKJTHIWxA6cb!i7WT2tt$dDbVlJe}EWXbLY;?Y)EdlpLK ze5N?kLs^~eGtWS<@)M2u-Ca;akxjZN;5$mI;80lMEc75w?%JN^+?IH5!Qk7SDo1}ZyoEiO$w$Uo^Hk!N_KPwY4tG3s=*8G8sWx>KAk$~`Y7 zEN}Dof;>e`?*Se`@ zEOf8BI>u&rMypxFiddnB04Q2^K~#GIzAYV5Dy4{t`Kf{(VZ=ulC8ogPik}plP zoWNXPHK%f?vD?lV(wRd~Sz>Z$Q1rG^>C7TontWhVFEy1aqP1)*O4BB{wA+hi%zwns z0#ZxTVsWFRWP$+v9yC*)e$KAF&;OBM6T5VEdH!)dJ%p9h(!N&A)r+v7j&2B{y*@KGg59(tBlt!vg49fi|2c zG7N8;8oKdAA5rG8vf=keVyJ2A@14X3hm{}Nv|bRlN^s4EM=TG);_|B?$akKh&cery z&aBu)K~M`m`G#+hVS|Gc*u z+K}G*otV@xkGpy03#J0Ky;+v82hBJr2r*3^9Mo888b?Ymk2PJ(E&d6ja9j0NxWe7F z;6dH9cf;H01h;r_kkN&uj_Oh)HPqC?O4|Y!|2pFCBlh&&_bJ3I%b&46Z$alo82k8;!b;BJQq(P6%4D>sWxDt-9pc+NBWQM5StuS-MbE4l z@N{New)}WrYe0^7K(tw&OPXi@So2Kc!RaPY6%<-#bkPaSg?+p5egWvzWv;Ooi zaUnT0USP5J)sBXs;tNopiGv7BB#$ + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xarray_container< EC, L, SC, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xarray_container< EC, L, SC, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > >inline
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
base_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_pointer typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
const_reference typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
extension_base typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
from_shape(S &&s) (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >static
from_shape(S &&s)xt::xarray_container< EC, L, SC, Tag >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_backstrides_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
inner_shape_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
inner_strides_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexceptxt::xstrided_container< xarray_container< EC, L, SC, Tag > >inline
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xarray_container &)=default (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
operator=(xarray_container &&)=default (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
operator=(xtensor_container< EC, N, L, Tag > &&rhs) (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
operator=(const xexpression< E > &e) (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
operator=(xtensor_container< EC, N, L, Tag > &&rhs) (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >inline
operator=(const xexpression< E > &e) -> self_type &xt::xarray_container< EC, L, SC, Tag >inline
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
rank (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >static
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reference typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) &xt::xstrided_container< xarray_container< EC, L, SC, Tag > >inline
resize(S &&shape, bool force=false)xt::xstrided_container< xarray_container< EC, L, SC, Tag > >inline
resize(S &&shape, layout_type l)xt::xstrided_container< xarray_container< EC, L, SC, Tag > >inline
resize(S &&shape, const strides_type &strides)xt::xstrided_container< xarray_container< EC, L, SC, Tag > >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
semantic_base typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
shape() const noexceptxt::xcontainer< D >
shape_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
temporary_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
value_type typedef (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
xarray_container()xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(const shape_type &shape, layout_type l=L)xt::xarray_container< EC, L, SC, Tag >inlineexplicit
xarray_container(const shape_type &shape, const_reference value, layout_type l=L)xt::xarray_container< EC, L, SC, Tag >inlineexplicit
xarray_container(const shape_type &shape, const strides_type &strides)xt::xarray_container< EC, L, SC, Tag >inlineexplicit
xarray_container(const shape_type &shape, const strides_type &strides, const_reference value)xt::xarray_container< EC, L, SC, Tag >inlineexplicit
xarray_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)xt::xarray_container< EC, L, SC, Tag >inlineexplicit
xarray_container(const value_type &t)xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(nested_initializer_list_t< value_type, 1 > t)xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(nested_initializer_list_t< value_type, 2 > t)xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(nested_initializer_list_t< value_type, 3 > t)xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(nested_initializer_list_t< value_type, 4 > t)xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(nested_initializer_list_t< value_type, 5 > t)xt::xarray_container< EC, L, SC, Tag >inline
xarray_container(const xarray_container &)=default (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
xarray_container(xarray_container &&)=default (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
xarray_container(xtensor_container< EC, N, L, Tag > &&rhs) (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >inlineexplicit
xarray_container(const xexpression< E > &e)xt::xarray_container< EC, L, SC, Tag >inline
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer< xarray_container< EC, L, SC, Tag > > (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xarray_container()=default (defined in xt::xarray_container< EC, L, SC, Tag >)xt::xarray_container< EC, L, SC, Tag >
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xarray__container.html b/classxt_1_1xarray__container.html new file mode 100644 index 000000000..ba004aa30 --- /dev/null +++ b/classxt_1_1xarray__container.html @@ -0,0 +1,2314 @@ + + + + + + + +xtensor: xt::xarray_container< EC, L, SC, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xarray_container< EC, L, SC, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container with tensor semantic. + More...

+ +

#include <xarray.hpp>

+
+Inheritance diagram for xt::xarray_container< EC, L, SC, Tag >:
+
+
+ + +xt::xstrided_container< xarray_container< EC, L, SC, Tag > > +xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > > +xt::xcontainer< D > +xt::xsemantic_base< D > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xarray_container< EC, L, SC, Tag >
 
using base_type = xstrided_container< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using extension_base = extension::xarray_container_base_t< EC, L, SC, Tag >
 
using storage_type = typename base_type::storage_type
 
using allocator_type = typename base_type::allocator_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using shape_type = typename base_type::shape_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xstrided_container< xarray_container< EC, L, SC, Tag > >
using base_type = xcontainer< xarray_container< EC, L, SC, Tag > >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
- Public Types inherited from xt::xcontainer< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > >
using base_type = xsemantic_base< xarray_container< EC, L, SC, Tag > >
 
using derived_type = xarray_container< EC, L, SC, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xarray_container (const xarray_container &)=default
 
+xarray_containeroperator= (const xarray_container &)=default
 
xarray_container (xarray_container &&)=default
 
+xarray_containeroperator= (xarray_container &&)=default
 
+template<std::size_t N>
xarray_containeroperator= (xtensor_container< EC, N, L, Tag > &&rhs)
 
+template<class E >
xarray_containeroperator= (const xexpression< E > &e)
 
Constructors
 xarray_container ()
 Allocates an uninitialized xarray_container that holds 0 element.
 
 xarray_container (const shape_type &shape, layout_type l=L)
 Allocates an uninitialized xarray_container with the specified shape and layout_type.
 
 xarray_container (const shape_type &shape, const_reference value, layout_type l=L)
 Allocates an xarray_container with the specified shape and layout_type.
 
 xarray_container (const shape_type &shape, const strides_type &strides)
 Allocates an uninitialized xarray_container with the specified shape and strides.
 
 xarray_container (const shape_type &shape, const strides_type &strides, const_reference value)
 Allocates an uninitialized xarray_container with the specified shape and strides.
 
 xarray_container (storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)
 Allocates an xarray_container by moving specified data, shape and strides.
 
 xarray_container (const value_type &t)
 Allocates an xarray_container that holds a single element initialized to the specified value.
 
Constructors from initializer list
 xarray_container (nested_initializer_list_t< value_type, 1 > t)
 Allocates a one-dimensional xarray_container.
 
 xarray_container (nested_initializer_list_t< value_type, 2 > t)
 Allocates a two-dimensional xarray_container.
 
 xarray_container (nested_initializer_list_t< value_type, 3 > t)
 Allocates a three-dimensional xarray_container.
 
 xarray_container (nested_initializer_list_t< value_type, 4 > t)
 Allocates a four-dimensional xarray_container.
 
 xarray_container (nested_initializer_list_t< value_type, 5 > t)
 Allocates a five-dimensional xarray_container.
 
template<std::size_t N>
 xarray_container (xtensor_container< EC, N, L, Tag > &&rhs)
 
template<class S >
xarray_container< EC, L, SC, Tag > from_shape (S &&s)
 Allocates and returns an xarray_container with the specified shape.
 
template<std::size_t N>
xarray_container< EC, L, SC, Tag > & operator= (xtensor_container< EC, N, L, Tag > &&rhs)
 
- Public Member Functions inherited from xt::xstrided_container< xarray_container< EC, L, SC, Tag > >
void resize (S &&shape, bool force=false)
 Resizes the container.
 
void resize (S &&shape, layout_type l)
 Resizes the container.
 
void resize (S &&shape, const strides_type &strides)
 Resizes the container.
 
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 Reshapes the container and keeps old elements.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=base_type::static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
- Public Member Functions inherited from xt::xcontainer< D >
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + +

+Static Public Member Functions

+template<class S = shape_type>
static xarray_container from_shape (S &&s)
 
+ + + + + + + + + + + +

+Static Public Attributes

static constexpr std::size_t rank = SIZE_MAX
 
- Static Public Attributes inherited from xt::xcontainer< D >
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + +

+Friends

class xcontainer< xarray_container< EC, L, SC, Tag > >
 
+ + + + + + + + + +

Extended copy semantic

template<class E >
 xarray_container (const xexpression< E > &e)
 The extended copy constructor.
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xstrided_container< xarray_container< EC, L, SC, Tag > >
xstrided_container (const xstrided_container &)=default
 
xstrided_container (xstrided_container &&)=default
 
+xstrided_containeroperator= (const xstrided_container &)=default
 
+xstrided_containeroperator= (xstrided_container &&)=default
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&) noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept
 
inner_shape_type & shape_impl () noexcept
 
const inner_shape_type & shape_impl () const noexcept
 
inner_strides_type & strides_impl () noexcept
 
const inner_strides_type & strides_impl () const noexcept
 
inner_backstrides_type & backstrides_impl () noexcept
 
const inner_backstrides_type & backstrides_impl () const noexcept
 
void reshape_impl (S &&shape, std::true_type, layout_type layout=base_type::static_layout)
 
void reshape_impl (S &&shape, std::false_type, layout_type layout=base_type::static_layout)
 
layout_typemutable_layout () noexcept
 
- Protected Member Functions inherited from xt::xcontainer< D >
xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class EC, layout_type L, class SC, class Tag>
+class xt::xarray_container< EC, L, SC, Tag >

Dense multidimensional container with tensor semantic.

+

The xarray_container class implements a dense multidimensional container with tensor semantic.

+
Template Parameters
+ + + + + +
ECThe type of the container holding the elements.
LThe layout_type of the container.
SCThe type of the containers holding the shape and the strides.
TagThe expression tag.
+
+
+
See also
xarray, xstrided_container, xcontainer
+ +

Definition at line 82 of file xarray.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::allocator_type = typename base_type::allocator_type
+
+ +

Definition at line 93 of file xarray.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 102 of file xarray.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::base_type = xstrided_container<self_type>
+
+ +

Definition at line 89 of file xarray.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 98 of file xarray.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 96 of file xarray.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::expression_tag = Tag
+
+ +

Definition at line 106 of file xarray.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::extension_base = extension::xarray_container_base_t<EC, L, SC, Tag>
+
+ +

Definition at line 91 of file xarray.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 104 of file xarray.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 100 of file xarray.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 103 of file xarray.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::pointer = typename base_type::pointer
+
+ +

Definition at line 97 of file xarray.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::reference = typename base_type::reference
+
+ +

Definition at line 95 of file xarray.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::self_type = xarray_container<EC, L, SC, Tag>
+
+ +

Definition at line 88 of file xarray.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 90 of file xarray.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 99 of file xarray.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 92 of file xarray.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 101 of file xarray.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 105 of file xarray.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + +
using xt::xarray_container< EC, L, SC, Tag >::value_type = typename base_type::value_type
+
+ +

Definition at line 94 of file xarray.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xarray_container() [1/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container ()
+
+inline
+
+ +

Allocates an uninitialized xarray_container that holds 0 element.

+ +

Definition at line 281 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [2/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (const shape_type & shape,
layout_type l = L 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xarray_container with the specified shape and layout_type.

+
Parameters
+ + + +
shapethe shape of the xarray_container
lthe layout_type of the xarray_container
+
+
+ +

Definition at line 294 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [3/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (const shape_type & shape,
const_reference value,
layout_type l = L 
)
+
+inlineexplicit
+
+ +

Allocates an xarray_container with the specified shape and layout_type.

+

Elements are initialized to the specified value.

Parameters
+ + + + +
shapethe shape of the xarray_container
valuethe value of the elements
lthe layout_type of the xarray_container
+
+
+ +

Definition at line 308 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [4/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (const shape_type & shape,
const strides_type & strides 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xarray_container with the specified shape and strides.

+
Parameters
+ + + +
shapethe shape of the xarray_container
stridesthe strides of the xarray_container
+
+
+ +

Definition at line 325 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [5/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (const shape_type & shape,
const strides_type & strides,
const_reference value 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xarray_container with the specified shape and strides.

+

Elements are initialized to the specified value.

Parameters
+ + + + +
shapethe shape of the xarray_container
stridesthe strides of the xarray_container
valuethe value of the elements
+
+
+ +

Definition at line 339 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [6/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (storage_type && storage,
inner_shape_type && shape,
inner_strides_type && strides 
)
+
+inlineexplicit
+
+ +

Allocates an xarray_container by moving specified data, shape and strides.

+
Parameters
+ + + + +
storagethe data for the xarray_container
shapethe shape of the xarray_container
stridesthe strides of the xarray_container
+
+
+ +

Definition at line 371 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [7/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (const value_type & t)
+
+inline
+
+ +

Allocates an xarray_container that holds a single element initialized to the specified value.

+
Parameters
+ + +
tthe value of the element
+
+
+ +

Definition at line 356 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [8/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (nested_initializer_list_t< value_type, 1 > t)
+
+inline
+
+ +

Allocates a one-dimensional xarray_container.

+
Parameters
+ + +
tthe elements of the xarray_container
+
+
+ +

Definition at line 392 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [9/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (nested_initializer_list_t< value_type, 2 > t)
+
+inline
+
+ +

Allocates a two-dimensional xarray_container.

+
Parameters
+ + +
tthe elements of the xarray_container
+
+
+ +

Definition at line 405 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [10/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (nested_initializer_list_t< value_type, 3 > t)
+
+inline
+
+ +

Allocates a three-dimensional xarray_container.

+
Parameters
+ + +
tthe elements of the xarray_container
+
+
+ +

Definition at line 418 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [11/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (nested_initializer_list_t< value_type, 4 > t)
+
+inline
+
+ +

Allocates a four-dimensional xarray_container.

+
Parameters
+ + +
tthe elements of the xarray_container
+
+
+ +

Definition at line 431 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [12/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (nested_initializer_list_t< value_type, 5 > t)
+
+inline
+
+ +

Allocates a five-dimensional xarray_container.

+
Parameters
+ + +
tthe elements of the xarray_container
+
+
+ +

Definition at line 444 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [13/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<std::size_t N>
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (xtensor_container< EC, N, L, Tag > && rhs)
+
+inlineexplicit
+
+ +

Definition at line 468 of file xarray.hpp.

+ +
+
+ +

◆ xarray_container() [14/14]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xt::xarray_container< EC, L, SC, Tag >::xarray_container (const xexpression< E > & e)
+
+inline
+
+ +

The extended copy constructor.

+ +

Definition at line 501 of file xarray.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ from_shape()

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
xarray_container< EC, L, SC, Tag > xt::xarray_container< EC, L, SC, Tag >::from_shape (S && s)
+
+inline
+
+ +

Allocates and returns an xarray_container with the specified shape.

+
Parameters
+ + +
sthe shape of the xarray_container
+
+
+ +

Definition at line 460 of file xarray.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xarray_container< EC, L, SC, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 518 of file xarray.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+
+template<std::size_t N>
+ + + + + +
+ + + + + + + + +
xarray_container< EC, L, SC, Tag > & xt::xarray_container< EC, L, SC, Tag >::operator= (xtensor_container< EC, N, L, Tag > && rhs)
+
+inline
+
+ +

Definition at line 482 of file xarray.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xarray_container< EC, L, SC, Tag > >

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xarray_container< EC, L, SC, Tag > >
+
+friend
+
+ +

Definition at line 150 of file xarray.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ rank

+ +
+
+
+template<class EC , layout_type L, class SC , class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xarray_container< EC, L, SC, Tag >::rank = SIZE_MAX
+
+staticconstexpr
+
+ +

Definition at line 107 of file xarray.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xarray__container.js b/classxt_1_1xarray__container.js new file mode 100644 index 000000000..5725aa586 --- /dev/null +++ b/classxt_1_1xarray__container.js @@ -0,0 +1,18 @@ +var classxt_1_1xarray__container = +[ + [ "xarray_container", "classxt_1_1xarray__container.html#ae5c1e535231ddffdb7783d1445ffd66d", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a6b738f9e83ff453355414de037099d8c", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a72aad798502aefff1285aa6f46941e9c", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a0ca205f5f86d10d73b87b1d3ea7e6297", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a020df69d60ce91531bc3cf31af0b97ce", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a9e8b9a74e75fd76352d23346fa69a5c6", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a77e6553e8d27386c45f4fe7e80017e5c", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a9cd19d110d8063589c6f6c08a44af6ad", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a23f21da84072d9319fc8c826d98fb1de", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#aa7107f45d9ee3d9bb7a4a65f7c240edb", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#aaac4e823fd41ff9e9801a3cd8b1b5f6c", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#a44069c72b35f79263d7e24b6de2c4262", null ], + [ "xarray_container", "classxt_1_1xarray__container.html#aad2ebb4b2fa3a2a3a33a8a57b6bfe60a", null ], + [ "from_shape", "classxt_1_1xarray__container.html#ab23fb8ed1e93061e427ef9da391336a0", null ], + [ "operator=", "classxt_1_1xarray__container.html#ac47c631a33e292371fab8acff451f269", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xarray__container.png b/classxt_1_1xarray__container.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e273eaada9fe26b1f87e07ac6bddafd7aaefec GIT binary patch literal 6276 zcmd5>d011)mIvH$4Q)RK1&LcryAc%;R3x@EjmYK}5D-yYMTzWNK*B|BiMC)yQAE}! zC}1!M#DKB|4G>Wl6J_4nST98zv-U&roQjqoLg1*)Tugkf9F>x zSN7Uk%$>D(mWqnXT+7`*?pINnhC*4YJ_X)?{b_~?{L$WPeb5{L0L7kx(E#f6bmI-H zy|r#v^^}&D!ukU@>M~&4O#l712UOtmL@`o}f2X3Ng|Ynchl3>5!M5Izl${#WUjKX@ zS1rQ}SNf>lTz6y6lfxVXckbrtG*3_;;G*f$7|?$q9F_$E1j0T7Gp!6ib?VfI>xHfa zX2GAA2dDE92SRE$m&3T;TVz)fiX0@gebzN7<^$0$K>UhZ4JI`X#&jasW-qGc1(xC* zcIzA#Vp@cN&JBb9Rn70c8Dq&(3bcsXwqM?uRT83m0Ubey14llFon3|E0x2}w`tQ(X zOP3z?Fj@d)vAQYaQXd@#H8X6ked4*Sigd=>Vkcn`5GZ9^2l&8A# z>wA<9EUEEg6HnDTDa%?alCmBQ+sVy#?kpYmT#e%AhZtFoD>%#g^@R9l?RmjS;IKyo z(uq}5Q)>viDnu^J_sJ2h`3i-C!>T*weO=(S!szzc6+~TKz3KJ(a)eMHy?a7i%X~l} zWLo{bazR#qN`HZ;3!J5f#xPwIj;gLsIx#W4I>{f0t5h1IPV)XzT@+CVfE`)lc_g(T6E%|kr)a1}HG=tXi+@=CN z&)j$z)h>EXATaVG!PRf|Wz&+Ej4IsS3`~di66y3cLJYT{Uiyeu@cf1pn0FEgikBTq>V;LIf(>l}k z5q(fUiGPJ{Yv5Pb?08M~++3bKIG4^8yRJl!ITIslExM`u&y5J9y~jR%WJr@EYX;^r z9z6EdZ#yKfeINJ6JfV1BD)5r*av)SY;n7+)`KC-$$f|93Ar4juG5ymCzw_}dE#Xh zcsG-Fimn4FCI~WMHa0S35{$2K>qO+`z5O^olKZZM?NhO`qn3{(&Rq%}=d>|2VlPWh z3Xt19ch4O@bJ5s&$b_VC?`RP1xemn_8{QTo!3xju33Iojb{om)&^nZ3P?I0d$VOM8 zlxH2G{6z+9v$W7FNK;Elhv>~nq2(T|Y0XJ_$JXGj+6gls8L+F~Wci4v#bk6_%WD(P2F}E_xZk9V4HcQtcLp{aG!s?5bsB<5xnl%q62tX zztk_osMqJO^@;pcS!!HJ15H|t&A1| zijyZjD#-!OZZ>oxvPH5*bY|WSxC#4X*xk0N#k9WdR{(^3xF7NxS}w&aj={}Cgo|hY zJe}qqFxh6NY~%mckNS^5;tSS3odP4J^Wt*gna?eU7k!qRTGq%cRqf#O;ZgTyEN!p6 zH*(AhnzcVfMJ?%7KhYhVC;D_lP8s~yM(2;|;$sFApj`bgt+unUYDom866-zKyb(23 zZA;9~(rC+Gvr@*MNr@eEWa-fry{hV@O{>Z3B>T@&)7#lo&#v5|qH4G5K1Q{6&1cCO zLhu(0m$f_I|6(gnBm4S@%2bm(jj)i&WOCaa_h^E@YJu`pUS*qAA*j2h~ z^)d+h*j^X)L*IWlRaI58qIkCI?EAkgUD_UYFKF4(yEiqaPHm-*=ucgDb3P;!vg_|J zgbnez|q6WOi82%QMf*tMCeu(jbGb zd5(Daos{H}%_r;-@DW$07xj!GcDfi>nBT~j@k@`LjWwo^icZe6h`ffa1s^MIll8eC zd5)~eyLDb;HX>7!9C0#;E;O!+Z>^`=am+A5e!hMjY*Ky-@!^PzH)ot|* zF5;8VF-T%g>cez`*Om-yZOiF2jGaPs#u3A_9hW|IL;`Z#IDCuh5Mg&sRpQ)?%q`&- zRDg5uT3%i&=qo43HE>Vd(#y(#>~Ed8TZr`i%5Mrg3dG0j*(3WHw%0(GBNCG9qkpiz zXDio{;X$62bbxDDw0Y<6%eJ9v^Mvd%ERvvSI(ns;j4#*t53Cv8E`Ve&wA_7gVpTur0t41TEjUUhoDx%APdA0RWr?6y+S7%SIuGjNp%#Kn9A?e9i4-%N? zT~81R^+EbAPhkkS;YFjBjI_g@72v1)aIzO&JY=zAKuo34@Z$a>WUQ?m@aB(mx#08y zh|b~Vo|{o%anYWjNaS7Gt;Ag$jKe-i4i62OhUC-w?yiIzF@@%SSLvUa_jH<*3+%Lp zMq4FWHB4^Zcd_V|JR*@5b2OgPvB^y3yu)jAzOY%imwSu4)<;DINQ|`2ZQ|bT1~*fB03O4L9?OW_Ug8vA29~1@Ez;mP?~S6{n*5wj#PvGF+WRF4 zs?|!C%OJ7VnWxn_c*fhclbu63&u-e_<21tFO7W6_B~-wUPBe89x1DVadwW-w)10}F zU?>oFg1SD(Flx=bB{drz-49;1BkXQ01KbqO2$w|$0*`k7NdPF7!^Ybrydoq(?q%FF zu(|H!s&wr{pF=~WlwKn~hR?)ZkbUw>jskWmVfZZxBLz|a7~*~piM8tviOa?Tb+&41 z#E!Yw(p;={r(feF#l(&ULZI9xe^wdR#7sBKq}Av|cgfu&zwI?i)ZH*a$jv1^DGT58 zhaXQ%z!|nA z7N!e0KbuB@UO{|P8neMvbX17++;~b&e-1vJbQ-*UK))dPaaSlA!v5lMoSitYm$f78 z9aFRM)TyD57eppJPGF=z zPSD+0-S)H|x8(xEjDzLidqe#efh-A!+KEWn&P0#S&Ehd$n-fu#v<#AFhFEJ2IwQ(I z&SXaj5O?b7q)`h3edVr+XLU3Ph9NZp-ObIl2i&{dLvvJ3$a2JoT4S$Oo1o)ZxHw63 z`v6<>t)Y-*_Y$i5AP;qjEo=8Vf8a!tz46uIW@)muZVg@&M7xGay%RQCeh_B8bJE`7 z_NZduC!ZF#Rk!&Z?b3_oz|nOM*-#rqCyk|D?|MIXMx^_>O=o&qo?!~aanXuwA{GCk zE-MkeEO-u<@sYfcn6}hA|4bNCVFI!f5=gS0X9VXYFRT`PeF<~0OPf&Al zyt7p^nB1};D+=(b=w_7FBz7VW9-uA&luz*u(v#R?e0uT5!HafI{(0x@5{>#w*>+OL zMzrfhbVgj@2RD~RC`l6fpaM%@n3~{&XIR9Tw*%ZydbG zZzr*&!=@g&FRZ6T)&$3eN(H31l>@xQ0W#^(@lAYb`Rhi?OicqyYjd)XuOW@rwZl{H zda(A>Isd>OpHIRUZ$?euC%UbF8)WFb|tnz3LMhhvh{%Y!BObR)Z5z<2LWyOW{4drD8@DL@j4Y z>RA}Cx>6p&bKLr|uDg5|t?ybZvdraMc#sw&XGwhxEgyo>1E%1NRmmAT)8GpD`Th_V zqDMVv5z4C!YkMqUEAh|uP-?91KmWsXIf}0deR7S?3}gzZirzk!Es%7S!HiDSIFMNp z>b>NfZIsX$AND+M-HeUI|M*F_$%45MF=ce3C^z`ymtg|w7MH-0#xh%2OWgl)H3-OBhEb|pZ}{+vKHRjNga=}%?r+piLA zztum5e)JN^O2DqkB&C>gKA&2b&)IwmGo_F!VVABB$1pIAdAwp)Xc6A#J=NxR{LGr$bsW)HF8iWZBxN=0Y6wxKD=@5p}{hf>m^Ia{ai; zr&>1K>*eey1MM?}c!{U+(VH*uRKUlKZAR1aoyaerbF>o5gTNOxXLh=N1L`8da@68k z=$?LD6`09unfifDl~?$i$b)FZJIIG(Gv3Ti0_>Cx;Ok* zy!C)AOdhJO8xvb)tb`yX&`|}~Sftz^M#(&o_}L+>X@_|dMI$PDfZK8zu8^ZuNiTHA zrO9TGLMbp7d4e8T_46d6DAVjFk=30@AvqnoQV*?#Bukm3^=J*7B_Z?h36rm`7xE-z t*4I@0pL+1f=MEl+SHm<_=dl^zf2g3@?q2;J{J%iO(%kmPtX)Sh{3q1lxvKyG literal 0 HcmV?d00001 diff --git a/classxt_1_1xassign__traits-members.html b/classxt_1_1xassign__traits-members.html new file mode 100644 index 000000000..0a48839f6 --- /dev/null +++ b/classxt_1_1xassign__traits-members.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xassign_traits< E1, E2 > Member List
+
+
+ +

This is the complete list of members for xt::xassign_traits< E1, E2 >, including all inherited members.

+ + + + + + + + + +
e2_requested_value_type typedef (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >
linear_assign(const E1 &e1, const E2 &e2, bool trivial) (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >inlinestatic
requested_value_type typedef (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >
simd_assign() (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >inlinestatic
simd_linear_assign() (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >inlinestatic
simd_linear_assign(const E1 &e1, const E2 &e2) (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >inlinestatic
simd_strided_assign() (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >inlinestatic
strided_assign() (defined in xt::xassign_traits< E1, E2 >)xt::xassign_traits< E1, E2 >inlinestatic
+
+ + + + diff --git a/classxt_1_1xassign__traits.html b/classxt_1_1xassign__traits.html new file mode 100644 index 000000000..db048ab85 --- /dev/null +++ b/classxt_1_1xassign__traits.html @@ -0,0 +1,379 @@ + + + + + + + +xtensor: xt::xassign_traits< E1, E2 > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xassign_traits< E1, E2 > Class Template Reference
+
+
+ + + + + + +

+Public Types

using e2_requested_value_type = std::conditional_t< is_bool< e2_value_type >::value, typename E2::bool_load_type, e2_value_type >
 
using requested_value_type = detail::conditional_promote_to_complex_t< e1_value_type, e2_requested_value_type >
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static constexpr bool simd_assign ()
 
static constexpr bool linear_assign (const E1 &e1, const E2 &e2, bool trivial)
 
static constexpr bool strided_assign ()
 
static constexpr bool simd_linear_assign ()
 
static constexpr bool simd_strided_assign ()
 
static constexpr bool simd_linear_assign (const E1 &e1, const E2 &e2)
 
+

Detailed Description

+
template<class E1, class E2>
+class xt::xassign_traits< E1, E2 >
+

Definition at line 355 of file xassign.hpp.

+

Member Typedef Documentation

+ +

◆ e2_requested_value_type

+ +
+
+
+template<class E1 , class E2 >
+ + + + +
using xt::xassign_traits< E1, E2 >::e2_requested_value_type = std:: conditional_t<is_bool<e2_value_type>::value, typename E2::bool_load_type, e2_value_type>
+
+ +

Definition at line 437 of file xassign.hpp.

+ +
+
+ +

◆ requested_value_type

+ +
+
+
+template<class E1 , class E2 >
+ + + + +
using xt::xassign_traits< E1, E2 >::requested_value_type = detail::conditional_promote_to_complex_t<e1_value_type, e2_requested_value_type>
+
+ +

Definition at line 439 of file xassign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ linear_assign()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static constexpr bool xt::xassign_traits< E1, E2 >::linear_assign (const E1 & e1,
const E2 & e2,
bool trivial 
)
+
+inlinestaticconstexpr
+
+ +

Definition at line 412 of file xassign.hpp.

+ +
+
+ +

◆ simd_assign()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + +
static constexpr bool xt::xassign_traits< E1, E2 >::simd_assign ()
+
+inlinestaticconstexpr
+
+ +

Definition at line 407 of file xassign.hpp.

+ +
+
+ +

◆ simd_linear_assign() [1/2]

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + +
static constexpr bool xt::xassign_traits< E1, E2 >::simd_linear_assign ()
+
+inlinestaticconstexpr
+
+ +

Definition at line 422 of file xassign.hpp.

+ +
+
+ +

◆ simd_linear_assign() [2/2]

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static constexpr bool xt::xassign_traits< E1, E2 >::simd_linear_assign (const E1 & e1,
const E2 & e2 
)
+
+inlinestaticconstexpr
+
+ +

Definition at line 432 of file xassign.hpp.

+ +
+
+ +

◆ simd_strided_assign()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + +
static constexpr bool xt::xassign_traits< E1, E2 >::simd_strided_assign ()
+
+inlinestaticconstexpr
+
+ +

Definition at line 427 of file xassign.hpp.

+ +
+
+ +

◆ strided_assign()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + +
static constexpr bool xt::xassign_traits< E1, E2 >::strided_assign ()
+
+inlinestaticconstexpr
+
+ +

Definition at line 417 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xaxis__iterator-members.html b/classxt_1_1xaxis__iterator-members.html new file mode 100644 index 000000000..cec078a19 --- /dev/null +++ b/classxt_1_1xaxis__iterator-members.html @@ -0,0 +1,123 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xaxis_iterator< CT > Member List
+
+
+ +

This is the complete list of members for xt::xaxis_iterator< CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
equal(const self_type &rhs) constxt::xaxis_iterator< CT >inline
iterator_category typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
operator*() constxt::xaxis_iterator< CT >inline
operator++()xt::xaxis_iterator< CT >inline
operator++(int)xt::xaxis_iterator< CT >inline
operator->() constxt::xaxis_iterator< CT >inline
pointer typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
reference typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
self_type typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
shape_type typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
size_type typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
value_type typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
xaxis_iterator(CTA &&e, size_type axis)xt::xaxis_iterator< CT >inline
xaxis_iterator(CTA &&e, size_type axis, size_type index, size_type offset)xt::xaxis_iterator< CT >inline
xexpression_type typedef (defined in xt::xaxis_iterator< CT >)xt::xaxis_iterator< CT >
+
+ + + + diff --git a/classxt_1_1xaxis__iterator.html b/classxt_1_1xaxis__iterator.html new file mode 100644 index 000000000..2132fe069 --- /dev/null +++ b/classxt_1_1xaxis__iterator.html @@ -0,0 +1,626 @@ + + + + + + + +xtensor: xt::xaxis_iterator< CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xaxis_iterator< CT > Class Template Reference
+
+
+ +

Class for iteration over (N-1)-dimensional slices, where N is the dimension of the underlying expression. + More...

+ +

#include <xaxis_iterator.hpp>

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

+Public Types

using self_type = xaxis_iterator< CT >
 
using xexpression_type = std::decay_t< CT >
 
using size_type = typename xexpression_type::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using shape_type = typename xexpression_type::shape_type
 
using value_type = xstrided_view< CT, shape_type >
 
using reference = std::remove_reference_t< apply_cv_t< CT, value_type > >
 
using pointer = xtl::xclosure_pointer< std::remove_reference_t< apply_cv_t< CT, value_type > > >
 
using iterator_category = std::forward_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructors
template<class CTA >
 xaxis_iterator (CTA &&e, size_type axis)
 Constructs an xaxis_iterator.
 
template<class CTA >
 xaxis_iterator (CTA &&e, size_type axis, size_type index, size_type offset)
 Constructs an xaxis_iterator starting at specified index and offset.
 
Increment
self_typeoperator++ ()
 Increments the iterator to the next position and returns it.
 
self_type operator++ (int)
 Makes a copy of the iterator, increments it to the next position, and returns the copy.
 
Reference
reference operator* () const
 Returns the strided view at the current iteration position.
 
pointer operator-> () const
 Returns a pointer to the strided view at the current iteration position.
 
bool equal (const self_type &rhs) const
 Checks equality of the xaxis_slice_iterator and rhs.
 
+

Detailed Description

+
template<class CT>
+class xt::xaxis_iterator< CT >

Class for iteration over (N-1)-dimensional slices, where N is the dimension of the underlying expression.

+

If N is the number of dimensions of an expression, the xaxis_iterator iterates over (N-1)-dimensional slices oriented along the specified axis.

+
Template Parameters
+ + +
CTthe closure type of the xexpression
+
+
+ +

Definition at line 33 of file xaxis_iterator.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 41 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::iterator_category = std::forward_iterator_tag
+
+ +

Definition at line 47 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::pointer = xtl::xclosure_pointer<std::remove_reference_t<apply_cv_t<CT, value_type> >>
+
+ +

Definition at line 45 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::reference = std::remove_reference_t<apply_cv_t<CT, value_type> >
+
+ +

Definition at line 44 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::self_type = xaxis_iterator<CT>
+
+ +

Definition at line 37 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::shape_type = typename xexpression_type::shape_type
+
+ +

Definition at line 42 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::size_type = typename xexpression_type::size_type
+
+ +

Definition at line 40 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::value_type = xstrided_view<CT, shape_type>
+
+ +

Definition at line 43 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_iterator< CT >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 39 of file xaxis_iterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xaxis_iterator() [1/2]

+ +
+
+
+template<class CT >
+
+template<class CTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xaxis_iterator< CT >::xaxis_iterator (CTA && e,
size_type axis 
)
+
+inline
+
+ +

Constructs an xaxis_iterator.

+
Parameters
+ + + +
ethe expression to iterate over
axisthe axis to iterate over taking N-1 dimensional slices
+
+
+ +

Definition at line 152 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ xaxis_iterator() [2/2]

+ +
+
+
+template<class CT >
+
+template<class CTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xaxis_iterator< CT >::xaxis_iterator (CTA && e,
size_type axis,
size_type index,
size_type offset 
)
+
+inline
+
+ +

Constructs an xaxis_iterator starting at specified index and offset.

+
Parameters
+ + + + + +
ethe expression to iterate over
axisthe axis to iterate over taking N-1 dimensional slices
indexthe starting index for the iterator
offsetthe starting offset for the iterator
+
+
+ +

Definition at line 167 of file xaxis_iterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ equal()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
bool xt::xaxis_iterator< CT >::equal (const self_typerhs) const
+
+inline
+
+ +

Checks equality of the xaxis_slice_iterator and rhs.

+
Parameters
+ + +
+
+
+

return true if the iterators are equivalent, false otherwise

+ +

Definition at line 245 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaxis_iterator< CT >::operator* () const
+
+inline
+
+ +

Returns the strided view at the current iteration position.

+
Returns
a strided_view
+ +

Definition at line 216 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaxis_iterator< CT >::operator++ ()
+
+inline
+
+ +

Increments the iterator to the next position and returns it.

+ +

Definition at line 185 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xaxis_iterator< CT >::operator++ (int )
+
+inline
+
+ +

Makes a copy of the iterator, increments it to the next position, and returns the copy.

+ +

Definition at line 197 of file xaxis_iterator.hpp.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaxis_iterator< CT >::operator-> () const
+
+inline
+
+ +

Returns a pointer to the strided view at the current iteration position.

+
Returns
a pointer to a strided_view
+ +

Definition at line 227 of file xaxis_iterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xaxis__iterator.js b/classxt_1_1xaxis__iterator.js new file mode 100644 index 000000000..2965d7d03 --- /dev/null +++ b/classxt_1_1xaxis__iterator.js @@ -0,0 +1,10 @@ +var classxt_1_1xaxis__iterator = +[ + [ "xaxis_iterator", "classxt_1_1xaxis__iterator.html#a27574105e56e37a1986b8cb5a141a9ea", null ], + [ "xaxis_iterator", "classxt_1_1xaxis__iterator.html#aacf91594c4a97e2811691d5678a95e4e", null ], + [ "equal", "classxt_1_1xaxis__iterator.html#ab4e285d56b758b9c9f95d4c63f39093c", null ], + [ "operator*", "classxt_1_1xaxis__iterator.html#a150d158b5c15befbed66477acf3ea890", null ], + [ "operator++", "classxt_1_1xaxis__iterator.html#aa6a381b3f4e53a2b7b2a0385e2675b65", null ], + [ "operator++", "classxt_1_1xaxis__iterator.html#af118e8a489b3ee60287f8848a42c3ec8", null ], + [ "operator->", "classxt_1_1xaxis__iterator.html#a265baea7c543cabd5f9b074d39371310", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xaxis__slice__iterator-members.html b/classxt_1_1xaxis__slice__iterator-members.html new file mode 100644 index 000000000..5f64dae00 --- /dev/null +++ b/classxt_1_1xaxis__slice__iterator-members.html @@ -0,0 +1,124 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xaxis_slice_iterator< CT > Member List
+
+
+ +

This is the complete list of members for xt::xaxis_slice_iterator< CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
equal(const self_type &rhs) constxt::xaxis_slice_iterator< CT >inline
iterator_category typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
operator*() constxt::xaxis_slice_iterator< CT >inline
operator++()xt::xaxis_slice_iterator< CT >inline
operator++(int)xt::xaxis_slice_iterator< CT >inline
operator->() constxt::xaxis_slice_iterator< CT >inline
pointer typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
reference typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
self_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
shape_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
size_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
strides_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
value_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
xaxis_slice_iterator(CTA &&e, size_type axis)xt::xaxis_slice_iterator< CT >inline
xaxis_slice_iterator(CTA &&e, size_type axis, size_type index, size_type offset)xt::xaxis_slice_iterator< CT >inline
xexpression_type typedef (defined in xt::xaxis_slice_iterator< CT >)xt::xaxis_slice_iterator< CT >
+
+ + + + diff --git a/classxt_1_1xaxis__slice__iterator.html b/classxt_1_1xaxis__slice__iterator.html new file mode 100644 index 000000000..826049e92 --- /dev/null +++ b/classxt_1_1xaxis__slice__iterator.html @@ -0,0 +1,640 @@ + + + + + + + +xtensor: xt::xaxis_slice_iterator< CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xaxis_slice_iterator< CT > Class Template Reference
+
+
+ +

Class for iteration over one-dimensional slices. + More...

+ +

#include <xaxis_slice_iterator.hpp>

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

+Public Types

using self_type = xaxis_slice_iterator< CT >
 
using xexpression_type = std::decay_t< CT >
 
using size_type = typename xexpression_type::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using shape_type = typename xexpression_type::shape_type
 
using strides_type = typename xexpression_type::strides_type
 
using value_type = xstrided_view< CT, shape_type >
 
using reference = std::remove_reference_t< apply_cv_t< CT, value_type > >
 
using pointer = xtl::xclosure_pointer< std::remove_reference_t< apply_cv_t< CT, value_type > > >
 
using iterator_category = std::forward_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructors
template<class CTA >
 xaxis_slice_iterator (CTA &&e, size_type axis)
 Constructs an xaxis_slice_iterator.
 
template<class CTA >
 xaxis_slice_iterator (CTA &&e, size_type axis, size_type index, size_type offset)
 Constructs an xaxis_slice_iterator starting at specified index and offset.
 
Increment
self_typeoperator++ ()
 Increments the iterator to the next position and returns it.
 
self_type operator++ (int)
 Makes a copy of the iterator, increments it to the next position, and returns the copy.
 
Reference
reference operator* () const
 Returns the strided view at the current iteration position.
 
pointer operator-> () const
 Returns a pointer to the strided view at the current iteration position.
 
bool equal (const self_type &rhs) const
 Checks equality of the xaxis_slice_iterator and rhs.
 
+

Detailed Description

+
template<class CT>
+class xt::xaxis_slice_iterator< CT >

Class for iteration over one-dimensional slices.

+

The xaxis_slice_iterator iterates over one-dimensional slices oriented along the specified axis

+
Template Parameters
+ + +
CTthe closure type of the xexpression
+
+
+ +

Definition at line 28 of file xaxis_slice_iterator.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 36 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::iterator_category = std::forward_iterator_tag
+
+ +

Definition at line 43 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::pointer = xtl::xclosure_pointer<std::remove_reference_t<apply_cv_t<CT, value_type> >>
+
+ +

Definition at line 41 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::reference = std::remove_reference_t<apply_cv_t<CT, value_type> >
+
+ +

Definition at line 40 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::self_type = xaxis_slice_iterator<CT>
+
+ +

Definition at line 32 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::shape_type = typename xexpression_type::shape_type
+
+ +

Definition at line 37 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::size_type = typename xexpression_type::size_type
+
+ +

Definition at line 35 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::strides_type = typename xexpression_type::strides_type
+
+ +

Definition at line 38 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::value_type = xstrided_view<CT, shape_type>
+
+ +

Definition at line 39 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xaxis_slice_iterator< CT >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 34 of file xaxis_slice_iterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xaxis_slice_iterator() [1/2]

+ +
+
+
+template<class CT >
+
+template<class CTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xaxis_slice_iterator< CT >::xaxis_slice_iterator (CTA && e,
size_type axis 
)
+
+inline
+
+ +

Constructs an xaxis_slice_iterator.

+
Parameters
+ + + +
ethe expression to iterate over
axisthe axis to iterate over taking one dimensional slices
+
+
+ +

Definition at line 128 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ xaxis_slice_iterator() [2/2]

+ +
+
+
+template<class CT >
+
+template<class CTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xaxis_slice_iterator< CT >::xaxis_slice_iterator (CTA && e,
size_type axis,
size_type index,
size_type offset 
)
+
+inline
+
+ +

Constructs an xaxis_slice_iterator starting at specified index and offset.

+
Parameters
+ + + + + +
ethe expression to iterate over
axisthe axis to iterate over taking one dimensional slices
indexthe starting index for the iterator
offsetthe starting offset for the iterator
+
+
+ +

Definition at line 143 of file xaxis_slice_iterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ equal()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
bool xt::xaxis_slice_iterator< CT >::equal (const self_typerhs) const
+
+inline
+
+ +

Checks equality of the xaxis_slice_iterator and rhs.

+
Returns
true if the iterators are equivalent, false otherwise
+ +

Definition at line 260 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaxis_slice_iterator< CT >::operator* () const
+
+inline
+
+ +

Returns the strided view at the current iteration position.

+
Returns
a strided_view
+ +

Definition at line 232 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaxis_slice_iterator< CT >::operator++ ()
+
+inline
+
+ +

Increments the iterator to the next position and returns it.

+ +

Definition at line 195 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xaxis_slice_iterator< CT >::operator++ (int )
+
+inline
+
+ +

Makes a copy of the iterator, increments it to the next position, and returns the copy.

+ +

Definition at line 213 of file xaxis_slice_iterator.hpp.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaxis_slice_iterator< CT >::operator-> () const
+
+inline
+
+ +

Returns a pointer to the strided view at the current iteration position.

+
Returns
a pointer to a strided_view
+ +

Definition at line 243 of file xaxis_slice_iterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xaxis__slice__iterator.js b/classxt_1_1xaxis__slice__iterator.js new file mode 100644 index 000000000..698a1c581 --- /dev/null +++ b/classxt_1_1xaxis__slice__iterator.js @@ -0,0 +1,10 @@ +var classxt_1_1xaxis__slice__iterator = +[ + [ "xaxis_slice_iterator", "classxt_1_1xaxis__slice__iterator.html#af741f5bf73967431bc0aba068da8fada", null ], + [ "xaxis_slice_iterator", "classxt_1_1xaxis__slice__iterator.html#a0817357b924fd7c356a2a2f252fcb323", null ], + [ "equal", "classxt_1_1xaxis__slice__iterator.html#abb5ffe172da06056aa31e3f18b821b88", null ], + [ "operator*", "classxt_1_1xaxis__slice__iterator.html#a8250c9f5f36a93e0e3ff856f9bd6ab2b", null ], + [ "operator++", "classxt_1_1xaxis__slice__iterator.html#a6712f741da8a93fa4c0785888d008608", null ], + [ "operator++", "classxt_1_1xaxis__slice__iterator.html#a58c7c5d0bec327a8fb5d1f63b6122822", null ], + [ "operator->", "classxt_1_1xaxis__slice__iterator.html#a98d80126e4d0c78658fabe73303913bb", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xblockwise__reducer-members.html b/classxt_1_1xblockwise__reducer-members.html new file mode 100644 index 000000000..6e1b2bd5e --- /dev/null +++ b/classxt_1_1xblockwise__reducer-members.html @@ -0,0 +1,127 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xblockwise_reducer< CT, F, X, O > Member List
+
+
+ +

This is the complete list of members for xt::xblockwise_reducer< CT, F, X, O >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
assign_to(R &result) const (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >inline
axes() const (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >inline
axes_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
chunk_shape() const (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >inline
chunk_shape_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
compute_input_chunk_range(CI &result_chunk_iter) const -> input_chunk_range_type (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
dimension() const (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >inline
functor_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
input_chunk_index_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
input_grid_strides typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
input_shape() const (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >inline
input_shape_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
keep_dims typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
raw_options_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
self_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
shape() const (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >inline
shape_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
value_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
xblockwise_reducer(E &&e, BS &&block_shape, XX &&axes, OO &&options, FF &&functor) (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
xexpression_type typedef (defined in xt::xblockwise_reducer< CT, F, X, O >)xt::xblockwise_reducer< CT, F, X, O >
+
+ + + + diff --git a/classxt_1_1xblockwise__reducer.html b/classxt_1_1xblockwise__reducer.html new file mode 100644 index 000000000..a1ef8ca14 --- /dev/null +++ b/classxt_1_1xblockwise__reducer.html @@ -0,0 +1,639 @@ + + + + + + + +xtensor: xt::xblockwise_reducer< CT, F, X, O > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xblockwise_reducer< CT, F, X, O > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xblockwise_reducer< CT, F, X, O >
 
using raw_options_type = std::decay_t< O >
 
using keep_dims = xtl::mpl::contains< raw_options_type, xt::keep_dims_type >
 
using xexpression_type = std::decay_t< CT >
 
using shape_type = typename xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t< X >, keep_dims >::type
 
using functor_type = F
 
using value_type = typename functor_type::value_type
 
using input_shape_type = typename xexpression_type::shape_type
 
using input_chunk_index_type = filter_fixed_shape_t< input_shape_type >
 
using input_grid_strides = filter_fixed_shape_t< input_shape_type >
 
using axes_type = X
 
using chunk_shape_type = filter_fixed_shape_t< shape_type >
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class E , class BS , class XX , class OO , class FF >
 xblockwise_reducer (E &&e, BS &&block_shape, XX &&axes, OO &&options, FF &&functor)
 
const input_shape_type & input_shape () const
 
const axes_type & axes () const
 
std::size_t dimension () const
 
const shape_type & shape () const
 
const chunk_shape_type & chunk_shape () const
 
template<class R >
void assign_to (R &result) const
 
template<class CI >
auto compute_input_chunk_range (CI &result_chunk_iter) const -> input_chunk_range_type
 
+

Detailed Description

+
template<class CT, class F, class X, class O>
+class xt::xblockwise_reducer< CT, F, X, O >
+

Definition at line 15 of file xblockwise_reducer.hpp.

+

Member Typedef Documentation

+ +

◆ axes_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::axes_type = X
+
+ +

Definition at line 29 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ chunk_shape_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::chunk_shape_type = filter_fixed_shape_t<shape_type>
+
+ +

Definition at line 30 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::functor_type = F
+
+ +

Definition at line 24 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ input_chunk_index_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::input_chunk_index_type = filter_fixed_shape_t<input_shape_type>
+
+ +

Definition at line 27 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ input_grid_strides

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::input_grid_strides = filter_fixed_shape_t<input_shape_type>
+
+ +

Definition at line 28 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ input_shape_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::input_shape_type = typename xexpression_type::shape_type
+
+ +

Definition at line 26 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ keep_dims

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::keep_dims = xtl::mpl::contains<raw_options_type, xt::keep_dims_type>
+
+ +

Definition at line 21 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ raw_options_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::raw_options_type = std::decay_t<O>
+
+ +

Definition at line 20 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::self_type = xblockwise_reducer<CT, F, X, O>
+
+ +

Definition at line 19 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::shape_type = typename xreducer_shape_type<typename xexpression_type::shape_type, std::decay_t<X>, keep_dims>::type
+
+ +

Definition at line 23 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::value_type = typename functor_type::value_type
+
+ +

Definition at line 25 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + +
using xt::xblockwise_reducer< CT, F, X, O >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 22 of file xblockwise_reducer.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xblockwise_reducer()

+ +
+
+
+template<class CT , class F , class X , class O >
+
+template<class E , class BS , class XX , class OO , class FF >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xblockwise_reducer< CT, F, X, O >::xblockwise_reducer (E && e,
BS && block_shape,
XX && axes,
OO && options,
FF && functor 
)
+
+ +

Definition at line 77 of file xblockwise_reducer.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign_to()

+ +
+
+
+template<class CT , class F , class X , class O >
+
+template<class R >
+ + + + + +
+ + + + + + + + +
void xt::xblockwise_reducer< CT, F, X, O >::assign_to (R & result) const
+
+inline
+
+ +

Definition at line 131 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ axes()

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xblockwise_reducer< CT, F, X, O >::axes () const
+
+inline
+
+ +

Definition at line 106 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ chunk_shape()

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xblockwise_reducer< CT, F, X, O >::chunk_shape () const
+
+inline
+
+ +

Definition at line 124 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ compute_input_chunk_range()

+ +
+
+
+template<class CT , class F , class X , class O >
+
+template<class CI >
+ + + + + + + + +
auto xt::xblockwise_reducer< CT, F, X, O >::compute_input_chunk_range (CI & result_chunk_iter) const -> input_chunk_range_type +
+
+ +

Definition at line 189 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + + +
+ + + + + + + +
std::size_t xt::xblockwise_reducer< CT, F, X, O >::dimension () const
+
+inline
+
+ +

Definition at line 112 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ input_shape()

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xblockwise_reducer< CT, F, X, O >::input_shape () const
+
+inline
+
+ +

Definition at line 100 of file xblockwise_reducer.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class CT , class F , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xblockwise_reducer< CT, F, X, O >::shape () const
+
+inline
+
+ +

Definition at line 118 of file xblockwise_reducer.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xbounded__iterator-members.html b/classxt_1_1xbounded__iterator-members.html new file mode 100644 index 000000000..883478206 --- /dev/null +++ b/classxt_1_1xbounded__iterator-members.html @@ -0,0 +1,125 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xbounded_iterator< It, BIt > Member List
+
+
+ +

This is the complete list of members for xt::xbounded_iterator< It, BIt >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
bound_iterator_type typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
difference_type typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
equal(const self_type &rhs) const (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
iterator_category typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
less_than(const self_type &rhs) const (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
operator*() const (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
operator++() (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
operator+=(difference_type n) (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
operator-(const self_type &rhs) const (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
operator--() (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
operator-=(difference_type n) (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >inline
pointer typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
reference typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
self_type typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
subiterator_type typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
value_type typedef (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
xbounded_iterator()=default (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
xbounded_iterator(It it, BIt bound_it) (defined in xt::xbounded_iterator< It, BIt >)xt::xbounded_iterator< It, BIt >
+
+ + + + diff --git a/classxt_1_1xbounded__iterator.html b/classxt_1_1xbounded__iterator.html new file mode 100644 index 000000000..7b1f856cc --- /dev/null +++ b/classxt_1_1xbounded__iterator.html @@ -0,0 +1,579 @@ + + + + + + + +xtensor: xt::xbounded_iterator< It, BIt > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xbounded_iterator< It, BIt > Class Template Reference
+
+
+
+Inheritance diagram for xt::xbounded_iterator< It, BIt >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xbounded_iterator< It, BIt >
 
using subiterator_type = It
 
using bound_iterator_type = BIt
 
using value_type = typename std::iterator_traits< It >::value_type
 
using reference = typename std::iterator_traits< It >::reference
 
using pointer = typename std::iterator_traits< It >::pointer
 
using difference_type = typename std::iterator_traits< It >::difference_type
 
using iterator_category = std::random_access_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xbounded_iterator (It it, BIt bound_it)
 
self_typeoperator++ ()
 
self_typeoperator-- ()
 
self_typeoperator+= (difference_type n)
 
self_typeoperator-= (difference_type n)
 
difference_type operator- (const self_type &rhs) const
 
value_type operator* () const
 
bool equal (const self_type &rhs) const
 
bool less_than (const self_type &rhs) const
 
+

Detailed Description

+
template<class It, class BIt>
+class xt::xbounded_iterator< It, BIt >
+

Definition at line 356 of file xiterator.hpp.

+

Member Typedef Documentation

+ +

◆ bound_iterator_type

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::bound_iterator_type = BIt
+
+ +

Definition at line 368 of file xiterator.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::difference_type = typename std::iterator_traits<It>::difference_type
+
+ +

Definition at line 372 of file xiterator.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::iterator_category = std::random_access_iterator_tag
+
+ +

Definition at line 373 of file xiterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::pointer = typename std::iterator_traits<It>::pointer
+
+ +

Definition at line 371 of file xiterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::reference = typename std::iterator_traits<It>::reference
+
+ +

Definition at line 370 of file xiterator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::self_type = xbounded_iterator<It, BIt>
+
+ +

Definition at line 365 of file xiterator.hpp.

+ +
+
+ +

◆ subiterator_type

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::subiterator_type = It
+
+ +

Definition at line 367 of file xiterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class It , class BIt >
+ + + + +
using xt::xbounded_iterator< It, BIt >::value_type = typename std::iterator_traits<It>::value_type
+
+ +

Definition at line 369 of file xiterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xbounded_iterator()

+ +
+
+
+template<class It , class BIt >
+ + + + + + + + + + + + + + + + + + +
xt::xbounded_iterator< It, BIt >::xbounded_iterator (It it,
BIt bound_it 
)
+
+ +

Definition at line 1227 of file xiterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ equal()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + + +
bool xt::xbounded_iterator< It, BIt >::equal (const self_typerhs) const
+
+inline
+
+ +

Definition at line 1279 of file xiterator.hpp.

+ +
+
+ +

◆ less_than()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + + +
bool xt::xbounded_iterator< It, BIt >::less_than (const self_typerhs) const
+
+inline
+
+ +

Definition at line 1285 of file xiterator.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + +
auto xt::xbounded_iterator< It, BIt >::operator* () const
+
+inline
+
+ +

Definition at line 1272 of file xiterator.hpp.

+ +
+
+ +

◆ operator++()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + +
auto xt::xbounded_iterator< It, BIt >::operator++ ()
+
+inline
+
+ +

Definition at line 1234 of file xiterator.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + + +
auto xt::xbounded_iterator< It, BIt >::operator+= (difference_type n)
+
+inline
+
+ +

Definition at line 1250 of file xiterator.hpp.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + + +
auto xt::xbounded_iterator< It, BIt >::operator- (const self_typerhs) const
+
+inline
+
+ +

Definition at line 1266 of file xiterator.hpp.

+ +
+
+ +

◆ operator--()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + +
auto xt::xbounded_iterator< It, BIt >::operator-- ()
+
+inline
+
+ +

Definition at line 1242 of file xiterator.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<class It , class BIt >
+ + + + + +
+ + + + + + + + +
auto xt::xbounded_iterator< It, BIt >::operator-= (difference_type n)
+
+inline
+
+ +

Definition at line 1258 of file xiterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xbounded__iterator.png b/classxt_1_1xbounded__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..3f28d56eeef4ffc2866f1756a5260dbdf7bd7aef GIT binary patch literal 2049 zcmd5+YgAI{8s3;$IiohsXh%J2C5}tY(I&Ojj2x?xvCs@eM-j6V%ym-|IYb&z8~Ly_Vd2$`M&qr z`+d)cp}sXUwJ`+%zzi9DFdP7kIS>xpxDMK9geGaw!#3;)`jB3)hv3}nca*}e+P$7G zDSs<|G}qD50rAIKL${&Wru1;saR7QZtUX3$!vL_M0C_MFoe5J`493rbTZ|K9QEGk8 z($V-3qfJgfv05%jm6&@w4tREioxTOSqA_PdFbrb}f?wvbs<$BnS!dwuk)`>9?+n0{ z<>i=K1Tm(pFW^5Oe(GufF2Rz5ZVbe@1czU)ww5)|D`!euvinkM9ruU3BG-u$CZyz0 zi{HIY*G}bNt(Ie3d^EDt0JkRAw(W; z1@nP!tDj*R#N{>)uc1dW*Q3}~$kDB!NtSBzzu*B~Lyy8)s(m4>)o$Ah91>BXLoa0nTJWpr zP8tDqfA=a-s1y%kTrbwi|FLMs%jc$0AIqx|6TC~*S$h*ji2N2p#m_osJD9P=ManUf1);#c>agNQ)f~GclwXUNyih*K@AoOfrB_|4%w{uJ9L{-S z9<@*%Bd+sXAq+ zDdmuy7fU%jUSDA3r3Ky3b-nn)jG<0v@u-SQr#YYDaOVlC$Rl|ck(G|$UR2i=^mp%( zo|MjU=1OPI1?`-zgs0*IdeA0Jo^|u|OI*bM=Q|6z2|*=0|InCaCgDe~M_}#lr8PZq z!rECjt2-Wk611+;Lmn|M%3@LRlPFRB)_6bd?Q#J)uo6^^h%CfaxnC3Mo|!Sno@;O1 ztX|M4j{7dQe4v+<5BQ3!IKt0;uq-o+@exLpd>ThVL~C6Z_j_Gr)d}V&5-YR%M3KBs zbML1K&RUlA3t&?9tpK(^)?Fw}9{0;)pzl_AM4!H@8CS*91!m>i z`#NO=QhBK>CW z5NP-Fa!wNAze*RI*Lr&O!bIaUhfwwh;)mW^Z|Vq`11}u8MjHXxHsHv^GH{2RA+;mD8?#0k z=lY(%0~j3uHUhi1U_a&);Qz^g6dbeuqwJMGWgSy3*K%QT&_wzu1kED=wkBkKo&y;D zKMUcj|7zWrc@4@qc_%L~d4v3VzM$6t%y|LO)P)#xo?Q|hs?h-a$5c?25aU0VQLlvR zO!ChxHo>1dgl`XMTlLO<_lr4oaag<9$b~XgiJxI*8SmY(6(UV8G)bS;Br_rP2S?4w z?fqYn_3V854AYO@6^&Fkwd#%u(Tvt#t(tD(j1_Zj9AP|k;3^0mwko+AAQ){Qmy3k7 zacTxXN_y92l9V_yh)GN>KP9h2#XwshbCb>FT@>w^PsRxCRVTUcJ-MBcngm6T8p2c@ zC9U@{ri?_gpkpcXvKEjZ4Mn$e8FSULL*-x-9-$ zi_Q0Kt%!vpipO4t&9#NySZ^{zX^2-C;zv;qKShpE-UhkzQ9gVE4mVq2VKqCU6N&3w zl#Y=TRI+}MTYLj@GCRuP;%YH+$2jEPc7wgTO%$z6wFhaxM(z5a9AC3OP7eK~G6U%3 x5#dl7AHU$h!!iyCeuKf>22C-Tn_$9Mx(zVv!OCJM!sh_AkcUtQx!=T{`8U?L+GGF# literal 0 HcmV?d00001 diff --git a/classxt_1_1xbroadcast-members.html b/classxt_1_1xbroadcast-members.html new file mode 100644 index 000000000..9ce7c9d7d --- /dev/null +++ b/classxt_1_1xbroadcast-members.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xbroadcast< CT, X > Member List
+
+
+ +

This is the complete list of members for xt::xbroadcast< CT, X >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
assign_to(xexpression< E > &e) const (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >inline
at(Args... args) const -> const_referencext::xconst_accessible< xbroadcast< CT, X > >inline
back() constxt::xconst_accessible< xbroadcast< CT, X > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
bool_load_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xbroadcast< CT, X >inline
build_broadcast(E &&e) const (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
build_broadcast(E &&e) const -> rebind_t< E > (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >inline
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
const_pointer typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
const_reference typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
const_stepper typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
contiguous_layout (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >static
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
xsharable_expression< xbroadcast< CT, X > >::derived_cast() &noexceptxt::xexpression< D >inline
xsharable_expression< xbroadcast< CT, X > >::derived_cast() const &noexceptxt::xexpression< D >inline
xsharable_expression< xbroadcast< CT, X > >::derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
difference_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
dimension() const noexceptxt::xconst_accessible< xbroadcast< CT, X > >inline
element(It first, It last) const (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
element(It, It last) const -> const_referencext::xbroadcast< CT, X >inline
end() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
expression() const noexceptxt::xbroadcast< CT, X >inline
expression_tag typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
extension_base typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
front() constxt::xconst_accessible< xbroadcast< CT, X > >inline
has_linear_assign(const S &strides) const noexceptxt::xbroadcast< CT, X >inline
in_bounds(Args... args) constxt::xconst_accessible< xbroadcast< CT, X > >inline
inner_shape_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
inner_types typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
is_contiguous() const noexcept (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >inline
iterable_base typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
layout() const noexceptxt::xbroadcast< CT, X >inline
operator()(Args... args) const (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
operator()(Args... args) const -> const_referencext::xbroadcast< CT, X >inline
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xconst_accessible< xbroadcast< CT, X > >inline
periodic(Args... args) const -> const_referencext::xconst_accessible< xbroadcast< CT, X > >inline
pointer typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
rebind_t typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
reference typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xbroadcast< CT, X > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xbroadcast< CT, X > >inline
self_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
shape() const noexceptxt::xbroadcast< CT, X >inline
shape(size_type index) constxt::xbroadcast< CT, X >inline
shape_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
size() const noexceptxt::xbroadcast< CT, X >inline
size_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
static_layout (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >static
stepper typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
stepper_begin(const S &shape) const noexcept (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >inline
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >inline
unchecked(Args... args) const (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
unchecked(Args... args) const -> const_referencext::xbroadcast< CT, X >inline
value_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
xbroadcast(CTA &&e, const S &s)xt::xbroadcast< CT, X >inline
xbroadcast(CTA &&e, shape_type &&s)xt::xbroadcast< CT, X >inline
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression_type typedef (defined in xt::xbroadcast< CT, X >)xt::xbroadcast< CT, X >
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
+
+ + + + diff --git a/classxt_1_1xbroadcast.html b/classxt_1_1xbroadcast.html new file mode 100644 index 000000000..c5acd5635 --- /dev/null +++ b/classxt_1_1xbroadcast.html @@ -0,0 +1,1624 @@ + + + + + + + +xtensor: xt::xbroadcast< CT, X > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xbroadcast< CT, X > Class Template Reference
+
+
+ +

Broadcasted xexpression to a specified shape. + More...

+ +

#include <xbroadcast.hpp>

+
+Inheritance diagram for xt::xbroadcast< CT, X >:
+
+
+ + +xt::xsharable_expression< xbroadcast< CT, X > > +xt::xconst_iterable< xbroadcast< CT, X > > +xt::xconst_accessible< xbroadcast< CT, X > > +xt::xexpression< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xbroadcast< CT, X >
 
using xexpression_type = std::decay_t< CT >
 
using accessible_base = xconst_accessible< self_type >
 
using extension_base = extension::xbroadcast_base_t< CT, X >
 
using expression_tag = typename extension_base::expression_tag
 
using inner_types = xcontainer_inner_types< self_type >
 
using value_type = typename xexpression_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename xexpression_type::const_pointer
 
using const_pointer = typename xexpression_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using iterable_base = xconst_iterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = inner_shape_type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using bool_load_type = typename xexpression_type::bool_load_type
 
template<class E >
using rebind_t = xbroadcast< E, X >
 
- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
- Public Types inherited from xt::xconst_iterable< xbroadcast< CT, X > >
using derived_type = xbroadcast< CT, X >
 
using iterable_types = xiterable_inner_types< xbroadcast< CT, X > >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
using broadcast_iterator = xiterator< stepper, S, L >
 
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xconst_accessible< xbroadcast< CT, X > >
using derived_type = xbroadcast< CT, X >
 
using inner_types = xcontainer_inner_types< xbroadcast< CT, X > >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class E >
rebind_t< E > build_broadcast (E &&e) const
 
size_type size () const noexcept
 Returns the size of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
Constructor
template<class CTA , class S >
 xbroadcast (CTA &&e, const S &s)
 Constructs an xbroadcast expression broadcasting the specified xexpression to the given shape.
 
template<class CTA >
 xbroadcast (CTA &&e, shape_type &&s)
 Constructs an xbroadcast expression broadcasting the specified xexpression to the given shape.
 
Size and shape
const inner_shape_type & shape () const noexcept
 Returns the shape of the expression.
 
layout_type layout () const noexcept
 Returns the layout_type of the expression.
 
bool is_contiguous () const noexcept
 
Data
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the broadcast expression.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class It >
auto element (It, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
Broadcasting
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xbroadcast can be linearly assigned to an expression with the specified strides.
 
template<class E , class XCT = CT, class = std::enable_if_t<xt::is_xscalar<XCT>::value>>
void assign_to (xexpression< E > &e) const
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class E >
auto build_broadcast (E &&e) const -> rebind_t< E >
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
- Public Member Functions inherited from xt::xconst_iterable< xbroadcast< CT, X > >
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+const_layout_iterator< L > cbegin () const noexcept
 
+const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+const_layout_iterator< L > cend () const noexcept
 
+const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xconst_accessible< xbroadcast< CT, X > >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = layout_type::dynamic
 
static constexpr bool contiguous_layout = false
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xsharable_expression< xbroadcast< CT, X > >
xsharable_expression (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
- Protected Member Functions inherited from xt::xconst_iterable< xbroadcast< CT, X > >
const inner_shape_type & get_shape () const
 
- Protected Member Functions inherited from xt::xconst_accessible< xbroadcast< CT, X > >
xconst_accessible (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+

Detailed Description

+
template<class CT, class X>
+class xt::xbroadcast< CT, X >

Broadcasted xexpression to a specified shape.

+

The xbroadcast class implements the broadcasting of an xexpression to a specified shape. xbroadcast is not meant to be used directly, but only with the broadcast helper functions.

+
Template Parameters
+ + + +
CTthe closure type of the xexpression to broadcast
Xthe type of the specified shape.
+
+
+
See also
broadcast
+ +

Definition at line 135 of file xbroadcast.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::accessible_base = xconst_accessible<self_type>
+
+ +

Definition at line 144 of file xbroadcast.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::bool_load_type = typename xexpression_type::bool_load_type
+
+ +

Definition at line 164 of file xbroadcast.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::const_pointer = typename xexpression_type::const_pointer
+
+ +

Definition at line 153 of file xbroadcast.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 151 of file xbroadcast.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 162 of file xbroadcast.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 155 of file xbroadcast.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 146 of file xbroadcast.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::extension_base = extension::xbroadcast_base_t<CT, X>
+
+ +

Definition at line 145 of file xbroadcast.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 158 of file xbroadcast.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 148 of file xbroadcast.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::iterable_base = xconst_iterable<self_type>
+
+ +

Definition at line 157 of file xbroadcast.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::pointer = typename xexpression_type::const_pointer
+
+ +

Definition at line 152 of file xbroadcast.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class CT , class X >
+
+template<class E >
+ + + + +
using xt::xbroadcast< CT, X >::rebind_t = xbroadcast<E, X>
+
+ +

Definition at line 207 of file xbroadcast.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::reference = typename inner_types::reference
+
+ +

Definition at line 150 of file xbroadcast.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::self_type = xbroadcast<CT, X>
+
+ +

Definition at line 142 of file xbroadcast.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::shape_type = inner_shape_type
+
+ +

Definition at line 159 of file xbroadcast.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::size_type = typename inner_types::size_type
+
+ +

Definition at line 154 of file xbroadcast.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 161 of file xbroadcast.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::value_type = typename xexpression_type::value_type
+
+ +

Definition at line 149 of file xbroadcast.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class X >
+ + + + +
using xt::xbroadcast< CT, X >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 143 of file xbroadcast.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xbroadcast() [1/2]

+ +
+
+
+template<class CT , class X >
+
+template<class CTA , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xbroadcast< CT, X >::xbroadcast (CTA && e,
const S & s 
)
+
+inline
+
+ +

Constructs an xbroadcast expression broadcasting the specified xexpression to the given shape.

+
Parameters
+ + + +
ethe expression to broadcast
sthe shape to apply
+
+
+ +

Definition at line 265 of file xbroadcast.hpp.

+ +
+
+ +

◆ xbroadcast() [2/2]

+ +
+
+
+template<class CT , class X >
+
+template<class CTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xbroadcast< CT, X >::xbroadcast (CTA && e,
shape_type && s 
)
+
+inline
+
+ +

Constructs an xbroadcast expression broadcasting the specified xexpression to the given shape.

+
Parameters
+ + + +
ethe expression to broadcast
sthe shape to apply
+
+
+ +

Definition at line 286 of file xbroadcast.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign_to()

+ +
+
+
+template<class CT , class X >
+
+template<class E , class XCT , class >
+ + + + + +
+ + + + + + + + +
void xt::xbroadcast< CT, X >::assign_to (xexpression< E > & e) const
+
+inline
+
+ +

Definition at line 444 of file xbroadcast.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT , class X >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xbroadcast< CT, X >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the function to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 405 of file xbroadcast.hpp.

+ +
+
+ +

◆ build_broadcast()

+ +
+
+
+template<class CT , class X >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xbroadcast< CT, X >::build_broadcast (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 453 of file xbroadcast.hpp.

+ +
+
+ +

◆ element()

+ +
+
+
+template<class CT , class X >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xbroadcast< CT, X >::element (It ,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the function.
+
+
+ +

Definition at line 377 of file xbroadcast.hpp.

+ +
+
+ +

◆ expression()

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
auto xt::xbroadcast< CT, X >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the broadcast expression.

+ +

Definition at line 386 of file xbroadcast.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT , class X >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xbroadcast< CT, X >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Checks whether the xbroadcast can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 417 of file xbroadcast.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
bool xt::xbroadcast< CT, X >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 318 of file xbroadcast.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
layout_type xt::xbroadcast< CT, X >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout_type of the expression.

+ +

Definition at line 312 of file xbroadcast.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class CT , class X >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xbroadcast< CT, X >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the function. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the expression.
+
+
+ +

Definition at line 337 of file xbroadcast.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
auto xt::xbroadcast< CT, X >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the expression.

+ +

Definition at line 303 of file xbroadcast.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 41 of file xaccessible.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the size of the expression.

+ +

Definition at line 39 of file xaccessible.hpp.

+ +
+
+ +

◆ stepper_begin()

+ +
+
+
+template<class CT , class X >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xbroadcast< CT, X >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 428 of file xbroadcast.hpp.

+ +
+
+ +

◆ stepper_end()

+ +
+
+
+template<class CT , class X >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xbroadcast< CT, X >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 436 of file xbroadcast.hpp.

+ +
+
+ +

◆ unchecked()

+ +
+
+
+template<class CT , class X >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xbroadcast< CT, X >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the expression, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 363 of file xbroadcast.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + +
constexpr bool xt::xbroadcast< CT, X >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 167 of file xbroadcast.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT , class X >
+ + + + + +
+ + + + +
constexpr layout_type xt::xbroadcast< CT, X >::static_layout = layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 166 of file xbroadcast.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xbroadcast.js b/classxt_1_1xbroadcast.js new file mode 100644 index 000000000..93ffc1ee2 --- /dev/null +++ b/classxt_1_1xbroadcast.js @@ -0,0 +1,15 @@ +var classxt_1_1xbroadcast = +[ + [ "xbroadcast", "classxt_1_1xbroadcast.html#aebbad01548cd2a4f5955c20f813b6314", null ], + [ "xbroadcast", "classxt_1_1xbroadcast.html#ad96d515ec253f2745da1ccd7cbf44c97", null ], + [ "broadcast_shape", "classxt_1_1xbroadcast.html#ad91b61dbfe7d500131c6f001aa0461e6", null ], + [ "element", "classxt_1_1xbroadcast.html#a0c5eeee79d7da9ebbe4bab731e7bdbdf", null ], + [ "expression", "classxt_1_1xbroadcast.html#a11fafd46c5300907473db9afddfb5969", null ], + [ "has_linear_assign", "classxt_1_1xbroadcast.html#afa95389819f8e9168213041757730903", null ], + [ "layout", "classxt_1_1xbroadcast.html#aca1bb5d073d6fbbfec6e82cbc456cadd", null ], + [ "operator()", "classxt_1_1xbroadcast.html#afca42261ce09c53e109862b63ea8bf87", null ], + [ "shape", "classxt_1_1xbroadcast.html#ab55ff6c03aac9708dd319a0936a3fd18", null ], + [ "shape", "classxt_1_1xbroadcast.html#aec0ae6f83f7e86f32e083cb6714af552", null ], + [ "size", "classxt_1_1xbroadcast.html#a2f23977016e337e834dfdc912d1fc435", null ], + [ "unchecked", "classxt_1_1xbroadcast.html#aecb99b5176966ab47f4dfe2b66385d56", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xbroadcast.png b/classxt_1_1xbroadcast.png new file mode 100644 index 0000000000000000000000000000000000000000..92417950eeb00505a49923a2a0ee6c55e9ad4fe7 GIT binary patch literal 3257 zcmd5^ZFI`7+{v^wSy!!`1gG-CD2h4dh!UC>exsgBt=M$Z zZ5Z>jCN(dCm4K!QDr<~mD28B?ibiQcexi|rx)+@JW6zmAJA2NaJ^TLg@^F9e$MZbz zdw+o0UN&%)5? zfkz(_5dH2qntX{I1Xuo=N1HBX-6QUqLS&Pd7tf4Lxo+Pfxu~cAew-uFt|q-hRW6+N zsQ*x^E@bZbb584^Slqd;mh;%AXZ-+4xVrrA#B5sAbZ>ZXJl83t!KVX%g{LR%n{J#x z`w(kvVEBReT#O_z*l?Hl^}*)d;~t_z^9%8pqhBlEkZxeGim$mZ7U>bCPwzMznVm|o zrV~PkNQCTK3TRIIqU8J7q*UY)6mYB}y~khW{mcf>H)cE0wCg@Eg^9%zQt(2Jxk^45 zMY~3pG@H-`VogkpU2C7XE*dz*biL-N3#G;vZ5cacsd_h;=oT$62qop;Kpu{q$^3q~ zgBrJ(fs@>l4xp;d@xD2F>IN!R**rDXot2d4?EOharx0*v)|GE>PW9@bDsTOLYEQ(&!vkoBbVa z4-bSoj_8mQtqVryQvaxX-hNek@_N5_SesV12A*4+^nVKG42o4m+a>n2^acy+Uj$-^ zQq`pQoV=N495Fzc7NCG!5F7|1M*+Y+FdaSzf^jh*HOeY)uL*bN7L@L|Vka&LCKsUq zz^hNZ*Tm0D`+C`j<^jOuu6hW$qa6+PAP9eCLIEX#7zpu4bN8A+Jph!R*@^@h#VqKs zt}^qYtR$gW3Iz;%6y`}y8?FN5F6H(7^Q#vxb74O)dBIJkYgo|w4%P-Eurd%_{~~QU zFbDvgywrN6U1>RQ!*5_St|XQ@&waL`_3h!#+~*YpRL3!Si|mlKS}!5u~*{l$9tw` z8d9IpcaGZSo&*@9a7^}Qp|IGgQsGve6?!gGB!24?Z_!kiHHBC|!Hv%T2I=j_YkeKl zUM-UCeS2^>s~pqfjEh-lQ07wD09qtcOlBn$OH|4ue2w$)M9r8I|0D{K?f^BXFh^=)0WDVv^?gUH63?~xMPrp1N`vtj@TTb z`P^hUGvjz>!^pCy&3VSTI5O{wpNBUymXy(AijR1DU~7t1UQ}@lb9-cMZFgWNoj-To zr?~PIcQftxo+QJbU-a^h?t2_k2lu+=1>Hcw4?n zEg09X!r}&#=E93zY);BihAIG0T!AwPkFydQobmi8O^is5pm@InV}OJvmE??I75zz8 zc|7qh8Wd<{O>J*?k_(k+Ug>jH>1G*8?@UR=KVsXA)pch+3kJj3q~K$xU$X+yl+Cny zUcfiXiiCAOr#u0`c;xj0%FS7_Kd3Hp^AL(bfDJX)!D~8?;rVej-nPiYWjIB^WNRmj z+sqvIIa@6DLz9C=XJ3cANO6jh(ZRrhc9+W9iMM?Kys`64Iid??H^iw?kTQLq5$|8$ z@c!#`238S$nPU7hmuYR_6Rz9x)k2CJwY!=U7SC~Pf(ei*p_3Eb;v`I*LOc-~QQT91 zr0mCNYVzB<{L3^>%Wdl6*h4r42)-bB#$-+)GhiH+I^*^H@Q}@j^`WI<>F^!p%XRMM zLY!TA{P;l`IoDAr3rSnWBC=w$0D#efqA&bm>=n~?6RS)!(PmM&Xuo#Ht9;SfW4FT>F#*HIF=~gmjnpX+NEh_Ph0mLAMP|G4=-pgG#yp+5l(oL1?MNJJY#+0_&#$< zcmhNckz+Lwb=baC6th7&Z}AzPq2u_m1nJ-^8k21UrPLjwBFbWStpOS}EbMf0*Vg?zsT~e^HpB`Bc)(z5;QQ<=Ms$8*#)2CJ0u1Fcnfk`6sZu z&|cX^uK+;QUJ=m4I!LVZ zqOcCylC!J(0SK0Bmq5@V&jbi)J|pluh(Nu%pu$#;#aZRuF8@{LbigkVrTLI>@d)}Z zN~$8hQM0rC=HzO2Ld+d1P0=hMM5un}X>Ds(b@kQy$z85khqQM4s~aFn6(Hs=CKp+r zot?c=R(11VfQeu1KHzKDW&HDa_{Ur5#jL9Gwb46v`g;93^n91w{|^ zD4TzPN&UPp0#nZ*JRFKSpYeU*pgAY&VE_93z5XP8aQ?cKNUaX6&?`eC5`N=6;^u>&V^%|)1$ z^`w_eNFfcmREicngZ4P&rewoSJ%?Kb;!Q`_q~t_Cov?oZh^)*f!ChJuiwu5s-^sCS zIlt(;#BIC;olJT^euS*{ERYq>+K!~HX}EfkI6F + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xbuffer_adaptor< CP, O, A > Member List
+
+
+ +

This is the complete list of members for xt::xbuffer_adaptor< CP, O, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
base_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
buffer_base_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
const_iterator typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
const_pointer typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
const_reference typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
const_reverse_iterator typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
destructor_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
difference_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
iterator typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
operator=(const self_type &)=default (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
operator=(self_type &&)=default (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
operator=(temporary_type &&) (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >inline
pointer typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
reference typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
reverse_iterator typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
self_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
size_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
temporary_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
value_type typedef (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
xbuffer_adaptor()=default (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
xbuffer_adaptor(const self_type &)=default (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
xbuffer_adaptor(self_type &&)=default (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
~xbuffer_adaptor()=default (defined in xt::xbuffer_adaptor< CP, O, A >)xt::xbuffer_adaptor< CP, O, A >
+
+ + + + diff --git a/classxt_1_1xbuffer__adaptor.html b/classxt_1_1xbuffer__adaptor.html new file mode 100644 index 000000000..b124f8b67 --- /dev/null +++ b/classxt_1_1xbuffer__adaptor.html @@ -0,0 +1,608 @@ + + + + + + + +xtensor: xt::xbuffer_adaptor< CP, O, A > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xbuffer_adaptor< CP, O, A > Class Template Reference
+
+
+
+Inheritance diagram for xt::xbuffer_adaptor< CP, O, A >:
+
+
+ + +xt::xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xbuffer_adaptor< CP, O, A >
 
using base_type = detail::buffer_storage_t< CP, A, O >
 
using buffer_base_type = xbuffer_adaptor_base< self_type >
 
using allocator_type = typename base_type::allocator_type
 
using destructor_type = typename base_type::destructor_type
 
using value_type = typename buffer_base_type::value_type
 
using reference = typename buffer_base_type::reference
 
using const_reference = typename buffer_base_type::const_reference
 
using pointer = typename buffer_base_type::pointer
 
using const_pointer = typename buffer_base_type::const_pointer
 
using size_type = typename buffer_base_type::size_type
 
using difference_type = typename buffer_base_type::difference_type
 
using iterator = typename buffer_base_type::iterator
 
using const_iterator = typename buffer_base_type::const_iterator
 
using reverse_iterator = typename buffer_base_type::reverse_iterator
 
using const_reverse_iterator = typename buffer_base_type::const_reverse_iterator
 
using temporary_type = uvector< value_type, allocator_type >
 
- Public Types inherited from xt::xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >
using self_type = xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >
 
using derived_type = xbuffer_adaptor< CP, O, A >
 
using inner_types = buffer_inner_types< xbuffer_adaptor< CP, O, A > >
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename inner_types::pointer
 
using const_pointer = typename inner_types::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename inner_types::difference_type
 
using iterator = typename inner_types::iterator
 
using const_iterator = typename inner_types::const_iterator
 
using reverse_iterator = typename inner_types::reverse_iterator
 
using const_reverse_iterator = typename inner_types::const_reverse_iterator
 
using index_type = typename inner_types::index_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xbuffer_adaptor (const self_type &)=default
 
+self_typeoperator= (const self_type &)=default
 
xbuffer_adaptor (self_type &&)=default
 
+xbuffer_adaptoroperator= (self_type &&)=default
 
self_typeoperator= (temporary_type &&)
 
- Public Member Functions inherited from xt::xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >
bool empty () const noexcept
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
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
 
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >
xbuffer_adaptor_base (const self_type &)=default
 
xbuffer_adaptor_base (self_type &&)=default
 
+self_typeoperator= (const self_type &)=default
 
+self_typeoperator= (self_type &&)=default
 
+

Detailed Description

+
template<class CP, class O, class A>
+class xt::xbuffer_adaptor< CP, O, A >
+

Definition at line 365 of file xbuffer_adaptor.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::allocator_type = typename base_type::allocator_type
+
+ +

Definition at line 373 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::base_type = detail::buffer_storage_t<CP, A, O>
+
+ +

Definition at line 371 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ buffer_base_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::buffer_base_type = xbuffer_adaptor_base<self_type>
+
+ +

Definition at line 372 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::const_iterator = typename buffer_base_type::const_iterator
+
+ +

Definition at line 383 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::const_pointer = typename buffer_base_type::const_pointer
+
+ +

Definition at line 379 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::const_reference = typename buffer_base_type::const_reference
+
+ +

Definition at line 377 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::const_reverse_iterator = typename buffer_base_type::const_reverse_iterator
+
+ +

Definition at line 385 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ destructor_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::destructor_type = typename base_type::destructor_type
+
+ +

Definition at line 374 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::difference_type = typename buffer_base_type::difference_type
+
+ +

Definition at line 381 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::iterator = typename buffer_base_type::iterator
+
+ +

Definition at line 382 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::pointer = typename buffer_base_type::pointer
+
+ +

Definition at line 378 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::reference = typename buffer_base_type::reference
+
+ +

Definition at line 376 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::reverse_iterator = typename buffer_base_type::reverse_iterator
+
+ +

Definition at line 384 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::self_type = xbuffer_adaptor<CP, O, A>
+
+ +

Definition at line 370 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::size_type = typename buffer_base_type::size_type
+
+ +

Definition at line 380 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::temporary_type = uvector<value_type, allocator_type>
+
+ +

Definition at line 386 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CP , class O , class A >
+ + + + +
using xt::xbuffer_adaptor< CP, O, A >::value_type = typename buffer_base_type::value_type
+
+ +

Definition at line 375 of file xbuffer_adaptor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator=()

+ +
+
+
+template<class CP , class O , class A >
+ + + + + +
+ + + + + + + + +
auto xt::xbuffer_adaptor< CP, O, A >::operator= (temporary_type && tmp)
+
+inline
+
+ +

Definition at line 1059 of file xbuffer_adaptor.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xbuffer__adaptor.png b/classxt_1_1xbuffer__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..a3ff6ab800c16257daa3b8f5c27326b9a780e3bc GIT binary patch literal 1756 zcmah~c~nwa7=Mz@WM;XQPMI2+Nu@1jmW8%pZs9@_X;70k+KB|Q@D<{gW}s7OIyNrl z%((VEV5JFe2l7bHsAZ*SDr#XSso@sl&OB>6^IzR_?!CXeeB1B4-??mWPZyo#YnKB6 zpyTF>!2tk50AufEOW;wQKG_9N>%5QoI;+)c7|Ms0bWUyI-W{k=<2y}qkw^sZAHUsF z1fOYL#(5qG;PvNbkH~5TfFFY0Fo%4vXnef;A$(}hiXU!-a$;4{GXMQX9k(vUzJr`= zA37(Vs(o1~OvAb3+)=y-YAJ<(Dy*uT!t?gU8{qLS7ii8HeLX!F91)L?#u4>W4t^V% zh|!i8c$4mY?+iuF$+@^l9a3Xo@ciHidZ-v0{M(k6#PZEAaU3*2BE5c6Z6bamh2@HWnqG3z@ual!mCf#?d}!uZCtZ+7Z9XQvsGegA(xE}4sdT}_KZ&er zi_^sRNMBV!{aN|m@?#QyV+4EFm21~G$g!dE3#P-)4!t&(U>`}lc*WOmHTg<%%Qy{W zT6<P#yWBdg=JLF}hTdMGnvkAJBdRfDZpK3Wc5Jtg zbYn~9p!Qiz-j%7fZyW8~zwK=cQIgTPhfp*j?6C8B}j1?tbrJsc6#bbSZVu5>UnKhfO6)FX`## z?G_5Fj-6$>Bsob2T{u3uO?|x%?O9%YZ!-zZEL<-{Dqi|?dxFlkI(ixqFqvUU#aQ@M zN*#A%lqjt^O<%9ct6z=(C_ifNSYEr5k&{@ZqDv+*(tfK`M(Lxc8ixp%`;Y$8uybZ^ zX_p7ykEm@>&N)&+zw0BNe{M_jdQ3L}9mbSmA06?nkdsC}X*hXqK)Q_S6Y$EyDQ0~iOD<&S5-@dH_Q6|`;~Sa5W}5>YGv8D7LB^*Z z@tJjbXN*Vp_f)d07T8GS#=>XYU05t;QnP9Uay;8fImuwJ8xMeWZGxGwNN!{oLkx{5 z3|tKAttcJ@IiYwgSMzV9RWuLOCRDzm*A^O;-(_9VO|ka^c(qP|*1;8EjHc)}LnHHK zLnG1M=mob+8nuGn79v2!5o6$T13=TBf(pRrKsEM~Mz$MG0|9san52|W#8m24ZC%$y z?PP$M2n**N`z#Qn`39FK02a>45Sq7T2n*m2QoM9@v%zNz<{AP+lue9Nh5(3Nyd)h_ zMT7}^M|=PaKuvzNSXplUc`}-YnA_fA+oJg^zoNrD+@Xmgtc;M9l`)+xL&VFXFGiGy zON?Zhet5`q{y`9CV0O)GE}JUW@v#>#UDi(!ldQ@5VH7ChfFA!P7c1q8X8h+~XR4Y^$}%(85C%?9s2muRpb4#dp*a_EUxKm` zHS02>f`V2ugE^Z6qei_J`Iz>oyBk3BIBHv(Kph?fYv8?r=@Ls`M#l)8=J+r)s;Oxq pe9>PV(bjhH`F#s~O{k4n*mnNY(l<=09R7y@H)l@_@9@vp{sq(nR}cUI literal 0 HcmV?d00001 diff --git a/classxt_1_1xbuffer__adaptor__base-members.html b/classxt_1_1xbuffer__adaptor__base-members.html new file mode 100644 index 000000000..6a8e48c4c --- /dev/null +++ b/classxt_1_1xbuffer__adaptor__base-members.html @@ -0,0 +1,149 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xbuffer_adaptor_base< D > Member List
+
+
+ +

This is the complete list of members for xt::xbuffer_adaptor_base< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
back() (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
back() const (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
begin() noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
begin() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
cbegin() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
cend() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
const_iterator typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
const_pointer typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
const_reference typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
const_reverse_iterator typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
crbegin() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
crend() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
derived_cast() noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
derived_cast() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
derived_type typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
difference_type typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
empty() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
end() noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
end() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
front() (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
front() const (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
index_type typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
inner_types typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
iterator typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
operator=(const self_type &)=default (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >protected
operator=(self_type &&)=default (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >protected
operator[](size_type i) (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
operator[](size_type i) const (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
pointer typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
rbegin() noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
rbegin() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
reference typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
rend() noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
rend() const noexcept (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >inline
reverse_iterator typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
self_type typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
size_type typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
value_type typedef (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >
xbuffer_adaptor_base()=default (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >protected
xbuffer_adaptor_base(const self_type &)=default (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >protected
xbuffer_adaptor_base(self_type &&)=default (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >protected
~xbuffer_adaptor_base()=default (defined in xt::xbuffer_adaptor_base< D >)xt::xbuffer_adaptor_base< D >protected
+
+ + + + diff --git a/classxt_1_1xbuffer__adaptor__base.html b/classxt_1_1xbuffer__adaptor__base.html new file mode 100644 index 000000000..7aa4c5b12 --- /dev/null +++ b/classxt_1_1xbuffer__adaptor__base.html @@ -0,0 +1,1094 @@ + + + + + + + +xtensor: xt::xbuffer_adaptor_base< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xbuffer_adaptor_base< D > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xbuffer_adaptor_base< D >
 
using derived_type = D
 
using inner_types = buffer_inner_types< D >
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename inner_types::pointer
 
using const_pointer = typename inner_types::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename inner_types::difference_type
 
using iterator = typename inner_types::iterator
 
using const_iterator = typename inner_types::const_iterator
 
using reverse_iterator = typename inner_types::reverse_iterator
 
using const_reverse_iterator = typename inner_types::const_reverse_iterator
 
using index_type = typename inner_types::index_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool empty () const noexcept
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator begin () const 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
 
derived_type & derived_cast () noexcept
 
const derived_type & derived_cast () const noexcept
 
+ + + + + + + + + +

+Protected Member Functions

xbuffer_adaptor_base (const self_type &)=default
 
+self_typeoperator= (const self_type &)=default
 
xbuffer_adaptor_base (self_type &&)=default
 
+self_typeoperator= (self_type &&)=default
 
+

Detailed Description

+
template<class D>
+class xt::xbuffer_adaptor_base< D >
+

Definition at line 262 of file xbuffer_adaptor.hpp.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::const_iterator = typename inner_types::const_iterator
+
+ +

Definition at line 277 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::const_pointer = typename inner_types::const_pointer
+
+ +

Definition at line 273 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 271 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::const_reverse_iterator = typename inner_types::const_reverse_iterator
+
+ +

Definition at line 279 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::derived_type = D
+
+ +

Definition at line 267 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::difference_type = typename inner_types::difference_type
+
+ +

Definition at line 275 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ index_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::index_type = typename inner_types::index_type
+
+ +

Definition at line 280 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::inner_types = buffer_inner_types<D>
+
+ +

Definition at line 268 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::iterator = typename inner_types::iterator
+
+ +

Definition at line 276 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::pointer = typename inner_types::pointer
+
+ +

Definition at line 272 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::reference = typename inner_types::reference
+
+ +

Definition at line 270 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::reverse_iterator = typename inner_types::reverse_iterator
+
+ +

Definition at line 278 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::self_type = xbuffer_adaptor_base<D>
+
+ +

Definition at line 266 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::size_type = typename inner_types::size_type
+
+ +

Definition at line 274 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xbuffer_adaptor_base< D >::value_type = typename inner_types::value_type
+
+ +

Definition at line 269 of file xbuffer_adaptor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ back() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::back ()
+
+inline
+
+ +

Definition at line 898 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::back () const
+
+inline
+
+ +

Definition at line 904 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 922 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::begin ()
+
+inlinenoexcept
+
+ +

Definition at line 910 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 934 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 940 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ crbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 970 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ crend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::crend () const
+
+inlinenoexcept
+
+ +

Definition at line 976 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ derived_cast() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::derived_cast () const
+
+inlinenoexcept
+
+ +

Definition at line 988 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ derived_cast() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::derived_cast ()
+
+inlinenoexcept
+
+ +

Definition at line 982 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
bool xt::xbuffer_adaptor_base< D >::empty () const
+
+inlinenoexcept
+
+ +

Definition at line 868 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 928 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::end ()
+
+inlinenoexcept
+
+ +

Definition at line 916 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::front ()
+
+inline
+
+ +

Definition at line 886 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::front () const
+
+inline
+
+ +

Definition at line 892 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xbuffer_adaptor_base< D >::operator[] (size_type i)
+
+inline
+
+ +

Definition at line 874 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xbuffer_adaptor_base< D >::operator[] (size_type i) const
+
+inline
+
+ +

Definition at line 880 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ rbegin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 958 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ rbegin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 946 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ rend() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::rend () const
+
+inlinenoexcept
+
+ +

Definition at line 964 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ rend() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xbuffer_adaptor_base< D >::rend ()
+
+inlinenoexcept
+
+ +

Definition at line 952 of file xbuffer_adaptor.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xchunk__iterator-members.html b/classxt_1_1xchunk__iterator-members.html new file mode 100644 index 000000000..0393538a0 --- /dev/null +++ b/classxt_1_1xchunk__iterator-members.html @@ -0,0 +1,127 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xchunk_iterator< E > Member List
+
+
+ +

This is the complete list of members for xt::xchunk_iterator< E >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
base_type typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
chunk_index() const (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
difference_type typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
get_chunk_slice_vector() const (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
get_slice_vector() const (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
iterator_category typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
operator!=(const self_type &rhs) const (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
operator*() const (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
operator++() (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
operator++(int) (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
operator==(const self_type &rhs) const (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
pointer typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
reference typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
self_type typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
shape_type typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
size_type typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
slice_vector typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
value_type typedef (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
xchunk_iterator()=default (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >
xchunk_iterator(E &chunked_expression, shape_type &&chunk_index, size_type chunk_linear_index) (defined in xt::xchunk_iterator< E >)xt::xchunk_iterator< E >inline
+
+ + + + diff --git a/classxt_1_1xchunk__iterator.html b/classxt_1_1xchunk__iterator.html new file mode 100644 index 000000000..1ccd12f1b --- /dev/null +++ b/classxt_1_1xchunk__iterator.html @@ -0,0 +1,623 @@ + + + + + + + +xtensor: xt::xchunk_iterator< E > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xchunk_iterator< E > Class Template Reference
+
+
+
+Inheritance diagram for xt::xchunk_iterator< E >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using base_type = detail::xchunk_iterator_base< E >
 
using self_type = xchunk_iterator< E >
 
using size_type = typename E::size_type
 
using shape_type = typename E::shape_type
 
using slice_vector = xstrided_slice_vector
 
using reference = typename base_type::reference
 
using value_type = std::remove_reference_t< reference >
 
using pointer = value_type *
 
using difference_type = typename E::difference_type
 
using iterator_category = std::forward_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xchunk_iterator (E &chunked_expression, shape_type &&chunk_index, size_type chunk_linear_index)
 
self_typeoperator++ ()
 
self_type operator++ (int)
 
decltype(auto) operator* () const
 
bool operator== (const self_type &rhs) const
 
bool operator!= (const self_type &rhs) const
 
const shape_type & chunk_index () const
 
const slice_vector & get_slice_vector () const
 
slice_vector get_chunk_slice_vector () const
 
+

Detailed Description

+
template<class E>
+class xt::xchunk_iterator< E >
+

Definition at line 149 of file xchunked_assign.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::base_type = detail::xchunk_iterator_base<E>
+
+ +

Definition at line 153 of file xchunked_assign.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::difference_type = typename E::difference_type
+
+ +

Definition at line 162 of file xchunked_assign.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::iterator_category = std::forward_iterator_tag
+
+ +

Definition at line 163 of file xchunked_assign.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::pointer = value_type*
+
+ +

Definition at line 161 of file xchunked_assign.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::reference = typename base_type::reference
+
+ +

Definition at line 159 of file xchunked_assign.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::self_type = xchunk_iterator<E>
+
+ +

Definition at line 154 of file xchunked_assign.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::shape_type = typename E::shape_type
+
+ +

Definition at line 156 of file xchunked_assign.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::size_type = typename E::size_type
+
+ +

Definition at line 155 of file xchunked_assign.hpp.

+ +
+
+ +

◆ slice_vector

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::slice_vector = xstrided_slice_vector
+
+ +

Definition at line 157 of file xchunked_assign.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunk_iterator< E >::value_type = std::remove_reference_t<reference>
+
+ +

Definition at line 160 of file xchunked_assign.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xchunk_iterator()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xchunk_iterator< E >::xchunk_iterator (E & chunked_expression,
shape_type && chunk_index,
size_type chunk_linear_index 
)
+
+inline
+
+ +

Definition at line 274 of file xchunked_assign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ chunk_index()

+ +
+
+
+template<class E >
+ + + + + + + +
auto xt::xchunk_iterator< E >::chunk_index () const
+
+ +

Definition at line 345 of file xchunked_assign.hpp.

+ +
+
+ +

◆ get_chunk_slice_vector()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunk_iterator< E >::get_chunk_slice_vector () const
+
+inline
+
+ +

Definition at line 351 of file xchunked_assign.hpp.

+ +
+
+ +

◆ get_slice_vector()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunk_iterator< E >::get_slice_vector () const
+
+inline
+
+ +

Definition at line 339 of file xchunked_assign.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
bool xt::xchunk_iterator< E >::operator!= (const self_typerhs) const
+
+inline
+
+ +

Definition at line 333 of file xchunked_assign.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
decltype(auto) xt::xchunk_iterator< E >::operator* () const
+
+inline
+
+ +

Definition at line 321 of file xchunked_assign.hpp.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
xchunk_iterator< E > & xt::xchunk_iterator< E >::operator++ ()
+
+inline
+
+ +

Definition at line 287 of file xchunked_assign.hpp.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xchunk_iterator< E > xt::xchunk_iterator< E >::operator++ (int )
+
+inline
+
+ +

Definition at line 313 of file xchunked_assign.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
bool xt::xchunk_iterator< E >::operator== (const self_typerhs) const
+
+inline
+
+ +

Definition at line 327 of file xchunked_assign.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xchunk__iterator.png b/classxt_1_1xchunk__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..d2508b471770bf58691dbe24082d2562b3ba8bfe GIT binary patch literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^H-I>RgBeKr$a-f1Dd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=B-oo-U3d6^w7^zV3Uiz|+FM z^3s{#_8&73t3I1lW_c?u)n#gC@^OLs8yEI-D7J{UI!t<<**tNHdal8wFH6|o99r@2 zn6}}UZI^v{_I{X@vb2I_Qp(!M4Lfb3o|_-=C|bZ%Ruld0`Q6w5KFoRzK{D&zar=FXr9gw&YtGV`3!h;`17uTlVi)QUf_ka0(s_b6#vk^?M z(~J&#Yfod<|9EvvY1ZEfbqf3MYUKYmN`>*tR~JOcNc z|DKaO9eM2VDofGF-hBO)?$uhi3hx%p-g@eJ{4CpT)4qONp7iq7!IeKY|2Lcz<80n= z)b#JiY_-FlMN480f#JaGHfi3LgC3VA&r48j*|31&ftf8sg6mqYZxuRT+q7;>&i37u zdXOO@@NE@igZkSpvWUA;8wH#q0y!panP)abrScNnWEKBe?9#{i_fGws>BHmO-`B6= z``T{9&V};wo|mkB8)O@wbGd!~AY=YgeX3gY^EdkOob{0}_kF&{w`{>j(PEjXv`< + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xchunked_array< chunk_storage > Member List
+
+
+ +

This is the complete list of members for xt::xchunked_array< chunk_storage >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
at(Args... args) -> referencext::xaccessible< xchunked_array< chunk_storage > >inline
at(Args... args) const -> const_referencext::xaccessible< xchunked_array< chunk_storage > >inline
back()xt::xaccessible< xchunked_array< chunk_storage > >inline
back() constxt::xaccessible< xchunked_array< chunk_storage > >inline
begin() noexcept -> layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
broadcast_shape(S &s, bool reuse_cache=false) const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
cbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
cend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
chunk_begin() (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_begin() const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_cbegin() const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_cend() const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_end() (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_end() const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_iterator typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
chunk_shape() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunk_storage_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
chunk_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
chunks() (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
chunks() const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
const_chunk_iterator typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
const_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_pointer typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
const_reference typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
const_reverse_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_stepper typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
contiguous_layout (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >static
crbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
crend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
difference_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
dimension() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
element(It first, It last) const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
element(It first, It last) -> reference (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
element(It first, It last) const -> const_reference (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
end() noexcept -> layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
end() const noexcept -> const_layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
front()xt::xaccessible< xchunked_array< chunk_storage > >inline
front() constxt::xaccessible< xchunked_array< chunk_storage > >inline
get_cbegin(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cbegin(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_chunk_indexes(std::index_sequence< dims... >, Idxs... idxs) const -> chunk_indexes_type< Idxs... > (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
get_indexes(Idxs... idxs) const -> indexes_type< Idxs... > (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
get_indexes_dynamic(It first, It last) const -> dynamic_indexes_type (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
get_shape() const (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inlineprotected
grid_shape() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
grid_shape_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
grid_size() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
has_linear_assign(const S &strides) const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
in_bounds(Args... args) constxt::xconst_accessible< D >inline
inner_types typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
is_contiguous() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
iterable_base typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
iterable_types typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
layout() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Idxs... idxs) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
operator()(Idxs... idxs) const (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
operator()(Idxs... idxs) -> reference (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
operator()(Idxs... idxs) const -> const_reference (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xchunked_array &)=default (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
operator=(xchunked_array &&)=default (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
operator=(const xexpression< E > &e) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
operator=(const xexpression< E > &e) -> self_type & (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator[](const S &index) -> disable_integral_t< S, reference >xt::xaccessible< xchunked_array< chunk_storage > >inline
operator[](const S &index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](std::initializer_list< I > index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](size_type i) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xaccessible< xchunked_array< chunk_storage > >inline
periodic(Args... args) const -> const_referencext::xaccessible< xchunked_array< chunk_storage > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
reference typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
rend() noexcept -> reverse_layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< xchunked_array< chunk_storage > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< xchunked_array< chunk_storage > >inline
self_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
semantic_base typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
shape() const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
xaccessible< xchunked_array< chunk_storage > >::shape(size_type index) constxt::xconst_accessible< D >inline
shape_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
size() const noexceptxt::xconst_accessible< D >inline
size_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
static_layout (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >static
stepper typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
stepper_begin(const S &shape) noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
stepper_begin(const S &shape) const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
stepper_end(const S &shape, layout_type) noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
stepper_end(const S &shape, layout_type) const noexcept (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
stepper_end(const S &shape, layout_type) noexcept -> stepper (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
stepper_end(const S &shape, layout_type) const noexcept -> const_stepper (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
storage_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
temporary_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
unpack(const std::array< T, N > &arr) const -> static_indexes_type< N > (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
value_type typedef (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
xchunked_array(chunk_storage_type &&chunks, S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
xchunked_array(const xchunked_array &)=default (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
xchunked_array(xchunked_array &&)=default (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
xchunked_array(const xexpression< E > &e, chunk_storage_type &&chunks, layout_type chunk_memory_layout=::xt::layout_type::row_major) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
xchunked_array(const xexpression< E > &e, chunk_storage_type &&chunks, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
xchunked_array(CS &&chunks, S &&shape, S &&chunk_shape, layout_type chunk_memory_layout) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
xchunked_array(const xexpression< E > &e, CS &&chunks, layout_type chunk_memory_layout) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
xchunked_array(const xexpression< E > &e, CS &&chunks, S &&chunk_shape, layout_type chunk_memory_layout) (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >inline
xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xchunked_array()=default (defined in xt::xchunked_array< chunk_storage >)xt::xchunked_array< chunk_storage >
~xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xchunked__array.html b/classxt_1_1xchunked__array.html new file mode 100644 index 000000000..cf9268a1c --- /dev/null +++ b/classxt_1_1xchunked__array.html @@ -0,0 +1,2715 @@ + + + + + + + +xtensor: xt::xchunked_array< chunk_storage > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xchunked_array< chunk_storage > Class Template Reference
+
+
+
+Inheritance diagram for xt::xchunked_array< chunk_storage >:
+
+
+ + +xt::xaccessible< xchunked_array< chunk_storage > > +xt::xiterable< xchunked_array< chunk_storage > > +xt::xchunked_semantic< xchunked_array< chunk_storage > > +xt::xconst_accessible< D > +xt::xconst_iterable< D > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using chunk_storage_type = chunk_storage
 
using chunk_type = typename chunk_storage::value_type
 
using grid_shape_type = typename chunk_storage::shape_type
 
using const_reference = typename chunk_type::const_reference
 
using reference = typename chunk_type::reference
 
using self_type = xchunked_array< chunk_storage >
 
using semantic_base = xchunked_semantic< self_type >
 
using iterable_base = xconst_iterable< self_type >
 
using const_stepper = typename iterable_base::const_stepper
 
using stepper = typename iterable_base::stepper
 
using inner_types = xcontainer_inner_types< self_type >
 
using size_type = typename inner_types::size_type
 
using storage_type = typename inner_types::storage_type
 
using value_type = typename storage_type::value_type
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using difference_type = std::ptrdiff_t
 
using shape_type = typename chunk_type::shape_type
 
using temporary_type = typename inner_types::temporary_type
 
using bool_load_type = xt::bool_load_type< value_type >
 
using chunk_iterator = xchunk_iterator< self_type >
 
using const_chunk_iterator = xchunk_iterator< const self_type >
 
- Public Types inherited from xt::xaccessible< xchunked_array< chunk_storage > >
using base_type = xconst_accessible< xchunked_array< chunk_storage > >
 
using derived_type = typename base_type::derived_type
 
using reference = typename base_type::reference
 
using size_type = typename base_type::size_type
 
- Public Types inherited from xt::xconst_accessible< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
- Public Types inherited from xt::xiterable< xchunked_array< chunk_storage > >
using derived_type = xchunked_array< chunk_storage >
 
using base_type = xconst_iterable< xchunked_array< chunk_storage > >
 
using inner_shape_type = typename base_type::inner_shape_type
 
using stepper = typename base_type::stepper
 
using const_stepper = typename base_type::const_stepper
 
using linear_iterator = typename base_type::linear_iterator
 
using reverse_linear_iterator = typename base_type::reverse_linear_iterator
 
using layout_iterator = typename base_type::template layout_iterator< L >
 
using const_layout_iterator = typename base_type::template const_layout_iterator< L >
 
using reverse_layout_iterator = typename base_type::template reverse_layout_iterator< L >
 
using const_reverse_layout_iterator = typename base_type::template const_reverse_layout_iterator< L >
 
using broadcast_iterator = typename base_type::template broadcast_iterator< S, L >
 
using const_broadcast_iterator = typename base_type::template const_broadcast_iterator< S, L >
 
using reverse_broadcast_iterator = typename base_type::template reverse_broadcast_iterator< S, L >
 
using const_reverse_broadcast_iterator = typename base_type::template const_reverse_broadcast_iterator< S, L >
 
using iterator = typename base_type::iterator
 
using const_iterator = typename base_type::const_iterator
 
using reverse_iterator = typename base_type::reverse_iterator
 
using const_reverse_iterator = typename base_type::const_reverse_iterator
 
- Public Types inherited from xt::xconst_iterable< D >
using derived_type = D
 
using iterable_types = xiterable_inner_types< D >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
template<layout_type L>
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
template<layout_type L>
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
template<layout_type L>
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
template<layout_type L>
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
template<class S , layout_type L>
using broadcast_iterator = xiterator< stepper, S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xchunked_semantic< xchunked_array< chunk_storage > >
using base_type = xsemantic_base< xchunked_array< chunk_storage > >
 
using derived_type = xchunked_array< chunk_storage >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class S >
 xchunked_array (chunk_storage_type &&chunks, S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
 
xchunked_array (const xchunked_array &)=default
 
+xchunked_arrayoperator= (const xchunked_array &)=default
 
xchunked_array (xchunked_array &&)=default
 
+xchunked_arrayoperator= (xchunked_array &&)=default
 
+template<class E >
 xchunked_array (const xexpression< E > &e, chunk_storage_type &&chunks, layout_type chunk_memory_layout=::xt::layout_type::row_major)
 
+template<class E , class S >
 xchunked_array (const xexpression< E > &e, chunk_storage_type &&chunks, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
 
+template<class E >
xchunked_arrayoperator= (const xexpression< E > &e)
 
size_type dimension () const noexcept
 
const shape_type & shape () const noexcept
 
layout_type layout () const noexcept
 
bool is_contiguous () const noexcept
 
+template<class... Idxs>
reference operator() (Idxs... idxs)
 
+template<class... Idxs>
const_reference operator() (Idxs... idxs) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
template<class S >
bool broadcast_shape (S &s, bool reuse_cache=false) const
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type) const noexcept
 
const shape_type & chunk_shape () const noexcept
 
size_type grid_size () const noexcept
 
const grid_shape_type & grid_shape () const noexcept
 
chunk_storage_type & chunks ()
 
const chunk_storage_type & chunks () const
 
chunk_iterator chunk_begin ()
 
chunk_iterator chunk_end ()
 
const_chunk_iterator chunk_begin () const
 
const_chunk_iterator chunk_end () const
 
const_chunk_iterator chunk_cbegin () const
 
const_chunk_iterator chunk_cend () const
 
template<class S >
 xchunked_array (CS &&chunks, S &&shape, S &&chunk_shape, layout_type chunk_memory_layout)
 
template<class E >
 xchunked_array (const xexpression< E > &e, CS &&chunks, layout_type chunk_memory_layout)
 
template<class E , class S >
 xchunked_array (const xexpression< E > &e, CS &&chunks, S &&chunk_shape, layout_type chunk_memory_layout)
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 
template<class... Idxs>
auto operator() (Idxs... idxs) -> reference
 
template<class... Idxs>
auto operator() (Idxs... idxs) const -> const_reference
 
template<class It >
auto element (It first, It last) -> reference
 
template<class It >
auto element (It first, It last) const -> const_reference
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type) const noexcept -> const_stepper
 
template<class... Idxs>
auto get_indexes (Idxs... idxs) const -> indexes_type< Idxs... >
 
template<std::size_t... dims, class... Idxs>
auto get_chunk_indexes (std::index_sequence< dims... >, Idxs... idxs) const -> chunk_indexes_type< Idxs... >
 
template<class T , std::size_t N>
auto unpack (const std::array< T, N > &arr) const -> static_indexes_type< N >
 
template<class It >
auto get_indexes_dynamic (It first, It last) const -> dynamic_indexes_type
 
- Public Member Functions inherited from xt::xaccessible< xchunked_array< chunk_storage > >
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+disable_integral_t< S, reference > operator[] (const S &index)
 
+reference operator[] (std::initializer_list< I > index)
 
reference operator[] (size_type i)
 
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the expression.
 
auto operator[] (std::initializer_list< I > index) -> reference
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
- Public Member Functions inherited from xt::xconst_accessible< D >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
- Public Member Functions inherited from xt::xiterable< xchunked_array< chunk_storage > >
+layout_iterator< L > begin () noexcept
 
+broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+layout_iterator< L > end () noexcept
 
+broadcast_iterator< S, L > end (const S &shape) noexcept
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+reverse_layout_iterator< L > rbegin () noexcept
 
+reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+reverse_layout_iterator< L > rend () noexcept
 
+reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto get_begin (bool end_index) noexcept -> layout_iterator< L >
 
auto get_begin (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
auto get_end (bool end_index) noexcept -> layout_iterator< L >
 
auto get_end (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
auto get_stepper_begin (const S &shape) noexcept -> stepper
 
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto get_stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xconst_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L>
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L, class S >
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xchunked_semantic< xchunked_array< chunk_storage > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
auto get_assigner (const CS &) const -> xchunked_assigner< temporary_type, CS >
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = layout_type::dynamic
 
static constexpr bool contiguous_layout = false
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xaccessible< xchunked_array< chunk_storage > >
xaccessible (const xaccessible &)=default
 
xaccessible (xaccessible &&)=default
 
+xaccessibleoperator= (const xaccessible &)=default
 
+xaccessibleoperator= (xaccessible &&)=default
 
- Protected Member Functions inherited from xt::xconst_accessible< D >
xconst_accessible (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
- Protected Member Functions inherited from xt::xconst_iterable< D >
const inner_shape_type & get_shape () const
 
- Protected Member Functions inherited from xt::xchunked_semantic< xchunked_array< chunk_storage > >
xchunked_semantic (const xchunked_semantic &)=default
 
xchunked_semantic (xchunked_semantic &&)=default
 
+xchunked_semanticoperator= (const xchunked_semantic &)=default
 
+xchunked_semanticoperator= (xchunked_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &e)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class chunk_storage>
+class xt::xchunked_array< chunk_storage >
+

Definition at line 56 of file xchunked_array.hpp.

+

Member Typedef Documentation

+ +

◆ bool_load_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::bool_load_type = xt::bool_load_type<value_type>
+
+ +

Definition at line 81 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_iterator

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::chunk_iterator = xchunk_iterator<self_type>
+
+ +

Definition at line 84 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_storage_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::chunk_storage_type = chunk_storage
+
+ +

Definition at line 62 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::chunk_type = typename chunk_storage::value_type
+
+ +

Definition at line 63 of file xchunked_array.hpp.

+ +
+
+ +

◆ const_chunk_iterator

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::const_chunk_iterator = xchunk_iterator<const self_type>
+
+ +

Definition at line 85 of file xchunked_array.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::const_pointer = const value_type*
+
+ +

Definition at line 77 of file xchunked_array.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::const_reference = typename chunk_type::const_reference
+
+ +

Definition at line 65 of file xchunked_array.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 70 of file xchunked_array.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::difference_type = std::ptrdiff_t
+
+ +

Definition at line 78 of file xchunked_array.hpp.

+ +
+
+ +

◆ grid_shape_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::grid_shape_type = typename chunk_storage::shape_type
+
+ +

Definition at line 64 of file xchunked_array.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 72 of file xchunked_array.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::iterable_base = xconst_iterable<self_type>
+
+ +

Definition at line 69 of file xchunked_array.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::pointer = value_type*
+
+ +

Definition at line 76 of file xchunked_array.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::reference = typename chunk_type::reference
+
+ +

Definition at line 66 of file xchunked_array.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::self_type = xchunked_array<chunk_storage>
+
+ +

Definition at line 67 of file xchunked_array.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::semantic_base = xchunked_semantic<self_type>
+
+ +

Definition at line 68 of file xchunked_array.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::shape_type = typename chunk_type::shape_type
+
+ +

Definition at line 79 of file xchunked_array.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::size_type = typename inner_types::size_type
+
+ +

Definition at line 73 of file xchunked_array.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 71 of file xchunked_array.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::storage_type = typename inner_types::storage_type
+
+ +

Definition at line 74 of file xchunked_array.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::temporary_type = typename inner_types::temporary_type
+
+ +

Definition at line 80 of file xchunked_array.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class chunk_storage >
+ + + + +
using xt::xchunked_array< chunk_storage >::value_type = typename storage_type::value_type
+
+ +

Definition at line 75 of file xchunked_array.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xchunked_array() [1/3]

+ +
+
+
+template<class chunk_storage >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xchunked_array< chunk_storage >::xchunked_array (CS && chunks,
S && shape,
S && chunk_shape,
layout_type chunk_memory_layout 
)
+
+inline
+
+ +

Definition at line 390 of file xchunked_array.hpp.

+ +
+
+ +

◆ xchunked_array() [2/3]

+ +
+
+
+template<class chunk_storage >
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xchunked_array< chunk_storage >::xchunked_array (const xexpression< E > & e,
CS && chunks,
layout_type chunk_memory_layout 
)
+
+inline
+
+ +

Definition at line 398 of file xchunked_array.hpp.

+ +
+
+ +

◆ xchunked_array() [3/3]

+ +
+
+
+template<class chunk_storage >
+
+template<class E , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xchunked_array< chunk_storage >::xchunked_array (const xexpression< E > & e,
CS && chunks,
S && chunk_shape,
layout_type chunk_memory_layout 
)
+
+inline
+
+ +

Definition at line 405 of file xchunked_array.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ broadcast_shape()

+ +
+
+
+template<class CS >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xchunked_array< CS >::broadcast_shape (S & s,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Definition at line 486 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_begin() [1/2]

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_begin ()
+
+inline
+
+ +

Definition at line 561 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_begin() [2/2]

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_begin () const
+
+inline
+
+ +

Definition at line 575 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_cbegin()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_cbegin () const
+
+inline
+
+ +

Definition at line 589 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_cend()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_cend () const
+
+inline
+
+ +

Definition at line 595 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_end() [1/2]

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_end ()
+
+inline
+
+ +

Definition at line 568 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_end() [2/2]

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_end () const
+
+inline
+
+ +

Definition at line 582 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunk_shape()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunk_shape () const
+
+inlinenoexcept
+
+ +

Definition at line 531 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunks() [1/2]

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunks ()
+
+inline
+
+ +

Definition at line 549 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunks() [2/2]

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::chunks () const
+
+inline
+
+ +

Definition at line 555 of file xchunked_array.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::dimension () const
+
+inlinenoexcept
+
+ +

Definition at line 425 of file xchunked_array.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_array< chunk_storage >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Definition at line 468 of file xchunked_array.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_array< chunk_storage >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 477 of file xchunked_array.hpp.

+ +
+
+ +

◆ get_chunk_indexes()

+ +
+
+
+template<class chunk_storage >
+
+template<std::size_t... dims, class... Idxs>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_array< chunk_storage >::get_chunk_indexes (std::index_sequence< dims... > ,
Idxs... idxs 
) const -> chunk_indexes_type<Idxs...> +
+
+inline
+
+ +

Definition at line 648 of file xchunked_array.hpp.

+ +
+
+ +

◆ get_indexes()

+ +
+
+
+template<class chunk_storage >
+
+template<class... Idxs>
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::get_indexes (Idxs... idxs) const -> indexes_type<Idxs...> +
+
+inline
+
+ +

Definition at line 630 of file xchunked_array.hpp.

+ +
+
+ +

◆ get_indexes_dynamic()

+ +
+
+
+template<class chunk_storage >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_array< chunk_storage >::get_indexes_dynamic (It first,
It last 
) const -> dynamic_indexes_type +
+
+inline
+
+ +

Definition at line 671 of file xchunked_array.hpp.

+ +
+
+ +

◆ grid_shape()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::grid_shape () const
+
+inlinenoexcept
+
+ +

Definition at line 543 of file xchunked_array.hpp.

+ +
+
+ +

◆ grid_size()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::grid_size () const
+
+inlinenoexcept
+
+ +

Definition at line 537 of file xchunked_array.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CS >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xchunked_array< CS >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Definition at line 493 of file xchunked_array.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
bool xt::xchunked_array< CS >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 443 of file xchunked_array.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::layout () const
+
+inlinenoexcept
+
+ +

Definition at line 437 of file xchunked_array.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class... Idxs>
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::operator() (Idxs... idxs) -> reference +
+
+inline
+
+ +

Definition at line 450 of file xchunked_array.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class... Idxs>
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::operator() (Idxs... idxs) const -> const_reference +
+
+inline
+
+ +

Definition at line 459 of file xchunked_array.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class chunk_storage >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

Definition at line 419 of file xchunked_array.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class CS >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_array< CS >::shape () const
+
+inlinenoexcept
+
+ +

Definition at line 431 of file xchunked_array.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 516 of file xchunked_array.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::stepper_begin (const S & shape) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 500 of file xchunked_array.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_array< chunk_storage >::stepper_end (const S & shape,
layout_type  
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 524 of file xchunked_array.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class chunk_storage >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_array< chunk_storage >::stepper_end (const S & shape,
layout_type  
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 508 of file xchunked_array.hpp.

+ +
+
+ +

◆ unpack()

+ +
+
+
+template<class chunk_storage >
+
+template<class T , std::size_t N>
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_array< chunk_storage >::unpack (const std::array< T, N > & arr) const -> static_indexes_type<N> +
+
+inline
+
+ +

Definition at line 657 of file xchunked_array.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class chunk_storage >
+ + + + + +
+ + + + +
constexpr bool xt::xchunked_array< chunk_storage >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 83 of file xchunked_array.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class chunk_storage >
+ + + + + +
+ + + + +
constexpr layout_type xt::xchunked_array< chunk_storage >::static_layout = layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 82 of file xchunked_array.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xchunked__array.png b/classxt_1_1xchunked__array.png new file mode 100644 index 0000000000000000000000000000000000000000..15128b48eff9d5c0582864d775603e72eb19ca5f GIT binary patch literal 4131 zcmdT{c~nzp76-8%5CO$j5D{D;R1^rxzS;`f3}LDApzKBv6oE8=EQWwq1s%2)6e4SN z1oVNS$`XOFNDzt7M#g$udqVy z{!TOh$-B0;Ht_yvPXBFSQ;I#}c2o{LuO60b3SY>{sgY1lUwS6U&kRo-srj>}^P9AM z!#9%Z#l`DaP?=v4%w9cScYeNOa<(T(al`8!6OAP00LGcFHS%lh^oEh^4{D}jta2_Y ztxfP(M^KUL({hpL<+5GcLo`$0e5a1s@EV6AuBRfk-P+f#u`^c6#b~BdQN#o1y2^Zr zRW^eRKEBQY8~M%6WufJI>a&Zhfh4{%mxwt5a%ssF+))m$I;TZd^jEgxZJSLSaFS$W zA-D5Xe5)j=b=c6~5!>UxF7Q5P@YTxOfi6Qo-!jyy%i-DbqhA&6I<_zq-8eIK`icw5 zznA*#Zq})Xeo>JxzMYRoU5AK!b3y^w!>g#qUL$=DJ<@ab!bA@~2isFFUrxS;O1H=} z->mQTYM;wr0si2xW%$Ql8pRH_Ri{)KC5!8ay0Aja_7D+Oz)_=y47^x+d*pbY1`TO# z;kKFsYcn*dFnK9*BcflOcEBe>?A|^a#~)zTb{tAqxv7U)Bd>FP7x`H%nnB|6j5{1rvt!^ycH|GD&>;2%< zs_Q2_hXy5#m$jnMK#C+T_Iug)N1sJGs!)+b539F6L$0TiKkQOE)HFPS)lBW4dn6xO z4{|)SNa+CPhcXxTdq?bjuutpOr~{y)EQAbRe%DYFcxe60zfA`b$I*?!=hJ%ys@3a)atvaHI z1&hiM5?ExXAn0=#&I)O)t%SdV=s$KOK#+?%0)kY2=_A46s0?qYP7iYgqMzG41H*ZL z#5{oMgP`F@VtoVir`Kk0H~EB|;ZI#y3|C`KvG=&(vqgn{aDh&*p-8ziK9*dD@4cVik4tE`3&jJ-ZagS)nooW0NB49bWCT$yjj`O+X|2 zC~OUIb8)LiKtYZMuKrOa>8wGYt;>|O(+^|b_^@k6ytBW7>fTbz#3}-56jqh%|PO5-!Wdpo5SC)9JHG~B7Mp$@thCnY=YIYVzMj5^Cgmr z!q}K*$5Q?&;?T_qLc`N5Cw7kHEjB(LjVWIl=a7uCCfQ}(W&FbPJ;@GSjMsOAzre#P zVSb&Cs=4Ax4P$bu(ElcPzodl=AtG9}$o_i~?e~Ls<8szSB0zB(3?Ra6yxqXTVA^M0@FnU3jTEQgdZQ7m?49%wy_fTgcrN zQ{vsl?$nSS;n#ckw+eO_H=AozIA<;?$C%z$YowG6?7v^sKlbR()8RMGfriSgsqpxh z5-W5|S@LA`>4aW=kukflB|kl(;aFuQ^PXyMkJ4E~PA<|qJEqYXn=QQ8CtL@4R|Z?V zwb#C=Y;IJcmmdh=_<~>hxJZ! z;B3W2*Pq=I7Y`@c1T-Z3YdO*j@|ufDr4^~z%)O~*+~_{WS-0xUrzJe!_v(zAs?rnF zVfN^|&8O^zR`|i0uG_FL&YL*xk#b!?=aoS7-t8e{c#Bb*X0MHjv)4iE!jg;yRIz*e zEqKy&sZXm4ZY*5(lOWMBtaF~VUDS{vHRQ0Aa~VS-p*JLu&P{BO%ixy$iJ5HV2}REJ zyDX=8NG+Yn%DJ15@+yi_On_sueOk{#{^q_-6oZtscVYV^v?9kZ!H+DK+C2iTBr^Xa zz4JSr7f8LuU3Qo!uyh}XoC58e*1}yrcx4Wp^V&+;pR6(4*?B|XR8{5j$&;vzgD%Il zvp8e={&ZmyR@e|6K^@LXof z>##E0ep43lH}22QT}}linV0-V6`2Vvrm#~BME-5Sk2wB+0*2{byQdemw;+7jjyj0anM;=?CjdhWlzP<>*t_x7Dg89EEl0QBjnPX!){@k;(h{-q zo?1IPAAUq2i0SJX8*f;=TU>Xw7yn?hokoed!xTZF2|@8ZI`Wm56#Jr(nl4*&4_lWs zzRfq(J?XS$@MSC4-F$~`8tP0PAt`nej_SJKcV=_>BaVKU_kJZZOkQw1?#2Fgo{v)7 z>W+_08d;9*ERW`H5Z58^kQ{8hWFZT-on{Bn$L}4bRV|+CitOp+qkl2LM5os}_xO=q z-57<8UZ0Mk&mzoPwz=l7FQxg0H`|YfI+hBNd#oZu=(Dyq4nboFP_e#=bdOEG%l7LQ{e5%E%`jF#V#@3rVn9Ssn0 z*PGm|43DeIU^NtQ2ktjdT2e=?5u+_g>*}{OUK2m_s4cBu!1v_XRE_N;)>~{5pXfrn zGY*BR;fxYdqdrBw$LDKw%8!pcDaIGY#YTxGbbp8(j3qvy2O;9jDVIrb!CVwEqG~)q zR^Q!(l1!RT60Edj1$a!N&GNqhL0n#OUaJ-u1X_z&yG1`{dP9UZsr`-=V{{;Yjuiya zEo?KA2gmh>E8ztmCvPF>bHdMac%2*YBxgyy={-kAt-DkU$FZcJ((vvQujkpPDe$C% zM5>hd0C@)%W!f=iteA3T4vZCgU|p>r$^t+WX;y=&131I-K7*i%{)n0KkICk0ci-%C ziyCO)G<8`U8=ZITQeJz~X_X5{kXc9jc1lG&StK>IE;vt9p0p#>Xy{tH~# zMx)VO5)u;=l}x~)1_nuvRU&#J~FnM-1s;Q^L~hBTV-LiyXLS`AKZE0v0Y^l_dG4 zOuJ#LD4hzUrbKh5q(YpMezSkPGZqE4#_UflDZW9JlUS#kcZ0&w6I1 zhnBb*9k+4_y;otZzFA{O%$^0DTFv+UhrDK@?Aold*lIt>VA7P2DU6mTi#%L0rz>daOx^D{E=u{(iU~9_@FLj%hh6ej0t+#E| zmo5Cu%21PV9(M{GZOyEb#=RR2U+OQ$?AyJPs7BM9=*0OWs~6bctS0A4c3L+x&XK!B zwzpxDIYD8|(%MLO#{j>kYj!C`DM8snzE1fZFK-J+r(#>NpY)ZYOo)WN{;6j_D1%~G zrqE;4hrN=J6K*M>g3M{n*^0=LLRXn!2^x>T)D58PzW*C>8r}*3 literal 0 HcmV?d00001 diff --git a/classxt_1_1xchunked__assigner-members.html b/classxt_1_1xchunked__assigner-members.html new file mode 100644 index 000000000..9f6ed754a --- /dev/null +++ b/classxt_1_1xchunked__assigner-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xchunked_assigner< T, chunk_storage > Member List
+
+
+ +

This is the complete list of members for xt::xchunked_assigner< T, chunk_storage >, including all inherited members.

+ + + +
build_and_assign_temporary(const xexpression< E > &e, DST &dst) (defined in xt::xchunked_assigner< T, chunk_storage >)xt::xchunked_assigner< T, chunk_storage >inline
temporary_type typedef (defined in xt::xchunked_assigner< T, chunk_storage >)xt::xchunked_assigner< T, chunk_storage >
+
+ + + + diff --git a/classxt_1_1xchunked__assigner.html b/classxt_1_1xchunked__assigner.html new file mode 100644 index 000000000..eb63c30d5 --- /dev/null +++ b/classxt_1_1xchunked__assigner.html @@ -0,0 +1,190 @@ + + + + + + + +xtensor: xt::xchunked_assigner< T, chunk_storage > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xchunked_assigner< T, chunk_storage > Class Template Reference
+
+
+ + + + +

+Public Types

using temporary_type = T
 
+ + + + +

+Public Member Functions

template<class E , class DST >
void build_and_assign_temporary (const xexpression< E > &e, DST &dst)
 
+

Detailed Description

+
template<class T, class chunk_storage>
+class xt::xchunked_assigner< T, chunk_storage >
+

Definition at line 24 of file xchunked_assign.hpp.

+

Member Typedef Documentation

+ +

◆ temporary_type

+ +
+
+
+template<class T , class chunk_storage >
+ + + + +
using xt::xchunked_assigner< T, chunk_storage >::temporary_type = T
+
+ +

Definition at line 28 of file xchunked_assign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ build_and_assign_temporary()

+ +
+
+
+template<class T , class CS >
+
+template<class E , class DST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xchunked_assigner< T, CS >::build_and_assign_temporary (const xexpression< E > & e,
DST & dst 
)
+
+inline
+
+ +

Definition at line 197 of file xchunked_assign.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xchunked__semantic-members.html b/classxt_1_1xchunked__semantic-members.html new file mode 100644 index 000000000..cf9c4a57a --- /dev/null +++ b/classxt_1_1xchunked__semantic-members.html @@ -0,0 +1,181 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xchunked_semantic< D > Member List
+
+
+ +

This is the complete list of members for xt::xchunked_semantic< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_xexpression(const xexpression< E > &e) (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >
assign_xexpression(const xexpression< E > &e) -> derived_type & (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >inline
base_type typedef (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
computed_assign(const xexpression< E > &e) (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >
computed_assign(const xexpression< E > &e) -> derived_type & (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >inline
derived_type typedef (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
get_assigner(const CS &) const -> xchunked_assigner< temporary_type, CS > (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xchunked_semantic &)=default (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
operator=(xchunked_semantic &&)=default (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
operator=(const xexpression< E > &e) (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
operator=(const xexpression< E > &e) -> derived_type & (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
scalar_computed_assign(const E &e, F &&f) (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >
scalar_computed_assign(const E &e, F &&f) -> derived_type & (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >inline
temporary_type typedef (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >
xchunked_semantic()=default (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
xchunked_semantic(const xchunked_semantic &)=default (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
xchunked_semantic(xchunked_semantic &&)=default (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xchunked_semantic()=default (defined in xt::xchunked_semantic< D >)xt::xchunked_semantic< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xchunked__semantic.html b/classxt_1_1xchunked__semantic.html new file mode 100644 index 000000000..49e08f9cc --- /dev/null +++ b/classxt_1_1xchunked__semantic.html @@ -0,0 +1,644 @@ + + + + + + + +xtensor: xt::xchunked_semantic< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xchunked_semantic< D > Class Template Reference
+
+
+
+Inheritance diagram for xt::xchunked_semantic< D >:
+
+
+ + +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + +

+Public Types

using base_type = xsemantic_base< D >
 
using derived_type = D
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
derived_type & assign_xexpression (const xexpression< E > &e)
 
+template<class E >
derived_type & computed_assign (const xexpression< E > &e)
 
+template<class E , class F >
derived_type & scalar_computed_assign (const E &e, F &&f)
 
template<class E >
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
template<class E >
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
template<class E , class F >
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
template<class CS >
auto get_assigner (const CS &) const -> xchunked_assigner< temporary_type, CS >
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

xchunked_semantic (const xchunked_semantic &)=default
 
+xchunked_semanticoperator= (const xchunked_semantic &)=default
 
xchunked_semantic (xchunked_semantic &&)=default
 
+xchunked_semanticoperator= (xchunked_semantic &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &e)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class D>
+class xt::xchunked_semantic< D >
+

Definition at line 39 of file xchunked_assign.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xchunked_semantic< D >::base_type = xsemantic_base<D>
+
+ +

Definition at line 43 of file xchunked_assign.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xchunked_semantic< D >::derived_type = D
+
+ +

Definition at line 44 of file xchunked_assign.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xchunked_semantic< D >::temporary_type = typename base_type::temporary_type
+
+ +

Definition at line 45 of file xchunked_assign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign_xexpression()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_semantic< D >::assign_xexpression (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 205 of file xchunked_assign.hpp.

+ +
+
+ +

◆ computed_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_semantic< D >::computed_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 229 of file xchunked_assign.hpp.

+ +
+
+ +

◆ get_assigner()

+ +
+
+
+template<class D >
+
+template<class CS >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_semantic< D >::get_assigner (const CS & ) const -> xchunked_assigner<temporary_type, CS> +
+
+inline
+
+ +

Definition at line 264 of file xchunked_assign.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xchunked_semantic< D >::operator= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 255 of file xchunked_assign.hpp.

+ +
+
+ +

◆ scalar_computed_assign()

+ +
+
+
+template<class D >
+
+template<class E , class F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xchunked_semantic< D >::scalar_computed_assign (const E & e,
F && f 
) -> derived_type& +
+
+inline
+
+ +

Definition at line 244 of file xchunked_assign.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xchunked__semantic.png b/classxt_1_1xchunked__semantic.png new file mode 100644 index 0000000000000000000000000000000000000000..390dfe90c1d85c6bfb9cc247f6baa80b973f7713 GIT binary patch literal 1098 zcmeAS@N?(olHy`uVBq!ia0vp^`+&HEgBeKXbuN?#QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NtZdb&7>mM!sp>UI7?+|e~c?C;}S1P<+TN=SZ{+j`qA-ENmJWrIYd|U9I5%e|I_L`jrpd&aWgV+ z&3@^*_jthBmi-Uhmz4y6)vmwllj^!|NsV!P;uh}g{k^{$!fwRi5V9O2JPPQP8f zI>WU5e#g5`|M`ES|44;g`xW+mex?2X4auC1JEevH=j*&p|p%%A!5{Yju7 z*FO1i=1kbFkIo#4k&Fk_zcMwHZZ-S&daKF*TR*J-p8C`M`1eU>hO(j>h7FS*GdE0? zk!M)*Tz}kZA&|bh?5@~4|w(QGlZclDOi3Y+{5HBR*8FnIdV8fs(Z3{sl9yutxNqNcsDGxHanU1-{)YilvCocoDbGt%jouyT z-=_8cQ+%1dKx|Klm&@8>t`PUbf%<_9tc>#GR(!nw^TjQjm5V38bO@Ba-!84Ucf&EM zQ~Q2jXSF%*e=uX!vd&7s##b{QsGFNbiagAix0>nQ%=DaDuNFUA=1|)6;}xTy&8OilE*w>1|6 zlos9o^iEhX^5nUH8&^)B5{ozb#zn{m=7z^NErp zO3RExgPgAI46<3ocQR{Dh|L54S`%ac%nug1v)3B@y5X?E;6-2`zhrx52_v) j7u + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xchunked_view< E > Member List
+
+
+ +

This is the complete list of members for xt::xchunked_view< E >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
chunk_begin() (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
chunk_begin() const (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
chunk_cbegin() const (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
chunk_cend() const (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
chunk_end() (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
chunk_end() const (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
chunk_iterator typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
chunk_shape() const noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
const_chunk_iterator typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
const_pointer typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
const_reference typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
difference_type typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
dimension() const noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
expression() noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
expression() const noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
expression_type typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
grid_shape() const noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
grid_size() const noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
init() (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
operator=(const OE &e) (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
operator=(const OE &e) (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
pointer typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
reference typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
self_type typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
shape() const noexcept (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
shape_type typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
size_type typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
value_type typedef (defined in xt::xchunked_view< E >)xt::xchunked_view< E >
xchunked_view(OE &&e, S &&chunk_shape) (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
xchunked_view(OE &&e) (defined in xt::xchunked_view< E >)xt::xchunked_view< E >inline
+
+ + + + diff --git a/classxt_1_1xchunked__view.html b/classxt_1_1xchunked__view.html new file mode 100644 index 000000000..da675f630 --- /dev/null +++ b/classxt_1_1xchunked__view.html @@ -0,0 +1,927 @@ + + + + + + + +xtensor: xt::xchunked_view< E > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xchunked_view< E > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xchunked_view< E >
 
using expression_type = std::decay_t< E >
 
using value_type = typename expression_type::value_type
 
using reference = typename expression_type::reference
 
using const_reference = typename expression_type::const_reference
 
using pointer = typename expression_type::pointer
 
using const_pointer = typename expression_type::const_pointer
 
using size_type = typename expression_type::size_type
 
using difference_type = typename expression_type::difference_type
 
using shape_type = svector< size_type >
 
using chunk_iterator = xchunk_iterator< self_type >
 
using const_chunk_iterator = xchunk_iterator< const self_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class OE , class S >
 xchunked_view (OE &&e, S &&chunk_shape)
 
template<class OE >
 xchunked_view (OE &&e)
 
void init ()
 
template<class OE >
std::enable_if_t<!is_chunked_t< OE >::value, xchunked_view< E > & > operator= (const OE &e)
 
template<class OE >
std::enable_if_t< is_chunked_t< OE >::value, xchunked_view< E > & > operator= (const OE &e)
 
size_type dimension () const noexcept
 
const shape_typeshape () const noexcept
 
const shape_typechunk_shape () const noexcept
 
size_type grid_size () const noexcept
 
const shape_typegrid_shape () const noexcept
 
expression_type & expression () noexcept
 
const expression_type & expression () const noexcept
 
chunk_iterator chunk_begin ()
 
chunk_iterator chunk_end ()
 
const_chunk_iterator chunk_begin () const
 
const_chunk_iterator chunk_end () const
 
const_chunk_iterator chunk_cbegin () const
 
const_chunk_iterator chunk_cend () const
 
+

Detailed Description

+
template<class E>
+class xt::xchunked_view< E >
+

Definition at line 36 of file xchunked_view.hpp.

+

Member Typedef Documentation

+ +

◆ chunk_iterator

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::chunk_iterator = xchunk_iterator<self_type>
+
+ +

Definition at line 50 of file xchunked_view.hpp.

+ +
+
+ +

◆ const_chunk_iterator

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::const_chunk_iterator = xchunk_iterator<const self_type>
+
+ +

Definition at line 51 of file xchunked_view.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::const_pointer = typename expression_type::const_pointer
+
+ +

Definition at line 46 of file xchunked_view.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::const_reference = typename expression_type::const_reference
+
+ +

Definition at line 44 of file xchunked_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::difference_type = typename expression_type::difference_type
+
+ +

Definition at line 48 of file xchunked_view.hpp.

+ +
+
+ +

◆ expression_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::expression_type = std::decay_t<E>
+
+ +

Definition at line 41 of file xchunked_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::pointer = typename expression_type::pointer
+
+ +

Definition at line 45 of file xchunked_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::reference = typename expression_type::reference
+
+ +

Definition at line 43 of file xchunked_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::self_type = xchunked_view<E>
+
+ +

Definition at line 40 of file xchunked_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::shape_type = svector<size_type>
+
+ +

Definition at line 49 of file xchunked_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::size_type = typename expression_type::size_type
+
+ +

Definition at line 47 of file xchunked_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xchunked_view< E >::value_type = typename expression_type::value_type
+
+ +

Definition at line 42 of file xchunked_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xchunked_view() [1/2]

+ +
+
+
+template<class E >
+
+template<class OE , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xchunked_view< E >::xchunked_view (OE && e,
S && chunk_shape 
)
+
+inline
+
+ +

Definition at line 102 of file xchunked_view.hpp.

+ +
+
+ +

◆ xchunked_view() [2/2]

+ +
+
+
+template<class E >
+
+template<class OE >
+ + + + + +
+ + + + + + + + +
xt::xchunked_view< E >::xchunked_view (OE && e)
+
+inline
+
+ +

Definition at line 114 of file xchunked_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ chunk_begin() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_begin ()
+
+inline
+
+ +

Definition at line 245 of file xchunked_view.hpp.

+ +
+
+ +

◆ chunk_begin() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_begin () const
+
+inline
+
+ +

Definition at line 258 of file xchunked_view.hpp.

+ +
+
+ +

◆ chunk_cbegin()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_cbegin () const
+
+inline
+
+ +

Definition at line 271 of file xchunked_view.hpp.

+ +
+
+ +

◆ chunk_cend()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_cend () const
+
+inline
+
+ +

Definition at line 277 of file xchunked_view.hpp.

+ +
+
+ +

◆ chunk_end() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_end ()
+
+inline
+
+ +

Definition at line 252 of file xchunked_view.hpp.

+ +
+
+ +

◆ chunk_end() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_end () const
+
+inline
+
+ +

Definition at line 265 of file xchunked_view.hpp.

+ +
+
+ +

◆ chunk_shape()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::chunk_shape () const
+
+inlinenoexcept
+
+ +

Definition at line 215 of file xchunked_view.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::dimension () const
+
+inlinenoexcept
+
+ +

Definition at line 203 of file xchunked_view.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::expression () const
+
+inlinenoexcept
+
+ +

Definition at line 239 of file xchunked_view.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::expression ()
+
+inlinenoexcept
+
+ +

Definition at line 233 of file xchunked_view.hpp.

+ +
+
+ +

◆ grid_shape()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::grid_shape () const
+
+inlinenoexcept
+
+ +

Definition at line 227 of file xchunked_view.hpp.

+ +
+
+ +

◆ grid_size()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::grid_size () const
+
+inlinenoexcept
+
+ +

Definition at line 221 of file xchunked_view.hpp.

+ +
+
+ +

◆ init()

+ +
+
+
+template<class E >
+ + + + + + + +
void xt::xchunked_view< E >::init ()
+
+ +

Definition at line 123 of file xchunked_view.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class E >
+
+template<class OE >
+ + + + + + + + +
std::enable_if_t<!is_chunked_t< OE >::value, xchunked_view< E > & > xt::xchunked_view< E >::operator= (const OE & e)
+
+ +

Definition at line 153 of file xchunked_view.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class E >
+
+template<class OE >
+ + + + + + + + +
std::enable_if_t< is_chunked_t< OE >::value, xchunked_view< E > & > xt::xchunked_view< E >::operator= (const OE & e)
+
+ +

Definition at line 167 of file xchunked_view.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xchunked_view< E >::shape () const
+
+inlinenoexcept
+
+ +

Definition at line 209 of file xchunked_view.hpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classxt_1_1xconst__accessible-members.html b/classxt_1_1xconst__accessible-members.html new file mode 100644 index 000000000..c1e7e1e8a --- /dev/null +++ b/classxt_1_1xconst__accessible-members.html @@ -0,0 +1,133 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xconst_accessible< D > Member List
+
+
+ +

This is the complete list of members for xt::xconst_accessible< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(Args... args) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
at(Args... args) const -> const_referencext::xconst_accessible< D >inline
back() constxt::xconst_accessible< D >inline
const_reference typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
derived_type typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
dimension() const noexceptxt::xconst_accessible< D >inline
front() constxt::xconst_accessible< D >inline
in_bounds(Args... args) constxt::xconst_accessible< D >inline
inner_types typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator[](const S &index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](std::initializer_list< I > index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](size_type i) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xconst_accessible< D >inline
operator[](std::initializer_list< I > index) const -> const_reference (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
periodic(Args... args) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
periodic(Args... args) const -> const_referencext::xconst_accessible< D >inline
reference typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
shape(size_type index) constxt::xconst_accessible< D >inline
size() const noexceptxt::xconst_accessible< D >inline
size_type typedef (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
~xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
+
+ + + + diff --git a/classxt_1_1xconst__accessible.html b/classxt_1_1xconst__accessible.html new file mode 100644 index 000000000..55fd107ee --- /dev/null +++ b/classxt_1_1xconst__accessible.html @@ -0,0 +1,718 @@ + + + + + + + +xtensor: xt::xconst_accessible< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xconst_accessible< D > Class Template Reference
+
+
+ +

Base class for implementation of common expression constant access methods. + More...

+ +

#include <xaccessible.hpp>

+
+Inheritance diagram for xt::xconst_accessible< D >:
+
+
+ + +xt::xaccessible< xarray_adaptor< EC, L, SC, Tag > > +xt::xaccessible< xarray_container< EC, L, SC, Tag > > +xt::xaccessible< xchunked_array< chunk_storage > > +xt::xaccessible< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xaccessible< xfixed_container< ET, S, L, SH, Tag > > +xt::xaccessible< xfunctor_adaptor< F, CT > > +xt::xaccessible< xfunctor_view< F, CT > > +xt::xaccessible< xmasked_view< CTD, CTM > > +xt::xaccessible< xreducer< F, CT, X, O > > +xt::xaccessible< xscalar< CT > > +xt::xaccessible< xtensor_adaptor< EC, N, L, Tag > > +xt::xaccessible< xtensor_container< EC, N, L, Tag > > +xt::xaccessible< xtensor_view< EC, N, L, Tag > > +xt::xaccessible< xview< CT, S... > > +xt::xaccessible< D > + +
+ + + + + + + + + + + + +

+Public Types

using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+ + + + + + + + + +

+Protected Member Functions

xconst_accessible (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+

Detailed Description

+
template<class D>
+class xt::xconst_accessible< D >

Base class for implementation of common expression constant access methods.

+

The xaccessible class implements constant access methods common to all expressions.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xconst_accessible provides the interface.
+
+
+ +

Definition at line 29 of file xaccessible.hpp.

+

Member Typedef Documentation

+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_accessible< D >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 36 of file xaccessible.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_accessible< D >::derived_type = D
+
+ +

Definition at line 33 of file xaccessible.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_accessible< D >::inner_types = xcontainer_inner_types<D>
+
+ +

Definition at line 34 of file xaccessible.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_accessible< D >::reference = typename inner_types::reference
+
+ +

Definition at line 35 of file xaccessible.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_accessible< D >::size_type = typename inner_types::size_type
+
+ +

Definition at line 37 of file xaccessible.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at()

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 175 of file xaccessible.hpp.

+ +
+
+ +

◆ back()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 236 of file xaccessible.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::dimension () const
+
+inlinenoexcept
+
+ +

Returns the number of dimensions of the expression.

+ +

Definition at line 150 of file xaccessible.hpp.

+ +
+
+ +

◆ front()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 227 of file xaccessible.hpp.

+ +
+
+ +

◆ in_bounds()

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
bool xt::xconst_accessible< D >::in_bounds (Args... args) const
+
+inline
+
+ +

Returns true only if the the specified position is a valid entry in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression.
+
+
+
Returns
bool
+ +

Definition at line 248 of file xaccessible.hpp.

+ +
+
+ +

◆ operator[]() [1/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::operator[] (const S & index) const -> disable_integral_t<S, const_reference> +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
indexa sequence of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices in the list should be equal or greater than the number of dimensions of the expression.
+
+
+ +

Definition at line 189 of file xaccessible.hpp.

+ +
+
+ +

◆ operator[]() [2/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::operator[] (size_type i) const
+
+inline
+
+ +

Definition at line 203 of file xaccessible.hpp.

+ +
+
+ +

◆ operator[]() [3/3]

+ +
+
+
+template<class D >
+
+template<class I >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::operator[] (std::initializer_list< I > index) const -> const_reference +
+
+inline
+
+ +

Definition at line 197 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic()

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 217 of file xaccessible.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 159 of file xaccessible.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the size of the expression.

+ +

Definition at line 141 of file xaccessible.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xconst__accessible.js b/classxt_1_1xconst__accessible.js new file mode 100644 index 000000000..3ec0da026 --- /dev/null +++ b/classxt_1_1xconst__accessible.js @@ -0,0 +1,12 @@ +var classxt_1_1xconst__accessible = +[ + [ "at", "classxt_1_1xconst__accessible.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xconst__accessible.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "dimension", "classxt_1_1xconst__accessible.html#a4b1a7ad9b1f0863c672782e53eed3042", null ], + [ "front", "classxt_1_1xconst__accessible.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "in_bounds", "classxt_1_1xconst__accessible.html#ace939a65a328afe7ef9241d4cc84b881", null ], + [ "operator[]", "classxt_1_1xconst__accessible.html#a125b98dd7a0ea4919f19b69256930ff8", null ], + [ "periodic", "classxt_1_1xconst__accessible.html#a34d4a20e640737443fd0a7266b77b2b2", null ], + [ "shape", "classxt_1_1xconst__accessible.html#aec0ae6f83f7e86f32e083cb6714af552", null ], + [ "size", "classxt_1_1xconst__accessible.html#a2f23977016e337e834dfdc912d1fc435", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xconst__accessible.png b/classxt_1_1xconst__accessible.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4159d10451405edb153c827c56e9b54a2cb433 GIT binary patch literal 11438 zcmd^lX;@R&+O|VmPf<(N3R)G~8i$I2Xcdtm)v6d2s3IUkh>GZuAqXVQNvf7oMWu#f z1O%!m$h0Y-gzS(6K}3vz%CLn1LFN!442Fb|;afZ6@SgYd>-oMP=RH^7^@q*QzIImD zx}WE{@B3NjzIU*luk*Rij2ScL+4uVn?$T&9 z;Bw%llpJ4?wROYSrn(6Qw;v3j zIn>?~EGYYY=hNQfiF}FX{+hy%KDl9qIi~Ksxx%0R)epJ{OPfliV`F0nyui3LOXpfS zUmy^8L_|eJS^hMrb7DVU*wNAP$xXPz?I6MgV|F%lO0P*e1je^HM%Q+cDd?lWfJaBy zkW`A#g|uYDO;Ex_KUb*)pF~YL9dz9q_mrHv#`>w0!RK-~9M!C*#dTec<`F@?27%^e z$lN50Vc5^limEo&!)|Slmxvj8OK<#qqw?oY85k4 zvI9GyI6Mv}D=0+2Awej#mKk7el1uIHwFs-fj_bDT@_T4wk2J)fFQLUjg3DN$)D~}Q zUQpM5d_9RGAuOGgZ`$hi9LzmvjO`IPnj60ikE}$t!xjO@^BTzB#~K!^1Gh?t@H-fEW+k7)J3MFP82#D)3W(?UrkFt=jOZ6#q20gke1e->vuZVovzX^Ez%^ zU6(aAdLZ1SNM(Z^R?f7|HB!!059CIpt3t~HE2<2DxmhpLYb()(?Y<4BX^)_nf4s(j zwjEV`K7Vfn7#2EfM@+|cKGadRA9P(iA{$q@6RwvN9LX`WXjrU&e!=&hfm!g5(_h}s z`~L8Z9HY;c{4l8V;YYuLTQhG%|E60r$*Gwq*EM`&Z#&a_!wm>`fZnr2iz$2h>m}HX zn?@eS0!7$Jr znBuK2NJJkkOFVeg=Lp@0tsA~%(lVZaf3dysr-ZMdv4dRu z4T6!1kixxEnb_y@il+uKf+p#?WLYELYCApJ0lYSR55hRcq>v(UeI=RKk zlhO^xor8G_3RY7B$+B@pN0Q1AAB67@0f^L}g+jIxy&gGVmQrcF2rPv0(vkkX$#)U; ziFCA&D!pid4f`oYh|>$GhHAswmrluz6gyF5j_$&{>a;m9Qe+EscW`6{1W{4z4kT)_ zw=<%azfQc|YXEldS|)~gkn-Vsw#MyFz}?A?-UqEo zQ^~TU5{-#rUsJ+*LH&HCIy`p)^ODLBu8p|Xqo4_MmQ@J-^$L zY$pDM`siuQSPr)l0T`g%`H7&*ddXaOR5v^@4aY%cMsrz*SoVbRO_zl$En&@ z60tvF;z}}l`#dBUDADEp6)s@L^<+FpE)WHe+jMP5WNK-gr;Eoxq$%&4&Lk-Jo{Zew zBC93gHOmto59zhU;X6a#28cmN>uM*1q5#!1##7h<3FsWU|Khyq033Grd5K}ynn+F9&DhFaa9<8N#rl~ zlHCYP5u&XOmmo=>r#N`pu!Y7+?YD;d<4!ZJlc6KsGS7`^bIksGQ zLu{>M7;J%~rU*-IUu2NxU0k=u=w-AZYE(MNCsZD2qntzICj$!kBB0~ZHM_V5RiCPq z9^UMiCFd%cA9%%;I*020JuJ1}_0W7zy@=aWJ-qI7zoVO*3#*@hYDng^mBoiYk#cA% z2VRc2tivuoLZQf>Fjk&{1l1jlsk{f=oADKwZi>-y7*liJVrf{3WX@89O}?p6N*Fx& zoN-b#&=*^5k0edb8UGM(I6Eps+raXs_HJbM#-=>ndoL`< zxY$2S90!|xMB`R8H!(2Fnj5$nZH34Yvu81%M+z4NX7P`+w&jO4O|Rd=Tr&T?O|lZVb(A;Q;hMbuZhts>WO%+6$t< z>Sx{D(8_+revSq9pxVQ)| zY)31br-{TD)K>TD99qfF2dj8AIWrqnhZP@Qxc38~LA3aPKOy?lZ~Ul{{BD*%!>e&P zx;M%joBn_)y)A#bFc(uJn=~8RHeNZ))Re7ahZqp4-%s|cB%z4_pUdKXOlO@$st9cLtzF4Za1vCgIpLb@F<4R#HcStJ|-OM0U4AIX!IX_DY*-;Q6LS*l0K zQvO(d*C`pJcvELKWLeM3V`Za!O%JYnQ5vBuOAU@_^-uTEXB^0n6IwP87p!t?Ybz*Q z(0k&PQ0YKl>~}qFDdp=z!`Arv$%9(@lnoipCuWJGIDvHClas|X?-~$bq9!(>!;|7J zhSzDf!^A+zG8On^AX@acGL#hfFIt=XMfAM6C)@GnSeJ-q3t zd}l1-i8R~;VWnW$=+hbj$)4^Vq42ZY$V4OQM+mo32jKosX~kbUFpSLsoc@9=#K!q^&!Erm+1mO-ezR|LO@}9?e~pa;$|o z+km7})9k<_r2~->c-aybkHf#X1~6llwXi|-1C<^mRm1iCdq|NVZ%0 z5@xR03$Bw*q?zMN(0%d)p~@c0Ky&QSP4*N1i-?*wy-oT@*DKQIdF2JAvOWJUtZpYf zsYCH+B`NCbfnFGn|x1 zpXFIKd%g&I**!k|u?L7Pn?`BL*@9y*w|=Tm{^<|cDf3XP!EFrn8Ax_d*2%G{++CR^ zf;o5D*8{0PiVLIa*+wt-z+5msd9bByqS)WKVbFT`rg+OMgV?-UJxelj$&hILacP0ZW;JdR~6CMLmVzM~(xHW}Cj`bQN#$$;jD46joE2#p_& zDgvA?{w^djXirtJW_LI+RHw-9#BpRu1BU>8VU5>!b_t{uRvcyWtg7D-r)sZ>$Ly-( z6#;Fb#vNe-uPL8(PL-RMd`KjeM5sfG&6$3 zd*b>|n-W=(`&7V<$q(s2I#9V06o|X@^{o)ZCp1nVi5N%icQm8o!LlrQT0H31dSE1H zCv%s1w75)Q-Hv;=)qh5Cj-W%lwf^8o%kA;~E26)wZHk?8;YbHKw2a3E1KUigZp5WU zx^AlIO4<#vsg5NbDgfi`Wenj+XlKwAbsy5()WPN2m(97y{Y~8cq~Mkx-PsSWSQ5P% zZ)!?$2~f)m%|bk=rRT~%i-sn$qdoA9O$Jw3C)AtpfqaR-f$$2N{i9uxuxzN+Ys-W{ zRAgA-zz3{L+Fn5(|AcS_1U zxlL!u*_l8CYYhHl)bKk=KJT{p-7FUXVNb_YqYLnlGWfrNnfgu_QxA3a;w04x^d1XS z2@Tg5$_f(6t4x2z_@S&Zy@{MQx&L$)h1cEK-6pdf{}T5JDw)8Z@x`31r$YgRKr4$k zj*&!<5YL^Lsw-K+cVjM%%U<@e;jf-;x1kNQg#Q%7ZiNB;c7P#)oz4}H&AFp8TlLxk z0U0Q^yYH44*-avorO3Kt`;6(bd&;JZ`TmwJfw$6_Kk7C}!?Zr;9MLvO=UjZjnYP_l z1Bwn_(11QEb+#1l%Fnl>8RKb$=a)$oFjic^OnwqVvL*_F`%~5`K+Ns@kIDpaU3!76 zr2Yv>#e62E|61&;3%^YDqO;=IzY2$bY_?lIx+pL+velvD%{u*;EPc9-!sCS)u-%Z^9p$XA&r9E(Mh zDjuJ3%>NQ;6K)Gy-AYvDMOIot<=Wo4XJv6g>W;{#op>Ny@A-b2?bq#eU?cHza0_TTuAc@P_u%a9aW_!d?tG;rr{6C>{gyz^6bX z$jC|9WJ^t~^|%OioYF4ry%%`KD*yMjcf670MCan0DV3KV$STKTM+3Be41>(EBO^VL z-CXYi2XTNplq?ob8Mi%VC#G_e;)X?$66%Ig#kX;LRFfxDeotB8Xtb(^fy$wDpdK}0 z%AYRb#ulJraXnr*J{rdkrdz$(=>c^616~r~4hyIGbkM%(izDE|Ap;n9`<1_gK+^h? zKc|IUFT=3tZ?>mJV|5g|NPerG;JMjPQ)te3|=on#t^&RnJ$!GGh z=Wm(A`bZN-)OQIzpc;byj04~g7GRyugRFa`y|7R!s}a%Q`Q*uNqfhr^g%*{ zN}dKWb3HT}X4nVoPY^amnDvIXZW^w+SWi;Lr0=J{L~T)SB4k=aoEmsVe;i;bGI@2h zIdY=-5i^1>!s!jMp!$P6hP#6bssvlq<)Iap4A+azfokeF)e~3tD{=o&M{$_DtRPdf zPsMqt+}GPqQq4btdNVU&FRPY;$i#kbb|9G|5z046gohCT+kH`l=#hI% z)rHtcAma?w} zTdr~|@#zyfvrUSuOt3@q?CHWAXyvj6yWV0ASLz>69l5QLgHjg_sL z(>ZtpxX412@mlKhHx9{tM-<~|X7&zeqB#Cb+vp#>(}eA_3@_0pN5d?*1WZjfTEKX= z0I8Q@uBdAevT9JY(EnQvoMcNfn|8 z`9Z6#amb?At;}x`!>LypkhUcR=22kp9?xO0A}FRsW5ERQ&Hq+O5lT9rWoLoSb5#@MzVPaU<_5H7LmTFe>bq~&$m`8*IG-ShAT z2ih?a!e-MfKE&B(Y%Uj1(AwJ)*0*{FIQ1&dmgXlPYoe0czO%s9Wdd9*&-SA$$I*2H z>FvKYDV95dpNMuVmVk=}^x`wniv;11YOJm-)P+OIn^~Cv1zzUKn0!^VglqKjbo_2j8}8s0TY4=dt?~zdhnl z35N!Qo{cqUKK2)g1szo+#O)~pX1)sS0rZ8CgqV4|H((! zoLf|jp-or#N(d4sBE9BF(_-}pmfG}a=4#zMrF!i~=L)|%%gm~h0}{JXQ=_x&EcGLK ztppRdrG9EX-q1x&*Ba7%81m8#kyxy@dSoNowG>ktJx9EbIwC{A`#gk>=Utgxix2#G zDhYfSZ`~U^VK+UmrKcX0;5|sw+>RP!|@nt1$lb?1*Wo3yJQ!s@1f>unOH|!;B z8jK;>Q1fcrTdeM;BIY*EirN!}X z;6;~AR@HGS*&(BTLaSi6z`K)P2uD9!6P8lEsk`K|a4)pGEhGA}YCI$FL7s~Py#Uo2 z1|a?Mu1N;QaX(SBeaSJr(>!Nnua(Vck3LD|qcz$Lf&I2#odohKp-U9M8fSpkw(meF z(2SlW$_aRK)40J(=mFz$xHGIgb|goNd0iH8Q8c^=AVVJo7sUJQ?({-XYkk((*| zUmO`eP-?w6Fn%%#8b_2jxM1avroK-Jh~3BKm7OhPiKdRbvFn-F*q$R{WPHJ06CMkK zPHptV_n&GjyOjHxST)TFngTE16EqxEp4}dm5k}j?RC;BOuez9UtjbDNOu`q8e5hpy zt|UC?73f2Tu+jt1NKR-JJ{`8TA4*nnGsF}H+_7#pb}!;lLCq8^_Vd1Yhj~`Of&MQm zn-}JLi5*~KC9%QW@^|}(@#J>4yT4GdX37|EKG{x+(fr~JQ2#_Bl~f5HB(d^;E$eM4 zX-!xd1=}oD-4-7mZvU;fo_InmwC~D->zuK4RJXkxj7%JysOVry`Jy6g$RRg?T38%N z==D^#n#X%KdjzoJ(yEBGh_qW-@gafBCOP+g?^`$Ov&+jK`#v6GOa7LM(M6MaBG?XE zZNfa&sr&ubxIPyYfgxAa|4ZHYH|=^e`-X!c z-CvsZ0A$qbgpYysz|5^a$M;A%z{uvw0|4ynPXgHMf;wo^=_R@G^3elFlJ&qz)RdS56L${oCiH7;wW;38^~7|l-|XMdk(}o(OVzE?GrSTXZvPVFW~QrIk9Vyf z576RWM#fK`vcwZjWaD>TB`UEj+HkXe8RNM?BpKc67#^6LV|YuPfByswrT4SnqsEK2 zoW4_AVh=+dasc>_@pXo-p(gF^O=NX6hly7+L9f0U7{;VV zHh4T_CC~LxV(A*$SA+eDuHHn#Dcb>HLe{Nqa8Q46uqah(PF$x`2OLGx7+>Ch!2W~zjShs1?+ZO<(YmaCq2|U7OJBmSe%3Q zq#J^wdql*!AN`z_j_F5b8kK;=&6UaF>>$o)&zpp<`J$E5Lw-n!rn8J~tcUi{ozMz8 z=cagXk-%mf2NNQ2fah|Sb76N8ynJfslc9pc5_Pc|Zfrh^;h9+AK8a02n+9QT36YsI-eAXpSJd98Ra|;bcaFlr7+a4gjM|L%V7&g^$Q#|Gy zm?bCNK$J5O$;ve@9R?6uDra*r)gk zp;3BD3(KHs_2wsZkeK8-%DT&L5pD!`KRye|7P4ol2g>>X#tqR_XuVyuLot?xt_esLm%MYPxifn4IeMon_6>>NuDtWcaQG<@h1Ma)=P1ikH!Qbf + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xconst_iterable< D > Member List
+
+
+ +

This is the complete list of members for xt::xconst_iterable< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
begin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
broadcast_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
cend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_layout_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_reverse_broadcast_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_reverse_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_stepper typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
crend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
derived_type typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
end() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
end(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
end() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
get_cbegin(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cbegin(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_shape() const (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inlineprotected
get_stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
inner_shape_type typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
iterable_types typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
layout_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
rbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
rend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
reverse_broadcast_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
reverse_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
reverse_layout_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
reverse_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
stepper typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
+
+ + + + diff --git a/classxt_1_1xconst__iterable.html b/classxt_1_1xconst__iterable.html new file mode 100644 index 000000000..f0e903624 --- /dev/null +++ b/classxt_1_1xconst__iterable.html @@ -0,0 +1,1718 @@ + + + + + + + +xtensor: xt::xconst_iterable< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xconst_iterable< D > Class Template Reference
+
+
+ +

Base class for multidimensional iterable constant expressions. + More...

+ +

#include <xiterable.hpp>

+
+Inheritance diagram for xt::xconst_iterable< D >:
+
+
+ + +xt::xiterable< xarray_adaptor< EC, L, SC, Tag > > +xt::xiterable< xarray_container< EC, L, SC, Tag > > +xt::xiterable< xchunked_array< chunk_storage > > +xt::xiterable< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xiterable< xfixed_container< ET, S, L, SH, Tag > > +xt::xiterable< xindex_view< CT, I > > +xt::xiterable< xmasked_view< CTD, CTM > > +xt::xiterable< xoptional_assembly< VE, FE > > +xt::xiterable< xoptional_assembly_adaptor< VEC, FEC > > +xt::xiterable< xscalar< CT > > +xt::xiterable< xtensor_adaptor< EC, N, L, Tag > > +xt::xiterable< xtensor_container< EC, N, L, Tag > > +xt::xiterable< xtensor_view< EC, N, L, Tag > > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using derived_type = D
 
using iterable_types = xiterable_inner_types< D >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
template<layout_type L>
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
template<layout_type L>
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
template<layout_type L>
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
template<layout_type L>
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
template<class S , layout_type L>
using broadcast_iterator = xiterator< stepper, S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
Constant iterators
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
Constant reverse iterators
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
Constant broadcast iterators
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Constant reverse broadcast iterators

template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L>
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L, class S >
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
const inner_shape_type & get_shape () const
 
+

Detailed Description

+
template<class D>
+class xt::xconst_iterable< D >

Base class for multidimensional iterable constant expressions.

+

The xconst_iterable class defines the interface for multidimensional constant expressions that can be iterated.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xconst_iterable provides the interface.
+
+
+ +

Definition at line 36 of file xiterable.hpp.

+

Member Typedef Documentation

+ +

◆ broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xconst_iterable< D >::broadcast_iterator = xiterator<stepper, S, L>
+
+ +

Definition at line 63 of file xiterable.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xconst_iterable< D >::const_broadcast_iterator = xiterator<const_stepper, S, L>
+
+ +

Definition at line 65 of file xiterable.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 72 of file xiterable.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xconst_iterable< D >::const_layout_iterator = xiterator<const_stepper, inner_shape_type*, L>
+
+ +

Definition at line 51 of file xiterable.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 58 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xconst_iterable< D >::const_reverse_broadcast_iterator = std::reverse_iterator<const_broadcast_iterator<S, L> >
+
+ +

Definition at line 69 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 74 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xconst_iterable< D >::const_reverse_layout_iterator = std::reverse_iterator<const_layout_iterator<L> >
+
+ +

Definition at line 55 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 60 of file xiterable.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::const_stepper = typename iterable_types::const_stepper
+
+ +

Definition at line 46 of file xiterable.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::derived_type = D
+
+ +

Definition at line 40 of file xiterable.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::inner_shape_type = typename iterable_types::inner_shape_type
+
+ +

Definition at line 43 of file xiterable.hpp.

+ +
+
+ +

◆ iterable_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::iterable_types = xiterable_inner_types<D>
+
+ +

Definition at line 42 of file xiterable.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::iterator = layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 71 of file xiterable.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xconst_iterable< D >::layout_iterator = xiterator<stepper, inner_shape_type*, L>
+
+ +

Definition at line 49 of file xiterable.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::linear_iterator = layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 57 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xconst_iterable< D >::reverse_broadcast_iterator = std::reverse_iterator<broadcast_iterator<S, L> >
+
+ +

Definition at line 67 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 73 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xconst_iterable< D >::reverse_layout_iterator = std::reverse_iterator<layout_iterator<L> >
+
+ +

Definition at line 53 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 59 of file xiterable.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xconst_iterable< D >::stepper = typename iterable_types::stepper
+
+ +

Definition at line 45 of file xiterable.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::begin () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 464 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::begin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 571 of file xiterable.hpp.

+ +
+
+ +

◆ cbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::cbegin () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 487 of file xiterable.hpp.

+ +
+
+ +

◆ cbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::cbegin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 599 of file xiterable.hpp.

+ +
+
+ +

◆ cend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::cend () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 499 of file xiterable.hpp.

+ +
+
+ +

◆ cend() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::cend (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 613 of file xiterable.hpp.

+ +
+
+ +

◆ crbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::crbegin () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 539 of file xiterable.hpp.

+ +
+
+ +

◆ crbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::crbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 663 of file xiterable.hpp.

+ +
+
+ +

◆ crend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::crend () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 551 of file xiterable.hpp.

+ +
+
+ +

◆ crend() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::crend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 678 of file xiterable.hpp.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::end () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 476 of file xiterable.hpp.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::end (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 585 of file xiterable.hpp.

+ +
+
+ +

◆ get_cbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::get_cbegin (bool end_index) const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Definition at line 688 of file xiterable.hpp.

+ +
+
+ +

◆ get_cbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xconst_iterable< D >::get_cbegin (const S & shape,
bool end_index 
) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 702 of file xiterable.hpp.

+ +
+
+ +

◆ get_cend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::get_cend (bool end_index) const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Definition at line 695 of file xiterable.hpp.

+ +
+
+ +

◆ get_cend() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xconst_iterable< D >::get_cend (const S & shape,
bool end_index 
) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 710 of file xiterable.hpp.

+ +
+
+ +

◆ get_shape()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::get_shape () const
+
+inlineprotected
+
+ +

Definition at line 732 of file xiterable.hpp.

+ +
+
+ +

◆ get_stepper_begin()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::get_stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 718 of file xiterable.hpp.

+ +
+
+ +

◆ get_stepper_end()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xconst_iterable< D >::get_stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 725 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::rbegin () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 516 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::rbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 633 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::rend () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 528 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::rend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 648 of file xiterable.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterable.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xconst__iterable.js b/classxt_1_1xconst__iterable.js new file mode 100644 index 000000000..d55a43b8f --- /dev/null +++ b/classxt_1_1xconst__iterable.js @@ -0,0 +1,19 @@ +var classxt_1_1xconst__iterable = +[ + [ "begin", "classxt_1_1xconst__iterable.html#a6ab0e76125fa876b97b53a813a3d4713", null ], + [ "begin", "classxt_1_1xconst__iterable.html#a095cfd6ccf0bb5696073af2c8536f8e9", null ], + [ "cbegin", "classxt_1_1xconst__iterable.html#a8e90c4de11331d25fcf27944833280af", null ], + [ "cbegin", "classxt_1_1xconst__iterable.html#a212ee6280ccfa5814e4f2c16d1880a84", null ], + [ "cend", "classxt_1_1xconst__iterable.html#a6b266693e1dfec18e39baf2d3b34c20e", null ], + [ "cend", "classxt_1_1xconst__iterable.html#abc45bc962caf2ab0978a775836c6b3b8", null ], + [ "crbegin", "classxt_1_1xconst__iterable.html#a425b0d85a0ffbb1752c6f45f211c471b", null ], + [ "crbegin", "classxt_1_1xconst__iterable.html#a6fdbad0911ef9a473a18f109eb33a7ba", null ], + [ "crend", "classxt_1_1xconst__iterable.html#a804a4b52bdfa60d1855f9081fb11fb13", null ], + [ "crend", "classxt_1_1xconst__iterable.html#a851fb3a86aacc069921e8719ec2a21e9", null ], + [ "end", "classxt_1_1xconst__iterable.html#a74906f6a3242a5a2b001e6a534007589", null ], + [ "end", "classxt_1_1xconst__iterable.html#a8ca771d1dda2e42203cfdaaebfeba601", null ], + [ "rbegin", "classxt_1_1xconst__iterable.html#a52be134ecb3d529fddf7e8ba888a59a0", null ], + [ "rbegin", "classxt_1_1xconst__iterable.html#a3671f77843974f6962cd425318c0ef00", null ], + [ "rend", "classxt_1_1xconst__iterable.html#ade7cb42ea93353d00bbb739743be090d", null ], + [ "rend", "classxt_1_1xconst__iterable.html#a634cb122a80a40c5c38ff2b4527e3f26", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xconst__iterable.png b/classxt_1_1xconst__iterable.png new file mode 100644 index 0000000000000000000000000000000000000000..768d505c16ef08751f80b09928246f657a06e2cd GIT binary patch literal 10752 zcmeHNXe*S|MP=;j7B4P zd^I+eoO{1w+o$W}KPq_q>fXJ3px&RETNTC!;UW9pg=rTIgeLhN@7P}uy6%f(vs06klLt#cQU7VdiU-}D zot<83p!DU&n0ff2QDI?W*mC~;O9ur7pcGfq;$d91L?VfZyluY%NhLsCuYs=0Eb8n` zBJWaNq^6>)#@t!t?g&c8Y0&i9DOzrqo}zM03qcR=GxVHs3p)9idkqJZT1Q0PGGjNl zY-r2a>`T{4XSB7E?Ok6|YrIJ3T3i(8y74Ls3YyxLBJf$t=j@_+EeONdNSZKMu)GTT zvPCz*m+2YpX~>6y&YTuTLn@}(pSlgO4=s4{7ag&Q~1 z`37V{mHmp2Qru-(O-3@~Db_7*-}85#J`J^e3{`yty8lb6KJpVp z7nXnK-A%FmbU}Cw8MX$ghSu$%0A@mtA3E>Y8!&m3-r&m#X@VTSR_;$~n@DFw2jw=2 zuE7v5%Ae2YmI@KlhTN*6`6u?4cmRYsE6OP>asU-3TI%$eHbYVzF$jJ*GEt^v43PD2MaKw?%dYkGmXHL;GqDTIRBk zggF3!>h3A15T6OhjwZU7Iyn2HWqt)gRh1jFYIAG?SYs+tullpCNGH3z)G%zz<6&21 z+%4!IM&oigQ<7)JSMoJ&jnr7`c2N{gkjk2Q_#K@vIF?3gOK7j}a%|eHR-jAm~;+%=QVcc6S;@67&y*?b0*?UGO9fYN#i zX8!!oQ>4`GGhP;>6P>|h*?en1micB?!2B?TF`{?2a$NMg9OF7);E_#6#PbG&4caZSe5DT29A(a)=Jr_$~ zCBY-|#Aiz-YZlKV7xyCarsmcSK=%wC|To9`-mPJxOC8|7a|~AFOu2paPaX zG?mz0Z=J&0j3l;E$E0SiEg9@c8-0G;sjf%<=TNix(6p~a+niTbP`pXGj0oYrmB{)d*B+<}Wf4wNWB@e0wD06w-FXFG;Q_(Ih9uo73{Bj`7xHl)My|J=1x~Pv z?YQSnG+>%RG`z=x#X*2LO|#v^epsES>R}MSD+ndj$RkFdeeJ=oeXkC4l=>Y040}C- z#7(&Px(%btzZ)K{)9dxFE0Bqudv8@7ORKI|twqz{Nwu{O1VF|`X3O2Q8n zRR)qDW7e*`Lus46g{*sxD*K<|{r_~Q zSw$@_kKO>{0{8BXPs?dYKhiOTNl^T55BU8i(P2p;c-C(VbA;Q=5;QJ(hjW{D#Vup) zUxyr5QkN3xdrAEjVD|7RL6&(FKOkg!G5)4px0#SWYv(932!n@*=`yXpCfpi(t-&D~ zBUZ+2nwr8L0LZFm*QA!##anGNXU?vXaxuicBs`>Elt=jPYiw4i@>+gO=uV3XDG1Iz z99pxx$tTp27CbTTTv{D3r4Q&yTyFa5t~65rerW6HQ7;RUbxK;pg5ul1#+CK<+V?lE z76%NtY>ZoIOwHup;}AR4?HS(v&_4)Ai`*^qe8}?hq}da!+w$AJN2RD(oK>>up<`5& zep7bJ(J8Ot2$uc$7kqaF0%7h!a(!7?4A+ew_h)(wx*9^0`wL=5Mu(I8%H>yrXm!!J z)?@PJMYSlXDq{FY!UNcd0y^(Bsnkmo2v%jeBY0$ zV~Lw*x;Xntj;4`6b3z&th~ue9>F6)iS6UhJXP6elaa8 zLLM1r+c6&^^6OM@QpUHHpaEL)E8yWe^pF=A3ltX;G_Fi*0Q-}vH8%yS?AYS%f2};4 zzxbofRe3=iH%p>y{T>!Q{6L@hrpc0JioL#0pw;pObtcX`|^jZ3Hci zZ#RO2C5dkA$iS7oIp!NVoAV_$Z9@a_SL{<+d?AAq(S@FkG0Qlsh<%Zo6t;*8vJ0C)%{8h!4Dq_LOCqMgeUbe_`F9TTCC!>86w13M6DwRc*t?(gn zpm{cC0QsX+zOL~k;h;6m2ob=nz6F2hKNQMuNfK!6gXPhM>Obv0vJWVqj4MCm@Sj8L zzoOUK9&BNGCD@|mf4Ok~Dt|2!Nt%U5&HYLAza7iJ8*J`xh@TT)GOo_p7TGu3aZj^U z=&oW(UUx~*m1(Ak2-$#SLU7l9PcxTjzoO;NFssod{NvSaqPl=(wn5g?ci?=Y>OGR( zMQD9)$VYaBeRZ5zt3axSL}m#{5{8e!2Px~eO6A`_*l^l0heyhu@=;l?W=ojma*u^l zSvz0YB7$j8L9df(z8&-1?OsXn?x813_`PMy%d!ObkS6txjza>;droEp8s#|oWaPbF zXhpxGewaq2W)3m9>Sd*}&a$l=?G@Vy{-e+CIGwcbekjz9qADC(GK_e!WGKgYGK9B) z9*$9H7MoI54W-yd9-~2}#Mv>p*sb!-XvZ^-JMfIt+@0p#Siwp73P;5wH?(3v5&80B znOp@*JgnnuJ!-@F6G|rQkvE@h z9&7(7xa10L<0{TO$^J18sm$jOB*j+=)$;q_d7VRCmnYxxy;(zxw=<^}9}11a@o!ol z(e&!wmGw7%2@GCkMMkIP(XgRW*~|9=aO!AB)&yq2)x3H03umg4F*yuLM?QO6m`xeOGCdSCYgV$1rl|tUU2*NCg=qf$(SIW%Aqq3}oJ7 z>JKf5h(MkMt*9#?=TF_$6>DbPmuZ6(f>S)sh;CNgsUnH9AQEY%5TYJhQoQT85pAFA z#$XMM2_==(1T}< zCrmP^;fp{{97u-Aeu9R!q8gg2^Y1;_px5E(0t{Pi?@20!M1cB<3EM6oq~3VZH{z0n zG1hp*$?P0@6EjFOT{h$bUF=oMlXC8PCo2^QBa%x??q23Htn!=dzA9 z5D;rR!>w}Y(M_8oRu)!eR5eg(JQ<@V+6*v$oUf=ODwWXg@-9DiBoaE8}c)EF2$7pK$ zY!OrB<0C>^v>$&EXlC0{0nM=}R`>dd%`HIA4|HGSQ05**=@_vONdYDO%o}q3DGmoq ze5E+@D_%a5QjD|5O&pJFatgJ@G&!2V7}nWUnRhxj!2w6S-%5XzutqdCCU-MlA01B( z#BGXjw{T)-#!-q<7s_azFGXDJ0gOzc3560|(X%&by+c1V@pAGEgSTFKr1ML{ExGcj z+h_{k-~);DdNK`D8armcOViIFPKQXOBZ2Qo&&!t9y@QjxOH}QC#9Dc!GUjn^+e$Bi z6qLbzq`LYA?c!*H-Oy_%G~C>{zHdb!qZVgedq0pLRwt#2%H#n8kdap5ZPAv3k(tE7 z0Y3rG&*9i%_CTDL{C8%{IoCBC1F)eH1NecbS|t^~gSZ-kvGyFTAb_=h_^D_EA}}->VcFExv8T&>8R{T8&{f1yDuv%Va`TbO4*>5T z`zu%aEUlY%@nLLh zv6bxv;_x(??;xVfn+jm&(8{5D-^dEu8(9(KqI6n^!A^R$PU+SMS=-p-2j1x=-_xdd zPwX-&3I~2ksW#};6*t8~S)}0*x{hjr4Sl~cJ>S*-qH9FLi86$@cfIp?x%@Z4j;9_a zFrx6VA@wzp|KtvVGul#TSbJU(c$YuB3r(iIHdk^f#ii=e2`0*+HQ~Cv_eNV1>N5YL zz7PyY`N-d*ycokO}zft;fVY;sW>D04JFa&fufj=aGZT}kOLV{_uJ4eC;An$iq z6z<1+iVbSs8*sCtabI4r?eKsifmMqp=~qY%Exn#2NYkSr29Hz)fk5G%N;YmbLLLttww~L8X1$Rzw+i@JJsOW*q)* z`&)>=+K%XzJff>)FVfVKm}@71DpaIBZ01J{X8F@){ra!vT@D-Fh!~sPeWZmDEBU-J z-3Ni`UOUEk)inA=PIGj~yn*ir*%$J@)mR8WpMB*Z#WgddSzN4^?ZAedfNGP~*cr)u zreywA<|nvB-@$l><;KqvJ@eZ`(LBx6v;*c~)3{Z|K_Al6r1sViQre(B8TCZ1f5G-m zSQ&>|*cquwMq^y>ew0{~XqDt4kbGaIYi#LkTZj%t*sFnl`uMH=(vFQpfn3w3<1PWK zSweV1%U8_2Jj@Jy$|z1J7v>t=J{O2$1(Zw#dp%kjNl$lD6p$mC-&D)P2*l&r;OkHz zlMb>@`|;%$PGBdpYJjJtG26NxPw5)ZP1MxJb}5ihK=kt2w;d=1>C7!5TV%A*B>=b7 z+66N$?ILbU-JWbOYBqeb#Bnpbz3jfTrq;jU3MaOXxD#|DN`>yyhNktn&7UBxAwA{; zMDr@V`c$4c3m-fa7;B74gp#BA6t{VODQ*mysI`){Ns&?)0&1D?P%9d zR>_q)&zUQc^_I}qvJPE0!C)RPqydbd75K$2w+wQRd>t9Bi+lhL$%(LuvXbZ@*jsoq!NRqjCk4pz~h*l&x@Cb_vZiPx^PK|)Cy$fl}4~6-wh7-g2 zpRD5*2Ud-D5x$fAwWaaVVjBlYb!`8_B%T#^Md>z5knD|sWKViWbyLRj@9XZ{;KvDL zUs*J{895FiZV_YynncGx;vPqT05s?*XCrvn1wGi-^+LzBP-o?F@ZU_WHVRYaANq*r zJk1vfVwt2o!fl)=l@gGN1!Sbn!L)Q^5hu>po=juOoZ(2~4k%tv)684IfmvvAHLL}V zBrU~l12pladk;1*Se2A9i;LZ!#mCJsOIgW}TjTs<55#PpRub&73t0?f@aruj$F(jm z2mF=zq|)f7uYvV_;b zb|ZgK5QQ3>#|sI{392cAiEcuh9>`Dh{`%cF=3kpByUn#Q>@aMHoV$AkHc^w|vApd? zFchRh^u`L%@tZ71-#2cnl^3u!AdBeVnOSe0iMMXoA37y0jnZ8{me3p)7u-8EouP;4Nj|mPgDq3O6i9 zcnOkT63gW?0W90M3c`cbAD-t0l<@QSB+h91Abq5%G2XTjCOlF&z)wc;_5^>d*;9nN>ZJo0BCrsq0L`Ha?9 z>vs!g6{dW~Ti|`6>yu{a-irVDn|mw3lHNpHM_q>3GA){Xt|rZHk@2w}0O)ZZh-c~# zc`WW-umt!`Zy3F@>L|Q8awEJf?mfrsfhZR*Ch+N|=zIr@#)Bd64=^*3N{E@1drY#T zIgeqgrmt78mhL@Ii6|nLVXqJ`P>Ttc_oO z5x!WMdx)F+Onvy}W}viHW(n=j)LN}JZ5v6PnyQaIhOzW!P;x zqI5$?4p@v9tH(2~lPtpMhOTaAexa^*HD{i6bkkVB^CayD)P`!$!zBC%v%D*T;lm<2 zdl;r&3r%_~P{UEKk9y2K@WMP;sUMIlhETMxRvUhrctYM{=S#vs62_3x?Sv#ga1?@5 zl#EmVNXGo;BFftif8=~otcd-E$*oT^2_$i;>B3GD-`z>o&CYlzfFNZ_b*sc8JNlY= zEP6geD^GXNkX_9hSSuTuK}|qsxcaW&kZ}*z1Kj7!6PufsqMXK?K8$jphFTHZN9ITC z-ehXV+rWQIl8)d7jL(v);4f7;0d!9x~AalYV&9gyD8W-jh}Yxg3ArpmWhehl-=m)*OZImw0Yan3>R M@!4Iw^UJUP4dXDD{r~^~ literal 0 HcmV?d00001 diff --git a/classxt_1_1xcontainer-members.html b/classxt_1_1xcontainer-members.html new file mode 100644 index 000000000..5824ceb0d --- /dev/null +++ b/classxt_1_1xcontainer-members.html @@ -0,0 +1,293 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xcontainer< D > Member List
+
+
+ +

This is the complete list of members for xt::xcontainer< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
base_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >private
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_pointer typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_reference typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_backstrides_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
inner_shape_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
inner_strides_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >private
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >private
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
pointer typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reference typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
shape() const noexceptxt::xcontainer< D >
xt::xaccessible::shape(size_type index) constxt::xconst_accessible< D >inlineprivate
shape_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
size_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
xaccessible< D > (defined in xt::xcontainer< D >)xt::xcontainer< D >friend
xconst_accessible< D > (defined in xt::xcontainer< D >)xt::xcontainer< D >friend
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xstepper (defined in xt::xcontainer< D >)xt::xcontainer< D >friend
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
+
+ + + + diff --git a/classxt_1_1xcontainer.html b/classxt_1_1xcontainer.html new file mode 100644 index 000000000..0516fd9ea --- /dev/null +++ b/classxt_1_1xcontainer.html @@ -0,0 +1,3418 @@ + + + + + + + +xtensor: xt::xcontainer< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Base class for dense multidimensional containers. + More...

+ +

#include <xcontainer.hpp>

+
+Inheritance diagram for xt::xcontainer< D >:
+
+
+ + +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > +xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > > +xt::xstrided_container< xarray_container< EC, L, SC, Tag > > +xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > > +xt::xstrided_container< xtensor_container< EC, N, L, Tag > > +xt::xstrided_container< xtensor_view< EC, N, L, Tag > > +xt::xstrided_container< D > +xt::xarray_adaptor< EC, L, SC, Tag > +xt::xarray_container< EC, L, SC, Tag > +xt::xtensor_adaptor< EC, N, L, Tag > +xt::xtensor_container< EC, N, L, Tag > +xt::xtensor_view< EC, N, L, Tag > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
Size and shape
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
Data
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
+ + + + + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + + + + + + + +

+Protected Member Functions

xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
+ + + + + + + + +

+Friends

template<class C >
class xstepper
 
class xaccessible< D >
 
class xconst_accessible< D >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
+

Detailed Description

+
template<class D>
+class xt::xcontainer< D >

Base class for dense multidimensional containers.

+

The xcontainer class defines the interface for dense multidimensional container classes. It does not embed any data container, this responsibility is delegated to the inheriting classes.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xcontainer provides the interface.
+
+
+ +

Definition at line 71 of file xcontainer.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::accessible_base = xaccessible<D>
+
+ +

Definition at line 103 of file xcontainer.hpp.

+ +
+
+ +

◆ allocator_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::allocator_type = allocator_type_t<std::decay_t<storage_type> >
+
+ +

Definition at line 80 of file xcontainer.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::backstrides_type = typename inner_types::backstrides_type
+
+ +

Definition at line 93 of file xcontainer.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::bool_load_type = xt::bool_load_type<value_type>
+
+ +

Definition at line 89 of file xcontainer.hpp.

+ +
+
+ +

◆ const_container_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::const_container_iterator = const_linear_iterator
+
+ +

Definition at line 207 of file xcontainer.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::const_linear_iterator = typename iterable_base::const_linear_iterator
+
+ +

Definition at line 111 of file xcontainer.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::const_pointer = typename storage_type::const_pointer
+
+ +

Definition at line 85 of file xcontainer.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 83 of file xcontainer.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
+
+ +

Definition at line 113 of file xcontainer.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 101 of file xcontainer.hpp.

+ +
+
+ +

◆ container_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::container_iterator = linear_iterator
+
+ +

Definition at line 206 of file xcontainer.hpp.

+ +
+
+ +

◆ data_alignment

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::data_alignment = xt_simd::container_alignment_t<storage_type>
+
+ +

Definition at line 107 of file xcontainer.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::derived_type = D
+
+ +

Definition at line 76 of file xcontainer.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::difference_type = typename storage_type::difference_type
+
+ +

Definition at line 87 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::inner_backstrides_type = typename inner_types::inner_backstrides_type
+
+ +

Definition at line 97 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::inner_shape_type = typename inner_types::inner_shape_type
+
+ +

Definition at line 95 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::inner_strides_type = typename inner_types::inner_strides_type
+
+ +

Definition at line 96 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::inner_types = xcontainer_inner_types<D>
+
+ +

Definition at line 78 of file xcontainer.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::iterable_base = xcontiguous_iterable<D>
+
+ +

Definition at line 99 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::linear_iterator = typename iterable_base::linear_iterator
+
+ +

Definition at line 110 of file xcontainer.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::pointer = typename storage_type::pointer
+
+ +

Definition at line 84 of file xcontainer.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::reference = typename inner_types::reference
+
+ +

Definition at line 82 of file xcontainer.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
+
+ +

Definition at line 112 of file xcontainer.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::shape_type = typename inner_types::shape_type
+
+ +

Definition at line 91 of file xcontainer.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class D >
+
+template<class requested_type >
+ + + + +
using xt::xcontainer< D >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 182 of file xcontainer.hpp.

+ +
+
+ +

◆ simd_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::simd_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 108 of file xcontainer.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 88 of file xcontainer.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::size_type = typename inner_types::size_type
+
+ +

Definition at line 86 of file xcontainer.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 100 of file xcontainer.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::storage_type = typename inner_types::storage_type
+
+ +

Definition at line 79 of file xcontainer.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::strides_type = typename inner_types::strides_type
+
+ +

Definition at line 92 of file xcontainer.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer< D >::value_type = typename storage_type::value_type
+
+ +

Definition at line 81 of file xcontainer.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::at (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 274 of file xaccessible.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 111 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::back ()
+
+inline
+
+ +

Returns a reference to the last element of the expression.

+ +

Definition at line 109 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 113 of file xaccessible.hpp.

+ +
+
+ +

◆ backstrides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
constexpr auto xt::xcontainer< D >::backstrides () const
+
+constexprnoexcept
+
+ +

Returns the backstrides of the container.

+ +

Definition at line 405 of file xcontainer.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xcontainer< D >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the container to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 621 of file xcontainer.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::data () const
+
+inlinenoexcept
+
+ +

Returns a constant pointer to the underlying array serving as element storage.

+

The pointer is such that range [data(); data() + size()] is always a valid range, even if the container is empty (data() is not is not dereferenceable in that case)

+ +

Definition at line 593 of file xcontainer.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::data ()
+
+inlinenoexcept
+
+ +

Returns a pointer to the underlying array serving as element storage.

+

The pointer is such that range [data(); data() + size()] is always a valid range, even if the container is empty (data() is not is not dereferenceable in that case)

+ +

Definition at line 582 of file xcontainer.hpp.

+ +
+
+ +

◆ data_element() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::data_element (size_type i)
+
+inline
+
+ +

Definition at line 653 of file xcontainer.hpp.

+ +
+
+ +

◆ data_element() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::data_element (size_type i) const
+
+inline
+
+ +

Definition at line 659 of file xcontainer.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::data_offset () const
+
+inlinenoexcept
+
+ +

Returns the offset to the first element in the container.

+ +

Definition at line 602 of file xcontainer.hpp.

+ +
+
+ +

◆ data_xbegin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::data_xbegin () const
+
+inlineprotectednoexcept
+
+ +

Definition at line 733 of file xcontainer.hpp.

+ +
+
+ +

◆ data_xbegin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::data_xbegin ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 727 of file xcontainer.hpp.

+ +
+
+ +

◆ data_xend() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer< D >::data_xend (layout_type l,
size_type offset 
) const
+
+inlineprotectednoexcept
+
+ +

Definition at line 745 of file xcontainer.hpp.

+ +
+
+ +

◆ data_xend() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer< D >::data_xend (layout_type l,
size_type offset 
)
+
+inlineprotectednoexcept
+
+ +

Definition at line 739 of file xcontainer.hpp.

+ +
+
+ +

◆ derived_cast() [1/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::derived_cast () &&
+
+inlineprotectednoexcept
+
+ +

Definition at line 647 of file xcontainer.hpp.

+ +
+
+ +

◆ derived_cast() [2/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::derived_cast () &
+
+inlineprotectednoexcept
+
+ +

Definition at line 841 of file xcontainer.hpp.

+ +
+
+ +

◆ derived_cast() [3/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::derived_cast () const &
+
+inlineprotectednoexcept
+
+ +

Definition at line 641 of file xcontainer.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
constexpr auto xt::xcontainer< D >::dimension () const
+
+constexprnoexcept
+
+ +

Returns the number of dimensions of the container.

+ +

Definition at line 378 of file xcontainer.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer< D >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the container.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 536 of file xcontainer.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer< D >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the container.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 551 of file xcontainer.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class D >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xcontainer< D >::fill (const T & value)
+
+inline
+
+ +

Fills the container with the given value.

+
Parameters
+ + +
valuethe value to fill the container with.
+
+
+ +

Definition at line 423 of file xcontainer.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::flat (size_type i)
+
+inline
+
+ +

Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).

+
Parameters
+ + +
iindex specifying the position in the storage. Must be smaller than the number of elements in the container.
+
+
+ +

Definition at line 671 of file xcontainer.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::flat (size_type i) const
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).

+
Parameters
+ + +
iindex specifying the position in the storage. Must be smaller than the number of elements in the container.
+
+
+ +

Definition at line 684 of file xcontainer.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::front ()
+
+inline
+
+ +

Returns a reference to the first element of the expression.

+ +

Definition at line 108 of file xaccessible.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 114 of file xaccessible.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xcontainer< D >::has_linear_assign (const S & str) const
+
+inlinenoexcept
+
+ +

Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 633 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_begin () const
+
+inlinenoexcept
+
+ +

Definition at line 781 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_begin ()
+
+inlinenoexcept
+
+ +

Definition at line 769 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 793 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_cend () const
+
+inlinenoexcept
+
+ +

Definition at line 799 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 829 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_crend () const
+
+inlinenoexcept
+
+ +

Definition at line 835 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_end () const
+
+inlinenoexcept
+
+ +

Definition at line 787 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_end ()
+
+inlinenoexcept
+
+ +

Definition at line 775 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 817 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 805 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_rend () const
+
+inlinenoexcept
+
+ +

Definition at line 823 of file xcontainer.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::linear_rend ()
+
+inlinenoexcept
+
+ +

Definition at line 811 of file xcontainer.hpp.

+ +
+
+ +

◆ load_simd()

+ +
+
+
+template<class D >
+
+template<class alignment , class requested_type , std::size_t N>
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::load_simd (size_type i) const -> container_simd_return_type_t<storage_type, value_type, requested_type> +
+
+inline
+
+ +

Definition at line 761 of file xcontainer.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the container.

+
Parameters
+ + +
argsa list of indices specifying the position in the container. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 443 of file xcontainer.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the container.

+
Parameters
+ + +
argsa list of indices specifying the position in the container. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 459 of file xcontainer.hpp.

+ +
+
+ +

◆ periodic() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::periodic (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 315 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 115 of file xaccessible.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
constexpr auto xt::xcontainer< D >::shape () const
+
+constexprnoexcept
+
+ +

Returns the shape of the container.

+ +

Definition at line 387 of file xcontainer.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the number of element in the container.

+ +

Definition at line 369 of file xcontainer.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 712 of file xcontainer.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::stepper_begin (const S & shape) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 696 of file xcontainer.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer< D >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 720 of file xcontainer.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer< D >::stepper_end (const S & shape,
layout_type l 
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 704 of file xcontainer.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::storage () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the buffer containing the elements of the container.

+ +

Definition at line 571 of file xcontainer.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xcontainer< D >::storage ()
+
+inlinenoexcept
+
+ +

Returns a reference to the buffer containing the elements of the container.

+ +

Definition at line 561 of file xcontainer.hpp.

+ +
+
+ +

◆ store_simd()

+ +
+
+
+template<class D >
+
+template<class alignment , class simd >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xcontainer< D >::store_simd (size_type i,
const simd & e 
)
+
+inline
+
+ +

Definition at line 753 of file xcontainer.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
constexpr auto xt::xcontainer< D >::strides () const
+
+constexprnoexcept
+
+ +

Returns the strides of the container.

+ +

Definition at line 396 of file xcontainer.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the container.

+
Parameters
+ + +
argsa list of indices specifying the position in the container. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the container, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 488 of file xcontainer.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer< D >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the container.

+
Parameters
+ + +
argsa list of indices specifying the position in the container. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the container, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
+ +

Definition at line 518 of file xcontainer.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xaccessible< D >
+
+friend
+
+ +

Definition at line 241 of file xcontainer.hpp.

+ +
+
+ +

◆ xconst_accessible< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xconst_accessible< D >
+
+friend
+
+ +

Definition at line 241 of file xcontainer.hpp.

+ +
+
+ +

◆ xstepper

+ +
+
+
+template<class D >
+
+template<class C >
+ + + + + +
+ + + + +
friend class xstepper
+
+friend
+
+ +

Definition at line 241 of file xcontainer.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr bool xt::xcontainer< D >::contiguous_layout = static_layout != layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 106 of file xcontainer.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr layout_type xt::xcontainer< D >::static_layout = inner_types::layout
+
+staticconstexpr
+
+ +

Definition at line 105 of file xcontainer.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xcontainer.js b/classxt_1_1xcontainer.js new file mode 100644 index 000000000..300740708 --- /dev/null +++ b/classxt_1_1xcontainer.js @@ -0,0 +1,32 @@ +var classxt_1_1xcontainer = +[ + [ "at", "classxt_1_1xcontainer.html#abd1a88f04c122d8d066a5b2abc7f2c8f", null ], + [ "at", "classxt_1_1xcontainer.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xcontainer.html#a905660a4d87f4d3e7b651bcf6bb690d0", null ], + [ "back", "classxt_1_1xcontainer.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "backstrides", "classxt_1_1xcontainer.html#a238a7ac8797b8afa4906e6445483aa1d", null ], + [ "broadcast_shape", "classxt_1_1xcontainer.html#a689eeba5b9b1b4e8943c335d39ecc240", null ], + [ "data", "classxt_1_1xcontainer.html#a4a86bf768a1595ab704198ed8171b07c", null ], + [ "data", "classxt_1_1xcontainer.html#a71249b300db5d1bbab81c1cf6a5843b2", null ], + [ "data_offset", "classxt_1_1xcontainer.html#a8a1a7ab7c076ce9b48301c42b825a83c", null ], + [ "dimension", "classxt_1_1xcontainer.html#a2a8d4b0a73c42555c56b87384b251f2d", null ], + [ "element", "classxt_1_1xcontainer.html#ac2d91aa6cdb9d2970b5505d55f462b61", null ], + [ "element", "classxt_1_1xcontainer.html#a9d3b8aa16501359595778305cdb6c3b4", null ], + [ "fill", "classxt_1_1xcontainer.html#af6898b9f125926922986af040eb90240", null ], + [ "flat", "classxt_1_1xcontainer.html#a416ecf1f18ce38fae7f93d98d0c238e6", null ], + [ "flat", "classxt_1_1xcontainer.html#a58f5504c365d5e9c0ff9783c60e586af", null ], + [ "front", "classxt_1_1xcontainer.html#ad36ac2c194e7e6f470548dad89e88ca2", null ], + [ "front", "classxt_1_1xcontainer.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "has_linear_assign", "classxt_1_1xcontainer.html#a5720f32fcd8bc068a5489eddcf7bd8b1", null ], + [ "operator()", "classxt_1_1xcontainer.html#a6bcf87fdd442aa26095837b359d9b4e8", null ], + [ "operator()", "classxt_1_1xcontainer.html#aeee2e07bb1f3e66193e5ef3432b4011a", null ], + [ "periodic", "classxt_1_1xcontainer.html#a038772dfb1936fa221a220c5ded4ac05", null ], + [ "periodic", "classxt_1_1xcontainer.html#a34d4a20e640737443fd0a7266b77b2b2", null ], + [ "shape", "classxt_1_1xcontainer.html#a69d345a40906cb982d205357520792fc", null ], + [ "size", "classxt_1_1xcontainer.html#a1c0a41d160789e55b7bdfd797b3af1cb", null ], + [ "storage", "classxt_1_1xcontainer.html#a75322e16f42222403daa18be69efa7d7", null ], + [ "storage", "classxt_1_1xcontainer.html#a19d0a91c82d0c35e414cf160751a9cb5", null ], + [ "strides", "classxt_1_1xcontainer.html#a521fff0ce57a45da819d7e313b3133b4", null ], + [ "unchecked", "classxt_1_1xcontainer.html#ac47ed05e4abb19044244cb26307cf8dc", null ], + [ "unchecked", "classxt_1_1xcontainer.html#aa493271826c9bc5298a556949755e84a", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xcontainer.png b/classxt_1_1xcontainer.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b65a5e288ca4864e3e05db69dd3b67dabf7b5f GIT binary patch literal 7359 zcmeHM3s6(ny7tsoTdgqnw3R-D3>w51gjQP+d88Fv8d30QTaN~aRDn_?;ZedPAvx8f zDQb;|3L=karQ(YO2oMN?hzJR*NNv9b`d<6tK)}Hj;P*^(e<}OviWM97Aa{TE zRnngn;=XT$qw7yU;hjBo$;jK^J{)V0~x>*Y`ViW($->6O_gJ50@| z4vehdGTU~vQsJy`Gmpm`mBUqA8;z-|erX`JJLi=(v#o^*=M{E3@GenMZYXZj#H2q` zb!zFy2#j`8&ZQ~Z8%Y$DRW^(UvqRLxbSgC7jg31^0aQ`(r=QKV+T;wlKDlb(oQTP4 zB$KmkXsqfDBN}aZJk?aRRNcBxg&iq1$w0tsCfnrgigVd443TU10g~9g#EF4bqc{rJ z$19cN4RJU+lg@lDkio4?~;G7`zl&7lsOo1O##eBhKQ33tx#&QvRv5`!p(>TB zGwRNXj(J0HUi0B4a{o#6FT)S9mW1dwypp{n8b}A;v#oz{;`t@cWzPI$Xq=) z>02rstmkCzkMXs$vzxQ_S})Ga%WKY<&uW{Kl1%eSb`mu)u3I^mLyI>@@A=WQlMMdW zIxdKt7kjPujRk%4diRf~EtoTJ))w8vm2+9Vcq8=xY0iPgo6p3GMH}XxXi0yYD~QEg z;DR&%X7fzpbHTmVl^J%pVK%{SQ8T6G<`l_vkEydm5ndJ3LZ%(I%Y zHnG4dlG@aHFTXhtzTK_s`gEXr$9{0wM|~&za%mSBzu9vp0^PaveB`!cOsX3mj6Y7E zajj~51$B%%U=4|6Ibx{77%F#k^#NH|)Vycs6>nsKA^aq3i1oEQGC;WGi#+BXv-z=> z_kp3&hII62@xA<0UFie)N}CEE8yVNOpfK(7WHQpIlqH?^Jdso*GACM0y5X*Nv3iQ- z9g-JKF-;2jmwGN32o=p$2s&3CH5%@a`zR0Ym>cio(_IY_cYfsl*JZj(fVJr?h1kV| zo!Wg2e@(mE$N6S~wYKDD4M&-jW-fZkk@xk9Z`v-60y|thl8qynOpX{+jG^X~&Ic?a z+#&TyLr+GDqCN1N$F52r`orwYlhVGtXdmdiv|QA2cc1?bY{$)e6&f+2RFS8;TFB1dIss|%xO$$0Kr;*Q6^zf^S?=~v>&L(=jn z(sq@PCM_6yYndtE0#|Br*mGi0yEGvlxO!o%C)%s{&s=r6jNj0_Cq?&?bnSdp&0_r{ z7Z`@MJfy|cntK-m&kcn35ss{)!Mw%Q_kJOto)n8i8#8|vZ9;6lNwy8K(oQNhw_qK= zTgpw3*zChd$7!?BITUR{SUWVRRpT*?rH0A;4zf-PQ%UNfmC#Oy6sHe zjkWBf=U1JAdqiqY>F~tkOlr^ZDY*XhLiTnK?O}@))Pc;dd-<#^ZzPfSKUe|nmp?{^ zgOmXlzLPyVgDEkI8DWRNKb#TvDbtl-a{kmT3Vep&a%FNJEYO|4wfXa?qw6Me$tOLm zt>>X>{I;2B{Yv~I9QJNEHo~@CQ7r-=trG!#TKfwbyq;~kr*`wGgyGq(**p)2wKh}p zKo{dbwg1E6c?_#5nyq1A9jb(U61kxKwD&yZbyL0H+?z5FX0D?%=r9cs8Kc*aw#@@1 zA(SgoMu9704%%v!rOQOmq2RQZ|2>bA6D*P9dvL8iVB@oG6IFGrw1B)9>cV%+y&`~ng&Gbk75!+R1k==a`o~i zaquaolD;BEbfYZM4mKq&2l{EH3z|%(KXXxnX_!k>U`2V}7JG7)EZUXpo-IfSCN){j zrAbTtN+;vkgeNDJqG+$HYZl9INHg=$_!POw6R`n^)T~}~kyS)T5XmfMacW9ZMK!?W z??mb|GP39thKRjTMVA|n;pVa|CJ%;wCa~1hsud608>{M=EQJzQJyto^16`H*Wy=s2 zGJVl)3PT=kKBO_FwOhifa*)Jia{Um~)LR&yUCHYeiQh!Y|+t8d~- zySP>=ZCpnVwzl%5%h}atmR^4vnEhVyLL|C{8@a$X)S@5%@>E3u|3?;m60_-1VB$l> z3(;eu1PO&e-Cfaq)+hgK`J=#93Bfhbp~tfoOUr70+Ruz?@pDkJ66^0qVD`cWYrT+;`^yavL4cx@El?9RXB(TNNDWf1#J3Cai)dE5oFHP!cU& zxkICZ;r3FM`j}oChgEKmgX_fh!G-!3#Mai)VWojp-)KXVAxN3wXcMgsl zqP*nT)m`HuM~86*{emq0S{5SSp}H}CyZ}4C(idU@^4CwC41%I6;QE@u-3r(E96}22 z0=)7pmwg51t^4+l1g9&KX`x%KXH0hINXj~5z8OZ}>b~EClF4^%w=`~_5XTz4jMeM8 zx+e4ubC%PvnFa`g>WxL|c@;j6yo+HdqyDZ*8*gg1qamWZz0G*xI3Y2qZc5I@5JK=h zJ^0R;&Z%8@T~uO;d>?371K%*p{}#sPe4rUX2tV$ex6vr@i0se=``yQ1#to&mQ4CR zot8YZsU>JPT5=Vxgu_cP_+V4T|Nq=F*Sj<{o-u;$Lfd> zktMDpFhb&h?#6I*Z-ql^6qaf3?uudgX#BcDI;6DsRBDhi^$PIrpe#-VsdoYU_^}Gv zp!{ij^P?P&XWltV6$kx(Af?y%A;VWQ1ts1{4U|WgV~#6manEns7)w<=WDWZZbG_DH*zi2uP){aHu^p4_y)6uCM^{ z$pGn+H_~NH);cIEFkjzK4eE{yGJbV|^|KOs#ESIT)F^LhR1%50KBo;hiF1LUQW7va zbT^u2YlATSq)5p<9`Bh24Oo5>sByp6%HAM-`$&0LhagR7q)8a(q(Rt0=FEzbCS?n| z+#1S^YmIx-Xn7NvH;Zx1Ri)Dox=}|a^NLw z6$!})lT7;%A@9JjjikN_w7UMZrp}*XcC(e-)SMrjlxjT;t+D-^E(Bu#{4J zq#jB97(%2$Z;$YtHey{4Ke3p*qHdSWG27N*sh)|W04+&R^y=(as-2PKU7*S zNpBQiu!{ROOh_1#x45=z%OBaLcB&`P7j%I38}m#*H8x`&+Gc&^%k8tzjKUN^qEd{HdNSL^M=j!a4sV|*JdDUPW6q%?hZs+wK&Rp0 zyi+WB+fY5~Z54AmS;hA&30t$^>Wo?;Qq>Aw8S&hT$VmsAFHeSP9Ka*DLKS0G%H@Mn zqx(0R!df0$z6N`RjJxI7DV{wRJbLg?f3M6VQ3vki`SkIvjSY!9*>z$!p+y!F_Xt~% zL?wuJ8=ZnsH%DmNA8oGanXL~inZ)5y*4JLh8U``q%m�NATG{ z3V@nb^6a9p484CVOF#Z4*=uphnD6aw6C$_e`@XQCO!s1no%sjA0<_Z27pzg!Pl6>2 zQqat1CTa?t|Ha0T!A|1#lBN6=?lOB~*G2et7Sn3^HIFz^J?bc$AI& zr$x#Dw7h9LVjH)NG@L}=^<5+yplknlRKlZWRAUXX(8^;e+3>ApJhNX$P`2pGb`C5u z5x`yk8@~i27ysXwKN^|s&is;Yni&utbL31WO|v0DNT!djW_Zw!Emz9m(?^ZbjIIBL z`G~+F(rbXHWIc)UU!L;a;LvFAb5QW-Lr~P^+YcYJnME^Psud9UUWT9(<6*PVZ|BmV)u;{@c*@X6!F`K5~}}nuuxrHZ(mdk~A2}ZSnY$ zx=FijprFLJ_U~)0^y=egZM;_sd0kaOBlf)zo6^imFOFG%y3U1?7)W8Q_W0;FDX*_p zOX$Lx)=>xAT!_(?dneLw(JXlRtcl(_?PlXfSlZ zlVxFj62d7d1xa07VJZs)W6fU!t(0OW*mi1NJVXL+sX=bniMsr)hTeG);Zi|^QI z=o963YNa2Lo}_Uflnol|CEH*HKI|{dXQu>J`LsJ0`|i+n-QRF}nz$mUzOqtv5BL=MSsln2dJ86R)ce1j(s(gUw9o+Q&~` z#R%l^Y!UA>Z#|-4gAhG&uV{FP?h~ra{j`uK3XZr2N~tiOAXWPtA~IFlI)dQ<@p6_V zHzAq}qB^5g)g;+Ht@O8>Q1C#eDA-DWdvyPYeNqCtD__QPaeOgcx<%@CC z=aYj{MDT73LLJ~TZ27C{E8Rhg+vTw$^D~!W+A~A|-oy&V54Ez(t(y!9CFpCqw<4g; zGZFm3%Ib1CHVI11^d)`(3Z=k&oWZij=p-B56qSdtS$9HKlhPY8)+hq-&E_-}Drnk2i7QNWj$TGSb-e|zej zGbeqaZG3VpF}FQ)9d?=;)Ku$>1bx317z>Ws(uZ4_+R#V>D6UembnrCG@)~)%5@zYa zZ^0&^s#$j5tnV(Y&LaYMC^Murgud87#h0G>iq~zO$Wy^SvJ^OpFSYM zl$i^I+Zf*J2wGZHi(y|FEn82+lA_v)*W+Vu%-W$VwnrShwQ9%(c_CP~D{-wL1IEjO zM^ptEQPug5ywx`xhtD#J5nyxHQ8rBs6pA~uAO4$h?RR@{R9RgPU%oqxo`w;?B$}R= zIV>j)7;x^o8Q}I)fZBh1ahp2J3QnE;i)H1f*Is^1dUAQ}e{73` literal 0 HcmV?d00001 diff --git a/classxt_1_1xcontainer__semantic-members.html b/classxt_1_1xcontainer__semantic-members.html new file mode 100644 index 000000000..4972a82fa --- /dev/null +++ b/classxt_1_1xcontainer__semantic-members.html @@ -0,0 +1,181 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xcontainer_semantic< D > Member List
+
+
+ +

This is the complete list of members for xt::xcontainer_semantic< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< D >inline
assign_xexpression(const xexpression< E > &e) (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >
assign_xexpression(const xexpression< E > &e) -> derived_type & (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >inline
base_type typedef (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
computed_assign(const xexpression< E > &e) (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >
computed_assign(const xexpression< E > &e) -> derived_type & (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >inline
derived_type typedef (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xcontainer_semantic &)=default (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
operator=(xcontainer_semantic &&)=default (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
operator=(const xexpression< E > &) (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
operator=(const xexpression< E > &e) -> derived_type & (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
scalar_computed_assign(const E &e, F &&f) (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >
scalar_computed_assign(const E &e, F &&f) -> derived_type & (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >inline
temporary_type typedef (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >
xcontainer_semantic()=default (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
xcontainer_semantic(const xcontainer_semantic &)=default (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
xcontainer_semantic(xcontainer_semantic &&)=default (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xcontainer_semantic()=default (defined in xt::xcontainer_semantic< D >)xt::xcontainer_semantic< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xcontainer__semantic.html b/classxt_1_1xcontainer__semantic.html new file mode 100644 index 000000000..70d5e0ef7 --- /dev/null +++ b/classxt_1_1xcontainer__semantic.html @@ -0,0 +1,664 @@ + + + + + + + +xtensor: xt::xcontainer_semantic< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xcontainer_semantic< D > Class Template Reference
+
+
+ +

Implementation of the xsemantic_base interface for dense multidimensional containers. + More...

+ +

#include <xsemantic.hpp>

+
+Inheritance diagram for xt::xcontainer_semantic< D >:
+
+
+ + +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + +

+Public Types

using base_type = xsemantic_base< D >
 
using derived_type = D
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
derived_type & assign_xexpression (const xexpression< E > &e)
 
+template<class E >
derived_type & computed_assign (const xexpression< E > &e)
 
+template<class E , class F >
derived_type & scalar_computed_assign (const E &e, F &&f)
 
Assign functions
derived_type & assign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
template<class E >
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
template<class E >
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
template<class E , class F >
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

xcontainer_semantic (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class D>
+class xt::xcontainer_semantic< D >

Implementation of the xsemantic_base interface for dense multidimensional containers.

+

The xcontainer_semantic class is an implementation of the xsemantic_base interface for dense multidimensional containers.

+
Template Parameters
+ + +
Dthe derived type
+
+
+ +

Definition at line 177 of file xsemantic.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer_semantic< D >::base_type = xsemantic_base<D>
+
+ +

Definition at line 181 of file xsemantic.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer_semantic< D >::derived_type = D
+
+ +

Definition at line 182 of file xsemantic.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontainer_semantic< D >::temporary_type = typename base_type::temporary_type
+
+ +

Definition at line 183 of file xsemantic.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign_temporary()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer_semantic< D >::assign_temporary (temporary_type && tmp)
+
+inline
+
+ +

Assigns the temporary tmp to *this.

+
Parameters
+ + +
tmpthe temporary to assign.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 615 of file xsemantic.hpp.

+ +
+
+ +

◆ assign_xexpression()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer_semantic< D >::assign_xexpression (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 622 of file xsemantic.hpp.

+ +
+
+ +

◆ computed_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer_semantic< D >::computed_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 630 of file xsemantic.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xcontainer_semantic< D >::operator= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 646 of file xsemantic.hpp.

+ +
+
+ +

◆ scalar_computed_assign()

+ +
+
+
+template<class D >
+
+template<class E , class F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xcontainer_semantic< D >::scalar_computed_assign (const E & e,
F && f 
) -> derived_type& +
+
+inline
+
+ +

Definition at line 638 of file xsemantic.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xsemantic.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xcontainer__semantic.js b/classxt_1_1xcontainer__semantic.js new file mode 100644 index 000000000..0786a8354 --- /dev/null +++ b/classxt_1_1xcontainer__semantic.js @@ -0,0 +1,4 @@ +var classxt_1_1xcontainer__semantic = +[ + [ "assign_temporary", "classxt_1_1xcontainer__semantic.html#aa6fec519f074fe655cd20aa1fd028dd3", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xcontainer__semantic.png b/classxt_1_1xcontainer__semantic.png new file mode 100644 index 0000000000000000000000000000000000000000..a18302553c0c688de0200bf7429213bd66c1ed64 GIT binary patch literal 1098 zcmeAS@N?(olHy`uVBq!ia0vp^`+&HEgBeKXbuN?#QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NtZdb&7Hm_U1bjC?J>xmOsg`SDIxP0bPQ8HRB6Yp}wt507kX{lk|_HU6r z?z`_*XX|WJQ&zh4DzHXy;>354<=>wAp}0rj>9VASJ+?Y5^{?;$4ZpYH|LnUehh2i@ z!u&r;#+oqyleITE>byGs z7u!E}qxBmMjL&NwPfy!6>9MhK^h+i?L*x6G zcP+hLdXe|<@55(mJo_IS8;9@es(*dL_|Jn(f43r;XNfbvxxD{;HYvJ4d-wLDWZRdE z_MEDpRhwidX*i`})^ndZ?guBv8y3oSnoC~$@&46|JrzlA?3eqL!fSTN6kKhqT)QA= zbG_Vw+CMuax>k84%`z^OWBwD-+d92#gZ{kD4C_Sw=Wo&K7d01te(`a*d_jQn{?m1P zR)>ZzbIP~u|6srR@0^YLS@s{@o)kXU>{7pVM7s7`rIddEx7xI4`&T{xxV_|_hlcUz z)XHx&XRdwnhIv=G8J=Ce^JD$>D}Ra~um58F*}w1oTy};x zgo6wtR38L@(&~~`R=~6xdey6M{i>{`hX1Bc*mU+fXM}7|ZO&QO(61i*4}^#Q^=eCwrbEN7Sn_I%hBI{!e|=F-q9^|ICepRNA{q@|jDFUqo+ zGVQ9L>e8f^ClbkHxpn@2rXb z-D!Sree=1=>+hyT+`YN(x@mOrN0Ca)H#YOX)`niy{37vh+K$gxR<5ekJil+%s;LNX giq7xIi2BQ(Bgy&U+4*EmV6JEIboFyt=akR{09}I@2LJ#7 literal 0 HcmV?d00001 diff --git a/classxt_1_1xcontiguous__iterable-members.html b/classxt_1_1xcontiguous__iterable-members.html new file mode 100644 index 000000000..c1e88f334 --- /dev/null +++ b/classxt_1_1xcontiguous__iterable-members.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xcontiguous_iterable< D > Member List
+
+
+ +

This is the complete list of members for xt::xcontiguous_iterable< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_stepper typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
derived_type typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
inner_types typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
iterable_base typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
static_layout (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >static
stepper typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
xconst_iterable< D > (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >friend
xiterable< D > (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >friend
+
+ + + + diff --git a/classxt_1_1xcontiguous__iterable.html b/classxt_1_1xcontiguous__iterable.html new file mode 100644 index 000000000..265eac2fa --- /dev/null +++ b/classxt_1_1xcontiguous__iterable.html @@ -0,0 +1,2081 @@ + + + + + + + +xtensor: xt::xcontiguous_iterable< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xcontiguous_iterable< D > Class Template Reference
+
+
+ +

Base class for multidimensional iterable expressions with contiguous storage. + More...

+ +

#include <xiterable.hpp>

+
+Inheritance diagram for xt::xcontiguous_iterable< D >:
+
+
+ + +xt::xiterable< D > +xt::xcontainer< xarray_adaptor< EC, L, SC, Tag > > +xt::xcontainer< xarray_container< EC, L, SC, Tag > > +xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > > +xt::xcontainer< xtensor_adaptor< EC, N, L, Tag > > +xt::xcontainer< xtensor_container< EC, N, L, Tag > > +xt::xcontainer< xtensor_view< EC, N, L, Tag > > +xt::xcontainer< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
Iterators
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
Reverse iterators
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
Broadcast iterators
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+ + + +

+Static Public Attributes

static constexpr layout_type static_layout = inner_types::layout
 
+ + + + + +

+Friends

class xiterable< D >
 
class xconst_iterable< D >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Reverse broadcast iterators

template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
+

Detailed Description

+
template<class D>
+class xt::xcontiguous_iterable< D >

Base class for multidimensional iterable expressions with contiguous storage.

+

The xcontiguous_iterable class defines the interface for multidimensional expressions with contiguous that can be iterated.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xcontiguous_iterable provides the interface.
+
+
+ +

Definition at line 311 of file xiterable.hpp.

+

Member Typedef Documentation

+ +

◆ broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>
+
+ +

Definition at line 351 of file xiterable.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>
+
+ +

Definition at line 353 of file xiterable.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::const_iterator = select_const_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 381 of file xiterable.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::const_layout_iterator = typename iterable_base::template const_layout_iterator<L>
+
+ +

Definition at line 343 of file xiterable.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::const_linear_iterator = typename linear_traits::const_linear_iterator
+
+ +

Definition at line 361 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 357 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 383 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>
+
+ +

Definition at line 347 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
+
+ +

Definition at line 363 of file xiterable.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 321 of file xiterable.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::derived_type = D
+
+ +

Definition at line 315 of file xiterable.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::inner_types = xcontainer_inner_types<D>
+
+ +

Definition at line 317 of file xiterable.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::iterable_base = xiterable<D>
+
+ +

Definition at line 319 of file xiterable.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::iterator = select_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 380 of file xiterable.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::layout_iterator = typename iterable_base::template layout_iterator<L>
+
+ +

Definition at line 341 of file xiterable.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::linear_iterator = typename linear_traits::linear_iterator
+
+ +

Definition at line 360 of file xiterable.hpp.

+ +
+
+ +

◆ linear_traits

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::linear_traits = detail::linear_iterator_traits<D>
+
+ +

Definition at line 359 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 355 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
+
+ +

Definition at line 382 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>
+
+ +

Definition at line 345 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
+
+ +

Definition at line 362 of file xiterable.hpp.

+ +
+
+ +

◆ select_const_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::select_const_iterator = select_iterator_impl<L, const_linear_iterator, const_layout_iterator<L> >
+
+ +

Definition at line 371 of file xiterable.hpp.

+ +
+
+ +

◆ select_const_reverse_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator<L> >
+
+ +

Definition at line 375 of file xiterable.hpp.

+ +
+
+ +

◆ select_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::select_iterator = select_iterator_impl<L, linear_iterator, layout_iterator<L> >
+
+ +

Definition at line 369 of file xiterable.hpp.

+ +
+
+ +

◆ select_iterator_impl

+ +
+
+
+template<class D >
+
+template<layout_type L, class It1 , class It2 >
+ + + + +
using xt::xcontiguous_iterable< D >::select_iterator_impl = std::conditional_t<L == static_layout, It1, It2>
+
+ +

Definition at line 366 of file xiterable.hpp.

+ +
+
+ +

◆ select_reverse_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xcontiguous_iterable< D >::select_reverse_iterator = select_iterator_impl<L, reverse_linear_iterator, reverse_layout_iterator<L> >
+
+ +

Definition at line 373 of file xiterable.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xcontiguous_iterable< D >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 320 of file xiterable.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::begin () const -> select_const_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 992 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::begin () -> select_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 949 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::begin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1211 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::begin (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1183 of file xiterable.hpp.

+ +
+
+ +

◆ cbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::cbegin () const -> select_const_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1015 of file xiterable.hpp.

+ +
+
+ +

◆ cbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::cbegin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1239 of file xiterable.hpp.

+ +
+
+ +

◆ cend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::cend () const -> select_const_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1037 of file xiterable.hpp.

+ +
+
+ +

◆ cend() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::cend (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1254 of file xiterable.hpp.

+ +
+
+ +

◆ crbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::crbegin () const -> select_const_reverse_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1130 of file xiterable.hpp.

+ +
+
+ +

◆ crbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::crbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1332 of file xiterable.hpp.

+ +
+
+ +

◆ crend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::crend () const -> select_const_reverse_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1152 of file xiterable.hpp.

+ +
+
+ +

◆ crend() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::crend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1347 of file xiterable.hpp.

+ +
+
+ +

◆ end() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::end () const -> select_const_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1004 of file xiterable.hpp.

+ +
+
+ +

◆ end() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::end () -> select_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 971 of file xiterable.hpp.

+ +
+
+ +

◆ end() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::end (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1225 of file xiterable.hpp.

+ +
+
+ +

◆ end() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::end (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1197 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::rbegin () const -> select_const_reverse_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1107 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::rbegin () -> select_reverse_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1064 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::rbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1302 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::rbegin (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1274 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::rend () const -> select_const_reverse_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1119 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xcontiguous_iterable< D >::rend () -> select_reverse_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1086 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::rend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1317 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xcontiguous_iterable< D >::rend (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1288 of file xiterable.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xconst_iterable< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xconst_iterable< D >
+
+friend
+
+ +

Definition at line 444 of file xiterable.hpp.

+ +
+
+ +

◆ xiterable< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xiterable< D >
+
+friend
+
+ +

Definition at line 444 of file xiterable.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ static_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr layout_type xt::xcontiguous_iterable< D >::static_layout = inner_types::layout
+
+staticconstexpr
+
+ +

Definition at line 323 of file xiterable.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterable.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xcontiguous__iterable.js b/classxt_1_1xcontiguous__iterable.js new file mode 100644 index 000000000..2bd427354 --- /dev/null +++ b/classxt_1_1xcontiguous__iterable.js @@ -0,0 +1,27 @@ +var classxt_1_1xcontiguous__iterable = +[ + [ "begin", "classxt_1_1xcontiguous__iterable.html#aa37724c4f2fe4ed455f37a2a485dcebc", null ], + [ "begin", "classxt_1_1xcontiguous__iterable.html#ac598e11fd3eb83a2dcb5c74582ffd95a", null ], + [ "begin", "classxt_1_1xcontiguous__iterable.html#a3b0ee4efcc6ed36094e02631279cb3ce", null ], + [ "begin", "classxt_1_1xcontiguous__iterable.html#aa93641d4488c4ddb95274b41df89401f", null ], + [ "cbegin", "classxt_1_1xcontiguous__iterable.html#a68fed899dcdd91ba8ffe1438f329e0fc", null ], + [ "cbegin", "classxt_1_1xcontiguous__iterable.html#aa38da69077754acd8e5daf5f010b8591", null ], + [ "cend", "classxt_1_1xcontiguous__iterable.html#a2f1e2287962220db88240b3a0e5cf196", null ], + [ "cend", "classxt_1_1xcontiguous__iterable.html#a93eb3f286ccab925d621ef1b87e6d126", null ], + [ "crbegin", "classxt_1_1xcontiguous__iterable.html#ab363ab0f7faf25ed137b432eeaca6f43", null ], + [ "crbegin", "classxt_1_1xcontiguous__iterable.html#a74bc69cf0cbfcb235ec3ca8fe75b962a", null ], + [ "crend", "classxt_1_1xcontiguous__iterable.html#aec3659b2356b81494ebfcb5a4bc0482e", null ], + [ "crend", "classxt_1_1xcontiguous__iterable.html#a0b849e0972151523dd2bf988fe90c7da", null ], + [ "end", "classxt_1_1xcontiguous__iterable.html#a8e0a8bdffdcfd3c5bc80f358a6931f9f", null ], + [ "end", "classxt_1_1xcontiguous__iterable.html#a18eb1a595021e73f682b8443ea50f1ec", null ], + [ "end", "classxt_1_1xcontiguous__iterable.html#a11d0a0ce2bbaef8f6dda78febe364fec", null ], + [ "end", "classxt_1_1xcontiguous__iterable.html#ad75c7cb209c82c2d3ea6fa9e696f329e", null ], + [ "rbegin", "classxt_1_1xcontiguous__iterable.html#a34ab77bf7e6f44cf32100dfa19016985", null ], + [ "rbegin", "classxt_1_1xcontiguous__iterable.html#a9baaf955c445124c0ce0b15e46e9ea67", null ], + [ "rbegin", "classxt_1_1xcontiguous__iterable.html#af72e9e4372c87685b932899a7a411b2f", null ], + [ "rbegin", "classxt_1_1xcontiguous__iterable.html#a2464771d6d90297666b1e7e40ff21f70", null ], + [ "rend", "classxt_1_1xcontiguous__iterable.html#a0fca0441c61348b6eb092456e123b869", null ], + [ "rend", "classxt_1_1xcontiguous__iterable.html#ad8f400de36b11a40a49517ebe2f2f1fa", null ], + [ "rend", "classxt_1_1xcontiguous__iterable.html#a3b9ef9be65f2c10776ee7055f4067bed", null ], + [ "rend", "classxt_1_1xcontiguous__iterable.html#ab805bb1e5bd7b9a0d22fe8fcda0ffeb8", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xcontiguous__iterable.png b/classxt_1_1xcontiguous__iterable.png new file mode 100644 index 0000000000000000000000000000000000000000..31100d2c5ae180fe631dbd6c15d00f00ef2074c7 GIT binary patch literal 6826 zcmd^E3sjTWmiB_c6^qQZ3W@@^BZ{p;tSC_fNwg1|Duha_r4X=HL=+McBqRaSV69bD zYG|Pvf!JE81wlax5RyQ>n$i>qM2!%V$TNu{36H!8dEE1(w!OW5%*}EAY=b*7?#`Lxvk~+1);F{N zqLFHj3~u`3c=xB8nCG>QQ(c+nx;BiGx#JUJmS@$R6@q=%zuRuE73>t$t;HV8KUW-Z zC4jWk`S^g(0s3hn`rSs?3jr%OL@%kKt!n?P$D$7pF){16f!lfOg(U%1d=!CjHkHqr z8Yrh?CPhB0pMk%@)WOZF6CsQGz{~#g^h@p~jUYA}yQtK&7Z*54RI*KROmuDL-lRD% zf7`Ov&zM5iD7R0x4Sg~=Vo;4dx;1pY6iq$MA~4tWd!|j4tW2ND@>N!hl#=DKTd8Zi zUEObWcq>!XDD4zK(lL4~@|Y>k>bY|EW3oXa(YpPJcs&6%=I-urK`m6KAML-9okOX= zT`uUqOL<{(bhx~;p7ssg+>OS*QR5Vj9}>SvcqxiuVX&PF*?Dy9HShu3_g>`zjzeHJ zVsz2I55Sd;!hofhXx|+6*noNU0CQcub0qz5zka*FZteCUL0y=KyFJ71>F&N?gub-r zRfmZhw8(wc-PyjrciW{sNRLJCp!tam&(0pZ7e7A#UpU$s37|b10WBqZU5{Yk@TR-q z7j^}jl>YFh<&UQozI?%n#}o5BaqHd3Gru)(cnLIjxwmpfh$Cc_z-?vU!bZra$Gdpo zo;d-aVrBvjUKoJotQ6MbRN(LIuL6v42k!VDYpi}pfsArHi-kGD{1bT`3T2BQ@9ZXC zT$k0@OR7*;^HsZ&<>DF5@zCfcT7*_27`Qg`Hj1-+0fTS*$nY}j*~A_xLmNLl-IB(X zH%Q>%sW`kiX)~M3E|F7`@ah)N%#6%R8F818@cIof(0VsASnn)@`ZQl$rIIa3^=Xk0 z@>W97$yIytri``DQu*NS7-=mN?vdqkT>fYo{(gFrBr}uD-aSAXh(k%2TlW;8Jh^9b zr30$@IfOEgMcg*HtHo>N`MX1-l)fVPyQK{i9io(nS})!ORhU#lEs52+hiNUq2;)}) zGEA`kCdfE<*UE>0Ik**ITp=H%ON$}9@+CfILUlg$>|4NijKLbLzZ|Sa4)m16ISDMn zt+})C`uA1%g~c*WPEPKGfd>57adG$R)t^N=AJ1RP;Wk9C{wx~m+C<6okLOQs0OxN` zeUShBM$iF1{)csX2=g;zi@z*RiY;@UnmI~ag<08N^y~if)V)kmOc-YJr24anR|DG< z*$nfsHJlb3f@jGto_e2gj{iK@EC$qse~pQm46?r<>?nvNV(u3T-e;fdvc3T<%l6Rk zpSMN+jk-^7w0DUl>M5G&y1G?U$}Jtuyz|IvFbi&<^&d-|GA=A3noeq5Em5aSK0Rvi zpbuw2ug7goq)Yjh6ouLF;L6vcGu%>xMWs4zm^ie8fg#p55l^}~b1q&8fZwlDtLh|z z{uVrQ{EU`m7F@`37%N1j#!&TuHj*QGN9V*rHQJtU$vBA;*qfAqIis*}>Tu_S8F@$G zNeKDvXjo*tSF^f;CmqIy<0|8P8`~fG^o=ew(eS|&-fNUEv<5KvNd@w0Y0gC@VV>Rq znm37BASY40m9naPQBA!KIxpTC1Bd5W8g?Texm-Ct>6to#+d2>^btN}%l?agqBc(xh z@(PwHY`K!GYKb2$-JY5k17DL!H|))rW?%_UoK8Dt7VZ=pcV)(-(Z-|Y4P1@ujG{F~ zne>t@<-PC@lB#(}HoGX{)l%dZ++eoq9uZTQXYDP9$&Z8#TH7`bh`<6=1?Bx6StB6S|B+z-jc@%A{ebAN+)mFK z+%kHu8#DOqx#gpdV!7e)C&S(StMfl13XjrkL=jkLTsUn1O#t`yM;c6ypKijYx!q8S*EP} z>dMNH`~2FZFv|6x0RO@h;D?9CS(75!R7z226op|pY}zGD`-)9N9=(oQ*1FjNVg4gH zRSPf=Gv|E{mU)KEELj+=mLBz&;U^X0q-DxcYnM~5{ypmT{2Henb)@(PGaHS1P0yNZ zfm*>BegZ+zUFfCU?DL0L4NB>(2{eSG~NF2!gxxn^xJ!0)Ml&f1xCO!Fo`(A1ZGl4QECI* z#bY%WF-H_@$~Q!tqfmazq$ULH0A_usC|4FViK(juh)4M<;kD(M$;%PcO^^kqgOC`z z_b=$HpUE%$kMx;F+tx;X`4438-vIRNEn5S+mEfeEKcAddS#nyTShpf2ayun1QrbZj3euV}TYe%+{S&I7?gJ z_UuPp3wanUgxQXJEV{#XCD%WL!^@L$$rOh|r7;_vNf-yn?b-)g}IScgLMyZa9f(UiI%|V!%r|iJ;M1I?Q&{Im@tusG8n@jABT>w%XT`kAQa?8rGN+$H3XL|q znrK{?%#*6FP-35^fiYI@TzRP^k`#E1gRaexrA|~fb=7lh#GEOap1>X-S%#13_uEw1 z;tNz`*1NL2F9W90fRcB`<&6S%{MjS z;)?d|22a~fyMUfnOXXO)dNvHWT?pX)qvvt5(G};j`ZUnp!zm7Z?~_XwQSxKn4^v(3 z0x}MW>$`Pp1)@E9yrAgS=E4Ka=yhMZy1T?2{PR0_s;gK3_?2Rd^Dgb^^k7J&Z%k-@e4$a)8LTpj*%-b$eu zw8Y^oNau(DM>a(;m?QNr7clCgd z2=RX#uA+%CRZ*K9tgoF*<~&H4RX3qR*89OP+InSC?EXi)O3#*mn9wj-D&cu6k9HcA zfw0Ve%kJ`cRzBm|&LO;8JeHkiGcU$-pPHxuOLsg+4AT6__kJiJW%|I(@ExF3edLO) zv`9JvB6xZH)}npYUDOD00_D!F|F2=Lm7){r!_SIeEIe&zq+@Cd*+t0DW-0%k4WoVu zE?SPY^}th^<3X-2fa}e6G#nPXS>}(SpMi-%v_|xU+|GKDpgxLw!t>Luss~3O8u7LJ zaoBX#sQt3QMShl(A(aT?Wt!VW%je~;&733ju+Ks8MSw~}9mp*;%Xxl?#W&w!;rDYG zgQJ%-)-X;IYuUu}$H(ZmpzDkA1l6C8;UaE|4 z%&tN;2}o?o8q_BT07I26(D&R*I>*LaB$0WDJ@s?7E@VV1VD`=j@uOcX*0-EOUb`)K zv5Bx){U(Ig$&3TlFlk>xLCSjsLPmh9?15(_{74CANJSqBx?fOS3sh%{&rydW&5hnu=m?f z>`!Bke^D`C-#C{WbI04scBEW#b0Y?MAJDVIws-@EJ1i~7(EASo_RzU+!0f;Gn74na zZuFG*l46VBDNZ8!e6M4RMKv#xEcw)8b<8cGi`6QC=lTzWy1E01fJ>5@3ZHQNwT_3+yW8Zx7; z1D2Znk{p*N_t0-qN6bnRHm&U77WtJSB$@n9+7;@8>Raq*cGQvMXCW*=Kz10qPc3^7 z!1nMH*zymR+7koXlOg0vLApupL8ymMtUx*f+6~h0 zkYXlInmwVy%YU=BH)@hN9nW`s^nXNlK*O-4(Sm8voO#S=adVY?G?YiL846N(rh|-GZ)`5#yOu=EM=o>by$9AJ#v|{<2y)WgDID3 z`$BJUzMQh5#oM)C^M?Q{kGYWBlao(!Hq_gfYEqT#Dh->Kkes^-NLKkn8XCJ1w|=wi ziol-B{o-Fi?Y>8M`4Cd~pO)F>~^o1TJU@}j`A zd9MK7e4TY26$gRCu0a>B#1*qM-mY}!SC&xAuunLba4?KJ(>=R8QCrJ|wQKjo1e4$be z8f-En&e|zqqfH687-)}T2pU6@^n(UgCf8p{Zs(j=C?=sGp7(-~wHkZLkEPukTjeAV zHL+;w^;qYkYJbI56ejOAX!r)GcS7{FBm8h3%w(ZIPCoWMa2><{9 literal 0 HcmV?d00001 diff --git a/classxt_1_1xdrop__slice-members.html b/classxt_1_1xdrop__slice-members.html new file mode 100644 index 000000000..f72ca2be1 --- /dev/null +++ b/classxt_1_1xdrop__slice-members.html @@ -0,0 +1,124 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xdrop_slice< T > Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + +
container_type typedef (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >
contains(size_type i) const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
convert() const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
normalize(std::size_t s) (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
operator xdrop_slice< S >() const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
operator!=(const self_type &rhs) const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
operator()(size_type i) const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
operator==(const self_type &rhs) const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
revert_index(std::size_t i) const (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
self_type typedef (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >
size() const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
size_type typedef (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >
step_size(std::size_t i, std::size_t n=1) const noexcept (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
xdrop_slice (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >friend
xdrop_slice(C &cont) (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inlineexplicit
xdrop_slice(container_type &&cont) (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inlineexplicit
xdrop_slice(std::initializer_list< S > t) (defined in xt::xdrop_slice< T >)xt::xdrop_slice< T >inline
+
+ + + + diff --git a/classxt_1_1xdrop__slice.html b/classxt_1_1xdrop__slice.html new file mode 100644 index 000000000..ddef2cb6a --- /dev/null +++ b/classxt_1_1xdrop__slice.html @@ -0,0 +1,683 @@ + + + + + + + +xtensor: xt::xdrop_slice< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xdrop_slice< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::xdrop_slice< T >:
+
+
+ + +xt::xslice< xdrop_slice< T > > + +
+ + + + + + + + + + + +

+Public Types

using container_type = svector< T >
 
using size_type = typename container_type::value_type
 
using self_type = xdrop_slice< T >
 
- Public Types inherited from xt::xslice< xdrop_slice< T > >
using derived_type = xdrop_slice< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class C , typename = detail::disable_xdrop_slice_t<C>>
 xdrop_slice (C &cont)
 
 xdrop_slice (container_type &&cont)
 
template<class S >
 xdrop_slice (std::initializer_list< S > t)
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
 operator xdrop_slice< S > () const noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
xdrop_slice< S > convert () const noexcept
 
size_type operator() (size_type i) const noexcept
 
size_type size () const noexcept
 
void normalize (std::size_t s)
 
size_type step_size (std::size_t i, std::size_t n=1) const noexcept
 
size_type revert_index (std::size_t i) const
 
bool contains (size_type i) const noexcept
 
bool operator== (const self_type &rhs) const noexcept
 
bool operator!= (const self_type &rhs) const noexcept
 
- Public Member Functions inherited from xt::xslice< xdrop_slice< T > >
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xslice< xdrop_slice< T > >
xslice (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (const xslice &)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class T>
+class xt::xdrop_slice< T >
+

Definition at line 455 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ container_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xdrop_slice< T >::container_type = svector<T>
+
+ +

Definition at line 459 of file xslice.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xdrop_slice< T >::self_type = xdrop_slice<T>
+
+ +

Definition at line 461 of file xslice.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xdrop_slice< T >::size_type = typename container_type::value_type
+
+ +

Definition at line 460 of file xslice.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xdrop_slice() [1/3]

+ +
+
+
+template<class T >
+
+template<class C , typename >
+ + + + + +
+ + + + + + + + +
xt::xdrop_slice< T >::xdrop_slice (C & cont)
+
+inlineexplicit
+
+ +

Definition at line 1498 of file xslice.hpp.

+ +
+
+ +

◆ xdrop_slice() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
xt::xdrop_slice< T >::xdrop_slice (container_type && cont)
+
+inlineexplicit
+
+ +

Definition at line 1504 of file xslice.hpp.

+ +
+
+ +

◆ xdrop_slice() [3/3]

+ +
+
+
+template<class T >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
xt::xdrop_slice< T >::xdrop_slice (std::initializer_list< S > t)
+
+inline
+
+ +

Definition at line 1511 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ contains()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xdrop_slice< T >::contains (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1651 of file xslice.hpp.

+ +
+
+ +

◆ convert()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xdrop_slice< S > xt::xdrop_slice< T >::convert () const
+
+inlinenoexcept
+
+ +

Definition at line 1565 of file xslice.hpp.

+ +
+
+ +

◆ normalize()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xdrop_slice< T >::normalize (std::size_t s)
+
+inline
+
+ +

Definition at line 1571 of file xslice.hpp.

+ +
+
+ +

◆ operator xdrop_slice< S >()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xt::xdrop_slice< T >::operator xdrop_slice< S > () const
+
+inlinenoexcept
+
+ +

Definition at line 1527 of file xslice.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xdrop_slice< T >::operator!= (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1663 of file xslice.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xdrop_slice< T >::operator() (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1599 of file xslice.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xdrop_slice< T >::operator== (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1657 of file xslice.hpp.

+ +
+
+ +

◆ revert_index()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xdrop_slice< T >::revert_index (std::size_t i) const
+
+inline
+
+ +

Definition at line 1632 of file xslice.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xdrop_slice< T >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1613 of file xslice.hpp.

+ +
+
+ +

◆ step_size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xdrop_slice< T >::step_size (std::size_t i,
std::size_t n = 1 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1619 of file xslice.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xdrop_slice

+ +
+
+
+template<class T >
+
+template<class S >
+ + + + + +
+ + + + +
friend class xdrop_slice
+
+friend
+
+ +

Definition at line 501 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xdrop__slice.png b/classxt_1_1xdrop__slice.png new file mode 100644 index 0000000000000000000000000000000000000000..22eb06087c95ca96b2493a7cd8782c0279325b6e GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)8zXNzVv7B{_K~Tv+Hfv>6lI}_r9Q4kJc=i9F`-tdTVt>*yrH)%gfEKb*weZI`%8k zU3{zQ`rxm2{GW3+m6haWFSa@_dabim*?H}~RlRi;Z*`U~+gkOnGA?e{c~<+wcK7$M zn72CR5mARn4FM?Q$ojJllVMvx=>Qh4& + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xdummy_iterator< is_const, CT > Member List
+
+
+ +

This is the complete list of members for xt::xdummy_iterator< is_const, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
equal(const self_type &rhs) const noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
iterator_category typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
less_than(const self_type &rhs) const noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
operator*() const noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
operator++() noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
operator+=(difference_type n) noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
operator-(const self_type &rhs) const noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
operator--() noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
operator-=(difference_type n) noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inline
pointer typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
reference typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
self_type typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
storage_type typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
value_type typedef (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >
xdummy_iterator(storage_type *c) noexcept (defined in xt::xdummy_iterator< is_const, CT >)xt::xdummy_iterator< is_const, CT >inlineexplicit
+
+ + + + diff --git a/classxt_1_1xdummy__iterator.html b/classxt_1_1xdummy__iterator.html new file mode 100644 index 000000000..27ae5de8b --- /dev/null +++ b/classxt_1_1xdummy__iterator.html @@ -0,0 +1,557 @@ + + + + + + + +xtensor: xt::xdummy_iterator< is_const, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xdummy_iterator< is_const, CT > Class Template Reference
+
+
+
+Inheritance diagram for xt::xdummy_iterator< is_const, CT >:
+
+
+ +
+ + + + + + + + + + + + + + + + +

+Public Types

using self_type = xdummy_iterator< is_const, CT >
 
using storage_type = std::conditional_t< is_const, const xscalar< CT >, xscalar< CT > >
 
using value_type = typename storage_type::value_type
 
using reference = detail::dummy_reference_t< is_const, CT >
 
using pointer = detail::dummy_pointer_t< is_const, CT >
 
using difference_type = typename storage_type::difference_type
 
using iterator_category = std::random_access_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xdummy_iterator (storage_type *c) noexcept
 
self_typeoperator++ () noexcept
 
self_typeoperator-- () noexcept
 
self_typeoperator+= (difference_type n) noexcept
 
self_typeoperator-= (difference_type n) noexcept
 
difference_type operator- (const self_type &rhs) const noexcept
 
reference operator* () const noexcept
 
bool equal (const self_type &rhs) const noexcept
 
bool less_than (const self_type &rhs) const noexcept
 
+

Detailed Description

+
template<bool is_const, class CT>
+class xt::xdummy_iterator< is_const, CT >
+

Definition at line 407 of file xscalar.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::difference_type = typename storage_type::difference_type
+
+ +

Definition at line 422 of file xscalar.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::iterator_category = std::random_access_iterator_tag
+
+ +

Definition at line 423 of file xscalar.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::pointer = detail::dummy_pointer_t<is_const, CT>
+
+ +

Definition at line 421 of file xscalar.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::reference = detail::dummy_reference_t<is_const, CT>
+
+ +

Definition at line 420 of file xscalar.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::self_type = xdummy_iterator<is_const, CT>
+
+ +

Definition at line 416 of file xscalar.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::storage_type = std::conditional_t<is_const, const xscalar<CT>, xscalar<CT> >
+
+ +

Definition at line 417 of file xscalar.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xdummy_iterator< is_const, CT >::value_type = typename storage_type::value_type
+
+ +

Definition at line 419 of file xscalar.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xdummy_iterator()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
xt::xdummy_iterator< is_const, CT >::xdummy_iterator (storage_type * c)
+
+inlineexplicitnoexcept
+
+ +

Definition at line 1030 of file xscalar.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ equal()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
bool xt::xdummy_iterator< is_const, CT >::equal (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1072 of file xscalar.hpp.

+ +
+
+ +

◆ less_than()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
bool xt::xdummy_iterator< is_const, CT >::less_than (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1078 of file xscalar.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + +
auto xt::xdummy_iterator< is_const, CT >::operator* () const
+
+inlinenoexcept
+
+ +

Definition at line 1066 of file xscalar.hpp.

+ +
+
+ +

◆ operator++()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + +
auto xt::xdummy_iterator< is_const, CT >::operator++ ()
+
+inlinenoexcept
+
+ +

Definition at line 1036 of file xscalar.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xdummy_iterator< is_const, CT >::operator+= (difference_type n)
+
+inlinenoexcept
+
+ +

Definition at line 1048 of file xscalar.hpp.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xdummy_iterator< is_const, CT >::operator- (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1060 of file xscalar.hpp.

+ +
+
+ +

◆ operator--()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + +
auto xt::xdummy_iterator< is_const, CT >::operator-- ()
+
+inlinenoexcept
+
+ +

Definition at line 1042 of file xscalar.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xdummy_iterator< is_const, CT >::operator-= (difference_type n)
+
+inlinenoexcept
+
+ +

Definition at line 1054 of file xscalar.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xdummy__iterator.png b/classxt_1_1xdummy__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..f429b898d75848f39ebc9b75c05361877e7aa139 GIT binary patch literal 2282 zcmd5;dpK0<8XwYaI_R>MO}cE-PD$--*RToOq_E3OMJA^UwQDT4VGNlO58AFp&eR^4 z+9kP-9GOXjrDSlXLF6`L3@Jk_Ota0^n6qZi?m6d=^E~I@^Zl{D_xfAk`@Y}vTkF>V zzaRCHCP)MVp^x(MJb^&y31B&3%?kLr&Di`lyqN|Z3-nT})v!1GF{=ftf?J5cU-`Uus1 z!q17Ww;u_KajmttrSaDSCR8&oij|UXl`ZF2vpD*di}e zoW>B6r9AiirXIjedJGj*OMCLsH_u>UsyM|Q90vTo2=bXK2b2?wqLM6lJ6tjvv42A+tvb*ySnH13(Wt<>S(yZlX~(W^^b zJ4-qGEuS*G_2s3;DE9%c$Q=vK@zi>#LKZoWpFU?op9wSK%vepWEYGQF6SWb8=b8k8 zT-W`rHf`5kUa(jhoMSlkz7>YuAud%w20a*BV`Ny|J9J@ZW|M%Ko=FIW8QVyQOM?CCChQHxx? zMd;FCgG}rKVibpG7^T3b&!r-}51&$>s|ETCEdUfpp{AE6_5$tZ)5UeYp9YZiR&mcg zCdSwotuyiG(i84hCb@nsZ?vw7X6|Z!xVSt|@nSqk3v;IlTleDkEi@C?O2&LaTIX@F zz8_z*Oh9Yi8waet>fHtaay8BRgg9AyUGVyG<&|CJ+}GaA*Tmh5h^Vd+Tx+$&%!X z1^W+|drPunz9oZ62w5jJ8cs;X=$IKdWLHz$+&4{FfVM9pssnpBQ{DVmHJ@n;4p!cH zHEbdrH&7KLpEY7Rfnjm&NukYE|yIG z^~g-M^1IQ+fds~)-pC5{m5HJKOS{d7xwq2rRC$mUGzyF~*~QkPGdNBo`FZcQDb1xQ z#*y#Y!++~I@zrrXn;cq5<)sY@@g?jaTYYBi!XkE%UUTbV>Y;rKD4dx*NabW|FK^{S zK^qY_m&cu$v_~mc6Qe)-yUfj>xn*6d&iI9xIM&Mg76puxpWFw-+Q5w+-Eye4yr^o| zm6E|&%A?)Sq0NGAiiU%v8>3uLI=utL0Q35ddkckW%a1&lxk$yYgb#@gzMpbR#8eB_ zcgy4Nc1>@h)rpms(~CFM8->2T1o_8KRUau|OG(KV$Gw&;VQxx>iRrgg*>SCa%(Gqh z->Ir_34=DOsPI6epJ-SP+@6G3kHB)Yo9+*YyGb(r9SFT7#DTTsWzR^2jz)33DM0A{ zfLMdbkL(TBTfJVR+)e%xXjp5i@#%!ZjHm(AZGrg^p`%HJ*$|$&7*)`{(*r(7r|D`bAOL_`!HLo~T z#?cA}bQgFAutgJ<05|8)a0%QVx*0d`DO4=H`r%zPQ=GEXATU%=?^nW>%3s5|=~@KC z>ui8oM1K6{#ZO&Z*c1(r7LFbDQ`>ak%miK~N^CmaMPadQ$|iG_H7RGE_@>-}@didZ z)`X_&a@%f>rOlD6&QeV1P$&=nbm7vemj4)aFae8V`ilNSnrR%&sJ)6SpfB-cw8Y=p zY|#)WF + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xdynamic_view< CT, S, L, FST > Member List
+
+
+ +

This is the complete list of members for xt::xdynamic_view< CT, S, L, FST >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
adjust_element_offset(offset_type offset, It first, It last) const noexcept -> offset_type (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
adjust_offset(offset_type offset, T idx, Args... args) const noexcept -> offset_type (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
adjust_offset_impl(offset_type offset, size_type idx_offset, T idx, Args... args) const noexcept -> offset_type (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< D >inline
assign_xexpression(const xexpression< E > &e) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
assign_xexpression(const xexpression< E > &e) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
backstrides_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
base_index_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
base_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
begin() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin() noexcept -> layout_iterator< L >xt::xiterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< D >inline
begin() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin() const noexcept -> const_layout_iterator< L >xt::xiterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
broadcast_shape(O &shape, bool reuse_cache=false) constxt::xdynamic_view< CT, S, L, FST >inline
build_view(E &&e) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
build_view(E &&e) const -> rebind_t< E > (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
cbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
cend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
computed_assign(const xexpression< E > &e) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
computed_assign(const xexpression< E > &e) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
const_broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_container_iterator typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
const_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_pointer typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
const_reference typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
const_reverse_broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_reverse_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_reverse_layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_reverse_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_stepper typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
container_iterator typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
contiguous_layout (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >static
crbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
crend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
data() noexcept=delete (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
data() const noexcept=delete (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
data_offset() const noexcept (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
derived_type typedef (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
derived_type typedef (defined in xt::xiterable< D >)xt::xiterable< D >
derived_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >private
difference_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
element(It first, It last) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
element(It first, It last) -> reference (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
element(It first, It last) const -> const_reference (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
end() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end() noexcept -> layout_iterator< L >xt::xiterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< D >inline
end() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end() const noexcept -> const_layout_iterator< L >xt::xiterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< D >inline
expression() noexceptxt::xdynamic_view< CT, S, L, FST >inline
expression() const noexceptxt::xdynamic_view< CT, S, L, FST >inline
expression_tag typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
extension_base typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
fill(const T &value) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
flat(size_type index) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
flat(size_type index) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
get_begin(bool end_index) noexcept -> layout_iterator< L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_begin(const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_cbegin(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cbegin(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_end(bool end_index) noexcept -> layout_iterator< L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_end(const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_shape() const (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inlineprotected
get_stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
has_linear_assign(const O &str) const noexcept (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
inner_backstrides_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
inner_shape_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
inner_storage_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
inner_strides_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
is_const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >static
is_contiguous() const noexcept (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
iterable_base typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
iterable_types typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
layout() const noexceptxt::xdynamic_view< CT, S, L, FST >inline
layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
linear_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()() (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
operator()() const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
operator()(Args... args) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
operator()(Args... args) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
operator()(Args... args) -> reference (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
operator()(Args... args) const -> const_reference (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xexpression< E > &e) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
operator=(const E &e) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
operator=(const xexpression< E > &e) -> self_type & (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
operator=(const xview_semantic &)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(xview_semantic &&)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >private
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >private
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
rbegin() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xiterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
rbegin() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
rebind_t typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
reference typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
rend() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend() noexcept -> reverse_layout_iterator< L >xt::xiterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
rend() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
reverse_broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
reverse_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
reverse_layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
reverse_linear_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
scalar_computed_assign(const E &e, F &&f) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
scalar_computed_assign(const E &e, F &&f) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
self_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
semantic_base typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
shape() const noexceptxt::xdynamic_view< CT, S, L, FST >inline
xt::xaccessible::shape(size_type index) constxt::xconst_accessible< D >inlineprivate
shape_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
simd_value_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
size_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
slice_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
slice_vector_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
static_layout (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >static
stepper typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
stepper_begin(const ST &shape) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
stepper_begin(const ST &shape) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
stepper_begin(const ST &shape) -> stepper (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
stepper_begin(const ST &shape) const -> const_stepper (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
stepper_end(const ST &shape, layout_type l) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
stepper_end(const ST &shape, layout_type l) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
stepper_end(const ST &shape, layout_type) -> stepper (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
stepper_end(const ST &shape, layout_type) const -> const_stepper (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
storage() noexceptxt::xdynamic_view< CT, S, L, FST >inline
storage() const noexceptxt::xdynamic_view< CT, S, L, FST >inline
storage_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
strides() const noexcept=delete (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
strides_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
strides_vt typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
temporary_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
unchecked(Args... args) (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
unchecked(Args... args) const (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
unchecked(Args... args) -> reference (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
unchecked(Args... args) const -> const_reference (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
value_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
xaccessible< self_type > (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >friend
xconst_accessible< self_type > (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >friend
xdynamic_view(CTA &&e, SA &&shape, get_strides_t< S > &&strides, std::size_t offset, layout_type layout, slice_vector_type &&slices, get_strides_t< S > &&adj_strides) noexcept (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >inline
xexpression_type typedef (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xstepper (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >friend
xview_semantic()=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic(const xview_semantic &)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic(xview_semantic &&)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic< self_type > (defined in xt::xdynamic_view< CT, S, L, FST >)xt::xdynamic_view< CT, S, L, FST >friend
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xview_semantic()=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
+
+ + + + diff --git a/classxt_1_1xdynamic__view.html b/classxt_1_1xdynamic__view.html new file mode 100644 index 000000000..f8ed89502 --- /dev/null +++ b/classxt_1_1xdynamic__view.html @@ -0,0 +1,3039 @@ + + + + + + + +xtensor: xt::xdynamic_view< CT, S, L, FST > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xdynamic_view< CT, S, L, FST > Class Template Reference
+
+
+
+Inheritance diagram for xt::xdynamic_view< CT, S, L, FST >:
+
+
+ + +xt::xview_semantic< D > +xt::xiterable< D > +xt::xstrided_view_base< D > +xt::xsemantic_base< D > +xt::xconst_iterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xdynamic_view< CT, S, L, FST >
 
using base_type = xstrided_view_base< self_type >
 
using semantic_base = xview_semantic< self_type >
 
using extension_base = extension::xdynamic_view_base_t< CT, S, L, FST >
 
using expression_tag = typename extension_base::expression_tag
 
using xexpression_type = typename base_type::xexpression_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using difference_type = typename base_type::difference_type
 
using inner_storage_type = typename base_type::inner_storage_type
 
using storage_type = typename base_type::storage_type
 
using iterable_base = xiterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using temporary_type = typename xcontainer_inner_types< self_type >::temporary_type
 
using base_index_type = xindex_type_t< shape_type >
 
using simd_value_type = typename base_type::simd_value_type
 
using bool_load_type = typename base_type::bool_load_type
 
using strides_vt = typename strides_type::value_type
 
using slice_type = xtl::variant< detail::xfake_slice< strides_vt >, xkeep_slice< strides_vt >, xdrop_slice< strides_vt > >
 
using slice_vector_type = std::vector< slice_type >
 
using container_iterator = std::conditional_t< is_const, typename storage_type::const_iterator, typename storage_type::iterator >
 
using const_container_iterator = typename storage_type::const_iterator
 
template<class E >
using rebind_t = xdynamic_view< E, S, L, typename FST::template rebind_t< E > >
 
- Public Types inherited from xt::xview_semantic< D >
using base_type = xsemantic_base< D >
 
using derived_type = D
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
- Public Types inherited from xt::xiterable< D >
using derived_type = D
 
using base_type = xconst_iterable< D >
 
using inner_shape_type = typename base_type::inner_shape_type
 
using stepper = typename base_type::stepper
 
using const_stepper = typename base_type::const_stepper
 
using linear_iterator = typename base_type::linear_iterator
 
using reverse_linear_iterator = typename base_type::reverse_linear_iterator
 
template<layout_type L>
using layout_iterator = typename base_type::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename base_type::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename base_type::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename base_type::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename base_type::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename base_type::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename base_type::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename base_type::template const_reverse_broadcast_iterator< S, L >
 
using iterator = typename base_type::iterator
 
using const_iterator = typename base_type::const_iterator
 
using reverse_iterator = typename base_type::reverse_iterator
 
using const_reverse_iterator = typename base_type::const_reverse_iterator
 
- Public Types inherited from xt::xconst_iterable< D >
using derived_type = D
 
using iterable_types = xiterable_inner_types< D >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
template<layout_type L>
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
template<layout_type L>
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
template<layout_type L>
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
template<layout_type L>
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
template<class S , layout_type L>
using broadcast_iterator = xiterator< stepper, S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class CTA , class SA >
 xdynamic_view (CTA &&e, SA &&shape, get_strides_t< S > &&strides, std::size_t offset, layout_type layout, slice_vector_type &&slices, get_strides_t< S > &&adj_strides) noexcept
 
+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
+const inner_strides_type & strides () const noexcept=delete
 
reference operator() ()
 
const_reference operator() () const
 
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
reference flat (size_type index)
 
const_reference flat (size_type index) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
size_type data_offset () const noexcept
 
+value_type * data () noexcept=delete
 
+const value_type * data () const noexcept=delete
 
template<class O >
bool has_linear_assign (const O &str) const noexcept
 
template<class T >
void fill (const T &value)
 
+template<class ST >
stepper stepper_begin (const ST &shape)
 
+template<class ST >
stepper stepper_end (const ST &shape, layout_type l)
 
+template<class ST >
const_stepper stepper_begin (const ST &shape) const
 
+template<class ST >
const_stepper stepper_end (const ST &shape, layout_type l) const
 
+template<class E >
rebind_t< E > build_view (E &&e) const
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
template<class... Args>
auto operator() (Args... args) -> reference
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 
template<class... Args>
auto unchecked (Args... args) -> reference
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 
template<class It >
auto element (It first, It last) -> reference
 
template<class It >
auto element (It first, It last) const -> const_reference
 
template<class ST >
auto stepper_begin (const ST &shape) -> stepper
 
template<class ST >
auto stepper_end (const ST &shape, layout_type) -> stepper
 
template<class ST >
auto stepper_begin (const ST &shape) const -> const_stepper
 
template<class ST >
auto stepper_end (const ST &shape, layout_type) const -> const_stepper
 
template<class E >
auto build_view (E &&e) const -> rebind_t< E >
 
template<class T , class... Args>
auto adjust_offset (offset_type offset, T idx, Args... args) const noexcept -> offset_type
 
template<class T , class... Args>
auto adjust_offset_impl (offset_type offset, size_type idx_offset, T idx, Args... args) const noexcept -> offset_type
 
template<class It >
auto adjust_element_offset (offset_type offset, It first, It last) const noexcept -> offset_type
 
bool is_contiguous () const noexcept
 
layout_type layout () const noexcept
 Returns the layout of the xtrided_view_base.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the xtrided_view_base.
 
template<class O >
bool broadcast_shape (O &shape, bool reuse_cache=false) const
 Broadcast the shape of the view to the specified parameter.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the view.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the view.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the view.
 
- Public Member Functions inherited from xt::xview_semantic< D >
+template<class E >
derived_type & assign_xexpression (const xexpression< E > &e)
 
+template<class E >
derived_type & computed_assign (const xexpression< E > &e)
 
+template<class E , class F >
derived_type & scalar_computed_assign (const E &e, F &&f)
 
derived_type & assign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
template<class E >
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
template<class E >
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
template<class E , class F >
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
template<class E >
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xiterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
layout_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
layout_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_layout_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_layout_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_begin (bool end_index) noexcept -> layout_iterator< L >
 
template<layout_type L>
auto get_end (bool end_index) noexcept -> layout_iterator< L >
 
template<layout_type L, class S >
auto get_begin (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_end (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xconst_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L>
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L, class S >
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
+ + + + + + + +

+Static Public Attributes

static constexpr bool is_const
 
static constexpr bool contiguous_layout
 
static constexpr layout_type static_layout
 
+ + + + + + + + + + +

+Friends

template<class C >
class xstepper
 
class xview_semantic< self_type >
 
class xaccessible< self_type >
 
class xconst_accessible< self_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xview_semantic< D >
xview_semantic (const xview_semantic &)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xconst_iterable< D >
const inner_shape_type & get_shape () const
 
+

Detailed Description

+
template<class CT, class S, layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+class xt::xdynamic_view< CT, S, L, FST >
+

Definition at line 97 of file xdynamic_view.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 131 of file xdynamic_view.hpp.

+ +
+
+ +

◆ base_index_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::base_index_type = xindex_type_t<shape_type>
+
+ +

Definition at line 140 of file xdynamic_view.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::base_type = xstrided_view_base<self_type>
+
+ +

Definition at line 105 of file xdynamic_view.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::bool_load_type = typename base_type::bool_load_type
+
+ +

Definition at line 143 of file xdynamic_view.hpp.

+ +
+
+ +

◆ const_container_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::const_container_iterator = typename storage_type::const_iterator
+
+ +

Definition at line 238 of file xdynamic_view.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 117 of file xdynamic_view.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 115 of file xdynamic_view.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 134 of file xdynamic_view.hpp.

+ +
+
+ +

◆ container_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::container_iterator = std:: conditional_t<is_const, typename storage_type::const_iterator, typename storage_type::iterator>
+
+ +

Definition at line 236 of file xdynamic_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::difference_type = typename base_type::difference_type
+
+ +

Definition at line 119 of file xdynamic_view.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 108 of file xdynamic_view.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::extension_base = extension::xdynamic_view_base_t<CT, S, L, FST>
+
+ +

Definition at line 107 of file xdynamic_view.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 127 of file xdynamic_view.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 125 of file xdynamic_view.hpp.

+ +
+
+ +

◆ inner_storage_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::inner_storage_type = typename base_type::inner_storage_type
+
+ +

Definition at line 121 of file xdynamic_view.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 126 of file xdynamic_view.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::iterable_base = xiterable<self_type>
+
+ +

Definition at line 124 of file xdynamic_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::pointer = typename base_type::pointer
+
+ +

Definition at line 116 of file xdynamic_view.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::rebind_t = xdynamic_view<E, S, L, typename FST::template rebind_t<E> >
+
+ +

Definition at line 241 of file xdynamic_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::reference = typename base_type::reference
+
+ +

Definition at line 114 of file xdynamic_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::self_type = xdynamic_view<CT, S, L, FST>
+
+ +

Definition at line 104 of file xdynamic_view.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::semantic_base = xview_semantic<self_type>
+
+ +

Definition at line 106 of file xdynamic_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 129 of file xdynamic_view.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::simd_value_type = typename base_type::simd_value_type
+
+ +

Definition at line 142 of file xdynamic_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::size_type = typename base_type::size_type
+
+ +

Definition at line 118 of file xdynamic_view.hpp.

+ +
+
+ +

◆ slice_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::slice_type = xtl::variant<detail::xfake_slice<strides_vt>, xkeep_slice<strides_vt>, xdrop_slice<strides_vt> >
+
+ +

Definition at line 146 of file xdynamic_view.hpp.

+ +
+
+ +

◆ slice_vector_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::slice_vector_type = std::vector<slice_type>
+
+ +

Definition at line 147 of file xdynamic_view.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 133 of file xdynamic_view.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 122 of file xdynamic_view.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 130 of file xdynamic_view.hpp.

+ +
+
+ +

◆ strides_vt

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::strides_vt = typename strides_type::value_type
+
+ +

Definition at line 145 of file xdynamic_view.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::temporary_type = typename xcontainer_inner_types<self_type>::temporary_type
+
+ +

Definition at line 139 of file xdynamic_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::value_type = typename base_type::value_type
+
+ +

Definition at line 113 of file xdynamic_view.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xdynamic_view< CT, S, L, FST >::xexpression_type = typename base_type::xexpression_type
+
+ +

Definition at line 110 of file xdynamic_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xdynamic_view()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class CTA , class SA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xdynamic_view< CT, S, L, FST >::xdynamic_view (CTA && e,
SA && shape,
get_strides_t< S > && strides,
std::size_t offset,
layout_type layout,
slice_vector_type && slices,
get_strides_t< S > && adj_strides 
)
+
+inlinenoexcept
+
+ +

Definition at line 383 of file xdynamic_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ adjust_element_offset()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::adjust_element_offset (offset_type offset,
It first,
It last 
) const -> offset_type +
+
+inlinenoexcept
+
+ +

Definition at line 673 of file xdynamic_view.hpp.

+ +
+
+ +

◆ adjust_offset()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class T , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::adjust_offset (offset_type offset,
idx,
Args... args 
) const -> offset_type +
+
+inlinenoexcept
+
+ +

Definition at line 629 of file xdynamic_view.hpp.

+ +
+
+ +

◆ adjust_offset_impl()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class T , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::adjust_offset_impl (offset_type offset,
size_type idx_offset,
idx,
Args... args 
) const -> offset_type +
+
+inlinenoexcept
+
+ +

Definition at line 648 of file xdynamic_view.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xstrided_view_base< D >::broadcast_shape (O & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the view to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 184 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ build_view()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::build_view (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 560 of file xdynamic_view.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::data_offset () const
+
+inlinenoexcept
+
+ +

Definition at line 505 of file xdynamic_view.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Definition at line 486 of file xdynamic_view.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 496 of file xdynamic_view.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the view.

+ +

Definition at line 181 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::expression ()
+
+inlinenoexcept
+
+ +

Returns a reference to the underlying expression of the view.

+ +

Definition at line 180 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xdynamic_view< CT, S, L, FST >::fill (const T & value)
+
+inline
+
+ +

Definition at line 520 of file xdynamic_view.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::flat (size_type index)
+
+inline
+
+ +

Definition at line 473 of file xdynamic_view.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::flat (size_type index) const
+
+inline
+
+ +

Definition at line 479 of file xdynamic_view.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
bool xt::xdynamic_view< CT, S, L, FST >::has_linear_assign (const O & str) const
+
+inlinenoexcept
+
+ +

Definition at line 449 of file xdynamic_view.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
bool xt::xstrided_view_base< D >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 147 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout of the xtrided_view_base.

+ +

Definition at line 146 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ operator()() [1/4]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::operator() ()
+
+inline
+
+ +

Definition at line 414 of file xdynamic_view.hpp.

+ +
+
+ +

◆ operator()() [2/4]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::operator() () const
+
+inline
+
+ +

Definition at line 420 of file xdynamic_view.hpp.

+ +
+
+ +

◆ operator()() [3/4]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Definition at line 427 of file xdynamic_view.hpp.

+ +
+
+ +

◆ operator()() [4/4]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Definition at line 438 of file xdynamic_view.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 407 of file xdynamic_view.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

Definition at line 400 of file xdynamic_view.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the xtrided_view_base.

+ +

Definition at line 143 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class ST >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::stepper_begin (const ST & shape) -> stepper +
+
+inline
+
+ +

Definition at line 527 of file xdynamic_view.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class ST >
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::stepper_begin (const ST & shape) const -> const_stepper +
+
+inline
+
+ +

Definition at line 543 of file xdynamic_view.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::stepper_end (const ST & shape,
layout_type  
) -> stepper +
+
+inline
+
+ +

Definition at line 535 of file xdynamic_view.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::stepper_end (const ST & shape,
layout_type  
) const -> const_stepper +
+
+inline
+
+ +

Definition at line 551 of file xdynamic_view.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::storage () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the buffer containing the elements of the view.

+ +

Definition at line 172 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::storage ()
+
+inlinenoexcept
+
+ +

Returns a reference to the buffer containing the elements of the view.

+ +

Definition at line 171 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Definition at line 456 of file xdynamic_view.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xdynamic_view< CT, S, L, FST >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Definition at line 465 of file xdynamic_view.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< self_type >

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
friend class xaccessible< self_type >
+
+friend
+
+ +

Definition at line 279 of file xdynamic_view.hpp.

+ +
+
+ +

◆ xconst_accessible< self_type >

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
friend class xconst_accessible< self_type >
+
+friend
+
+ +

Definition at line 279 of file xdynamic_view.hpp.

+ +
+
+ +

◆ xstepper

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class C >
+ + + + + +
+ + + + +
friend class xstepper
+
+friend
+
+ +

Definition at line 279 of file xdynamic_view.hpp.

+ +
+
+ +

◆ xview_semantic< self_type >

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
friend class xview_semantic< self_type >
+
+friend
+
+ +

Definition at line 279 of file xdynamic_view.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
constexpr bool xt::xstrided_view_base< D >::contiguous_layout
+
+staticconstexpr
+
+ +

Definition at line 133 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ is_const

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
constexpr bool xt::xstrided_view_base< D >::is_const
+
+staticconstexpr
+
+ +

Definition at line 104 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
constexpr layout_type xt::xstrided_view_base< D >::static_layout
+
+staticconstexpr
+
+ +

Definition at line 132 of file xstrided_view_base.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xdynamic__view.js b/classxt_1_1xdynamic__view.js new file mode 100644 index 000000000..1320608ea --- /dev/null +++ b/classxt_1_1xdynamic__view.js @@ -0,0 +1,10 @@ +var classxt_1_1xdynamic__view = +[ + [ "broadcast_shape", "classxt_1_1xdynamic__view.html#a6a79ebace6f36cfb560248f093b7dfa2", null ], + [ "expression", "classxt_1_1xdynamic__view.html#a94e4948a88657428eb50b1a92c4c2a43", null ], + [ "expression", "classxt_1_1xdynamic__view.html#af4ec4a5c434d543b6c664f4572c849d4", null ], + [ "layout", "classxt_1_1xdynamic__view.html#a10da93fc02c2c53dde8d9f171ce053a6", null ], + [ "shape", "classxt_1_1xdynamic__view.html#a7f03137aa8b79f042dd1eb5b769f5256", null ], + [ "storage", "classxt_1_1xdynamic__view.html#a8b2e5b2c411cc06b834960f23dea39e7", null ], + [ "storage", "classxt_1_1xdynamic__view.html#aeec822654cdb1a74d861e819b1c98730", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xdynamic__view.png b/classxt_1_1xdynamic__view.png new file mode 100644 index 0000000000000000000000000000000000000000..94853453160c2a9861202a2f28f0034c5ae11013 GIT binary patch literal 7814 zcmeHMX;@R&))uist%@Jiq9R~x(XXH&`pF5ydcsc}ReuG6<1Gr4TSAK_Z4B15+kKl6y`9IJD1w?(_ZXkGr1@XUN`rt+Up< z*V^yi$%hWQEnBi?$$|w7mhJm-_mKq)mU@EsjrzLa|J)*p4|p*-^tWSs)M_<&JH!_w z)1N$a*z(=ERoLf4jg5`q`=d8I^TFRfk2-Sj=mPLrQ|uSweqXS_?0@#{-gzuWN5Epn zLsoHWDbk`=d? z>Ccs()tcd$X5GU06nSAcuSl>zRjO%-;mnJ@pp{DzoD!g;ZDEKouYrU+daqeZ7u|(( zC3-I;57Xvg)8nAdEZS<#!=4wd=9Nn+%-;GZ0(JeJkjL&uI9ipl)V2FGTq%N7=4_eM zc%4>dsaM@*hFhEiS=HCha!(COPV7RSFs`eJc+oo;&_#8t6%P{Pw1Pg>&VRhrN2KN? z+#jV2goNGcFIjp*0Us9|dfNZAS3rDiZB`PKr9}Qw;~4*vade%skWRDrYNpAt10ka( z)l4Qn#H7HIoQ<&XG-eQRna*sXkho^fJ1eyAQKYav`DH)j%Dd_@2_Ix<5;YHceQFg1)gNqX-FZo^$(YC2qm!ImShFxBzfys#TQv+C`uiW|(Hljyz&|J+LI zyM+-bsaoe#GpK(VkBE|5D&MU!uX@RnPQ@les8X5!p3yY=JTRMjzeJzAQSQ10O zpDT?t4I+nx=%7yra6?J0KDEeygmT-xsZebRx%}Sql#b8m@CRKBqAtDv?LwnV*1?VQ zYU=A>6G!aGnztu-Z2WkVXZT?IXFPoU9n&)FceVIiB*arY2zBJZOP((7VGRAc~FmrkYmbkvM?=7qSzl z>|1N_8=vRz_#0)(72gg6kM@m_sKie-tg>aRO?~}n;lnpk|41xKK#W9-?xMnFe*7G| z_7fmah$FMzS}Ye=*-THfDD^U2pHgEh%9)iPyN6@fqM!%{Ehd!?9L0~kRBG>z_^$4* z+J4gQ^q;(%s{s4z0>VAQNcE=V6aoPs`Q>UXHGZiNTN>7u9+h?}y`B7G-!ag##-1Oe zMeNJH+l?K)wFc?I#3P$SUINJnthNjHAf#pp0D>7p12fpWEn9`Q<5PP$jJmI0Cmp;8 zisDpX|3VXIu2r9YL;$UcSYxiH!En^{W4U(2|Eutn3-~nyc})ry(xza)24RWr17OF8 z&S|OsSDqB{N1FX>Tiu|sV5NUDRttQG+HZng%<-VXcqTk25yL#l^}5fbXA#Rvc%nCI z8m*ZK2Hwy_fDN7r4Bf>wT*SaI2qI&~J?XWYrq*43-$Kr@_{2G&vR+k?AMX(?ZwzQB z>44xk^gMz&o3K`+ETsf$p-M7b3;-A$@YkGxAR_;4wr`>uQp+}#ZlX@SHZ<1W8P3HC z9UXND7}BpbX=4KzAVQ(2Z8!_K6)Q@#3FG~Xp8K7{i*$5;ot=XhE;R1QVjFxkgy--S z8jMii&Q7Ow>q_?hdl^VDXZ<*9)9=4;>;|*SH?zmCy*N_ujA9FbD9*oDjCMLcMwxMtPmhlbIA6?ohwtj7*;5l6jrzM9rhkz@(Dj(^sqN~?9Q!EyN5$eT6AP!84S6Us{ z(nrqidPI1=f9bc2!5_?Kbv4;TR%AE8iDX4G9oL6-@aL#a-(reDRXOInP*N}FVQ%y| zdLm&h$4^*&okCEAeuiHT>X^*&ZWapF&tl5_*Djv2p6oaB0mQW&)rml@njG({H|Owg znWcARL0xp1sJhtW)OKu0bBJ6Zj&EU7;JR)piU@Ug*QpePWeKijto;~6x^#IJ%a<2X zbPm^n&XA-+C81$1cXM-mutE7lT-O3=k9z1Vo`=(r!7ELhV%yD=5{elk`?~ z`2mT%dyoUCy>BYQ zr4-w7cs;d_;f^*LN!%x_Mj-9)n47Y?hf2x5!3Ic5*`@Eoh1Zdxa$u0(!}+v^X2BOK>aSsDZR5Jm*IJRsOqI@GIv>v!9e9_+-dTW8``O43 zH|-W8ebGx2Vm;3tb8*MiT`zd!(h#A*@=x)ZNeX^~(QgSVPXwDH74PDto&k&(w>G%87gUosZ*R@ctMP_MDUaa z8xjh$#!LKD3I6xR%g4sNr`xM%)>PA7kN0|%;b%Tmw4Gm;l!Oh~{tV!`jaK?)O*3pFlm{kp{9Qtn}lWXx>u46Ds~ILvD*r&77Chhpu~BJ1gG5E^@p zjTgyt0H5@C{b^1oa#;3*U+g>w%Sh6Ed3IBKFunh4Pb1yriRjk$-HE{o%u$wx2s2$r&vVUXmXCDI%s ziOi0hz9x}Mkd&HBxK`z@f*P}q$4=)eeqc`HlE{fKSS%-Q1SO{IYv*6ajT_wPr&VvL zSY_a`qN4!osN|M92Id|9W-Mwe_6gVSrj*;SgZ}+Br_Ps=A0L+>GJ8O}{*MDG>4=W< zU&G>LV%bnS6<-`)R zD~$$)1B@T~^K&`+mlUPW;b8Qpj0GC^7ISy5%G_oMnZf$K8Fm=V%qUc%=)_u5FajNp zB<9)K!$y2hct1QqslHCWSFISmYVGT59lp7c>62ytJjVY#YdHKo&X&KwP;aaw8AgkD z`t5Qr@nKc`3LYHiR^@;H@}7p`;k;U6QU6GU`mLpq;93y-;$`?rJ)YJs4zE|(;U!|@ zlat=ld^mb$kX(_aynnXv$OpzLxzitB4?DrSp;At-M|eeaHa%_f+Kkvpy3_dPZlc*j z#jk>li7_2?oke=NtoeI8k6^EX{$6EwpxL{!l)S_{m&2uprFCPcf~#96WvS?u3+e2; zFnF^dO<;l=yJ`AM<3^oBKtYAZI&@RobcAWT875$z?U;Sb_dplh(t0mSdK61Wz^bD< zR1WpQ985IQS{Ph_PkbtEFSv&tO|R=%AmR3;C4^czXZsPmz3~Qd+phX1EA=s`0fR|) zx8q%91G8fh+FMpq9+I4XMgC-o8K8Ou^s!@N^dtyQ9F1|rgGMHsrzR-}WJVBv2$O#yxiz?Exq+xD+QM_AV$kJ;;_}O`{CHB!Q_Eskk~1%1u&B4b zg1$EzKcxiJX#KkCXxZ5E7O~!~+UUrs3z*dl4bsdEFz`3MTser1`t7jF>)Q!tGkf(D z)+_)j_fwyO5mek4QRs|WtVwQW^U2Mlo@2^Wo5Rc*1$g)gW#3u9kv@}HzeHaoQ12#f z5lb34NgG^gv_!<3zUaumR}M!x4Y?ByLds1$>hB;9&b;n;yq4iY#B}e19j_FORjx#G>J6(^d=xUU6HOhyqQ zKCbN2DC6xklxT_zTtB}kc9(?m0RRt|Fn0r8Hfvkkw?8+}ejIf5lXU>S9;uRu5+u>+ zTG!xAmWO9AFY3{x-`hA+u{1k=GwJLbwx~$vrmB1=kXR^k<%;IB{jB~I8i>i=< zE3fi5VoH9Y;*)lPTNKmSsulu)Gb#Vx+5#=!41R&t+LmWh%GcmRazbOCJNVz8ORDZMOvny?N*`T^zyP5_Y*=VvgxMd8c?4b1u?e@%B%8w2j=1YZ_ zfqv5L^ME=1FVG4k81p=%AZ(6OcxMdevA6-Lw%Y0km&{WT<-&z3&<$8fpO&O<^lct!cdJlg4f(h9 z#*!-cK)jY^Hty99JqeQ3#?f}WSu$G>a^NPVj0f$9dSx7#rJ(VUG9bGRH3GRXM0z2f z+Q^2jSTXjx?0}Z!p0v@D)nCIv9qk|;p-w#ty@dRf#-VIt_UV_z9?`L2q9TQNJhP?BYkfj7sJF*7;gTH8v zD(lwuBmTbG1XOyiL__AEFURwY=1y3kt0%QdNCs2;OR839zaJ#=HGZL(- z_QzWjN$2TH68y#mG7UF`A%;BPcuKG1mGXovrkdDYQ7d+gtj;PR=0n3`J>u`(3ibudn4a_?uT$5}hD< zJ`d+1pyQs;v@_krSc*rI0AB!qnwBQT!)rrw!n!UOD$AM6&L16M&uDz=x@vx! zl+1$UMQmcrTEy^7e4C=Cfz{x^%clCiavUwKgo7zRGx9b&935D!CQcAnix{I{fh4NJ zMdLud4-YampEq+u9UwQG?g@Uon&!we_@gM3hN?I&7sLu8Ccm2gY<*@V4gcXeq87^{ z>OhAhPYwIS_#jgM1g4-T8vY0k(8V7eziL4T{{QH#>(6J^e3UnV;>XNpmH9T)=Cj^U Ts-P3&1^f0K++F;`$xHtNS2if$ literal 0 HcmV?d00001 diff --git a/classxt_1_1xexpression-members.html b/classxt_1_1xexpression-members.html new file mode 100644 index 000000000..5dae22e0e --- /dev/null +++ b/classxt_1_1xexpression-members.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xexpression< D > Member List
+
+
+ +

This is the complete list of members for xt::xexpression< D >, including all inherited members.

+ + + + + + + + + + + +
derived_cast() &noexceptxt::xexpression< D >inline
derived_cast() const &noexceptxt::xexpression< D >inline
derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
+
+ + + + diff --git a/classxt_1_1xexpression.html b/classxt_1_1xexpression.html new file mode 100644 index 000000000..3617e37ac --- /dev/null +++ b/classxt_1_1xexpression.html @@ -0,0 +1,297 @@ + + + + + + + +xtensor: xt::xexpression< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xexpression< D > Class Template Reference
+
+
+ +

Base class for xexpressions. + More...

+ +

#include <xexpression.hpp>

+
+Inheritance diagram for xt::xexpression< D >:
+
+
+ + +xt::xsharable_expression< xbroadcast< CT, X > > +xt::xsharable_expression< xfunction< F, CT... > > +xt::xsharable_expression< xgenerator< F, R, S > > +xt::xsharable_expression< xreducer< F, CT, X, O > > +xt::xsharable_expression< xrepeat< CT, R > > +xt::xsharable_expression< xscalar< CT > > +xt::xsharable_expression< D > +xt::xbroadcast< CT, X > +xt::xfunction< F, CT > +xt::xgenerator< F, R, S > +xt::xreducer< F, CT, X, O > +xt::xrepeat< CT, R > +xt::xscalar< CT > + +
+ + + + +

+Public Types

using derived_type = D
 
+ + + + + + + + + + + +

+Public Member Functions

Downcast functions
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
+ + + + + + + + + +

+Protected Member Functions

xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
+

Detailed Description

+
template<class D>
+class xt::xexpression< D >

Base class for xexpressions.

+

The xexpression class is the base class for all classes representing an expression that can be evaluated to a multidimensional container with tensor semantic. Functions that can apply to any xexpression regardless of its specific type should take a xexpression argument.

+
Template Parameters
+ + +
EThe derived type.
+
+
+ +

Definition at line 46 of file xexpression.hpp.

+

Member Typedef Documentation

+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xexpression< D >::derived_type = D
+
+ +

Definition at line 50 of file xexpression.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ derived_cast() [1/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xexpression< D >::derived_cast () &&
+
+inlinenoexcept
+
+ +

Returns a constant reference to the actual derived type of the xexpression.

+ +

Definition at line 135 of file xexpression.hpp.

+ +
+
+ +

◆ derived_cast() [2/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xexpression< D >::derived_cast () &
+
+inlinenoexcept
+
+ +

Returns a reference to the actual derived type of the xexpression.

+ +

Definition at line 117 of file xexpression.hpp.

+ +
+
+ +

◆ derived_cast() [3/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xexpression< D >::derived_cast () const &
+
+inlinenoexcept
+
+ +

Returns a constant reference to the actual derived type of the xexpression.

+ +

Definition at line 126 of file xexpression.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xexpression.js b/classxt_1_1xexpression.js new file mode 100644 index 000000000..420a231d7 --- /dev/null +++ b/classxt_1_1xexpression.js @@ -0,0 +1,6 @@ +var classxt_1_1xexpression = +[ + [ "derived_cast", "classxt_1_1xexpression.html#abf1d99fb093b7bab105ea3d8c4d8a548", null ], + [ "derived_cast", "classxt_1_1xexpression.html#a96fe8ebe879202c5a053ae5e0067b231", null ], + [ "derived_cast", "classxt_1_1xexpression.html#ab08a20008d390c970283c26f9f882483", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xexpression.png b/classxt_1_1xexpression.png new file mode 100644 index 0000000000000000000000000000000000000000..35a15f5ae0de40ad8e7632041d757d22332b9416 GIT binary patch literal 5867 zcmeHLYgAL$w$@tVhyvC(BBWfS*rIS$9wGrMYH123w%RJn!v~luLKJ}jd9|YA<0>?? zL>nN2t*KQ5q7Wc25j7w}MAQfg*+2pT0tpFuK$4x@4X9O*=ll-fpqolqpl}kzZ{3X3CU*=%DLU|Ck1Sm(OO~LqE=2!nbXn$~O^Pr$GNF%hWL;Y;S zgw?jbxS^r)`~N-ID^Q+ZqkY#Bt;8#FVelEA~G zT4Au&qD#{oXjGOEq7=Rz+aZky^hui}7|YFFLfvs5ie#;>Hh|xjqD5wWunA(vir$)> zq*iHgCa~K8D$kk-!!Ze+U>7Hr1j`H%^~!tAP&R;sw-RIoiJT@tdao(Rd6z23B}fV) z-HUW-rU>9*$6L%qRwI}cD`FiWx?#f8gE232KYb$k z#vu#4F{uMwZ!r@&7=z-xflmxJTAm7d!98Z?beQ~Ei{~T>iEnv9kc~H7%m8=4esB_k7^|X9wUb=0A&BuXOP>YNzX?H%U1>wM??B^2 z8ESWg=-(ZksN#R;fbXh2Uw6lOyxv zKilZpSU#%^j$GDYUzv3Q{tMji`+7L!fn0OREidk~jmsN;I2lf!8fIG7(6s*4JE;9d z__W1qkTxraC~!Z;$1it47w`0lT>k#>b?<@3Gh&xY+$mClNdnbKgp|1ls zjuBaK{}fI0&{8=q7rrn`-7TOc_qJSSVR;r19FymOazc+s)Y?-5CykJaBJbnX!5jRu zTbkwJ#1W53PMliAS<2L5QT<|32Zs&j)c1JAswiFT+}0}027M{>rBM>2H3tDPxn z3)ECWN$S2LZ2&W)+4PM-fOun030swwy9mWb;#S#$InYwsbYsT)8dKktF zG#LS=ghtTT80IQDqeG`dog!#mL-VLupnzZ<8NAO<|1q45!mmFiSfT;rNW{dTMiq?4 zF+cJIORsg}>*=n1usFbUB#6kC;BLw#p%LT+mlJpm(c}d#dRUi=|F%N0K$l7xOfX!4 zwHk)&@cmCl9a)blehPZ5I=i*nML2TQD8P+UCNkt?@_8QY9!B2Rc$LVK4XQ0dMYiR| zdL~MQ7aIywM}Ff7m$ATorhCkAm>@9YWSwn}fOz=I(Yz{`_95%(%T|x=_T8TTI0Qo0 z`?IOE%B+D?rQLTe{M>Q259gz}{r#<609P%y_!5?PUcJC~!#1=@TR?}{%!5-&#qB+t zIT>bf8~tnyhd)TZ#oww6jOvZ8_Ey^W_{=oM`YNK6_30<)lQJpQ-t<^eBw2PxI6m@m z`o}NOHl9dJOL93t^Yb62Y1ONJ7oMwImd35)BOMO$ByDFqEc|sTdz~;U#QIjWNc%0T z=~>q3+7KlrpyIk=0JLCxh->F+#ypDJt~!=_zzoFpk>T^G4_x_(k2I%Eg-&&x1MKql zinE!jr?hz-V$Rr41g3jc_mlL;CJ&R|o~p|$9c^Vj>h}+H(RzTEWpU&v&CfR-*T%Yh zg7l1JNUl3_>j9r(;~f>x&qcqWUUWn1AhMOfB&O6VXLws-^6*p%V32Ocp^dT+#uOKk zLFdC-Gxp3TeO`Z=(A!EORniM!O{5uP=J~O)Y?7i=Iv5CkBans&W7eXMN>R~+ zoSd|gd9JGluAPbD@y%simAerqPo+G#T+Ai{+&#C510^CsWrpJHQDa5nGNgle_8O#T z#={pRYY=l&o(#5ULE%6w9o}#Hy2Z8xE`ir^RO`dK%F5V^+&`G z5ygFEWP{nwE$3l$W(K)Q-9TJBM`OE9468AObxWdgn3S9Hmie8--uDdm$Z-%i?9Zt3CLXZKJ9NGj^BfheO}XdsouPV_d0@z_aLbdC z>E{S(on#qprMr>iFly2DKH`g0(n)vK6ntP?X)M3AW0@`A;xFMU>F9Kvx@AVC6&-Y! zu(C_wnJWzMrDu(b-3*eUxbi%&U9nT*3moynM|xoUFZ zYQ^ihQ9}jKH&LIY`|1#A$3nLQrb_6RC z9}Nk!N`EnU7Mqx485w1(ZrErcXwudIdkK0?(+Xn#$i10)vg;#mw3_bzofvvMz91MC zSm6#c;7QN-x5V-Wb3%eLcp$~qzVq2L#*U}%MZdz)Q7pds0#}6=#eB?5IlxX-jcN9S zS`W*L?poU~HAj|w_!Zfi;6J`U3vODsndG~X$q(1O@IrcyR;qr2God0UG(s(4x?py) zb}a%fd*pXv;BZP2H3BclMFpO4*VEwD?U(cQOdY5H&@@=rjF2Fc&ChU3;MVbM9N6at zJjWOevCx(%aIti4?btJ$<|7*n9aZK6+tdc9lOanAdn-qXTkBzdC-{zdb*luMQ@s(` z)$FUD;d(pLddYqTk}-TK7n$53IKvS$fgINwxWD#~4TtLCW80_A&&kguBc23qw8*av zH|Q_4adV73T{u;jQ}hCDH-7pi4)&n6VPv|t)n+xa=$luq@6C3$qumRc^n3%<5Z^>! zb>UTQ)6v5zhJIhzE6x5`inTObB`_VfhCZu*Lhn+H~ zi{|r|wh5`-m^%9}1@`LsC#C*_@VmT&Z%ede*#jTHlxnYq(~9)6^KS2|rT07j;qV{- z?>L^n|MTe?C6%pg)ZB~7kB=k75 z%zo&wxlvQ{o`N|P5>lH8iPhw5jK23&8#Q;!VJajz#eaIN|JPEzvm8E8d<9ag%z-lz z|61o|-N-) ze4Qtwc6iCo0g60|OV9d+zDTZ!nav&!WLSO`<^WfHKyU-BB9f#_h$h6dO}`Qk*O$)Y zq!;5KeY?7$_r>w!$3)^ivmKZBjMVz`PW+`n!OurN@-Vg+P(ED}O!PfS#+RB-u+`TH zn(_(x8Q=@*a~E3RSJ!i>A*BweZ2ofRX=rf@lfv>d|s?O6ts2L^i75Z#{z$s?8{z=?Y-{@h{ zE+{2slN$BHg_s4e3z0gD(m&^s4X9*O=4t;B`uNiI+^Q!X8Xj z`Ite~nMAp#huPCDxBmThicJUV>jE4;C8AqYvoih!E{=(u>pZSSv#uB-z{Jh4 zvPjYmmA)k7{x9lF22ej_dz@X>jl!&<%e6mlzYnMGn>)uYX@rxNzK1F~^neFz=S6WP zWBL-#YLm=vQutw91OcUeGyQWasdXMb)h8EvT|jDXDCcPM@TIuBmK#iuPQ_9jiZ@TQ zu8qLB2smlX4E$}P-@efn%>#A7%`2)c+No4s1p)B-Pm+qQe3AyT;)2;v{}25p5V&XS1g?$0ioW%X8LuwQ`I5KtDyPHt-Ju zl#TOiFT@=c2g^>B(3i&Cta)=a{7;q6OtjV*&@q)uE3t)QM3rA|X={y3=Ui4}*L;mA zbOhR};myKu+Hui`fVY3r(N6~ozcaXm6g6Sjbe#SuP@L6#67g#zCxFZBGn_zlsLEQZ zk}!vZE}On02UKsY zZyk$3XHxIvtTx}09#VoUWu{xcCJl#?2Q1V?@i_73ovOo5v0I1E_z=3UA~ma&+{jp^ ziP$5Kf$>t}@x%KGwDF-`K1Cf`j?^QRe?m!{I0u!8Q%H@At9NeBt`_7PS?$>|wHy6| zC57^-@g&KnqH`&Gtw?e}#@$>$0+?N@wBGYsgLF-t*lfU}d!eg_tar~4N8{DSZX}Ya z_=8Y-#-=uy-%seJF2RR|MW{uZe3f + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xexpression_assigner< Tag > Member List
+
+
+ +

This is the complete list of members for xt::xexpression_assigner< Tag >, including all inherited members.

+ + + + + + +
assert_compatible_shape(const xexpression< E1 > &e1, const xexpression< E2 > &e2) (defined in xt::xexpression_assigner< Tag >)xt::xexpression_assigner< Tag >inlinestatic
assign_xexpression(E1 &e1, const E2 &e2) (defined in xt::xexpression_assigner< Tag >)xt::xexpression_assigner< Tag >inlinestatic
base_type typedef (defined in xt::xexpression_assigner< Tag >)xt::xexpression_assigner< Tag >
computed_assign(xexpression< E1 > &e1, const xexpression< E2 > &e2) (defined in xt::xexpression_assigner< Tag >)xt::xexpression_assigner< Tag >inlinestatic
scalar_computed_assign(xexpression< E1 > &e1, const E2 &e2, F &&f) (defined in xt::xexpression_assigner< Tag >)xt::xexpression_assigner< Tag >inlinestatic
+
+ + + + diff --git a/classxt_1_1xexpression__assigner.html b/classxt_1_1xexpression__assigner.html new file mode 100644 index 000000000..125c3f7eb --- /dev/null +++ b/classxt_1_1xexpression__assigner.html @@ -0,0 +1,340 @@ + + + + + + + +xtensor: xt::xexpression_assigner< Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xexpression_assigner< Tag > Class Template Reference
+
+
+
+Inheritance diagram for xt::xexpression_assigner< Tag >:
+
+
+ + +xt::xexpression_assigner_base< Tag > + +
+ + + + +

+Public Types

using base_type = xexpression_assigner_base< Tag >
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

template<class E1 , class E2 >
static void assign_xexpression (E1 &e1, const E2 &e2)
 
template<class E1 , class E2 >
static void computed_assign (xexpression< E1 > &e1, const xexpression< E2 > &e2)
 
template<class E1 , class E2 , class F >
static void scalar_computed_assign (xexpression< E1 > &e1, const E2 &e2, F &&f)
 
template<class E1 , class E2 >
static void assert_compatible_shape (const xexpression< E1 > &e1, const xexpression< E2 > &e2)
 
+

Detailed Description

+
template<class Tag>
+class xt::xexpression_assigner< Tag >
+

Definition at line 78 of file xassign.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class Tag >
+ + + + +
using xt::xexpression_assigner< Tag >::base_type = xexpression_assigner_base<Tag>
+
+ +

Definition at line 82 of file xassign.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assert_compatible_shape()

+ +
+
+
+template<class Tag >
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xexpression_assigner< Tag >::assert_compatible_shape (const xexpression< E1 > & e1,
const xexpression< E2 > & e2 
)
+
+inlinestatic
+
+ +

Definition at line 545 of file xassign.hpp.

+ +
+
+ +

◆ assign_xexpression()

+ +
+
+
+template<class Tag >
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xexpression_assigner< Tag >::assign_xexpression (E1 & e1,
const E2 & e2 
)
+
+inlinestatic
+
+ +

Definition at line 485 of file xassign.hpp.

+ +
+
+ +

◆ computed_assign()

+ +
+
+
+template<class Tag >
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xexpression_assigner< Tag >::computed_assign (xexpression< E1 > & e1,
const xexpression< E2 > & e2 
)
+
+inlinestatic
+
+ +

Definition at line 493 of file xassign.hpp.

+ +
+
+ +

◆ scalar_computed_assign()

+ +
+
+
+template<class Tag >
+
+template<class E1 , class E2 , class F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::xexpression_assigner< Tag >::scalar_computed_assign (xexpression< E1 > & e1,
const E2 & e2,
F && f 
)
+
+inlinestatic
+
+ +

Definition at line 530 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xexpression__assigner.png b/classxt_1_1xexpression__assigner.png new file mode 100644 index 0000000000000000000000000000000000000000..0da8789c0fa67ba6c417fa29289daf7706ce918a GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^Pk=apgBeKLUDCV*q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)=+|3?nZFfJHoj|CIVoLgIf=WE{mHASNt=?mqi&t0Y-(>9(J+0It7@1%=ayI~*a_JG~;ohKbtHW_xUR@7ga>5?$x+=OFq zBMkMH#uWEy8}GN7xMs`#izzQ)ZD|^Zx0scwO(}i9Ol#RL)A|E1zt%TK;eI>_0{vo@H0GWSXAm%MJi8WfYI+KOk$hqv z^x??0)$6J^Pg#=w#mU2SSA0C@3hteL)3@Y4vzpv{JiqRi*uQ_L>%-srFMsnr=6dp{ z63eI{$=R`eJDBe7KdEAhh>}FLmEb7(X_0#S&B|DnmrERXK9dPgtE-$8lG%SU + + + + + + +xtensor: xt::xexpression_assigner_base< Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xexpression_assigner_base< Tag > Class Template Reference
+
+
+
+Inheritance diagram for xt::xexpression_assigner_base< Tag >:
+
+
+ + +xt::xexpression_assigner< Tag > + +
+

Detailed Description

+
template<class Tag>
+class xt::xexpression_assigner_base< Tag >
+

Definition at line 66 of file xassign.hpp.

+

The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xexpression__assigner__base.png b/classxt_1_1xexpression__assigner__base.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8fa1b0427e0dde7176148b3b187329d85fddc4 GIT binary patch literal 873 zcmV-v1D5=WP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0008? zNklvHQL41|~UOlIHziBIYa$Ouy>b#hvThD{9!MW0ZVzep*i=t7dD*cy{MH&+kmF+kI}_=_(iIjQixm+lO2W*hAWlyxoR8 zVVd1}$Xx{Uq$=55u8s7rroLPo)2gQS$?z85z+akGb<1!U=Y-R|0Hnayz5e%$P?_Tc^|OG7oMd);+0>vdO2>g)2~ z(AWGZzZG)s5{=Be<|)aH{xM1F=)miLyUC|PB<(%;m8l%xn6kdhQZcgU1d z3N8S6vu*$oU7rAXyL|xVCqUjA<5PYFAkv5(=@$Rm`F0V1|&&F z(10Y#2>K2(k>qoF;OJS?wEU6eBYGhuNnWpK0y>18ot3mL(|ILN?yvl`Y<&I8@3YpY zUG|SmXE%AdxF%V~GA}O9Kp)>^BAdfZwgtCQn{SE9VJ5OMim4$l`PgOKoT*Jna;HwY z<{Vek{NagYr8Op#B^z>`!DCbFwkm_lMHL`PIz0-x7O;o38+p48dBQZibFt@gZ6xmq z^F+Berd3Vtli@AAfxkx2YC41K6&KxP^}RRKb#ZACzFZS&$01}Q>v2%7ulr6GkfrB! zyKARq`m3H7b9}D5+JlYWS-R`u;%D8JB>TGjH}n~YzYKD2CWlq!J1|N1b@t5fxyfUG zl5FebnV&$C + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xexpression_assigner_base< xoptional_expression_tag > Member List
+
+
+ +

This is the complete list of members for xt::xexpression_assigner_base< xoptional_expression_tag >, including all inherited members.

+ + +
assign_data(xexpression< E1 > &e1, const xexpression< E2 > &e2, bool trivial) (defined in xt::xexpression_assigner_base< xoptional_expression_tag >)xt::xexpression_assigner_base< xoptional_expression_tag >inlinestatic
+
+ + + + diff --git a/classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html b/classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html new file mode 100644 index 000000000..834b66b8b --- /dev/null +++ b/classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html @@ -0,0 +1,168 @@ + + + + + + + +xtensor: xt::xexpression_assigner_base< xoptional_expression_tag > Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xexpression_assigner_base< xoptional_expression_tag > Class Reference
+
+
+ + + + + +

+Static Public Member Functions

template<class E1 , class E2 >
static void assign_data (xexpression< E1 > &e1, const xexpression< E2 > &e2, bool trivial)
 
+

Detailed Description

+
+

Definition at line 263 of file xoptional.hpp.

+

Member Function Documentation

+ +

◆ assign_data()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::xexpression_assigner_base< xoptional_expression_tag >::assign_data (xexpression< E1 > & e1,
const xexpression< E2 > & e2,
bool trivial 
)
+
+inlinestatic
+
+ +

Definition at line 1344 of file xoptional.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4-members.html b/classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4-members.html new file mode 100644 index 000000000..ddae62d84 --- /dev/null +++ b/classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xexpression_assigner_base< xtensor_expression_tag > Member List
+
+
+ +

This is the complete list of members for xt::xexpression_assigner_base< xtensor_expression_tag >, including all inherited members.

+ + +
assign_data(xexpression< E1 > &e1, const xexpression< E2 > &e2, bool trivial) (defined in xt::xexpression_assigner_base< xtensor_expression_tag >)xt::xexpression_assigner_base< xtensor_expression_tag >inlinestatic
+
+ + + + diff --git a/classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html b/classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html new file mode 100644 index 000000000..090fc0bb4 --- /dev/null +++ b/classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html @@ -0,0 +1,168 @@ + + + + + + + +xtensor: xt::xexpression_assigner_base< xtensor_expression_tag > Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xexpression_assigner_base< xtensor_expression_tag > Class Reference
+
+
+ + + + + +

+Static Public Member Functions

template<class E1 , class E2 >
static void assign_data (xexpression< E1 > &e1, const xexpression< E2 > &e2, bool trivial)
 
+

Detailed Description

+
+

Definition at line 69 of file xassign.hpp.

+

Member Function Documentation

+ +

◆ assign_data()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::xexpression_assigner_base< xtensor_expression_tag >::assign_data (xexpression< E1 > & e1,
const xexpression< E2 > & e2,
bool trivial 
)
+
+inlinestatic
+
+ +

Definition at line 443 of file xassign.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xexpression__holder-members.html b/classxt_1_1xexpression__holder-members.html new file mode 100644 index 000000000..c8e012387 --- /dev/null +++ b/classxt_1_1xexpression__holder-members.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xexpression_holder Member List
+
+
+ +

This is the complete list of members for xt::xexpression_holder, including all inherited members.

+ + + + + + + + + + + + +
from_json(const nlohmann::json &) (defined in xt::xexpression_holder)xt::xexpression_holderinline
implementation_type typedef (defined in xt::xexpression_holder)xt::xexpression_holder
operator=(const xexpression_holder &) (defined in xt::xexpression_holder)xt::xexpression_holderinline
operator=(xexpression_holder &&) (defined in xt::xexpression_holder)xt::xexpression_holderinline
swap(xexpression_holder &) (defined in xt::xexpression_holder)xt::xexpression_holderinline
to_json(nlohmann::json &) const (defined in xt::xexpression_holder)xt::xexpression_holderinline
xexpression_holder()=default (defined in xt::xexpression_holder)xt::xexpression_holder
xexpression_holder(E &&expr) (defined in xt::xexpression_holder)xt::xexpression_holderinline
xexpression_holder(implementation_type *holder) (defined in xt::xexpression_holder)xt::xexpression_holderinline
xexpression_holder(const xexpression_holder &holder) (defined in xt::xexpression_holder)xt::xexpression_holderinline
xexpression_holder(xexpression_holder &&holder) (defined in xt::xexpression_holder)xt::xexpression_holderinline
+
+ + + + diff --git a/classxt_1_1xexpression__holder.html b/classxt_1_1xexpression__holder.html new file mode 100644 index 000000000..57ab523f8 --- /dev/null +++ b/classxt_1_1xexpression__holder.html @@ -0,0 +1,416 @@ + + + + + + + +xtensor: xt::xexpression_holder Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xexpression_holder Class Reference
+
+
+ + + + +

+Public Types

using implementation_type = detail::xexpression_holder_impl
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class E >
 xexpression_holder (E &&expr)
 
 xexpression_holder (implementation_type *holder)
 
 xexpression_holder (const xexpression_holder &holder)
 
 xexpression_holder (xexpression_holder &&holder)
 
xexpression_holderoperator= (const xexpression_holder &)
 
xexpression_holderoperator= (xexpression_holder &&)
 
void swap (xexpression_holder &)
 
void to_json (nlohmann::json &) const
 
void from_json (const nlohmann::json &)
 
+

Detailed Description

+
+

Definition at line 33 of file xexpression_holder.hpp.

+

Member Typedef Documentation

+ +

◆ implementation_type

+ +
+
+ + + + +
using xt::xexpression_holder::implementation_type = detail::xexpression_holder_impl
+
+ +

Definition at line 37 of file xexpression_holder.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xexpression_holder() [1/4]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xt::xexpression_holder::xexpression_holder (E && expr)
+
+inline
+
+ +

Definition at line 122 of file xexpression_holder.hpp.

+ +
+
+ +

◆ xexpression_holder() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
xt::xexpression_holder::xexpression_holder (implementation_type * holder)
+
+inline
+
+ +

Definition at line 127 of file xexpression_holder.hpp.

+ +
+
+ +

◆ xexpression_holder() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
xt::xexpression_holder::xexpression_holder (const xexpression_holderholder)
+
+inline
+
+ +

Definition at line 132 of file xexpression_holder.hpp.

+ +
+
+ +

◆ xexpression_holder() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
xt::xexpression_holder::xexpression_holder (xexpression_holder && holder)
+
+inline
+
+ +

Definition at line 137 of file xexpression_holder.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ from_json()

+ +
+
+ + + + + +
+ + + + + + + + +
void xt::xexpression_holder::from_json (const nlohmann::json & j)
+
+inline
+
+ +

Definition at line 169 of file xexpression_holder.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
xexpression_holder & xt::xexpression_holder::operator= (const xexpression_holderholder)
+
+inline
+
+ +

Definition at line 142 of file xexpression_holder.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
xexpression_holder & xt::xexpression_holder::operator= (xexpression_holder && holder)
+
+inline
+
+ +

Definition at line 149 of file xexpression_holder.hpp.

+ +
+
+ +

◆ swap()

+ +
+
+ + + + + +
+ + + + + + + + +
void xt::xexpression_holder::swap (xexpression_holderholder)
+
+inline
+
+ +

Definition at line 155 of file xexpression_holder.hpp.

+ +
+
+ +

◆ to_json()

+ +
+
+ + + + + +
+ + + + + + + + +
void xt::xexpression_holder::to_json (nlohmann::json & j) const
+
+inline
+
+ +

Definition at line 160 of file xexpression_holder.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfiltration-members.html b/classxt_1_1xfiltration-members.html new file mode 100644 index 000000000..a86a0e4be --- /dev/null +++ b/classxt_1_1xfiltration-members.html @@ -0,0 +1,124 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfiltration< ECT, CCT > Member List
+
+
+ +

This is the complete list of members for xt::xfiltration< ECT, CCT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
apply(F &&func) -> self_type & (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >inline
const_reference typedef (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator%=(const E &) (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator%=(const E &e) -> disable_xexpression< E, self_type & >xt::xfiltration< ECT, CCT >inline
operator*=(const E &) (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator*=(const E &e) -> disable_xexpression< E, self_type & >xt::xfiltration< ECT, CCT >inline
operator+=(const E &) (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator+=(const E &e) -> disable_xexpression< E, self_type & >xt::xfiltration< ECT, CCT >inline
operator-=(const E &) (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator-=(const E &e) -> disable_xexpression< E, self_type & >xt::xfiltration< ECT, CCT >inline
operator/=(const E &) (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator/=(const E &e) -> disable_xexpression< E, self_type & >xt::xfiltration< ECT, CCT >inline
operator=(const E &) (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
operator=(const E &e) -> disable_xexpression< E, self_type & >xt::xfiltration< ECT, CCT >inline
self_type typedef (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
xexpression_type typedef (defined in xt::xfiltration< ECT, CCT >)xt::xfiltration< ECT, CCT >
xfiltration(ECTA &&e, CCTA &&condition)xt::xfiltration< ECT, CCT >inline
+
+ + + + diff --git a/classxt_1_1xfiltration.html b/classxt_1_1xfiltration.html new file mode 100644 index 000000000..00de86f90 --- /dev/null +++ b/classxt_1_1xfiltration.html @@ -0,0 +1,596 @@ + + + + + + + +xtensor: xt::xfiltration< ECT, CCT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfiltration< ECT, CCT > Class Template Reference
+
+
+ +

Filter of a xexpression for fast scalar assign. + More...

+ +

#include <xindex_view.hpp>

+ + + + + + + + +

+Public Types

using self_type = xfiltration< ECT, CCT >
 
using xexpression_type = std::decay_t< ECT >
 
using const_reference = typename xexpression_type::const_reference
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
disable_xexpression< E, self_type & > operator= (const E &)
 
+template<class E >
disable_xexpression< E, self_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, self_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, self_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, self_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, self_type & > operator%= (const E &)
 
Constructor
template<class ECTA , class CCTA >
 xfiltration (ECTA &&e, CCTA &&condition)
 Constructs a xfiltration on the given expression e, selecting the elements matching the specified condition.
 
Extended copy semantic
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type & >
 Assigns the scalar e to *this.
 
Computed assignement
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, self_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, self_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, self_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, self_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, self_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class F >
auto apply (F &&func) -> self_type &
 
+

Detailed Description

+
template<class ECT, class CCT>
+class xt::xfiltration< ECT, CCT >

Filter of a xexpression for fast scalar assign.

+

The xfiltration class implements a lazy filtration of a multidimentional xexpression, optimized for scalar and computed scalar assignments. Actually, the xfiltration class IS NOT an xexpression and the scalar and computed scalar assignments are the only method it provides. The filtering condition is not evaluated until the filtration is assigned.

+

xfiltration is not meant to be used directly, but only with the filtration helper function.

+
Template Parameters
+ + + +
ECTthe closure type of the xexpression type underlying this filtration
CCRthe closure type of the filtering xexpression type
+
+
+
See also
filtration
+ +

Definition at line 232 of file xindex_view.hpp.

+

Member Typedef Documentation

+ +

◆ const_reference

+ +
+
+
+template<class ECT , class CCT >
+ + + + +
using xt::xfiltration< ECT, CCT >::const_reference = typename xexpression_type::const_reference
+
+ +

Definition at line 238 of file xindex_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class ECT , class CCT >
+ + + + +
using xt::xfiltration< ECT, CCT >::self_type = xfiltration<ECT, CCT>
+
+ +

Definition at line 236 of file xindex_view.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class ECT , class CCT >
+ + + + +
using xt::xfiltration< ECT, CCT >::xexpression_type = std::decay_t<ECT>
+
+ +

Definition at line 237 of file xindex_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfiltration()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class ECTA , class CCTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xfiltration< ECT, CCT >::xfiltration (ECTA && e,
CCTA && condition 
)
+
+inline
+
+ +

Constructs a xfiltration on the given expression e, selecting the elements matching the specified condition.

+
Parameters
+ + + +
ethe xexpression to filter.
conditionthe filtering xexpression to apply.
+
+
+ +

Definition at line 639 of file xindex_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ apply()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class F >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::apply (F && func) -> self_type& +
+
+inline
+
+ +

Definition at line 761 of file xindex_view.hpp.

+ +
+
+ +

◆ operator%=()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::operator%= (const E & e) -> disable_xexpression<E, self_type&> +
+
+inline
+
+ +

Computes the remainder of *this after division by the scalar e.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 749 of file xindex_view.hpp.

+ +
+
+ +

◆ operator*=()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::operator*= (const E & e) -> disable_xexpression<E, self_type&> +
+
+inline
+
+ +

Multiplies *this with the scalar e.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 715 of file xindex_view.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::operator+= (const E & e) -> disable_xexpression<E, self_type&> +
+
+inline
+
+ +

Adds the scalar e to *this.

+
Parameters
+ + +
ethe scalar to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 681 of file xindex_view.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::operator-= (const E & e) -> disable_xexpression<E, self_type&> +
+
+inline
+
+ +

Subtracts the scalar e from *this.

+
Parameters
+ + +
ethe scalar to subtract.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 698 of file xindex_view.hpp.

+ +
+
+ +

◆ operator/=()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::operator/= (const E & e) -> disable_xexpression<E, self_type&> +
+
+inline
+
+ +

Divides *this by the scalar e.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 732 of file xindex_view.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class ECT , class CCT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfiltration< ECT, CCT >::operator= (const E & e) -> disable_xexpression<E, self_type&> +
+
+inline
+
+ +

Assigns the scalar e to *this.

+
Parameters
+ + +
ethe scalar to assign.
+
+
+
Returns
a reference to \ *this.
+ +

Definition at line 658 of file xindex_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfiltration.js b/classxt_1_1xfiltration.js new file mode 100644 index 000000000..79872c570 --- /dev/null +++ b/classxt_1_1xfiltration.js @@ -0,0 +1,10 @@ +var classxt_1_1xfiltration = +[ + [ "xfiltration", "classxt_1_1xfiltration.html#a70544dbbc899cd02b70dc5c473bffd02", null ], + [ "operator%=", "classxt_1_1xfiltration.html#a75cb70a24a3740144a49ca60edfa6b65", null ], + [ "operator*=", "classxt_1_1xfiltration.html#a5911e1b618eb8b240f8f93accccda5d7", null ], + [ "operator+=", "classxt_1_1xfiltration.html#a2fae2b71a4134ec799668a13cdc60d9a", null ], + [ "operator-=", "classxt_1_1xfiltration.html#acfb314430c89b71133595cb83f84a75e", null ], + [ "operator/=", "classxt_1_1xfiltration.html#a2bc58cd24579e8d62efd55fdb750ed40", null ], + [ "operator=", "classxt_1_1xfiltration.html#a13d467d1d2a39fb0b3cdee0b60d2db68", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfixed__adaptor-members.html b/classxt_1_1xfixed__adaptor-members.html new file mode 100644 index 000000000..98056e3a1 --- /dev/null +++ b/classxt_1_1xfixed__adaptor-members.html @@ -0,0 +1,296 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfixed_adaptor< EC, S, L, SH, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xfixed_adaptor< EC, S, L, SH, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >inline
at(Args... args) -> referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
at(Args... args) const -> const_referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
back()xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
back() constxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
backstrides() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
backstrides_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
base_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(ST &s, bool reuse_cache=false) const (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >::broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
container_closure_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
data() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
data_offset() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
dimension() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) -> referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
element(It first, It last) const -> const_referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
fill(const T &value)xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
flat(size_type i)xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
flat(size_type i) constxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
front()xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
front() constxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
inner_backstrides_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
inner_shape_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
inner_strides_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
is_contiguous() const noexcept (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexcept (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
N (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >static
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) -> referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
operator()(Args... args) const -> const_referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xfixed_adaptor &) (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
operator=(xfixed_adaptor &&) (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
operator=(temporary_type &&) (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
operator=(const xexpression< E > &e) (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
operator=(const xexpression< E > &e) -> self_type &xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
periodic(Args... args) const -> const_referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reshape(ST &&shape, layout_type layout=L) constxt::xfixed_adaptor< EC, S, L, SH, Tag >inline
resize(ST &&shape, bool force=false) constxt::xfixed_adaptor< EC, S, L, SH, Tag >inline
resize(ST &&shape, layout_type l) constxt::xfixed_adaptor< EC, S, L, SH, Tag >inline
resize(ST &&shape, const strides_type &strides) constxt::xfixed_adaptor< EC, S, L, SH, Tag >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
semantic_base typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
shape() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
shape_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
size() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
storage() noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
storage() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
storage_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
strides() const noexceptxt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
strides_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
temporary_type typedef (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
unchecked(Args... args) -> referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
unchecked(Args... args) const -> const_referencext::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >inline
xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > > (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >friend
xfixed_adaptor(storage_type &&data)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
xfixed_adaptor(const storage_type &data)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
xfixed_adaptor(D &&data)xt::xfixed_adaptor< EC, S, L, SH, Tag >inline
xfixed_adaptor(const xfixed_adaptor &)=default (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
xfixed_adaptor(xfixed_adaptor &&)=default (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xfixed_adaptor()=default (defined in xt::xfixed_adaptor< EC, S, L, SH, Tag >)xt::xfixed_adaptor< EC, S, L, SH, Tag >
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xfixed__adaptor.html b/classxt_1_1xfixed__adaptor.html new file mode 100644 index 000000000..e0c83335e --- /dev/null +++ b/classxt_1_1xfixed__adaptor.html @@ -0,0 +1,1868 @@ + + + + + + + +xtensor: xt::xfixed_adaptor< EC, S, L, SH, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfixed_adaptor< EC, S, L, SH, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container adaptor with tensor semantic and fixed dimension. + More...

+ +

#include <xfixed.hpp>

+
+Inheritance diagram for xt::xfixed_adaptor< EC, S, L, SH, Tag >:
+
+
+ + +xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xsemantic_base< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using container_closure_type = EC
 
using self_type = xfixed_adaptor< EC, S, L, SH, Tag >
 
using base_type = xcontainer< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using storage_type = typename base_type::storage_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
using derived_type = xfixed_adaptor< EC, S, L, SH, Tag >
 
using inner_types = xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< xfixed_adaptor< EC, S, L, SH, Tag > >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >
using base_type = xsemantic_base< xfixed_adaptor< EC, S, L, SH, Tag > >
 
using derived_type = xfixed_adaptor< EC, S, L, SH, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xfixed_adaptor (const xfixed_adaptor &)=default
 
xfixed_adaptor (xfixed_adaptor &&)=default
 
+template<class E >
xfixed_adaptoroperator= (const xexpression< E > &e)
 
Constructors
 xfixed_adaptor (storage_type &&data)
 Constructs an xfixed_adaptor of the given stl-like container.
 
 xfixed_adaptor (const storage_type &data)
 Constructs an xfixed_adaptor of the given stl-like container.
 
template<class D >
 xfixed_adaptor (D &&data)
 Constructs an xfixed_adaptor of the given stl-like container, with the specified shape and layout_type.
 
xfixed_adaptoroperator= (const xfixed_adaptor &)
 
xfixed_adaptoroperator= (xfixed_adaptor &&)
 
xfixed_adaptoroperator= (temporary_type &&)
 
- Public Member Functions inherited from xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
+reference operator() (Args... args)
 
+const_reference operator() (Args... args) const
 
+reference unchecked (Args... args)
 
+const_reference unchecked (Args... args) const
 
+reference element (It first, It last)
 
+const_reference element (It first, It last) const
 
+stepper stepper_begin (const S &shape) noexcept
 
+const_stepper stepper_begin (const S &shape) const noexcept
 
+stepper stepper_end (const S &shape, layout_type l) noexcept
 
+const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
void fill (const T &value)
 Fills the container with the given value.
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
void store_simd (size_type i, const simd &e)
 
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + +

+Static Public Attributes

static constexpr std::size_t N = S::size()
 
- Static Public Attributes inherited from xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + +

+Friends

class xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Extended copy semantic

template<class ST = std::array<std::size_t, N>>
void resize (ST &&shape, bool force=false) const
 Note that the xfixed_adaptor cannot be resized.
 
template<class ST = shape_type>
void resize (ST &&shape, layout_type l) const
 Note that the xfixed_adaptor cannot be resized.
 
template<class ST = shape_type>
void resize (ST &&shape, const strides_type &strides) const
 Note that the xfixed_adaptor cannot be resized.
 
template<class ST = std::array<std::size_t, N>>
const auto & reshape (ST &&shape, layout_type layout=L) const
 Note that the xfixed_container cannot be reshaped to a shape different from S.
 
template<class ST >
bool broadcast_shape (ST &s, bool reuse_cache=false) const
 
constexpr layout_type layout () const noexcept
 
bool is_contiguous () const noexcept
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
xcontainer (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_typederived_cast () &noexcept
 
const derived_typederived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class EC, class S, layout_type L, bool SH, class Tag>
+class xt::xfixed_adaptor< EC, S, L, SH, Tag >

Dense multidimensional container adaptor with tensor semantic and fixed dimension.

+

The xfixed_adaptor class implements a dense multidimensional container adaptor with tensor semantic and fixed dimension. It is used to provide a multidimensional container semantic and a tensor semantic to stl-like containers.

+
Template Parameters
+ + + + + + +
ECThe closure for the container type to adapt.
SThe xshape template parameter for the fixed shape of the adaptor
LThe layout_type of the adaptor.
SHWether the adaptor can be used as a shared expression.
TagThe expression tag.
+
+
+ +

Definition at line 446 of file xfixed.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 459 of file xfixed.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::base_type = xcontainer<self_type>
+
+ +

Definition at line 454 of file xfixed.hpp.

+ +
+
+ +

◆ container_closure_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::container_closure_type = EC
+
+ +

Definition at line 451 of file xfixed.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::expression_tag = Tag
+
+ +

Definition at line 464 of file xfixed.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 462 of file xfixed.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 460 of file xfixed.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 461 of file xfixed.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::self_type = xfixed_adaptor<EC, S, L, SH, Tag>
+
+ +

Definition at line 453 of file xfixed.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 455 of file xfixed.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 457 of file xfixed.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 456 of file xfixed.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 458 of file xfixed.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_adaptor< EC, S, L, SH, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 463 of file xfixed.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfixed_adaptor() [1/3]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xfixed_adaptor< EC, S, L, SH, Tag >::xfixed_adaptor (storage_type && data)
+
+inline
+
+ +

Constructs an xfixed_adaptor of the given stl-like container.

+
Parameters
+ + +
datathe container to adapt
+
+
+ +

Definition at line 806 of file xfixed.hpp.

+ +
+
+ +

◆ xfixed_adaptor() [2/3]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xfixed_adaptor< EC, S, L, SH, Tag >::xfixed_adaptor (const storage_type & data)
+
+inline
+
+ +

Constructs an xfixed_adaptor of the given stl-like container.

+
Parameters
+ + +
datathe container to adapt
+
+
+ +

Definition at line 817 of file xfixed.hpp.

+ +
+
+ +

◆ xfixed_adaptor() [3/3]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + +
xt::xfixed_adaptor< EC, S, L, SH, Tag >::xfixed_adaptor (D && data)
+
+inline
+
+ +

Constructs an xfixed_adaptor of the given stl-like container, with the specified shape and layout_type.

+
Parameters
+ + +
datathe container to adapt
+
+
+ +

Definition at line 830 of file xfixed.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ broadcast_shape()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xfixed_adaptor< ET, S, L, SH, Tag >::broadcast_shape (ST & s,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Definition at line 938 of file xfixed.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + +
bool xt::xfixed_adaptor< EC, S, L, SH, Tag >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 962 of file xfixed.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + +
constexpr layout_type xt::xfixed_adaptor< EC, S, L, SH, Tag >::layout () const
+
+constexprnoexcept
+
+ +

Definition at line 956 of file xfixed.hpp.

+ +
+
+ +

◆ operator=() [1/4]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfixed_adaptor< EC, S, L, SH, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 871 of file xfixed.hpp.

+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xfixed_adaptor< EC, S, L, SH, Tag >::operator= (const xfixed_adaptor< EC, S, L, SH, Tag > & rhs)
+
+inline
+
+ +

Definition at line 839 of file xfixed.hpp.

+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xfixed_adaptor< EC, S, L, SH, Tag >::operator= (temporary_type && rhs)
+
+inline
+
+ +

Definition at line 855 of file xfixed.hpp.

+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xfixed_adaptor< EC, S, L, SH, Tag >::operator= (xfixed_adaptor< EC, S, L, SH, Tag > && rhs)
+
+inline
+
+ +

Definition at line 847 of file xfixed.hpp.

+ +
+
+ +

◆ reshape()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const auto & xt::xfixed_adaptor< ET, S, L, SH, Tag >::reshape (ST && shape,
layout_type layout = L 
) const
+
+inline
+
+ +

Note that the xfixed_container cannot be reshaped to a shape different from S.

+ +

Definition at line 926 of file xfixed.hpp.

+ +
+
+ +

◆ resize() [1/3]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfixed_adaptor< ET, S, L, SH, Tag >::resize (ST && shape,
bool force = false 
) const
+
+inline
+
+ +

Note that the xfixed_adaptor cannot be resized.

+

Attempting to resize with a different size throws an assert in debug mode.

+ +

Definition at line 884 of file xfixed.hpp.

+ +
+
+ +

◆ resize() [2/3]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfixed_adaptor< ET, S, L, SH, Tag >::resize (ST && shape,
const strides_type & strides 
) const
+
+inline
+
+ +

Note that the xfixed_adaptor cannot be resized.

+

Attempting to resize with a different size throws an assert in debug mode.

+ +

Definition at line 911 of file xfixed.hpp.

+ +
+
+ +

◆ resize() [3/3]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfixed_adaptor< ET, S, L, SH, Tag >::resize (ST && shape,
layout_type l 
) const
+
+inline
+
+ +

Note that the xfixed_adaptor cannot be resized.

+

Attempting to resize with a different size throws an assert in debug mode.

+ +

Definition at line 896 of file xfixed.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >
+
+friend
+
+ +

Definition at line 516 of file xfixed.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ N

+ +
+
+
+template<class EC , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xfixed_adaptor< EC, S, L, SH, Tag >::N = S::size()
+
+staticconstexpr
+
+ +

Definition at line 466 of file xfixed.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xfixed__adaptor.js b/classxt_1_1xfixed__adaptor.js new file mode 100644 index 000000000..d209cec45 --- /dev/null +++ b/classxt_1_1xfixed__adaptor.js @@ -0,0 +1,11 @@ +var classxt_1_1xfixed__adaptor = +[ + [ "xfixed_adaptor", "classxt_1_1xfixed__adaptor.html#a4d68ba3b03788fbe1b70a7d6dce4040c", null ], + [ "xfixed_adaptor", "classxt_1_1xfixed__adaptor.html#adb3ce51eb417f3407c5b95d271c3f39c", null ], + [ "xfixed_adaptor", "classxt_1_1xfixed__adaptor.html#ab8855d521c67f4885638ab9d9108b36b", null ], + [ "operator=", "classxt_1_1xfixed__adaptor.html#a5eba04b65afb8377a248f1253605f7d2", null ], + [ "reshape", "classxt_1_1xfixed__adaptor.html#a5fe78e6500ce0bddc63c8b7de09b8031", null ], + [ "resize", "classxt_1_1xfixed__adaptor.html#a75fb0edc455232657d609bd9d79d6544", null ], + [ "resize", "classxt_1_1xfixed__adaptor.html#a656b75b805c1645d3c562a5797d7adb9", null ], + [ "resize", "classxt_1_1xfixed__adaptor.html#a10c880b192785a2108d5ab7047c1bed6", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfixed__adaptor.png b/classxt_1_1xfixed__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..b8be6b64d3b21ed8336e38f10899dfd7e24cd868 GIT binary patch literal 4524 zcmdT|X;4$ywx&^@3TSSwOd>*G3<9D-WK<@VART2A5t%{|Wkv#s5Qq@b1_LNI0YQ*S zP$Mma0xf8OAcz=7F+!kYKsv}EGZ8|_aNY*{^{amMs=98~yH)p{AIUmrt+UtKYk%w8 zYoBCCdz-D&%F+@N5?j$fpqwNmHj;qcw0Q&gb$$Mr1O9e8+B#c95Cp`D>7~oJn<*v- zw8NCLJ13f&n!xkZWX5Bl+Y;$ye_8_EuV2QJ_dZBSz>U$Uqt5v6X4o_FxhLcj7ig(M zNglD4a!XIzC$_kBpl+W-!nvV?gdTnD)|LaA=aiBJ8>CdPvqNijsO->aqAc2pJUZlz znm;oACS0Y%B#qNhN+Ms_y;mLo{odkml{UM_|I97k5k5oC^Q3txYH(u}EyQ9CdWjSK z)rMyYr0%5p&~4f7q8GK+w`%S5(>Qp4@m4q{s!Pq%qAGdKpBMwb#WAT^xD1bjR6sP) z+mhq}-P>4N&dGR@0JG>N6o^E8-VI)m+C_z|Snus;K-eDxH_R?mMKjB9(60nsLc_2W zL0`DaTZjyqUx1$7vueG5)_&7Hno64q_r1vOYk+z?vJf-Z&d0|S&G>b?9`N2A3i*P^ zn*Z5qXgMl|*)}~HW_oy}_deSY{@wY6G@LaMUAS8h&- zO4|aC>ySLbo0|`Z>V+nkx|~oj%KEE>i!ViE&=PBEgcCS?E(VXgV7um8CDnQ;t7G0ZyX9>9UA zA68IpGcAAio`W&`idT=l)EYXLCz|R#tPk(nw-j1n&9UiQe>2XA{eI^qw|yFm%i^gh zWC_~@Ss@QEmwo=F%IcLMEV}<4CuIU-p{X9rnaCRM!9f-^k$$;Y4Ol=Sm~#dpUo2pY zqX_3+!h+JT-;EbcG`xQ{W@A|$nw5KKSwyX7j6JD{VHt2t(xS(DQJDw_D-iE%1=BE) z4dQ&$>78xi^*Je8Xrp5FYny)4ixPxFJKGjUSAYB9B2a2uz>8kI0nlXsfkjn6k2H=+ zcg&|!fS4g$>rBMXQvhZQjA#L{yY2+npdViYwKEF1yyy7O+|HjwwH%Q3RZ1F}J(AGo zUCWwj53Oaf)mCoABuGjX+&!xmM%=5eH9zf)db(9t*AOm;5B0(Zs}KB`vRT^9R30AE zq6_OoIeseTf4-l)`FWB0HOU@(>y1*|@qn)JOyQZtf28mkr)wO5x%pY*G%|KOnd6AZq~p_9v$(H2k6kV$?Ir(}%OAWqAb zo7HgpJ=FJHA9%c)@r?lu`c1wMCZ)eIb*aS9d_zwG?fc@s`MjGo%4Hc4buFKT#bGh$ z^DdHP1Q#sEV_N@XR5vBSVxFqXW5i=KPA8~YAYDG0$yNJNQe)l2d%5&!2P!mb>#9&` zGnJu#PVb?^weV_^A3w5gm&@wic+527#cM-#cjWtX(&IW+$YO?);rD=Nvn~emE0Y5h z>fGAKBP>OA{Xw7K=J3RWA;^L)ip&@+H^Wh7ucvJ5m%(3@NxGy7AAGlUjqOcj6xnkO zcFGmQ|J;ln*q)6tU}}ux3WpT zL3gZ0BthZY(jDlLqsk2r*lS3!m)V?w>8_w)rx9+Sxmuo{{H2GDk=})!;}N&~x4m^j z%>@hfh8jo2Q9`TX0)^V^QNuF+>W3#M-?3S=+g{mR51CeP2sEx@90SMu=Sg4mEceL-7WXOLy#)S|J`Ai zjNHIa-{k*gP%kVN+c5>MM_|A}xuPaR17cB=ok9A)ljMC8B)%Q6v?xIhfJfclsa97BSrdB@HwdB8?;}W4j z^x_UnR}@j(jeOx2cGs0(+h7h=DO&XD)!5^hpm0K3r>eb9g<_erNk{tJfWCY$*0tR- za*2^KjYicR5VuLkt4QJIXgFMtTJdo9E}d>B?*WsiONm3KkusWPIQyv(-W2vlP5H zN)&BA(9?~3YVORdogNL*_Wy@hjqA^0L!yH=3T((?6AXO^p+Dvpp?zx^Q&yNT&K15) ziGM(9)N`{xE9}(Ji3tm*iN7MAkoqI0b{nXTx5wv?+q{cSQ)xNuG0$ioWSQCcv566` z`%{^WiHw#Yy@$bPoZ)d<`*Z}C6}Vh8lhDPOD~EvUxITDBBmAY1ukG&9ITo zLp0kM`^O=##qBdYl0oC=uLVXP?XB~J3IXFiSZ6#0eH<)?2Hjz# z5Dl<{7ApuCW5;AG-loqvr1SN%5ZDrc;geUCAq0P0{BiOb(06Ph9K4l^EXI^7OzR4mVVi?Q7W|Pe>^?AYLHOWwDf1jxNJc9*Rx1{ zV`F0$6I_d{tE;i*j-V&SJtW9V%V~v0|Iw?0hmz5hKRVU_LnSfmj}s|yLh&=UV>mww z%mqZWQR;-XfgPh}i#%LTOTHI~dz?{@Mb0ROfgNbJI15kAprvlcrmIa`#7M@nB0}>(aG5(*EkJS6&C^KAI~5 z)B9{%%Z?{NtN9JHX&yvqi3w@$?vdf)Xa%r7SfQ>GN9eFp(miI!e2K{)2NCg3fjAb+ zSs})DPnb3L(wHNYCX4m+^Up&r1uXQ=SCQ;ZY2J@cOO=xXd{;}6&>LRvqFHZP?0m>c27SVELwR)S2j@Zd7ci+}%|!Wv!`v)PZskWvA~fe=mw8$B SXYgG`0&Q)NsyOC-?LPta!oSS` literal 0 HcmV?d00001 diff --git a/classxt_1_1xfixed__container-members.html b/classxt_1_1xfixed__container-members.html new file mode 100644 index 000000000..3993d4ce9 --- /dev/null +++ b/classxt_1_1xfixed__container-members.html @@ -0,0 +1,305 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfixed_container< ET, S, L, SH, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xfixed_container< ET, S, L, SH, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >inline
at(Args... args) -> referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
at(Args... args) const -> const_referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
back()xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
back() constxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
backstrides() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
backstrides_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
base_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(ST &s, bool reuse_cache=false) const (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >inline
xcontainer< xfixed_container< ET, S, L, SH, Tag > >::broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_pointer typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
const_reference typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
data() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
data_offset() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
dimension() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) -> referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
element(It first, It last) const -> const_referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
fill(const T &value)xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
flat(size_type i)xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
flat(size_type i) constxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
from_shape(ST &&) (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >static
from_shape(ST &&shape) (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >inline
front()xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
front() constxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
inner_backstrides_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
inner_shape_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
inner_strides_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
is_contiguous() const noexcept (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >inline
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexcept (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
N (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >static
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) -> referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
operator()(Args... args) const -> const_referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xfixed_container &)=default (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
operator=(xfixed_container &&)=default (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
operator=(const xexpression< E > &e) (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
operator=(const xexpression< E > &e) -> self_type &xt::xfixed_container< ET, S, L, SH, Tag >inline
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
periodic(Args... args) const -> const_referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
rank (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >static
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reference typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reshape(ST &&shape, layout_type layout=L) constxt::xfixed_container< ET, S, L, SH, Tag >inline
resize(ST &&shape, bool force=false) constxt::xfixed_container< ET, S, L, SH, Tag >inline
resize(ST &&shape, layout_type l) constxt::xfixed_container< ET, S, L, SH, Tag >inline
resize(ST &&shape, const strides_type &strides) constxt::xfixed_container< ET, S, L, SH, Tag >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
semantic_base typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
shape() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
shape_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
size() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
storage() noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
storage() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
storage_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
strides() const noexceptxt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
strides_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
temporary_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
unchecked(Args... args) -> referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
unchecked(Args... args) const -> const_referencext::xcontainer< xfixed_container< ET, S, L, SH, Tag > >inline
value_type typedef (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
xcontainer< xfixed_container< ET, S, L, SH, Tag > > (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >friend
xfixed_container()=default (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
xfixed_container(const value_type &v) (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >inline
xfixed_container(const inner_shape_type &shape, layout_type l=L)xt::xfixed_container< ET, S, L, SH, Tag >inlineexplicit
xfixed_container(const inner_shape_type &shape, value_type v, layout_type l=L)xt::xfixed_container< ET, S, L, SH, Tag >inlineexplicit
xfixed_container(nested_initializer_list_t< value_type, N > t)xt::xfixed_container< ET, S, L, SH, Tag >inline
xfixed_container(const xfixed_container &)=default (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
xfixed_container(xfixed_container &&)=default (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
xfixed_container(const xexpression< E > &e)xt::xfixed_container< ET, S, L, SH, Tag >inline
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xfixed_container()=default (defined in xt::xfixed_container< ET, S, L, SH, Tag >)xt::xfixed_container< ET, S, L, SH, Tag >
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xfixed__container.html b/classxt_1_1xfixed__container.html new file mode 100644 index 000000000..1c37a2db6 --- /dev/null +++ b/classxt_1_1xfixed__container.html @@ -0,0 +1,2026 @@ + + + + + + + +xtensor: xt::xfixed_container< ET, S, L, SH, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfixed_container< ET, S, L, SH, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container with tensor semantic and fixed dimension. + More...

+ +

#include <xfixed.hpp>

+
+Inheritance diagram for xt::xfixed_container< ET, S, L, SH, Tag >:
+
+
+ + +xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > > +xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xsemantic_base< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfixed_container< ET, S, L, SH, Tag >
 
using base_type = xcontainer< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using shape_type = typename base_type::shape_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
using derived_type = xfixed_container< ET, S, L, SH, Tag >
 
using inner_types = xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< xfixed_container< ET, S, L, SH, Tag > >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< xfixed_container< ET, S, L, SH, Tag > >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >
using base_type = xsemantic_base< xfixed_container< ET, S, L, SH, Tag > >
 
using derived_type = xfixed_container< ET, S, L, SH, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xfixed_container (const xfixed_container &)=default
 
+xfixed_containeroperator= (const xfixed_container &)=default
 
xfixed_container (xfixed_container &&)=default
 
+xfixed_containeroperator= (xfixed_container &&)=default
 
+template<class E >
xfixed_containeroperator= (const xexpression< E > &e)
 
Constructors
 xfixed_container (const value_type &v)
 
 xfixed_container (const inner_shape_type &shape, layout_type l=L)
 Create an uninitialized xfixed_container.
 
 xfixed_container (const inner_shape_type &shape, value_type v, layout_type l=L)
 Create an xfixed_container, and initialize with the value of v.
 
template<class IX = std::integral_constant<std::size_t, N>, class EN = std::enable_if_t<IX::value != 0, int>>
 xfixed_container (nested_initializer_list_t< value_type, N > t)
 Allocates an xfixed_container with shape S with values from a C array.
 
template<class ST >
xfixed_container< ET, S, L, SH, Tag > from_shape (ST &&shape)
 
- Public Member Functions inherited from xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
+reference operator() (Args... args)
 
+const_reference operator() (Args... args) const
 
+reference unchecked (Args... args)
 
+const_reference unchecked (Args... args) const
 
+reference element (It first, It last)
 
+const_reference element (It first, It last) const
 
+stepper stepper_begin (const S &shape) noexcept
 
+const_stepper stepper_begin (const S &shape) const noexcept
 
+stepper stepper_end (const S &shape, layout_type l) noexcept
 
+const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
void fill (const T &value)
 Fills the container with the given value.
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
void store_simd (size_type i, const simd &e)
 
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + +

+Static Public Member Functions

+template<class ST = std::array<std::size_t, N>>
static xfixed_container from_shape (ST &&)
 
+ + + + + + + + + + + + + +

+Static Public Attributes

static constexpr std::size_t N = std::tuple_size<shape_type>::value
 
static constexpr std::size_t rank = N
 
- Static Public Attributes inherited from xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + +

+Friends

class xcontainer< xfixed_container< ET, S, L, SH, Tag > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Extended copy semantic

template<class E >
 xfixed_container (const xexpression< E > &e)
 The extended copy constructor.
 
template<class ST = std::array<std::size_t, N>>
void resize (ST &&shape, bool force=false) const
 Note that the xfixed_container cannot be resized.
 
template<class ST = shape_type>
void resize (ST &&shape, layout_type l) const
 Note that the xfixed_container cannot be resized.
 
template<class ST = shape_type>
void resize (ST &&shape, const strides_type &strides) const
 Note that the xfixed_container cannot be resized.
 
template<class ST = std::array<std::size_t, N>>
const auto & reshape (ST &&shape, layout_type layout=L) const
 Note that the xfixed_container cannot be reshaped to a shape different from S.
 
template<class ST >
bool broadcast_shape (ST &s, bool reuse_cache=false) const
 
constexpr layout_type layout () const noexcept
 
bool is_contiguous () const noexcept
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >
xcontainer (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_typederived_cast () &noexcept
 
const derived_typederived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class ET, class S, layout_type L, bool SH, class Tag>
+class xt::xfixed_container< ET, S, L, SH, Tag >

Dense multidimensional container with tensor semantic and fixed dimension.

+

The xfixed_container class implements a dense multidimensional container with tensor semantic and fixed dimension

+
Template Parameters
+ + + + + + +
ETThe type of the elements.
SThe xshape template paramter of the container.
LThe layout_type of the tensor.
SHWether the tensor can be used as a shared expression.
TagThe expression tag.
+
+
+
See also
xtensor_fixed
+ +

Definition at line 296 of file xfixed.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 314 of file xfixed.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::base_type = xcontainer<self_type>
+
+ +

Definition at line 302 of file xfixed.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 310 of file xfixed.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 308 of file xfixed.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::expression_tag = Tag
+
+ +

Definition at line 318 of file xfixed.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 315 of file xfixed.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 312 of file xfixed.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 316 of file xfixed.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::pointer = typename base_type::pointer
+
+ +

Definition at line 309 of file xfixed.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::reference = typename base_type::reference
+
+ +

Definition at line 307 of file xfixed.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::self_type = xfixed_container<ET, S, L, SH, Tag>
+
+ +

Definition at line 301 of file xfixed.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 303 of file xfixed.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 311 of file xfixed.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 305 of file xfixed.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 313 of file xfixed.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 317 of file xfixed.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + +
using xt::xfixed_container< ET, S, L, SH, Tag >::value_type = typename base_type::value_type
+
+ +

Definition at line 306 of file xfixed.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfixed_container() [1/5]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xfixed_container< ET, S, L, SH, Tag >::xfixed_container (const value_type & v)
+
+inline
+
+ +

Definition at line 563 of file xfixed.hpp.

+ +
+
+ +

◆ xfixed_container() [2/5]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xfixed_container< ET, S, L, SH, Tag >::xfixed_container (const inner_shape_type & shape,
layout_type l = L 
)
+
+inlineexplicit
+
+ +

Create an uninitialized xfixed_container.

+

Note this function is only provided for homogeneity, and the shape & layout argument is disregarded (the template shape is always used).

+
Parameters
+ + + +
shapethe shape of the xfixed_container (unused!)
lthe layout_type of the xfixed_container (unused!)
+
+
+ +

Definition at line 554 of file xfixed.hpp.

+ +
+
+ +

◆ xfixed_container() [3/5]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xfixed_container< ET, S, L, SH, Tag >::xfixed_container (const inner_shape_type & shape,
value_type v,
layout_type l = L 
)
+
+inlineexplicit
+
+ +

Create an xfixed_container, and initialize with the value of v.

+

Note, the shape argument to this function is only provided for homogeneity, and the shape argument is disregarded (the template shape is always used).

+
Parameters
+ + + + +
shapethe shape of the xfixed_container (unused!)
vthe fill value
lthe layout_type of the xfixed_container (unused!)
+
+
+ +

Definition at line 582 of file xfixed.hpp.

+ +
+
+ +

◆ xfixed_container() [4/5]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class IX , class EN >
+ + + + + +
+ + + + + + + + +
xt::xfixed_container< ET, S, L, SH, Tag >::xfixed_container (nested_initializer_list_t< value_type, N > t)
+
+inline
+
+ +

Allocates an xfixed_container with shape S with values from a C array.

+

The type returned by get_init_type_t is raw C array value_type[X][Y][Z] for xt::xshape<X, Y, Z>. C arrays can be initialized with the initializer list syntax, but the size is checked at compile time to prevent errors. Note: for clang < 3.8 this is an initializer_list and the size is not checked at compile-or runtime.

+ +

Definition at line 643 of file xfixed.hpp.

+ +
+
+ +

◆ xfixed_container() [5/5]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xt::xfixed_container< ET, S, L, SH, Tag >::xfixed_container (const xexpression< E > & e)
+
+inline
+
+ +

The extended copy constructor.

+ +

Definition at line 664 of file xfixed.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ broadcast_shape()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xfixed_container< ET, S, L, SH, Tag >::broadcast_shape (ST & s,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Definition at line 741 of file xfixed.hpp.

+ +
+
+ +

◆ from_shape()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + +
xfixed_container< ET, S, L, SH, Tag > xt::xfixed_container< ET, S, L, SH, Tag >::from_shape (ST && shape)
+
+inline
+
+ +

Definition at line 626 of file xfixed.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + +
bool xt::xfixed_container< ET, S, L, SH, Tag >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 753 of file xfixed.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + + + + +
constexpr layout_type xt::xfixed_container< ET, S, L, SH, Tag >::layout () const
+
+constexprnoexcept
+
+ +

Definition at line 747 of file xfixed.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfixed_container< ET, S, L, SH, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 674 of file xfixed.hpp.

+ +
+
+ +

◆ reshape()

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const auto & xt::xfixed_container< ET, S, L, SH, Tag >::reshape (ST && shape,
layout_type layout = L 
) const
+
+inline
+
+ +

Note that the xfixed_container cannot be reshaped to a shape different from S.

+ +

Definition at line 729 of file xfixed.hpp.

+ +
+
+ +

◆ resize() [1/3]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfixed_container< ET, S, L, SH, Tag >::resize (ST && shape,
bool force = false 
) const
+
+inline
+
+ +

Note that the xfixed_container cannot be resized.

+

Attempting to resize with a different size throws an assert in debug mode.

+ +

Definition at line 687 of file xfixed.hpp.

+ +
+
+ +

◆ resize() [2/3]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfixed_container< ET, S, L, SH, Tag >::resize (ST && shape,
const strides_type & strides 
) const
+
+inline
+
+ +

Note that the xfixed_container cannot be resized.

+

Attempting to resize with a different size throws an assert in debug mode.

+ +

Definition at line 714 of file xfixed.hpp.

+ +
+
+ +

◆ resize() [3/3]

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfixed_container< ET, S, L, SH, Tag >::resize (ST && shape,
layout_type l 
) const
+
+inline
+
+ +

Note that the xfixed_container cannot be resized.

+

Attempting to resize with a different size throws an assert in debug mode.

+ +

Definition at line 699 of file xfixed.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xfixed_container< ET, S, L, SH, Tag > >

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xfixed_container< ET, S, L, SH, Tag > >
+
+friend
+
+ +

Definition at line 379 of file xfixed.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ N

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xfixed_container< ET, S, L, SH, Tag >::N = std::tuple_size<shape_type>::value
+
+staticconstexpr
+
+ +

Definition at line 320 of file xfixed.hpp.

+ +
+
+ +

◆ rank

+ +
+
+
+template<class ET , class S , layout_type L, bool SH, class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xfixed_container< ET, S, L, SH, Tag >::rank = N
+
+staticconstexpr
+
+ +

Definition at line 321 of file xfixed.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xfixed__container.js b/classxt_1_1xfixed__container.js new file mode 100644 index 000000000..6569988a2 --- /dev/null +++ b/classxt_1_1xfixed__container.js @@ -0,0 +1,12 @@ +var classxt_1_1xfixed__container = +[ + [ "xfixed_container", "classxt_1_1xfixed__container.html#a004eaea5e4f5ef36e227b2673c11b4cd", null ], + [ "xfixed_container", "classxt_1_1xfixed__container.html#a41af8b86cc7d6df8d5713c29e404d4ab", null ], + [ "xfixed_container", "classxt_1_1xfixed__container.html#a5b52ede597fcbbe1904d878b01b46877", null ], + [ "xfixed_container", "classxt_1_1xfixed__container.html#a0ddc275300f31caf95233120272df975", null ], + [ "operator=", "classxt_1_1xfixed__container.html#a02686e37949d2c9076cd7b5656e7db3b", null ], + [ "reshape", "classxt_1_1xfixed__container.html#ab5b58143fbfe4d0b7c0ea353526b286f", null ], + [ "resize", "classxt_1_1xfixed__container.html#a1c6d4565311f46f74edd7bfbbf6a2616", null ], + [ "resize", "classxt_1_1xfixed__container.html#a311dfc919ead913eb8c6f27b241619fb", null ], + [ "resize", "classxt_1_1xfixed__container.html#a591c135ebc74e8067d19a7503c635280", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfixed__container.png b/classxt_1_1xfixed__container.png new file mode 100644 index 0000000000000000000000000000000000000000..d00674247550d31d051ed317092c47c5a7c07138 GIT binary patch literal 4514 zcmcgwX;hO*mqs8c5u{rI6%f1IAP7Pb5l}YMEn?Ub*`h!QD!Vj_5M)O}gGUi`f)J4a zk;Q~fXcUnx0cpUnDvN+@Vn|SsL^dHLz*oWPKJ(3)IcL5(J@fu}>rK_Id#ma`_o;hx z3vFj93sr)OiHXS~&z!Os6O*KX?}lv>;4Nt~(+V18w2h<1#>NKt{P=kZfA=NTNcYgy zJ*1A04Gj&T-+|am17p%5_I3_p;P>WZD4y9TCicBH@)W``Y|HHEaKyV4@)i?0Nctde z;}2t5b!D3!32(kZUPxbU+0l2rWkJO_Z+T`5zJ9mmX$w$`n!6&-ip zs4;inh`1UM8Z*`Au59QCfhbSH1KUO$#d$cMjb_R~YbZl=M@yK%7>9K?+F*nP`-jbU zhLrO=z3wREN-xp0p_;W(jwzZaaQorva&q|Xgqk@Fu>>Vj#G7Tt<5OHRuvv7SCq`99 z)zd;#nc7UfU&DeXUMgeq$Q}3tG_6RmZXv?p5H0?Uj^6Q6JIJx%Aws<(r1GqV6F7wR zBFdAcqeps^DLc{!Wt*-x_o*3X*G{umlZzD%=@0h??n#`u@`bUhudMsi#Kh|AL90d`-HP4rA0JUf@kkX~AhIm3MdQ_Ieo2>+*iVzY5Lit(%hvVq;>y6%Gh0Nx zv8Q41n~AR%^D-#jUr#7~nr3Uy6cPxw^UDSwDp8!B)#>emwc&x%{LrSWPKuJ1x`Vka zJB8K>=hwZ@A^7_}r_ek%^1{sO8n2{SS)#r_pw9}pHk0u}L2h_m`#h>5!^vj$+RnFd z)IMdbOST{bA6%MaJ?t(b!gZGERI`6Exs16za@@06~#Gv_~X}F+DgC zETjNo@!>oIAuSwewSqu^&>&b9?m zKVPnLjap}}kXmz4AV{9{Vqhq1?fUC3|lloarq}hjI*AK>7@WkAtY*>5LAtlC< zo}SYy?uO<^bQ$V27+;E^O^fWNs}N!Q2aywzjLZZL<}%}U`ehU<_dnFz) z+ureMj-?a_Mr#uD>Cb94b|imZnVA_a_sPmB37?yq8}f|cb=#R@BTPdK!v&mWRrk8A zj}zf>5F!>TzmgjK5tf%L8oc<~!x!^koEQxeV{(={Zt>9l*TR$6K4k=(*%EEqquwYwf6*{}f=8Xj0GZuK8O@%i}9c1PUzejX#HS=H4on_rt zu`r7as}!&LF{A$L`7>R~-L1@U@uzXz?7ag{Ni)~IZiEjP@O7lv7ZBLf4-YdxZN(AG zlhze1)>0@>cF#nZRukDZrBI z+YGTEhrCIhJh17r!*G6me6(JUKwIg7D`MZks>#?ybJKvuVIBs9Q{TH^%ZKoAF=U#% z#v7Sg5~lxr?N|$+q}}z!q(x0JRoccfV#6)lEv2P+x83X$WjFWQ6z&BmX2F(tnGUBV z=wdA|SGZ9(Ze9nTyp~fYJ$+F8Ddf0zqo1j_!29`e9k}~aPeX@f8f=_%-Qfr1^R~__ zE+$&U$;9#Sd0P-l=C70h@RNiqz5$xL0P5AS)XCfNcQ)=ftvm9%@4ljLU)mVjxzU%a z&ipC%fD+1`8EYhx!zB@6Y9M+R5~ee!l<)2nE+s0+7o}6obm!SS?GH z*u;yuPC%dmH@?mOzv&$S&;07@YK=75g0DWMAy1z~Y3TK}N5onB=^)~$Z}JJ^cYE9j z;;1|%1fp6{EeXj!oeG7TSOrT%O_C2P$cNqM?352vvenf1qS2|Q@kRfkBl`W>ht}x# ze)@%flfrTcIBvR#t|J=Eo53ANT8m-e<{t|0}kR z$&7VF$7%!-J#SU*F#F8933CIc2cpbtx%G4GC?xT2HOZBC{izVCr%jbI!Uc0{Z_ zVhcMv_yaq+TcxMV1AO9gFmvdjYwKlY%QFi_L<=PJjFA`gC&4tG3+jrEPc(K?0X?uaq zSk@`do4E8{7mpV@7yfNQbpXX%--+N&c7D3ti_-2kK?NP0uD7eu0CZ?Kis)2 zxLrgsOPYGQp2fVVlvqfKx%zSqhUo0h&rF@+EY_I%bZMEG`fybvaqT3Y%(DmI8TyRi z>EN#GB(Wt{G9y-RLYDscqk5Dv#J1-a^mN<4*bk$zdODhZ4`~>YV=YdS|JWGmw9Uax z#CTE|L^!FDUP_I{pu26!f)v20mquc|U#^`*)VD6E3|9$Q%pB>q_vY&;M2-d%C1 zzBg&VUiw=xKqlGV7#TwX#fud&DjB{BDmA34s9qt$P$KdF4XoGqA!h$1tQ)bnLCC-X zX)#pM9>2OjIvMBl`k!Naa;cIDqWjc8NB6xdM}Iv;+|+*(re^$q5W%1HIQ;c_HE zj`&`#7rRxIHOhR;EsuW7Ks(W!$)dq8-%`rIXAn@$U!^9Z`_MXB*q zdqgtJ=*eah>s>%lY7KHr6J^I8RwB6|xXIbEt+7kvweW>iQP%wGLhXyj`#u8yTVpMseU8Gz1AW{$He$tm! zTK$e6d+~jrp}H;*92RZg!#TTJR&IE0HaNJpmiGS3;_Qa!WH7s|tV*34O1*t)v|s{D ziu&*XR9Os?yE~a@l)_s0X2AqMJlhiV`<>c3dpk^Uu}$` zw%Z9V4|w<-mQjk_S#ZdN^WogU$nm;eSaR|;d~koj8wX5Rru4LxeC=|#rBsbNt@oLZ z>B#f?EMDqvSx^ILL8srx!J*S5D~{Kny%MlG%vKQ|X8Ss8*4zwpzoNWzI{f|F>f)OEU(fT5X^wePqA z@QTY=kq@e?d#b-Ral5Qe8Mc-W^BSSk?&W`Cs1L}L>Nh@Q2<^rn`P0zj+eh`I7$Om bxYbFgIxE@Q + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunction< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::xfunction< F, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
access_impl(std::index_sequence< I... >, Args... args) const -> const_reference (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
accessible_base typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
arguments() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
at(Args... args) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
at(Args... args) const -> const_referencext::xfunction< F, CT >inline
back() constxt::xfunction< F, CT >inline
bool_load_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
broadcast_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xfunction< F, CT >inline
build_stepper(Func &&f, std::index_sequence< I... >) const noexcept -> const_stepper (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
const_broadcast_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_layout_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_linear_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_pointer typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_reference typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_reverse_broadcast_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_reverse_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_reverse_layout_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_reverse_linear_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
const_stepper typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
contiguous_layout (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >static
data_element(size_type i) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
data_element_impl(std::index_sequence< I... >, size_type i) const -> const_reference (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
xsharable_expression< xfunction< F, CT... > >::derived_cast() &noexceptxt::xexpression< D >inline
xsharable_expression< xfunction< F, CT... > >::derived_cast() const &noexceptxt::xexpression< D >inline
xsharable_expression< xfunction< F, CT... > >::derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
difference_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
dimension() const noexceptxt::xfunction< F, CT >inline
element(It first, It last) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
element(It first, It last) const -> const_referencext::xfunction< F, CT >inline
element_access_impl(std::index_sequence< I... >, It first, It last) const -> const_reference (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
expression_tag typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
extension_base typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
flat(size_type i) constxt::xfunction< F, CT >inline
front() constxt::xfunction< F, CT >inline
functor() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
functor_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
has_linear_assign(const S &strides) const noexceptxt::xfunction< F, CT >inline
in_bounds(Args... args) constxt::xfunction< F, CT >inline
inner_shape_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
inner_types typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
is_contiguous() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
iterable_base typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
layout() const noexceptxt::xfunction< F, CT >inline
layout_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
linear_begin() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_cbegin() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_cend() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_crbegin() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_crend() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_end() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
linear_rbegin() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
linear_rend() const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
load_simd(size_type i) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
load_simd(size_type i) const -> simd_return_type< requested_type > (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
only_scalar typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
operator value_type() const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
operator()(Args... args) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
operator()(Args... args) const -> const_referencext::xfunction< F, CT >inline
operator=(const xfunction &)=default (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
operator=(xfunction &&)=default (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
periodic(Args... args) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
periodic(Args... args) const -> const_referencext::xfunction< F, CT >inline
pointer typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
reference typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
reverse_broadcast_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
reverse_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
reverse_layout_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
reverse_linear_iterator typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
self_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
shape() constxt::xfunction< F, CT >inline
shape(size_type index) constxt::xfunction< F, CT >inline
shape_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
simd_return_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
simd_value_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
size() const noexceptxt::xfunction< F, CT >inline
size_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
static_layout (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >static
stepper typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
stepper_begin(const S &shape) const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
tuple_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
unchecked(Args... args) const (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
unchecked(Args... args) const -> const_referencext::xfunction< F, CT >inline
unchecked_impl(std::index_sequence< I... >, Args... args) const -> const_reference (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >inline
value_type typedef (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
xconst_accessible< self_type > (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >friend
xconst_iterable< self_type > (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >friend
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xfunction(Func &&f, CTA &&... e) noexceptxt::xfunction< F, CT >inline
xfunction(xfunction< FA, CTA... > xf) noexceptxt::xfunction< F, CT >inline
xfunction(const xfunction &)=default (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
xfunction(xfunction &&)=default (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
xfunction_iterator< F, CT... > (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >friend
xfunction_stepper< F, CT... > (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >friend
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
~xfunction()=default (defined in xt::xfunction< F, CT >)xt::xfunction< F, CT >
+
+ + + + diff --git a/classxt_1_1xfunction.html b/classxt_1_1xfunction.html new file mode 100644 index 000000000..9d312c33d --- /dev/null +++ b/classxt_1_1xfunction.html @@ -0,0 +1,2759 @@ + + + + + + + +xtensor: xt::xfunction< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunction< F, CT > Class Template Reference
+
+
+ +

Multidimensional function operating on xtensor expressions. + More...

+ +

#include <xfunction.hpp>

+
+Inheritance diagram for xt::xfunction< F, CT >:
+
+
+ + +xt::xconst_iterable< xfunction< F, CT... > > +xt::xsharable_expression< xfunction< F, CT... > > +xt::xconst_accessible< xfunction< F, CT... > > +xt::xexpression< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfunction< F, CT... >
 
using accessible_base = xconst_accessible< self_type >
 
using extension_base = extension::xfunction_base_t< F, CT... >
 
using expression_tag = typename extension_base::expression_tag
 
using only_scalar = all_xscalar< CT... >
 
using functor_type = typename std::remove_reference< F >::type
 
using tuple_type = std::tuple< CT... >
 
using inner_types = xcontainer_inner_types< self_type >
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using size_type = typename inner_types::size_type
 
using difference_type = common_difference_type_t< std::decay_t< CT >... >
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = detail::xfunction_bool_load_type_t< CT... >
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using iterable_base = xconst_iterable< xfunction< F, CT... > >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = inner_shape_type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using const_linear_iterator = xfunction_iterator< F, CT... >
 
using linear_iterator = const_linear_iterator
 
using const_reverse_linear_iterator = std::reverse_iterator< const_linear_iterator >
 
using reverse_linear_iterator = std::reverse_iterator< linear_iterator >
 
using iterator = typename iterable_base::iterator
 
using const_iterator = typename iterable_base::const_iterator
 
using reverse_iterator = typename iterable_base::reverse_iterator
 
using const_reverse_iterator = typename iterable_base::const_reverse_iterator
 
- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xfunction (const xfunction &)=default
 
+xfunctionoperator= (const xfunction &)=default
 
xfunction (xfunction &&)=default
 
+xfunctionoperator= (xfunction &&)=default
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
simd_return_type< requested_type > load_simd (size_type i) const
 
size_type size () const noexcept
 Returns the size of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
Constructor
template<class Func , class... CTA, class U = std::enable_if_t<!std::is_base_of<std::decay_t<Func>, self_type>::value>>
 xfunction (Func &&f, CTA &&... e) noexcept
 Constructs an xfunction applying the specified function to the given arguments.
 
template<class FA , class... CTA>
 xfunction (xfunction< FA, CTA... > xf) noexcept
 Constructs an xfunction applying the specified function given by another xfunction with its arguments.
 
Data
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position of the underlying contiguous storage of the function.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the function.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the function.
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = compute_layout(std::decay_t<CT>::static_layout...)
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
+ + + + + + + + + +

+Friends

class xfunction_iterator< F, CT... >
 
class xfunction_stepper< F, CT... >
 
class xconst_iterable< self_type >
 
class xconst_accessible< self_type >
 
+ + + + + + + + + + + + +

Size and shape

size_type dimension () const noexcept
 Returns the number of dimensions of the function.
 
const inner_shape_type & shape () const
 Returns the shape of the xfunction.
 
layout_type layout () const noexcept
 Returns the layout_type of the xfunction.
 
bool is_contiguous () const noexcept
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xfunction can be linearly assigned to an expression with the specified strides.
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
const_reference data_element (size_type i) const
 
template<class UT = self_type, class = typename std::enable_if<UT::only_scalar::value>::type>
 operator value_type () const
 
const tuple_type & arguments () const noexcept
 
const functor_type & functor () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class align , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> simd_return_type< requested_type >
 
template<std::size_t... I, class... Args>
auto access_impl (std::index_sequence< I... >, Args... args) const -> const_reference
 
template<std::size_t... I, class... Args>
auto unchecked_impl (std::index_sequence< I... >, Args... args) const -> const_reference
 
template<std::size_t... I, class It >
auto element_access_impl (std::index_sequence< I... >, It first, It last) const -> const_reference
 
template<std::size_t... I>
auto data_element_impl (std::index_sequence< I... >, size_type i) const -> const_reference
 
template<class Func , std::size_t... I>
auto build_stepper (Func &&f, std::index_sequence< I... >) const noexcept -> const_stepper
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xsharable_expression< xfunction< F, CT... > >
xsharable_expression (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
+

Detailed Description

+
template<class F, class... CT>
+class xt::xfunction< F, CT >

Multidimensional function operating on xtensor expressions.

+

The xfunction class implements a multidimensional function operating on xtensor expressions.

+
Template Parameters
+ + + +
Fthe function type
CTthe closure types for arguments of the function
+
+
+ +

Definition at line 181 of file xfunction.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::accessible_base = xconst_accessible<self_type>
+
+ +

Definition at line 189 of file xfunction.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::bool_load_type = detail::xfunction_bool_load_type_t<CT...>
+
+ +

Definition at line 208 of file xfunction.hpp.

+ +
+
+ +

◆ broadcast_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunction< F, CT >::broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>
+
+ +

Definition at line 233 of file xfunction.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunction< F, CT >::const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>
+
+ +

Definition at line 235 of file xfunction.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_iterator = typename iterable_base::const_iterator
+
+ +

Definition at line 247 of file xfunction.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<layout_type L>
+ + + + +
using xt::xfunction< F, CT >::const_layout_iterator = typename iterable_base::template const_layout_iterator<L>
+
+ +

Definition at line 226 of file xfunction.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_linear_iterator = xfunction_iterator<F, CT...>
+
+ +

Definition at line 241 of file xfunction.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_pointer = const value_type*
+
+ +

Definition at line 201 of file xfunction.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 199 of file xfunction.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunction< F, CT >::const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 239 of file xfunction.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_reverse_iterator = typename iterable_base::const_reverse_iterator
+
+ +

Definition at line 249 of file xfunction.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<layout_type L>
+ + + + +
using xt::xfunction< F, CT >::const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>
+
+ +

Definition at line 230 of file xfunction.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_reverse_linear_iterator = std::reverse_iterator<const_linear_iterator>
+
+ +

Definition at line 243 of file xfunction.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 218 of file xfunction.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::difference_type = common_difference_type_t<std::decay_t<CT>...>
+
+ +

Definition at line 203 of file xfunction.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 191 of file xfunction.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::extension_base = extension::xfunction_base_t<F, CT...>
+
+ +

Definition at line 190 of file xfunction.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::functor_type = typename std::remove_reference<F>::type
+
+ +

Definition at line 193 of file xfunction.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 214 of file xfunction.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 196 of file xfunction.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::iterable_base = xconst_iterable<xfunction<F, CT...> >
+
+ +

Definition at line 213 of file xfunction.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::iterator = typename iterable_base::iterator
+
+ +

Definition at line 246 of file xfunction.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<layout_type L>
+ + + + +
using xt::xfunction< F, CT >::layout_iterator = typename iterable_base::template layout_iterator<L>
+
+ +

Definition at line 224 of file xfunction.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::linear_iterator = const_linear_iterator
+
+ +

Definition at line 242 of file xfunction.hpp.

+ +
+
+ +

◆ only_scalar

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::only_scalar = all_xscalar<CT...>
+
+ +

Definition at line 192 of file xfunction.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::pointer = value_type*
+
+ +

Definition at line 200 of file xfunction.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::reference = typename inner_types::reference
+
+ +

Definition at line 198 of file xfunction.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunction< F, CT >::reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 237 of file xfunction.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::reverse_iterator = typename iterable_base::reverse_iterator
+
+ +

Definition at line 248 of file xfunction.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class F , class... CT>
+
+template<layout_type L>
+ + + + +
using xt::xfunction< F, CT >::reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>
+
+ +

Definition at line 228 of file xfunction.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::reverse_linear_iterator = std::reverse_iterator<linear_iterator>
+
+ +

Definition at line 244 of file xfunction.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::self_type = xfunction<F, CT...>
+
+ +

Definition at line 188 of file xfunction.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::shape_type = inner_shape_type
+
+ +

Definition at line 215 of file xfunction.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class F , class... CT>
+
+template<class requested_type >
+ + + + +
using xt::xfunction< F, CT >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 211 of file xfunction.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 205 of file xfunction.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::size_type = typename inner_types::size_type
+
+ +

Definition at line 202 of file xfunction.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 217 of file xfunction.hpp.

+ +
+
+ +

◆ tuple_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::tuple_type = std::tuple<CT...>
+
+ +

Definition at line 194 of file xfunction.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction< F, CT >::value_type = typename inner_types::value_type
+
+ +

Definition at line 197 of file xfunction.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfunction() [1/2]

+ +
+
+
+template<class F , class... CT>
+
+template<class Func , class... CTA, class U >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xfunction< F, CT >::xfunction (Func && f,
CTA &&... e 
)
+
+inlinenoexcept
+
+ +

Constructs an xfunction applying the specified function to the given arguments.

+
Parameters
+ + + +
fthe function to apply
ethe xexpression arguments
+
+
+ +

Definition at line 505 of file xfunction.hpp.

+ +
+
+ +

◆ xfunction() [2/2]

+ +
+
+
+template<class F , class... CT>
+
+template<class FA , class... CTA>
+ + + + + +
+ + + + + + + + +
xt::xfunction< F, CT >::xfunction (xfunction< FA, CTA... > xf)
+
+inlinenoexcept
+
+ +

Constructs an xfunction applying the specified function given by another xfunction with its arguments.

+
Parameters
+ + +
xfthe xfunction to apply
+
+
+ +

Definition at line 518 of file xfunction.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ access_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I, class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::access_impl (std::index_sequence< I... > ,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 839 of file xfunction.hpp.

+ +
+
+ +

◆ arguments()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::arguments () const
+
+inlinenoexcept
+
+ +

Definition at line 819 of file xfunction.hpp.

+ +
+
+ +

◆ at()

+ +
+
+
+template<class F , class... CT>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 175 of file xaccessible.hpp.

+ +
+
+ +

◆ back()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 59 of file xaccessible.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class F , class... CT>
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xfunction< F, CT >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the function to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheboolean for reusing a previously computed shape
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 684 of file xfunction.hpp.

+ +
+
+ +

◆ build_stepper()

+ +
+
+
+template<class F , class... CT>
+
+template<class Func , std::size_t... I>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::build_stepper (Func && f,
std::index_sequence< I... >  
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 881 of file xfunction.hpp.

+ +
+
+ +

◆ data_element()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction< F, CT >::data_element (size_type i) const
+
+inline
+
+ +

Definition at line 799 of file xfunction.hpp.

+ +
+
+ +

◆ data_element_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::data_element_impl (std::index_sequence< I... > ,
size_type i 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 866 of file xfunction.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::dimension () const
+
+inlinenoexcept
+
+ +

Returns the number of dimensions of the function.

+ +

Definition at line 534 of file xfunction.hpp.

+ +
+
+ +

◆ element()

+ +
+
+
+template<class F , class... CT>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the function.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 665 of file xfunction.hpp.

+ +
+
+ +

◆ element_access_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I, class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::element_access_impl (std::index_sequence< I... > ,
It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 857 of file xfunction.hpp.

+ +
+
+ +

◆ flat()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction< F, CT >::flat (size_type index) const
+
+inline
+
+ +

Returns a constant reference to the element at the specified position of the underlying contiguous storage of the function.

+
Parameters
+ + +
indexindex to underlying flat storage.
+
+
+ +

Definition at line 623 of file xfunction.hpp.

+ +
+
+ +

◆ front()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 58 of file xaccessible.hpp.

+ +
+
+ +

◆ functor()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::functor () const
+
+inlinenoexcept
+
+ +

Definition at line 825 of file xfunction.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class F , class... CT>
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xfunction< F, CT >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Checks whether the xfunction can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 709 of file xfunction.hpp.

+ +
+
+ +

◆ in_bounds()

+ +
+
+
+template<class F , class... CT>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
bool xt::xconst_accessible< D >::in_bounds (Args... args) const
+
+inline
+
+ +

Returns true only if the the specified position is a valid entry in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression.
+
+
+
Returns
bool
+ +

Definition at line 56 of file xaccessible.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
bool xt::xfunction< F, CT >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 579 of file xfunction.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
layout_type xt::xfunction< F, CT >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout_type of the xfunction.

+ +

Definition at line 573 of file xfunction.hpp.

+ +
+
+ +

◆ linear_begin()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_begin () const
+
+inlinenoexcept
+
+ +

Definition at line 721 of file xfunction.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 733 of file xfunction.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_cend () const
+
+inlinenoexcept
+
+ +

Definition at line 743 of file xfunction.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 765 of file xfunction.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_crend () const
+
+inlinenoexcept
+
+ +

Definition at line 771 of file xfunction.hpp.

+ +
+
+ +

◆ linear_end()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_end () const
+
+inlinenoexcept
+
+ +

Definition at line 727 of file xfunction.hpp.

+ +
+
+ +

◆ linear_rbegin()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 753 of file xfunction.hpp.

+ +
+
+ +

◆ linear_rend()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::linear_rend () const
+
+inlinenoexcept
+
+ +

Definition at line 759 of file xfunction.hpp.

+ +
+
+ +

◆ load_simd()

+ +
+
+
+template<class F , class... CT>
+
+template<class align , class requested_type , std::size_t N>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction< F, CT >::load_simd (size_type i) const -> simd_return_type<requested_type> +
+
+inline
+
+ +

Definition at line 813 of file xfunction.hpp.

+ +
+
+ +

◆ operator value_type()

+ +
+
+
+template<class F , class... CT>
+
+template<class UT , class >
+ + + + + +
+ + + + + + + +
xt::xfunction< F, CT >::operator value_type () const
+
+inline
+
+ +

Definition at line 806 of file xfunction.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class F , class... CT>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction< F, CT >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the function.

+
Parameters
+ + +
argsa list of indices specifying the position in the function. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the function.
+
+
+ +

Definition at line 606 of file xfunction.hpp.

+ +
+
+ +

◆ periodic()

+ +
+
+
+template<class F , class... CT>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 217 of file xaccessible.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction< F, CT >::shape () const
+
+inline
+
+ +

Returns the shape of the xfunction.

+ +

Definition at line 554 of file xfunction.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 41 of file xaccessible.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the size of the expression.

+ +

Definition at line 39 of file xaccessible.hpp.

+ +
+
+ +

◆ stepper_begin()

+ +
+
+
+template<class F , class... CT>
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xfunction< F, CT >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 778 of file xfunction.hpp.

+ +
+
+ +

◆ stepper_end()

+ +
+
+
+template<class F , class... CT>
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 789 of file xfunction.hpp.

+ +
+
+ +

◆ unchecked()

+ +
+
+
+template<class F , class... CT>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction< F, CT >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the expression, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.unchecked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 649 of file xfunction.hpp.

+ +
+
+ +

◆ unchecked_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I, class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunction< F, CT >::unchecked_impl (std::index_sequence< I... > ,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 849 of file xfunction.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xconst_accessible< self_type >

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + +
friend class xconst_accessible< self_type >
+
+friend
+
+ +

Definition at line 364 of file xfunction.hpp.

+ +
+
+ +

◆ xconst_iterable< self_type >

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + +
friend class xconst_iterable< self_type >
+
+friend
+
+ +

Definition at line 364 of file xfunction.hpp.

+ +
+
+ +

◆ xfunction_iterator< F, CT... >

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + +
friend class xfunction_iterator< F, CT... >
+
+friend
+
+ +

Definition at line 364 of file xfunction.hpp.

+ +
+
+ +

◆ xfunction_stepper< F, CT... >

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + +
friend class xfunction_stepper< F, CT... >
+
+friend
+
+ +

Definition at line 364 of file xfunction.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + +
constexpr bool xt::xfunction< F, CT >::contiguous_layout = static_layout != layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 221 of file xfunction.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + +
constexpr layout_type xt::xfunction< F, CT >::static_layout = compute_layout(std::decay_t<CT>::static_layout...)
+
+staticconstexpr
+
+ +

Definition at line 220 of file xfunction.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xfunction.js b/classxt_1_1xfunction.js new file mode 100644 index 000000000..501eff376 --- /dev/null +++ b/classxt_1_1xfunction.js @@ -0,0 +1,21 @@ +var classxt_1_1xfunction = +[ + [ "xfunction", "classxt_1_1xfunction.html#a63fa0bf1c338ba8ff119d97dc08de3b8", null ], + [ "xfunction", "classxt_1_1xfunction.html#a08a95dc45143b002b300a6634774940d", null ], + [ "at", "classxt_1_1xfunction.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xfunction.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "broadcast_shape", "classxt_1_1xfunction.html#a2ef3340ac01fdce40b012db3ca48d2ef", null ], + [ "dimension", "classxt_1_1xfunction.html#a55ade0ce540d29ce39f0ca051946ff96", null ], + [ "element", "classxt_1_1xfunction.html#a31d1e0136cb9cfd071120e47b10ecaea", null ], + [ "flat", "classxt_1_1xfunction.html#a8313f6caaa7e9229c10e3d221a8ab77b", null ], + [ "front", "classxt_1_1xfunction.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "has_linear_assign", "classxt_1_1xfunction.html#a7007affb74eb4e8e6dfbba267f6de5ba", null ], + [ "in_bounds", "classxt_1_1xfunction.html#ace939a65a328afe7ef9241d4cc84b881", null ], + [ "layout", "classxt_1_1xfunction.html#a40bd918815f66f76ad0f05d3e33fbdbb", null ], + [ "operator()", "classxt_1_1xfunction.html#af161015b6c0ce2dc7654f26b6e1a16c2", null ], + [ "periodic", "classxt_1_1xfunction.html#a34d4a20e640737443fd0a7266b77b2b2", null ], + [ "shape", "classxt_1_1xfunction.html#a41f3d01620f13c854d163235d03e534d", null ], + [ "shape", "classxt_1_1xfunction.html#aec0ae6f83f7e86f32e083cb6714af552", null ], + [ "size", "classxt_1_1xfunction.html#a2f23977016e337e834dfdc912d1fc435", null ], + [ "unchecked", "classxt_1_1xfunction.html#ab99bdf99fd4e28328b2f4a24d6f763c2", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfunction.png b/classxt_1_1xfunction.png new file mode 100644 index 0000000000000000000000000000000000000000..43affbc5be14c37213fd30bf662c769b73f38973 GIT binary patch literal 3215 zcmd5gNr{RGQUtloPRx1E{Foo}oFC^o-;cG|-ru*^diVOi zwbr|Hk0ZX&+iJQM27~GO|K0Z_45rP1^jn*?AlXYOjD;>{$G<%7r&KB-b$WIwrQnA; zH>b}o?I?XQ-PP3vJwH`ASP#u@!JI^#fu#5i<-CD6OP)`=gqtK-Ql}+XliP2ZnTa9fO-&zpy_C6 zCIr#|fPVB(s?CfX5EKtMW3IB_H?2+1kI$3A_=8AuGsOh8#$mHz#1}GMGyqWMG0XJl zqs>-vR3Zp=+VZZ$G#D{qs4uiK6eUQv)8z;+Wob6Q{uYC&oO&`_M=kBqPazS{ zu*4h}@-4>BBiEGMggmgyvh;ON>jZV2u^yaqM!AP~Au~~s=EVeKq5;$u$w+V`I8%91 zS5y0!GJUj#$x6ys;fVfPuxh5HC@dx> zqryv&>L3SoGV~K$@6SkN@9z4HB+ISfb$sD+*HS%5jo$lIVry)J2uR;A!{I2(+4Rf9 z(d!Wr0N}U*8HxuOGVXZiIIv{Hlvq})A|9`>=i!77z9_?;U0m52Xg8M*Y)s&NQ2?Nf z-nglzfS}QzRG%fAv)uCe_R#0SA{Fb`U>Z<()esCL#xgQ~gj^lD7Peg#B#q_XI{E~J zV`o=ot|}g|b~`q-+nTfGs!iG4ctz!NXIJ0GSpwZie>!WFA*JzFL1lYba^9wtJr`g$|`{`NXS`__24MJe>PO8)7Ac zGV)XAdev0h_u$%J53wPXTZajkP-uCFZ+bQ(BwqAcP&f1btdJK+q3aOJgtc^TN4GB8 zBAhiTOvc;S-R38{Wj;cTl?h);h6I?@L1mZdLTu{eQzYSR-4-gpFR9Oj#RkH^Yxd63rL*ktFp z(e|9SlHkGKd9bXQlTc>&F6=UrLx1DQs+x&iW%Ef%;#BEBLOG3l`lA~23_H|jFb_D{ z9R+o=u-s)obl9CM4up}Hyuh@RnF~B7T~8De6KG=ZDQdYi;CC*3i2L;l1YlnSEkzzN zLK>~>(?vVPS-FYkGz(&~?vF{vvpTHv?oCTKFW(kE*`HxqzV76iC5vtzhI!l;Ki@HH zd!vE2B&U^mDp=MAJ|FBq7Nzst_eyRC^tEr|TycFtceTRQP!4_OfO8N|HDfy10`W24 zjPX$aMIlx2-X|sFF=36ru!pE`1aDB1U(5^ZupR=eRG-8HGj<#551 zb4R7lyf)FnyorRL0&d~`sxtwUopmTJ#Ul&dL}GI%c)HGd$AoV@{Rs^Br%-5zhOk+< zqVVUHa2uyMzag%``vnp|L0CZw+ywujmpHk)x@$<3{S^S%dvLg6 zmyEqzJ)ZLTR(*RlTDA<^(%{)*t7y3O>`N}3J@fHE+E};sTD0oOWKzXN&WcZ`-;$b+ z=!Y7_a0vScxuisAN%>mkJ;r_UYZTsYv$o+r({`~s@(lypQtv{f;aiK{oe{+udR3(Fj6M{p z(HXwo1Yx^|{YG{jSaiMd9~h96-Le06GW2^V*dP|Zs6m%N`#-NUPobKx7zFKI4wf$-$YCXw z)v9UYXwv8gSIerW)Rl&`6V{h~dQ+SO2R|S-xXI|F*@C01vXKhKL66ydbaz{SZ0Gcwg36O0ICrhE384j2Dotgj+OG=9I z_c1M>MyIZIAH&|p)l>d?b56YA!mk#ge`9}XWQIQI{$9vD#Hny=nL3O0YF&9XiJ7Y} zdN3*g)!+J&^8D+dK^M6;Y9v9;0DF_z+?W+pHOG_?X|92Tv@IL_Zh-3&IJot{(^*d2 ipj;U@GJK1bWaVv(ww<`N-5mOLfcg6&e5pqxuKx-(n?*nX literal 0 HcmV?d00001 diff --git a/classxt_1_1xfunction__iterator-members.html b/classxt_1_1xfunction__iterator-members.html new file mode 100644 index 000000000..168e90c94 --- /dev/null +++ b/classxt_1_1xfunction__iterator-members.html @@ -0,0 +1,126 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunction_iterator< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::xfunction_iterator< F, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
deref_impl(std::index_sequence< I... >) const -> reference (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
difference_type typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
equal(const self_type &rhs) const (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
functor_type typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
iterator_category typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
less_than(const self_type &rhs) const (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
operator*() const (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
operator++() (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
operator+=(difference_type n) (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
operator-(const self_type &rhs) const (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
operator--() (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
operator-=(difference_type n) (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
pointer typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
reference typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
self_type typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
tuple_max_diff(std::index_sequence< I... >, const data_type &lhs, const data_type &rhs) const -> difference_type (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
value_type typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
xfunction_iterator(const xfunction_type *func, It &&... it) noexcept (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >inline
xfunction_type typedef (defined in xt::xfunction_iterator< F, CT >)xt::xfunction_iterator< F, CT >
+
+ + + + diff --git a/classxt_1_1xfunction__iterator.html b/classxt_1_1xfunction__iterator.html new file mode 100644 index 000000000..b09d148b2 --- /dev/null +++ b/classxt_1_1xfunction__iterator.html @@ -0,0 +1,678 @@ + + + + + + + +xtensor: xt::xfunction_iterator< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunction_iterator< F, CT > Class Template Reference
+
+
+
+Inheritance diagram for xt::xfunction_iterator< F, CT >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfunction_iterator< F, CT... >
 
using functor_type = typename std::remove_reference< F >::type
 
using xfunction_type = xfunction< F, CT... >
 
using value_type = typename xfunction_type::value_type
 
using reference = typename xfunction_type::value_type
 
using pointer = typename xfunction_type::const_pointer
 
using difference_type = typename xfunction_type::difference_type
 
using iterator_category = std::random_access_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Broadcasting
template<class... It>
 xfunction_iterator (const xfunction_type *func, It &&... it) noexcept
 
self_typeoperator++ ()
 
self_typeoperator-- ()
 
self_typeoperator+= (difference_type n)
 
self_typeoperator-= (difference_type n)
 
difference_type operator- (const self_type &rhs) const
 
reference operator* () const
 
bool equal (const self_type &rhs) const
 
bool less_than (const self_type &rhs) const
 
template<std::size_t... I>
auto deref_impl (std::index_sequence< I... >) const -> reference
 
template<std::size_t... I>
auto tuple_max_diff (std::index_sequence< I... >, const data_type &lhs, const data_type &rhs) const -> difference_type
 
+

Detailed Description

+
template<class F, class... CT>
+class xt::xfunction_iterator< F, CT >
+

Definition at line 377 of file xfunction.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::difference_type = typename xfunction_type::difference_type
+
+ +

Definition at line 393 of file xfunction.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::functor_type = typename std::remove_reference<F>::type
+
+ +

Definition at line 387 of file xfunction.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::iterator_category = std::random_access_iterator_tag
+
+ +

Definition at line 394 of file xfunction.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::pointer = typename xfunction_type::const_pointer
+
+ +

Definition at line 392 of file xfunction.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::reference = typename xfunction_type::value_type
+
+ +

Definition at line 391 of file xfunction.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::self_type = xfunction_iterator<F, CT...>
+
+ +

Definition at line 386 of file xfunction.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::value_type = typename xfunction_type::value_type
+
+ +

Definition at line 390 of file xfunction.hpp.

+ +
+
+ +

◆ xfunction_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_iterator< F, CT >::xfunction_type = xfunction<F, CT...>
+
+ +

Definition at line 388 of file xfunction.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfunction_iterator()

+ +
+
+
+template<class F , class... CT>
+
+template<class... It>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xfunction_iterator< F, CT >::xfunction_iterator (const xfunction_typefunc,
It &&... it 
)
+
+inlinenoexcept
+
+ +

Definition at line 910 of file xfunction.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ deref_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction_iterator< F, CT >::deref_impl (std::index_sequence< I... > ) const -> reference +
+
+inline
+
+ +

Definition at line 994 of file xfunction.hpp.

+ +
+
+ +

◆ equal()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
bool xt::xfunction_iterator< F, CT >::equal (const self_typerhs) const
+
+inline
+
+ +

Definition at line 973 of file xfunction.hpp.

+ +
+
+ +

◆ less_than()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
bool xt::xfunction_iterator< F, CT >::less_than (const self_typerhs) const
+
+inline
+
+ +

Definition at line 983 of file xfunction.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction_iterator< F, CT >::operator* () const
+
+inline
+
+ +

Definition at line 967 of file xfunction.hpp.

+ +
+
+ +

◆ operator++()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction_iterator< F, CT >::operator++ ()
+
+inline
+
+ +

Definition at line 917 of file xfunction.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction_iterator< F, CT >::operator+= (difference_type n)
+
+inline
+
+ +

Definition at line 939 of file xfunction.hpp.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction_iterator< F, CT >::operator- (const self_typerhs) const
+
+inline
+
+ +

Definition at line 961 of file xfunction.hpp.

+ +
+
+ +

◆ operator--()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction_iterator< F, CT >::operator-- ()
+
+inline
+
+ +

Definition at line 928 of file xfunction.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction_iterator< F, CT >::operator-= (difference_type n)
+
+inline
+
+ +

Definition at line 950 of file xfunction.hpp.

+ +
+
+ +

◆ tuple_max_diff()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xfunction_iterator< F, CT >::tuple_max_diff (std::index_sequence< I... > ,
const data_type & lhs,
const data_type & rhs 
) const -> difference_type +
+
+inline
+
+ +

Definition at line 1001 of file xfunction.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xfunction__iterator.png b/classxt_1_1xfunction__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..cef81329b3588ca1442ab6fcc3e7851b93a0d456 GIT binary patch literal 1999 zcmd5-YgALm7C!Q{w4h5tEr_T@#VQ7rS0NBU3Y;ZPC>YWL0hE^@klF~LKnP3ps`a8a zDaHmvY|HI2SimCTDF(f?tXp2ogm(<7xMIWrk!KQ;kUNRmU%mhD{5boYy=T6e*{^ds z8W&+}<7fjxkS!b;76U;RT!5q3n}cuJk0?(doT8(Se_}8g0DL*KoPX^x;^(pd%WbT_ zmt9?5Kp)Ex-2t}u&c@(kAuu-$U$d$q2(pfc!$OW1uAAjNV>dq7WN~`!fkZ|BEt41> z8ca+Sq$Y|lZnC}Jhhk2l34|YNKRQmhP+J>K@P@uaS;969d({3&Vee%w5HZ(lcEUex z#KI;J!U*40$^e=W#yM0)s19WUmayZ60emujZgE)jOF@3OYaOF0g4CuDXInr2{-S0r zGX5&>MEjTYz75^lr%>LWA~G5sb#lkaqDaQo*H)TYOYOfYu3^O`?!V8ALN+^BZG|VE z7odCeDEI)*y_bcOJSv|LLYHN#rz_#87LNTMxTmmOhvLb){rGIXn4{|MA{6~;V>V2@ced|*kCPK+z@p#v%}|#pJ8ry(V(um zH2ZG;O-4L^^;drD(%E^@h*!d*M26ID(dq^Aa*`rRB@#{qmE0Y%Tb-5{wiByrWPa-U zuMbY{v+~enH7s=mX`S}C_nc<7Ci(O$B~v9WfOA42lkFMCul~SqeF|JL@l{n?Lwf6q z)Ei5pj@vSIe&$lVbfFgDqDD|JRr zJCC~Ic}(a~fG0Dg)s^*gOcraXK&VW<6366l2fkq+?zmHf+v?blL+T!*RRcs{#CfoK zFZrSHgAsnx&+X%z~k9=jn#sZet@sD z6mZO&^=|Lhe|CurnHi0sr>p~OH$tGJn3)dxXXv|wF1#bMng9PLdTn1@8%iMDskJe- z(QL>~Y}f3Z6EIeAZ;KA6wLxzB-DzpWP`#2y}2Y?fuK#9PQEl#i~|y z)^Ow65yOl>+jb<7l10L)R(br}M#k+%#^bmS0W(B_$c7X@7vJ+0^GCvcm-U(_c+c;0 z>4%K>{RqDz%DFWjCKZg9#`7{_sYIRq(eV{z6S(Td#`S3jZb#^b#?ssB@{{hei}m&a zZ*7@}KTQ2srAFBj=X0pN7w_E3b(G{N^6XM1ls`nx*c-qtSmyofI2=1LKd3+V$i8Dy zxpJ%%mUGIU(%wm)jZmh0DcroX#Bbb+cC|bOT + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunction_stepper< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::xfunction_stepper< F, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
deref_impl(std::index_sequence< I... >) const -> reference (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
difference_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
functor_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
operator*() const (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
pointer typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
reference typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
reset(size_type dim) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
reset_back(size_type dim) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
self_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
shape_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
simd_return_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
size_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
step(size_type dim) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
step(size_type dim, size_type n) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
step_back(size_type dim) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
step_back(size_type dim, size_type n) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
step_leading() (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
step_simd() (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
step_simd() -> simd_return_type< T > (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
step_simd_impl(std::index_sequence< I... >) -> simd_return_type< T > (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
to_begin() (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
to_end(layout_type l) (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
value_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
xfunction_stepper(const xfunction_type *func, St &&... st) noexcept (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >inline
xfunction_type typedef (defined in xt::xfunction_stepper< F, CT >)xt::xfunction_stepper< F, CT >
+
+ + + + diff --git a/classxt_1_1xfunction__stepper.html b/classxt_1_1xfunction__stepper.html new file mode 100644 index 000000000..329c4c3f3 --- /dev/null +++ b/classxt_1_1xfunction__stepper.html @@ -0,0 +1,823 @@ + + + + + + + +xtensor: xt::xfunction_stepper< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunction_stepper< F, CT > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfunction_stepper< F, CT... >
 
using functor_type = typename std::remove_reference< F >::type
 
using xfunction_type = xfunction< F, CT... >
 
using value_type = typename xfunction_type::value_type
 
using reference = typename xfunction_type::reference
 
using pointer = typename xfunction_type::const_pointer
 
using size_type = typename xfunction_type::size_type
 
using difference_type = typename xfunction_type::difference_type
 
using shape_type = typename xfunction_type::shape_type
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class T >
simd_return_type< T > step_simd ()
 
Broadcasting
template<class... St>
 xfunction_stepper (const xfunction_type *func, St &&... st) noexcept
 
void step (size_type dim)
 
void step_back (size_type dim)
 
void step (size_type dim, size_type n)
 
void step_back (size_type dim, size_type n)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
reference operator* () const
 
void step_leading ()
 
template<std::size_t... I>
auto deref_impl (std::index_sequence< I... >) const -> reference
 
template<class T , std::size_t... I>
auto step_simd_impl (std::index_sequence< I... >) -> simd_return_type< T >
 
template<class T >
auto step_simd () -> simd_return_type< T >
 
+

Detailed Description

+
template<class F, class... CT>
+class xt::xfunction_stepper< F, CT >
+

Definition at line 438 of file xfunction.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::difference_type = typename xfunction_type::difference_type
+
+ +

Definition at line 450 of file xfunction.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::functor_type = typename std::remove_reference<F>::type
+
+ +

Definition at line 443 of file xfunction.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::pointer = typename xfunction_type::const_pointer
+
+ +

Definition at line 448 of file xfunction.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::reference = typename xfunction_type::reference
+
+ +

Definition at line 447 of file xfunction.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::self_type = xfunction_stepper<F, CT...>
+
+ +

Definition at line 442 of file xfunction.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::shape_type = typename xfunction_type::shape_type
+
+ +

Definition at line 452 of file xfunction.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class F , class... CT>
+
+template<class requested_type >
+ + + + +
using xt::xfunction_stepper< F, CT >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 455 of file xfunction.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::size_type = typename xfunction_type::size_type
+
+ +

Definition at line 449 of file xfunction.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::value_type = typename xfunction_type::value_type
+
+ +

Definition at line 446 of file xfunction.hpp.

+ +
+
+ +

◆ xfunction_type

+ +
+
+
+template<class F , class... CT>
+ + + + +
using xt::xfunction_stepper< F, CT >::xfunction_type = xfunction<F, CT...>
+
+ +

Definition at line 444 of file xfunction.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfunction_stepper()

+ +
+
+
+template<class F , class... CT>
+
+template<class... St>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xfunction_stepper< F, CT >::xfunction_stepper (const xfunction_typefunc,
St &&... st 
)
+
+inlinenoexcept
+
+ +

Definition at line 1033 of file xfunction.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ deref_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<std::size_t... I>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction_stepper< F, CT >::deref_impl (std::index_sequence< I... > ) const -> reference +
+
+inline
+
+ +

Definition at line 1127 of file xfunction.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
auto xt::xfunction_stepper< F, CT >::operator* () const
+
+inline
+
+ +

Definition at line 1120 of file xfunction.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
void xt::xfunction_stepper< F, CT >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 1080 of file xfunction.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
void xt::xfunction_stepper< F, CT >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 1090 of file xfunction.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
void xt::xfunction_stepper< F, CT >::step (size_type dim)
+
+inline
+
+ +

Definition at line 1040 of file xfunction.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfunction_stepper< F, CT >::step (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 1060 of file xfunction.hpp.

+ +
+
+ +

◆ step_back() [1/2]

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
void xt::xfunction_stepper< F, CT >::step_back (size_type dim)
+
+inline
+
+ +

Definition at line 1050 of file xfunction.hpp.

+ +
+
+ +

◆ step_back() [2/2]

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xfunction_stepper< F, CT >::step_back (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 1070 of file xfunction.hpp.

+ +
+
+ +

◆ step_leading()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
void xt::xfunction_stepper< F, CT >::step_leading ()
+
+inline
+
+ +

Definition at line 1147 of file xfunction.hpp.

+ +
+
+ +

◆ step_simd()

+ +
+
+
+template<class F , class... CT>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xfunction_stepper< F, CT >::step_simd () -> simd_return_type<T> +
+
+inline
+
+ +

Definition at line 1141 of file xfunction.hpp.

+ +
+
+ +

◆ step_simd_impl()

+ +
+
+
+template<class F , class... CT>
+
+template<class T , std::size_t... I>
+ + + + + +
+ + + + + + + + +
auto xt::xfunction_stepper< F, CT >::step_simd_impl (std::index_sequence< I... > ) -> simd_return_type<T> +
+
+inline
+
+ +

Definition at line 1134 of file xfunction.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + +
void xt::xfunction_stepper< F, CT >::to_begin ()
+
+inline
+
+ +

Definition at line 1100 of file xfunction.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class F , class... CT>
+ + + + + +
+ + + + + + + + +
void xt::xfunction_stepper< F, CT >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 1110 of file xfunction.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xfunctor__adaptor-members.html b/classxt_1_1xfunctor__adaptor-members.html new file mode 100644 index 000000000..7d89b2704 --- /dev/null +++ b/classxt_1_1xfunctor__adaptor-members.html @@ -0,0 +1,228 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunctor_adaptor< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::xfunctor_adaptor< F, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >inline
at(Args... args) -> referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
at(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
back()xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
back() constxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
backstrides() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
base_type typedef (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
begin() noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
begin() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
cbegin() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
cend() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
crbegin() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
crbegin(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
crend() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(IT first, IT last) -> referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
element(IT first, IT last) const -> const_referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
end() noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
end() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
expression() noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
expression() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
front()xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
front() constxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
has_linear_assign(const S &strides) constxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
layout() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) -> referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
operator()(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xexpression< E > &e) (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
operator=(const E &e) (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
operator=(const xexpression< E > &e) -> self_type &xt::xfunctor_adaptor< F, CT >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
periodic(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
rbegin() noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rbegin() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rend() noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rend() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
rend(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) & (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
resize(S &&shape, bool force=false) (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
resize(S &&shape, layout_type l) (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
resize(S &&shape, const strides_type &strides) (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
self_type typedef (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
semantic_base typedef (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
shape() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
shape_type typedef (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
size() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
strides() const noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
strides_type typedef (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
unchecked(Args... args) -> referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
unchecked(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
xaccessible< self_type > (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >friend
xcontainer_semantic< self_type > (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >friend
xexpression_type typedef (defined in xt::xfunctor_adaptor< F, CT >)xt::xfunctor_adaptor< F, CT >
xfunctor_applier_base(undecay_expression) noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inlineexplicit
xfunctor_applier_base(Func &&, E &&) noexceptxt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >inline
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xfunctor__adaptor.html b/classxt_1_1xfunctor__adaptor.html new file mode 100644 index 000000000..e10939f9b --- /dev/null +++ b/classxt_1_1xfunctor__adaptor.html @@ -0,0 +1,1167 @@ + + + + + + + +xtensor: xt::xfunctor_adaptor< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunctor_adaptor< F, CT > Class Template Reference
+
+
+ +

Adapt a container with a functor, forwarding methods such as resize / reshape. + More...

+ +

#include <xfunctor_view.hpp>

+
+Inheritance diagram for xt::xfunctor_adaptor< F, CT >:
+
+
+ + +xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > > +xt::xcontainer_semantic< xfunctor_adaptor< F, CT > > +xt::xaccessible< D > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfunctor_adaptor< F, CT >
 
using semantic_base = xcontainer_semantic< self_type >
 
using xexpression_type = std::decay_t< CT >
 
using base_type = xfunctor_applier_base< self_type >
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename xexpression_type::strides_type
 
- Public Types inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
using self_type = xfunctor_applier_base< xfunctor_adaptor< F, CT > >
 
using inner_types = xcontainer_inner_types< xfunctor_adaptor< F, CT > >
 
using xexpression_type = typename inner_types::xexpression_type
 
using undecay_expression = typename inner_types::undecay_expression
 
using functor_type = typename inner_types::functor_type
 
using accessible_base = xaccessible< xfunctor_adaptor< F, CT > >
 
using extension_base = extension::xfunctor_view_base_t< functor_type, undecay_expression >
 
using expression_tag = typename extension_base::expression_tag
 
using value_type = typename functor_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename functor_type::pointer
 
using const_pointer = typename functor_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using shape_type = typename xexpression_type::shape_type
 
using strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using inner_shape_type = typename xexpression_type::inner_shape_type
 
using inner_strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using inner_backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using stepper = xfunctor_stepper< functor_type, typename xexpression_type::stepper >
 
using const_stepper = xfunctor_stepper< const functor_type, typename xexpression_type::const_stepper >
 
using layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template layout_iterator< L > >
 
using const_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_layout_iterator< L > >
 
using reverse_layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_layout_iterator< L > >
 
using const_reverse_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_reverse_layout_iterator< L > >
 
using broadcast_iterator = xfunctor_iterator< functor_type, xiterator< typename xexpression_type::stepper, S, L > >
 
using const_broadcast_iterator = xfunctor_iterator< functor_type, xiterator< typename xexpression_type::const_stepper, S, L > >
 
using reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_broadcast_iterator< S, L > >
 
using const_reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template const_reverse_broadcast_iterator< S, L > >
 
using linear_iterator = xfunctor_iterator< functor_type, typename xexpression_type::linear_iterator >
 
using const_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_linear_iterator >
 
using reverse_linear_iterator = xfunctor_iterator< functor_type, typename xexpression_type::reverse_linear_iterator >
 
using const_reverse_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_linear_iterator >
 
using iterator = xfunctor_iterator< functor_type, typename xexpression_type::iterator >
 
using const_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_iterator >
 
using reverse_iterator = xfunctor_iterator< functor_type, typename xexpression_type::reverse_iterator >
 
using const_reverse_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_iterator >
 
- Public Types inherited from xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >
using base_type = xsemantic_base< xfunctor_adaptor< F, CT > >
 
using derived_type = xfunctor_adaptor< F, CT >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
Extended copy semantic
template<class S = shape_type>
auto resize (S &&shape, bool force=false)
 
template<class S = shape_type>
auto resize (S &&shape, layout_type l)
 
template<class S = shape_type>
auto resize (S &&shape, const strides_type &strides)
 
template<class S = shape_type>
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
- Public Member Functions inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
+reference operator() (Args... args)
 
+const_reference operator() (Args... args) const
 
+reference unchecked (Args... args)
 
+const_reference unchecked (Args... args) const
 
+reference element (IT first, IT last)
 
+const_reference element (IT first, IT last) const
 
auto data_element (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().data_element(i)))
 
auto data_element (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().data_element(i)))
 
auto flat (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().flat(i)))
 
auto flat (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().flat(i)))
 
auto load_simd (size_type i) const -> decltype(std::declval< FCT >().template proxy_simd_load< align, requested_type, N >(std::declval< undecay_expression >(), i))
 
auto store_simd (size_type i, const simd &e) -> decltype(std::declval< FCT >() .template proxy_simd_store< align >(std::declval< undecay_expression >(), i, e))
 
+broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+broadcast_iterator< S, L > end (const S &shape) noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
+stepper stepper_begin (const S &shape) noexcept
 
+const_stepper stepper_begin (const S &shape) const noexcept
 
+stepper stepper_end (const S &shape, layout_type l) noexcept
 
+const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
 xfunctor_applier_base (undecay_expression) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
 xfunctor_applier_base (Func &&, E &&) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
size_type size () const noexcept
 Returns the size of the expression.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the expression.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the expression.
 
layout_type layout () const noexcept
 Returns the layout_type of the expression.
 
bool is_contiguous () const noexcept
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
auto element (IT first, IT last) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto element (IT first, IT last) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a consttant reference to the underlying expression of the view.
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
bool has_linear_assign (const S &strides) const
 Checks whether the xfunctor_applier_base can be linearly assigned to an expression with the specified strides.
 
auto begin () noexcept
 Returns an iterator to the first element of the expression.
 
auto begin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
auto end () noexcept
 Returns an iterator to the element following the last element of the expression.
 
auto end () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () noexcept
 Returns an iterator to the first element of the reversed expression.
 
auto rbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () noexcept
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + +

+Friends

class xcontainer_semantic< self_type >
 
class xaccessible< self_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Attributes inherited from xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >
undecay_expression m_e
 
functor_type m_functor
 
+

Detailed Description

+
template<class F, class CT>
+class xt::xfunctor_adaptor< F, CT >

Adapt a container with a functor, forwarding methods such as resize / reshape.

+

xt::xfunctor_adaptor has a container semantics and can only be used with containers. For a similar feature with a view semantics, one can use xt::xfunctor_view.

+
Template Parameters
+ + + +
Fthe functor type to be applied to the elements of specified expression.
CTthe closure type of the xt::xexpression type underlying this view
+
+
+
See also
xt::xfunctor_view
+ +

Definition at line 509 of file xfunctor_view.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_adaptor< F, CT >::base_type = xfunctor_applier_base<self_type>
+
+ +

Definition at line 518 of file xfunctor_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_adaptor< F, CT >::self_type = xfunctor_adaptor<F, CT>
+
+ +

Definition at line 515 of file xfunctor_view.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_adaptor< F, CT >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 516 of file xfunctor_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_adaptor< F, CT >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 519 of file xfunctor_view.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_adaptor< F, CT >::strides_type = typename xexpression_type::strides_type
+
+ +

Definition at line 520 of file xfunctor_view.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_adaptor< F, CT >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 517 of file xfunctor_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator=()

+ +
+
+
+template<class F , class CT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_adaptor< F, CT >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 1454 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reshape()

+ +
+
+
+template<class F , class CT >
+
+template<class S >
+ + + + + + + + + + + + + + + + + + +
auto & xt::xfunctor_adaptor< F, CT >::reshape (S && shape,
layout_type layout = base_type::static_layout 
) &
+
+ +

Definition at line 1497 of file xfunctor_view.hpp.

+ +
+
+ +

◆ resize() [1/3]

+ +
+
+
+template<class F , class CT >
+
+template<class S >
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_adaptor< F, CT >::resize (S && shape,
bool force = false 
)
+
+ +

Definition at line 1476 of file xfunctor_view.hpp.

+ +
+
+ +

◆ resize() [2/3]

+ +
+
+
+template<class F , class CT >
+
+template<class S >
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_adaptor< F, CT >::resize (S && shape,
const strides_type & strides 
)
+
+ +

Definition at line 1490 of file xfunctor_view.hpp.

+ +
+
+ +

◆ resize() [3/3]

+ +
+
+
+template<class F , class CT >
+
+template<class S >
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_adaptor< F, CT >::resize (S && shape,
layout_type l 
)
+
+ +

Definition at line 1483 of file xfunctor_view.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< self_type >

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + +
friend class xaccessible< self_type >
+
+friend
+
+ +

Definition at line 545 of file xfunctor_view.hpp.

+ +
+
+ +

◆ xcontainer_semantic< self_type >

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + +
friend class xcontainer_semantic< self_type >
+
+friend
+
+ +

Definition at line 545 of file xfunctor_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfunctor__adaptor.js b/classxt_1_1xfunctor__adaptor.js new file mode 100644 index 000000000..9cd5bc9a3 --- /dev/null +++ b/classxt_1_1xfunctor__adaptor.js @@ -0,0 +1,4 @@ +var classxt_1_1xfunctor__adaptor = +[ + [ "operator=", "classxt_1_1xfunctor__adaptor.html#a4eaf31a6089dc47d2e772fa6590514bd", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfunctor__adaptor.png b/classxt_1_1xfunctor__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..99138300fbdb818df249fc7eec74bf40c8326a46 GIT binary patch literal 4027 zcmd58LtMpbO5C{#IqfRFgh~*;i{8D{6kiQK+wE(w`Cysd?RwxwUad>?88mW$I zW4`n1hMcD1moHy}@1A#Cp90-?Q77Fz5#U{QSucC=9)Um}adA4}6{|MU(}{b~qn2FG7ss>0X$(!LIQ6p7f`ky-wN2bZNufFd-w@hz55r|w9#A~xVS`h9 zW-q?yRP4d6A;=l+ADgw57@bT2^5RWL_7s~4knqTdXot9K4hFwl9t#;S=6~*&D#qwt zNn?FomN^-^$<%ZnDlDWsQ4QZDQBCagjhi9m@WZ9*ys$a{c)xKr*>~e)#wAWy$At@j z1!gx^_Pa@5&p%?c2W(aP)aolKY|-hM%A#ZmZ9VO$So-O<_qMJ_PqGjd;YWbyTU4WL zr`&UE74{v1MtWf=XKtNO^6t=sK6B`1dlv+Sn(xLS-Sgb&w6FdyE`9fl#kM~!^Kzs=@RbmD z4_$j2N(M%}&Qmo!u_#IsW{_gvg9{k?{dmRqi&pcLhN5~O8lK(JBUY}D2FBz-2rco3 z0>6^RnA@vbUAAd=d5f9rglkP;^FR_pZSELQsLj3Y^34PHXtytK zHNptPWh*{d1BX^Dto(IaYtzfgG|~SzIgR?oMqiVE)kZ&Hn*~~5lgQeil%Ws92cfo* zW7%|g6$F8;op0^Z48xjE5*TJV#SI^SR{_JzJyC_z412UWA08cJBJD{DcCV)UCy6D!*JAeu+Q>`bu87MvJqv?6cn?YVvtQEr zF;q!5|F)>*0mVmdCF)#(oSNk|!0->8dtDS5o)WfleIVY#J4^OHCYV+HgTS3WzL?Eo zzKX0*Zk?SfKj@G5pQO7vP9=`wq>)Sun&Hs8unO|Gj(S25xtu9N4#dVk8b}@L7@}6K z?%jP%d}>a+*92KB@ya%Wy-C5;{L$#$EB!sAJ}%kC+A1a@EnFXUc8@jYIUnnQ;fC_u z%zfpK4`52M=ulhcfJ}V{uibEDJ+twx_ZAj)`bgX`kDA3^H}X2YI_pX2$j8_vsby_g zW*-3^q|taQ*R_n*w1pSJ!TZ@>xrL(M4us4kkq{Xo~^AxL}k;3+nwztqtSUe*qtn_w%n78xix_6 z_s*tFi6Th;DN3JN1u|PSD*URAbzVT1C~7HQFOqjx;7Z0_J$3fu?EQ;FBSAMmF&7wP zLPh4f^tg)LG0_O^KI#P zA85})it_b7+eoFmFe0H|?1uiJ?>J2uP>@CLhfYAV%QmhK2m4R<7*g)bVlX~24Q!@| zMZr*8-vtHOJWKus4l~;uhi13z+?3_&2@zgj*ChM<)N z2@r$@W`iI@>Oh(>e+tBbgh{-PQ0OU=5k0ZV2(=f7vxp!q)XUKFdA1D_9T%T2);bdj z5(Oj#qHCaM!3Jp%XYKg*P!bK~63CgajBqCT$(us}eT8~iJdhtY6^mMcS8B_~$v|2i zg&k&qTS2{YDoY1UaR{sf(Z}T&l31UQs=TjRZ=P~?L#j{2 zQx$1gfH0VPLA7tZ0Clbg%&e#6i`8F9gT-hE^iTpdgZ38+R{E0iZrVg;-Y6EI&>+PWsG$h}Lj2{y-TD+h=u^VQvIy^ELvtcpe z4d4E;VV^8knr=wlz-SNS6!Z0K+fPf^H)j(TyjevFP#YS{9h+(v6&lmv+=wexOT{qG z$r-pA@F}?%f51|41DworzY))|sz~%*;B45Jv8NIPJ{g#CDZTZxt@c$iu{hSQrzWAO znUG;!WF+)#9FNNVR62j_A4{<5^Qn>q*qcM~x0cTcr4NcB6X(_eOm@ySE{3c}{v) zDrG0;(r`h71_STsd9HnLt#!k#xQ_hGxbE42--Yi&-w6vJ`o;H!UbG9W_J)pUv>89d zSxS~3agk67XXg1kM*{bC1uvECvQ2zV4bysUbc8rS zlI;>?@RnT~i3b%#OaY_a@e?d#7^6_SowmF@7q>myqWs46N=HiAk9~IIpTn>fYb)q2 z1!j&TMYD&OyN&qV={za5ypVP;wW)wA5#{5!AKb-A*{I6h_>f9p# zEcWC~b#2X`$G85NNR|fsdG%n|@qDr|t0N(K)RN3~`i7{o4)1#jl610yyxGm>lrn}D z+Ry~x)49!Kb=*do)8%L9r~O~Wy^ptAdgeXT-Qaw!7!GnKnkvl8Lc08C#*sBvWQyaU3{lnXj_9|2&TkEC@hH~7PdNH&3&7Yr3g z>>P*cKmR#adsm>N*x{W(*dbm^ijL$})EL+9CSa*k1o|$8LmB0yT;AzjH+NLhr^nOe zQf}LmC&v??%0iopgXpAMPx;9H2v5&*javD6`8lms z6HP*fe&77aH#~L+VbPFk+Z^4PR?|Bq9XgPi4l)Hb@!27;oIa~0<0IslD9TIdM>KgC z204Chd5)IqewyGg^V~5yoG{Nc z_e6RoID%?zcQp+Sit{?so#z7RMR2a`_M3BPx{vs!yrsUyZ$!CL-4JwKRb^ zyq$~u!g0FSC&b^XRo}UP5UcGueDL6Ri7v2>{M!mKF2&`U_nn+oSR@W20nakl8iVJQarS`;j#q!hlV0hG+fA8xp=(d16`-TqMNC83?b>iFi{km!84zykBf4tTx(GWl^RE~t#nP-%6Ajzr5nclw^ zx_B-f(oVOnrOPo?+4+aSbvIRqfZw##yiGDG8WajFLw;UmUsa)Rv(aMdq)alOW~$J6 z=dA4YtYBF~kMEC^^-{@|3XcJsw;3zBij*1Ef6KXj&;0!G2PD!`N{L9R^NLf~!v7@6 zO!cYXo->py^Xo4ZwXW@$OkeAhJY_VRkT=8swR86UR0SXNDGr2^ol3DftIsLd!G0JeOna&34&AAsZpU&(HW>rA zn!{(=u}_t~BG0iz2EJgoD_cBqdKQRAx7mL;Mn9yURj)T+Ltm!0C?o{ExG+FFakv_^ P*$9`zZce2K&)oP2T*O4k literal 0 HcmV?d00001 diff --git a/classxt_1_1xfunctor__applier__base-members.html b/classxt_1_1xfunctor__applier__base-members.html new file mode 100644 index 000000000..786f4034b --- /dev/null +++ b/classxt_1_1xfunctor__applier__base-members.html @@ -0,0 +1,252 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunctor_applier_base< D > Member List
+
+
+ +

This is the complete list of members for xt::xfunctor_applier_base< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
at(Args... args) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
at(Args... args) -> referencext::xfunctor_applier_base< D >inline
at(Args... args) const (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
at(Args... args) const -> const_referencext::xfunctor_applier_base< D >inline
back()xt::xfunctor_applier_base< D >inline
back() constxt::xfunctor_applier_base< D >inline
backstrides() const noexceptxt::xfunctor_applier_base< D >inline
backstrides_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
begin() noexceptxt::xfunctor_applier_base< D >inline
begin() const noexceptxt::xfunctor_applier_base< D >inline
begin(const S &shape) noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
begin(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
bool_load_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
broadcast_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xfunctor_applier_base< D >inline
cbegin() const noexceptxt::xfunctor_applier_base< D >inline
cbegin(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
cend() const noexceptxt::xfunctor_applier_base< D >inline
cend(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
const_broadcast_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_layout_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_linear_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_pointer typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_reference typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_reverse_broadcast_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_reverse_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_reverse_layout_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_reverse_linear_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
const_stepper typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
contiguous_layout (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >static
crbegin() const noexceptxt::xfunctor_applier_base< D >inline
crbegin(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
crbegin(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
crend() const noexceptxt::xfunctor_applier_base< D >inline
crend(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
data_element(size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().data_element(i))) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
data_element(size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().data_element(i))) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
difference_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
element(IT first, IT last) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
element(IT first, IT last) const (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
element(IT first, IT last) -> referencext::xfunctor_applier_base< D >inline
element(IT first, IT last) const -> const_referencext::xfunctor_applier_base< D >inline
end() noexceptxt::xfunctor_applier_base< D >inline
end() const noexceptxt::xfunctor_applier_base< D >inline
end(const S &shape) noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
end(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
expression() noexceptxt::xfunctor_applier_base< D >inline
expression() const noexceptxt::xfunctor_applier_base< D >inline
expression_tag typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
extension_base typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
flat(size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().flat(i))) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
flat(size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().flat(i))) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
front()xt::xfunctor_applier_base< D >inline
front() constxt::xfunctor_applier_base< D >inline
functor_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
has_linear_assign(const S &strides) constxt::xfunctor_applier_base< D >inline
inner_backstrides_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
inner_shape_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
inner_strides_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
inner_types typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
is_contiguous() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
layout() const noexceptxt::xfunctor_applier_base< D >inline
layout_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
linear_begin() noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_begin() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_cbegin() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_cend() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_crbegin() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_crend() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_end() noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_end() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
linear_rbegin() noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_rbegin() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_rend() noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
linear_rend() const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
load_simd(size_type i) const -> decltype(std::declval< FCT >().template proxy_simd_load< align, requested_type, N >(std::declval< undecay_expression >(), i)) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
m_e (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >protected
m_functor (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >protected
operator()(Args... args) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
operator()(Args... args) const (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
operator()(Args... args) -> referencext::xfunctor_applier_base< D >inline
operator()(Args... args) const -> const_referencext::xfunctor_applier_base< D >inline
periodic(Args... args) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
periodic(Args... args) -> referencext::xfunctor_applier_base< D >inline
periodic(Args... args) const (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
periodic(Args... args) const -> const_referencext::xfunctor_applier_base< D >inline
pointer typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
rbegin() noexceptxt::xfunctor_applier_base< D >inline
rbegin() const noexceptxt::xfunctor_applier_base< D >inline
rbegin(const S &shape) noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
rbegin(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
reference typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
rend() noexceptxt::xfunctor_applier_base< D >inline
rend() const noexceptxt::xfunctor_applier_base< D >inline
rend(const S &shape) noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
rend(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
rend(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< D >inline
reverse_broadcast_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
reverse_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
reverse_layout_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
reverse_linear_iterator typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
self_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
shape() const noexceptxt::xfunctor_applier_base< D >inline
xt::xaccessible::shape(size_type index) constxt::xconst_accessible< D >inlineprivate
shape_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
size() const noexceptxt::xfunctor_applier_base< D >inline
size_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
static_layout (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >static
stepper typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
stepper_begin(const S &shape) noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
store_simd(size_type i, const simd &e) -> decltype(std::declval< FCT >() .template proxy_simd_store< align >(std::declval< undecay_expression >(), i, e)) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >inline
strides() const noexceptxt::xfunctor_applier_base< D >inline
strides_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
unchecked(Args... args) (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
unchecked(Args... args) const (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
unchecked(Args... args) -> referencext::xfunctor_applier_base< D >inline
unchecked(Args... args) const -> const_referencext::xfunctor_applier_base< D >inline
undecay_expression typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
value_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
xaccessible< D > (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >friend
xconst_accessible< D > (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >friend
xexpression_type typedef (defined in xt::xfunctor_applier_base< D >)xt::xfunctor_applier_base< D >
xfunctor_applier_base(undecay_expression) noexceptxt::xfunctor_applier_base< D >inlineexplicit
xfunctor_applier_base(Func &&, E &&) noexceptxt::xfunctor_applier_base< D >inline
+
+ + + + diff --git a/classxt_1_1xfunctor__applier__base.html b/classxt_1_1xfunctor__applier__base.html new file mode 100644 index 000000000..d0051ee08 --- /dev/null +++ b/classxt_1_1xfunctor__applier__base.html @@ -0,0 +1,4254 @@ + + + + + + + +xtensor: xt::xfunctor_applier_base< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunctor_applier_base< D > Class Template Reference
+
+
+
+Inheritance diagram for xt::xfunctor_applier_base< D >:
+
+
+ + +xt::xaccessible< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfunctor_applier_base< D >
 
using inner_types = xcontainer_inner_types< D >
 
using xexpression_type = typename inner_types::xexpression_type
 
using undecay_expression = typename inner_types::undecay_expression
 
using functor_type = typename inner_types::functor_type
 
using accessible_base = xaccessible< D >
 
using extension_base = extension::xfunctor_view_base_t< functor_type, undecay_expression >
 
using expression_tag = typename extension_base::expression_tag
 
using value_type = typename functor_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename functor_type::pointer
 
using const_pointer = typename functor_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using shape_type = typename xexpression_type::shape_type
 
using strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using inner_shape_type = typename xexpression_type::inner_shape_type
 
using inner_strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using inner_backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using stepper = xfunctor_stepper< functor_type, typename xexpression_type::stepper >
 
using const_stepper = xfunctor_stepper< const functor_type, typename xexpression_type::const_stepper >
 
template<layout_type L>
using layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template layout_iterator< L > >
 
template<layout_type L>
using const_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_layout_iterator< L > >
 
template<layout_type L>
using reverse_layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_layout_iterator< L > >
 
template<layout_type L>
using const_reverse_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_reverse_layout_iterator< L > >
 
template<class S , layout_type L>
using broadcast_iterator = xfunctor_iterator< functor_type, xiterator< typename xexpression_type::stepper, S, L > >
 
template<class S , layout_type L>
using const_broadcast_iterator = xfunctor_iterator< functor_type, xiterator< typename xexpression_type::const_stepper, S, L > >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_broadcast_iterator< S, L > >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template const_reverse_broadcast_iterator< S, L > >
 
using linear_iterator = xfunctor_iterator< functor_type, typename xexpression_type::linear_iterator >
 
using const_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_linear_iterator >
 
using reverse_linear_iterator = xfunctor_iterator< functor_type, typename xexpression_type::reverse_linear_iterator >
 
using const_reverse_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_linear_iterator >
 
using iterator = xfunctor_iterator< functor_type, typename xexpression_type::iterator >
 
using const_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_iterator >
 
using reverse_iterator = xfunctor_iterator< functor_type, typename xexpression_type::reverse_iterator >
 
using const_reverse_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_iterator >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class IT >
reference element (IT first, IT last)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class IT >
const_reference element (IT first, IT last) const
 
template<class FCT = functor_type>
auto data_element (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().data_element(i)))
 
template<class FCT = functor_type>
auto data_element (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().data_element(i)))
 
template<class FCT = functor_type>
auto flat (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().flat(i)))
 
template<class FCT = functor_type>
auto flat (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().flat(i)))
 
template<class align , class requested_type = typename xexpression_type::value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size, class FCT = functor_type>
auto load_simd (size_type i) const -> decltype(std::declval< FCT >().template proxy_simd_load< align, requested_type, N >(std::declval< undecay_expression >(), i))
 
template<class align , class simd , class FCT = functor_type>
auto store_simd (size_type i, const simd &e) -> decltype(std::declval< FCT >() .template proxy_simd_store< align >(std::declval< undecay_expression >(), i, e))
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
Constructors
 xfunctor_applier_base (undecay_expression) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
template<class Func , class E >
 xfunctor_applier_base (Func &&, E &&) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
Size and shape
size_type size () const noexcept
 Returns the size of the expression.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the expression.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the expression.
 
layout_type layout () const noexcept
 Returns the layout_type of the expression.
 
bool is_contiguous () const noexcept
 
Data
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a consttant reference to the underlying expression of the view.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
template<class IT >
auto element (IT first, IT last) -> reference
 Returns a reference to the element at the specified position in the expression.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class IT >
auto element (IT first, IT last) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
Broadcasting
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const
 Checks whether the xfunctor_applier_base can be linearly assigned to an expression with the specified strides.
 
Iterators
template<layout_type L = ::xt::layout_type::row_major>
auto begin () noexcept
 Returns an iterator to the first element of the expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto end () noexcept
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto begin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto end () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto cbegin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto cend () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
Reverse iterators
template<layout_type L = ::xt::layout_type::row_major>
auto rbegin () noexcept
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto rend () noexcept
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto rbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto rend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto crbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L = ::xt::layout_type::row_major>
auto crend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
Reverse broadcast iterators
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S , layout_type L>
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<class S , layout_type L>
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<class S , layout_type L>
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<class S , layout_type L>
auto rend (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<class S , layout_type L>
auto crbegin (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<class S , layout_type L>
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
Broadcast iterators
template<class S , layout_type L>
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<class S , layout_type L>
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<class S , layout_type L>
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<class S , layout_type L>
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<class S , layout_type L>
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<class S , layout_type L>
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = xexpression_type::static_layout
 
static constexpr bool contiguous_layout = xexpression_type::contiguous_layout
 
+ + + + + +

+Protected Attributes

undecay_expression m_e
 
functor_type m_functor
 
+ + + + + +

+Friends

class xaccessible< D >
 
class xconst_accessible< D >
 
+

Detailed Description

+
template<class D>
+class xt::xfunctor_applier_base< D >
+

Definition at line 73 of file xfunctor_view.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::accessible_base = xaccessible<D>
+
+ +

Definition at line 82 of file xfunctor_view.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::backstrides_type = xtl::mpl::eval_if_t< has_strides<xexpression_type>, detail::expr_backstrides_type<xexpression_type>, get_strides_type<shape_type> >
+
+ +

Definition at line 100 of file xfunctor_view.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::bool_load_type = xt::bool_load_type<value_type>
+
+ +

Definition at line 115 of file xfunctor_view.hpp.

+ +
+
+ +

◆ broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::broadcast_iterator = xfunctor_iterator<functor_type, xiterator<typename xexpression_type::stepper, S, L> >
+
+ +

Definition at line 140 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::const_broadcast_iterator = xfunctor_iterator< functor_type, xiterator<typename xexpression_type::const_stepper, S, L> >
+
+ +

Definition at line 142 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_iterator = xfunctor_iterator<const functor_type, typename xexpression_type::const_iterator>
+
+ +

Definition at line 163 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::const_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_layout_iterator<L> >
+
+ +

Definition at line 126 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_linear_iterator = xfunctor_iterator<const functor_type, typename xexpression_type::const_linear_iterator>
+
+ +

Definition at line 156 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_pointer = typename functor_type::const_pointer
+
+ +

Definition at line 91 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 89 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::const_reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template const_reverse_broadcast_iterator<S, L> >
+
+ +

Definition at line 151 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_reverse_iterator = xfunctor_iterator<const functor_type, typename xexpression_type::const_reverse_iterator>
+
+ +

Definition at line 165 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::const_reverse_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_reverse_layout_iterator<L> >
+
+ +

Definition at line 135 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_reverse_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_linear_iterator>
+
+ +

Definition at line 158 of file xfunctor_view.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::const_stepper = xfunctor_stepper<const functor_type, typename xexpression_type::const_stepper>
+
+ +

Definition at line 121 of file xfunctor_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 93 of file xfunctor_view.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 85 of file xfunctor_view.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::extension_base = extension::xfunctor_view_base_t<functor_type, undecay_expression>
+
+ +

Definition at line 84 of file xfunctor_view.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::functor_type = typename inner_types::functor_type
+
+ +

Definition at line 81 of file xfunctor_view.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::inner_backstrides_type = xtl::mpl::eval_if_t< has_strides<xexpression_type>, detail::expr_inner_backstrides_type<xexpression_type>, get_strides_type<shape_type> >
+
+ +

Definition at line 110 of file xfunctor_view.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::inner_shape_type = typename xexpression_type::inner_shape_type
+
+ +

Definition at line 105 of file xfunctor_view.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::inner_strides_type = xtl::mpl::eval_if_t< has_strides<xexpression_type>, detail::expr_inner_strides_type<xexpression_type>, get_strides_type<shape_type> >
+
+ +

Definition at line 106 of file xfunctor_view.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::inner_types = xcontainer_inner_types<D>
+
+ +

Definition at line 78 of file xfunctor_view.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::iterator = xfunctor_iterator<functor_type, typename xexpression_type::iterator>
+
+ +

Definition at line 162 of file xfunctor_view.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::layout_iterator = xfunctor_iterator<functor_type, typename xexpression_type::template layout_iterator<L> >
+
+ +

Definition at line 124 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::linear_iterator = xfunctor_iterator<functor_type, typename xexpression_type::linear_iterator>
+
+ +

Definition at line 155 of file xfunctor_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::pointer = typename functor_type::pointer
+
+ +

Definition at line 90 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::reference = typename inner_types::reference
+
+ +

Definition at line 88 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_broadcast_iterator<S, L> >
+
+ +

Definition at line 147 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::reverse_iterator = xfunctor_iterator<functor_type, typename xexpression_type::reverse_iterator>
+
+ +

Definition at line 164 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xfunctor_applier_base< D >::reverse_layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_layout_iterator<L> >
+
+ +

Definition at line 131 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::reverse_linear_iterator = xfunctor_iterator<functor_type, typename xexpression_type::reverse_linear_iterator>
+
+ +

Definition at line 157 of file xfunctor_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::self_type = xfunctor_applier_base<D>
+
+ +

Definition at line 77 of file xfunctor_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::shape_type = typename xexpression_type::shape_type
+
+ +

Definition at line 95 of file xfunctor_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::size_type = typename inner_types::size_type
+
+ +

Definition at line 92 of file xfunctor_view.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::stepper = xfunctor_stepper<functor_type, typename xexpression_type::stepper>
+
+ +

Definition at line 120 of file xfunctor_view.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::strides_type = xtl::mpl::eval_if_t< has_strides<xexpression_type>, detail::expr_strides_type<xexpression_type>, get_strides_type<shape_type> >
+
+ +

Definition at line 96 of file xfunctor_view.hpp.

+ +
+
+ +

◆ undecay_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::undecay_expression = typename inner_types::undecay_expression
+
+ +

Definition at line 80 of file xfunctor_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::value_type = typename functor_type::value_type
+
+ +

Definition at line 87 of file xfunctor_view.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xfunctor_applier_base< D >::xexpression_type = typename inner_types::xexpression_type
+
+ +

Definition at line 79 of file xfunctor_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfunctor_applier_base() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
xt::xfunctor_applier_base< D >::xfunctor_applier_base (undecay_expression e)
+
+inlineexplicitnoexcept
+
+ +

Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.

+
Parameters
+ + +
ethe underlying expression
+
+
+ +

Definition at line 679 of file xfunctor_view.hpp.

+ +
+
+ +

◆ xfunctor_applier_base() [2/2]

+ +
+
+
+template<class D >
+
+template<class Func , class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xfunctor_applier_base< D >::xfunctor_applier_base (Func && func,
E && e 
)
+
+inlinenoexcept
+
+ +

Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.

+
Parameters
+ + + +
functhe functor to be applied to the elements of the underlying expression.
ethe underlying expression
+
+
+ +

Definition at line 693 of file xfunctor_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::at (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 274 of file xaccessible.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 111 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::back ()
+
+inline
+
+ +

Returns a reference to the last element of the expression.

+ +

Definition at line 109 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 113 of file xaccessible.hpp.

+ +
+
+ +

◆ backstrides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::backstrides () const
+
+inlinenoexcept
+
+ +

Returns the backstrides of the expression.

+ +

Definition at line 736 of file xfunctor_view.hpp.

+ +
+
+ +

◆ begin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::begin () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 962 of file xfunctor_view.hpp.

+ +
+
+ +

◆ begin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::begin ()
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 936 of file xfunctor_view.hpp.

+ +
+
+ +

◆ begin() [3/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::begin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1051 of file xfunctor_view.hpp.

+ +
+
+ +

◆ begin() [4/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::begin (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1023 of file xfunctor_view.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xfunctor_applier_base< D >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the function to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheboolean for reusing a previously computed shape
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 906 of file xfunctor_view.hpp.

+ +
+
+ +

◆ cbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::cbegin () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 985 of file xfunctor_view.hpp.

+ +
+
+ +

◆ cbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::cbegin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1080 of file xfunctor_view.hpp.

+ +
+
+ +

◆ cend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::cend () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1000 of file xfunctor_view.hpp.

+ +
+
+ +

◆ cend() [2/2]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::cend (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1095 of file xfunctor_view.hpp.

+ +
+
+ +

◆ crbegin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::crbegin () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1164 of file xfunctor_view.hpp.

+ +
+
+ +

◆ crbegin() [2/2]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::crbegin (const S & ) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1260 of file xfunctor_view.hpp.

+ +
+
+ +

◆ crend() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::crend () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1179 of file xfunctor_view.hpp.

+ +
+
+ +

◆ crend() [2/2]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::crend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1275 of file xfunctor_view.hpp.

+ +
+
+ +

◆ data_element() [1/2]

+ +
+
+
+template<class D >
+
+template<class FCT = functor_type>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::data_element (size_type i) -> decltype(std::declval<FCT>()(std::declval<undecay_expression>().data_element(i))) +
+
+inline
+
+ +

Definition at line 218 of file xfunctor_view.hpp.

+ +
+
+ +

◆ data_element() [2/2]

+ +
+
+
+template<class D >
+
+template<class FCT = functor_type>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::data_element (size_type i) const -> decltype(std::declval<FCT>()(std::declval<const undecay_expression>().data_element(i))) +
+
+inline
+
+ +

Definition at line 225 of file xfunctor_view.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class D >
+
+template<class IT >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_applier_base< D >::element (IT first,
IT last 
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the function.
+
+
+ +

Definition at line 812 of file xfunctor_view.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class D >
+
+template<class IT >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_applier_base< D >::element (IT first,
IT last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the function.
+
+
+ +

Definition at line 868 of file xfunctor_view.hpp.

+ +
+
+ +

◆ end() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::end () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 974 of file xfunctor_view.hpp.

+ +
+
+ +

◆ end() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::end ()
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 951 of file xfunctor_view.hpp.

+ +
+
+ +

◆ end() [3/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::end (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1066 of file xfunctor_view.hpp.

+ +
+
+ +

◆ end() [4/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::end (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1037 of file xfunctor_view.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::expression () const
+
+inlinenoexcept
+
+ +

Returns a consttant reference to the underlying expression of the view.

+ +

Definition at line 887 of file xfunctor_view.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::expression ()
+
+inlinenoexcept
+
+ +

Returns a reference to the underlying expression of the view.

+ +

Definition at line 878 of file xfunctor_view.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class D >
+
+template<class FCT = functor_type>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::flat (size_type i) -> decltype(std::declval<FCT>()(std::declval<undecay_expression>().flat(i))) +
+
+inline
+
+ +

Definition at line 232 of file xfunctor_view.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class D >
+
+template<class FCT = functor_type>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::flat (size_type i) const -> decltype(std::declval<FCT>()(std::declval<const undecay_expression>().flat(i))) +
+
+inline
+
+ +

Definition at line 238 of file xfunctor_view.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::front ()
+
+inline
+
+ +

Returns a reference to the first element of the expression.

+ +

Definition at line 108 of file xaccessible.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 114 of file xaccessible.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xfunctor_applier_base< D >::has_linear_assign (const S & strides) const
+
+inline
+
+ +

Checks whether the xfunctor_applier_base can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 919 of file xfunctor_view.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
bool xt::xfunctor_applier_base< D >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 751 of file xfunctor_view.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
layout_type xt::xfunctor_applier_base< D >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout_type of the expression.

+ +

Definition at line 745 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_begin () const
+
+inlinenoexcept
+
+ +

Definition at line 1296 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_begin ()
+
+inlinenoexcept
+
+ +

Definition at line 1284 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 1308 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_cend () const
+
+inlinenoexcept
+
+ +

Definition at line 1314 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 1344 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_crend () const
+
+inlinenoexcept
+
+ +

Definition at line 1350 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_end () const
+
+inlinenoexcept
+
+ +

Definition at line 1302 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_end ()
+
+inlinenoexcept
+
+ +

Definition at line 1290 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 1332 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 1320 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_rend () const
+
+inlinenoexcept
+
+ +

Definition at line 1338 of file xfunctor_view.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::linear_rend ()
+
+inlinenoexcept
+
+ +

Definition at line 1326 of file xfunctor_view.hpp.

+ +
+
+ +

◆ load_simd()

+ +
+
+
+template<class D >
+
+template<class align , class requested_type = typename xexpression_type::value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size, class FCT = functor_type>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::load_simd (size_type i) const -> decltype(std::declval<FCT>().template proxy_simd_load<align, requested_type, N>( + std::declval<undecay_expression>(), + i + )) +
+
+inline
+
+ +

Definition at line 251 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the function. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the expression.
+
+
+ +

Definition at line 770 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the function. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the expression.
+
+
+ +

Definition at line 826 of file xfunctor_view.hpp.

+ +
+
+ +

◆ periodic() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::periodic (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 315 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 115 of file xaccessible.hpp.

+ +
+
+ +

◆ rbegin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::rbegin () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1141 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rbegin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::rbegin ()
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1112 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rbegin() [3/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::rbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1230 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rbegin() [4/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::rbegin (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1202 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rend() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::rend () const
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1153 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rend() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::rend ()
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1127 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rend() [3/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::rend (const S & ) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1245 of file xfunctor_view.hpp.

+ +
+
+ +

◆ rend() [4/4]

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::rend (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 1216 of file xfunctor_view.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the expression.

+ +

Definition at line 718 of file xfunctor_view.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the size of the expression.

+ +

Definition at line 709 of file xfunctor_view.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 1375 of file xfunctor_view.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::stepper_begin (const S & shape) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 1361 of file xfunctor_view.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_applier_base< D >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 1383 of file xfunctor_view.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_applier_base< D >::stepper_end (const S & shape,
layout_type l 
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 1368 of file xfunctor_view.hpp.

+ +
+
+ +

◆ store_simd()

+ +
+
+
+template<class D >
+
+template<class align , class simd , class FCT = functor_type>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xfunctor_applier_base< D >::store_simd (size_type i,
const simd & e 
) -> decltype(std::declval<FCT>() + .template proxy_simd_store<align>(std::declval<undecay_expression>(), i, e)) +
+
+inline
+
+ +

Definition at line 261 of file xfunctor_view.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_applier_base< D >::strides () const
+
+inlinenoexcept
+
+ +

Returns the strides of the expression.

+ +

Definition at line 727 of file xfunctor_view.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the expression, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.unchecked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 798 of file xfunctor_view.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_applier_base< D >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the expression, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
+ +

Definition at line 854 of file xfunctor_view.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xaccessible< D >
+
+friend
+
+ +

Definition at line 352 of file xfunctor_view.hpp.

+ +
+
+ +

◆ xconst_accessible< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xconst_accessible< D >
+
+friend
+
+ +

Definition at line 352 of file xfunctor_view.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr bool xt::xfunctor_applier_base< D >::contiguous_layout = xexpression_type::contiguous_layout
+
+staticconstexpr
+
+ +

Definition at line 118 of file xfunctor_view.hpp.

+ +
+
+ +

◆ m_e

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
undecay_expression xt::xfunctor_applier_base< D >::m_e
+
+protected
+
+ +

Definition at line 351 of file xfunctor_view.hpp.

+ +
+
+ +

◆ m_functor

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
functor_type xt::xfunctor_applier_base< D >::m_functor
+
+protected
+
+ +

Definition at line 352 of file xfunctor_view.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr layout_type xt::xfunctor_applier_base< D >::static_layout = xexpression_type::static_layout
+
+staticconstexpr
+
+ +

Definition at line 117 of file xfunctor_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfunctor__applier__base.js b/classxt_1_1xfunctor__applier__base.js new file mode 100644 index 000000000..8cb9e725f --- /dev/null +++ b/classxt_1_1xfunctor__applier__base.js @@ -0,0 +1,52 @@ +var classxt_1_1xfunctor__applier__base = +[ + [ "xfunctor_applier_base", "classxt_1_1xfunctor__applier__base.html#a41aab520408c7c729ae637b19d09be2b", null ], + [ "xfunctor_applier_base", "classxt_1_1xfunctor__applier__base.html#ac3b9ef5e95e61582edaff797f2ec7e1b", null ], + [ "at", "classxt_1_1xfunctor__applier__base.html#abd1a88f04c122d8d066a5b2abc7f2c8f", null ], + [ "at", "classxt_1_1xfunctor__applier__base.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xfunctor__applier__base.html#a905660a4d87f4d3e7b651bcf6bb690d0", null ], + [ "back", "classxt_1_1xfunctor__applier__base.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "backstrides", "classxt_1_1xfunctor__applier__base.html#a31682644280a7cb1f47f306e2fa832fe", null ], + [ "begin", "classxt_1_1xfunctor__applier__base.html#a20bbfc1e10a26d6754e31ecaca3791db", null ], + [ "begin", "classxt_1_1xfunctor__applier__base.html#acbbbfb5117f8a5cbbf6d884c99209aed", null ], + [ "begin", "classxt_1_1xfunctor__applier__base.html#a20fda1464f7c57d2bedac80130bc1b8a", null ], + [ "begin", "classxt_1_1xfunctor__applier__base.html#a3ab9bf54021db8cea2150113376a271c", null ], + [ "broadcast_shape", "classxt_1_1xfunctor__applier__base.html#ada44e2d571b044340c22c3c16137aa73", null ], + [ "cbegin", "classxt_1_1xfunctor__applier__base.html#a8ff3057fce404b976998dda117b669b4", null ], + [ "cbegin", "classxt_1_1xfunctor__applier__base.html#a358932daa1dd93cc97016f99f24b9be6", null ], + [ "cend", "classxt_1_1xfunctor__applier__base.html#a8f40de3c5e5d01ed40bab3060d1ad8e9", null ], + [ "cend", "classxt_1_1xfunctor__applier__base.html#a3eb421464069330b8305abdb39b43f24", null ], + [ "crbegin", "classxt_1_1xfunctor__applier__base.html#afb3b6d645d6ef28238b50f032f3477f6", null ], + [ "crbegin", "classxt_1_1xfunctor__applier__base.html#a69f77212c23e7a9e20b3774a2e59d3cc", null ], + [ "crend", "classxt_1_1xfunctor__applier__base.html#ae9c21d7315862c7b30de7f21d5d47bf3", null ], + [ "crend", "classxt_1_1xfunctor__applier__base.html#a9424de315b89fd06b19590443bc20629", null ], + [ "element", "classxt_1_1xfunctor__applier__base.html#a94f49676b373d866812ee9a128cdc3e8", null ], + [ "element", "classxt_1_1xfunctor__applier__base.html#a173b3e1e7c31df616b7e978462fece33", null ], + [ "end", "classxt_1_1xfunctor__applier__base.html#ab31ad55714884efed4c525ae1018339e", null ], + [ "end", "classxt_1_1xfunctor__applier__base.html#a1ede7d79cffaf8f76e8b6895a7877759", null ], + [ "end", "classxt_1_1xfunctor__applier__base.html#aba04a5d73546572558aa9bbb6e4eca36", null ], + [ "end", "classxt_1_1xfunctor__applier__base.html#a51190ea53109af3cdceebf66f8d10cbc", null ], + [ "expression", "classxt_1_1xfunctor__applier__base.html#a62a9deb497e7420aed40dcd2bcac02bc", null ], + [ "expression", "classxt_1_1xfunctor__applier__base.html#a5c676f9bf0dcbba9c63d589d2a417abd", null ], + [ "front", "classxt_1_1xfunctor__applier__base.html#ad36ac2c194e7e6f470548dad89e88ca2", null ], + [ "front", "classxt_1_1xfunctor__applier__base.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "has_linear_assign", "classxt_1_1xfunctor__applier__base.html#a9ded44a42136f6472c91f0d60462d7a5", null ], + [ "layout", "classxt_1_1xfunctor__applier__base.html#a41a690f43f808ba326e0bd3e4ab19f95", null ], + [ "operator()", "classxt_1_1xfunctor__applier__base.html#a5b63f2bdd4620e52cc453fafd78831d3", null ], + [ "operator()", "classxt_1_1xfunctor__applier__base.html#a63939aecf0c7f315aab8119a2790aa69", null ], + [ "periodic", "classxt_1_1xfunctor__applier__base.html#a038772dfb1936fa221a220c5ded4ac05", null ], + [ "periodic", "classxt_1_1xfunctor__applier__base.html#a34d4a20e640737443fd0a7266b77b2b2", null ], + [ "rbegin", "classxt_1_1xfunctor__applier__base.html#a683da35bece5497aead059605a406235", null ], + [ "rbegin", "classxt_1_1xfunctor__applier__base.html#abacad02a84f1b459e87948192e2c5d05", null ], + [ "rbegin", "classxt_1_1xfunctor__applier__base.html#a81666e7d863a7679298d37a373cd1395", null ], + [ "rbegin", "classxt_1_1xfunctor__applier__base.html#aff09d88c2dfc4cb00850f42c8f695337", null ], + [ "rend", "classxt_1_1xfunctor__applier__base.html#a20631d9fd8aaa1e5a95393c31537ef81", null ], + [ "rend", "classxt_1_1xfunctor__applier__base.html#a8201e2518627bdc8e1fb6f33653aacbb", null ], + [ "rend", "classxt_1_1xfunctor__applier__base.html#a367facbe0356cf7de42ed9cd1e60a163", null ], + [ "rend", "classxt_1_1xfunctor__applier__base.html#a23da38db60689cea813d3995b7b93de2", null ], + [ "shape", "classxt_1_1xfunctor__applier__base.html#a982e33a6deafe2b8f8048ce8c91956b3", null ], + [ "size", "classxt_1_1xfunctor__applier__base.html#ae971620a3e942d234f19e65a10005e45", null ], + [ "strides", "classxt_1_1xfunctor__applier__base.html#aee81935fb3b87f6e71e49e5410236645", null ], + [ "unchecked", "classxt_1_1xfunctor__applier__base.html#ad86eba7c460e85d7e6bd558091531376", null ], + [ "unchecked", "classxt_1_1xfunctor__applier__base.html#a5b9d6e6df937ed2b534d8a68c0d4ceff", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfunctor__applier__base.png b/classxt_1_1xfunctor__applier__base.png new file mode 100644 index 0000000000000000000000000000000000000000..6705df16123529743bf23cca23314da27952d83a GIT binary patch literal 709 zcmV;$0y_PPP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006| zNklmNzplLh+u<^cU?XV0M@hi7ln{}mq$ZuxU}J$+02 zU0=7^CtVNZ<@N3s$n$Dn%FT7?)7hB~Og61KzsqsaLGf8N6wM#HJ_-LT^dmwIddyWD znA88)enr;@W(xjpVA|!S>kU!odPDbB*W>T93g@x>Sk_NlKAZK#y5q(c;)EFwn)wN1 zFxN@)-;tw}q_rHKB(3G>Bx$X+(YI~emJ|SdPY(cCQ|qEX9?PK2wvRAq>_)%O((CHUGxlL3Nv+@!u+O765i8MS7%$M% zPWqmLGz?7K?gP^cT~^PcJFYjsp<;Qac98WR=3Uln^JcStTH0qlvF^CB zg>;M0%1Kd8m?|*)Tkj@J(dao;VyBlAW^%4e(yvtxSV{VlK7zg*b6WEk^rl*pex(21 rbxE?9qf3&t99@#E^+XRLgeCO{Ijx!~i6o(P00000NkvXXu0mjfNO@WA literal 0 HcmV?d00001 diff --git a/classxt_1_1xfunctor__iterator-members.html b/classxt_1_1xfunctor__iterator-members.html new file mode 100644 index 000000000..fb70b7c58 --- /dev/null +++ b/classxt_1_1xfunctor__iterator-members.html @@ -0,0 +1,126 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunctor_iterator< F, IT > Member List
+
+
+ +

This is the complete list of members for xt::xfunctor_iterator< F, IT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
equal(const xfunctor_iterator &rhs) const (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
functor_type typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
iterator_category typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
less_than(const xfunctor_iterator &rhs) const (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
operator*() const (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
operator++() (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >inline
operator+=(difference_type n) (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >inline
operator-(xfunctor_iterator rhs) const (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >inline
operator--() (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >inline
operator-=(difference_type n) (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >inline
operator->() const (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
pointer typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
proxy_inner typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
reference typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
self_type typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
subiterator_traits typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
value_type typedef (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
xfunctor_iterator(const IT &, functor_type *) (defined in xt::xfunctor_iterator< F, IT >)xt::xfunctor_iterator< F, IT >
+
+ + + + diff --git a/classxt_1_1xfunctor__iterator.html b/classxt_1_1xfunctor__iterator.html new file mode 100644 index 000000000..8d4a803c0 --- /dev/null +++ b/classxt_1_1xfunctor__iterator.html @@ -0,0 +1,598 @@ + + + + + + + +xtensor: xt::xfunctor_iterator< F, IT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunctor_iterator< F, IT > Class Template Reference
+
+
+
+Inheritance diagram for xt::xfunctor_iterator< F, IT >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

using functor_type = F
 
using subiterator_traits = std::iterator_traits< IT >
 
using proxy_inner = xproxy_inner_types< detail::xfunctor_invoker_t< F, IT > >
 
using value_type = typename functor_type::value_type
 
using reference = typename proxy_inner::reference
 
using pointer = typename proxy_inner::pointer
 
using difference_type = typename subiterator_traits::difference_type
 
using iterator_category = typename subiterator_traits::iterator_category
 
using self_type = xfunctor_iterator< F, IT >
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Extended copy semantic
 xfunctor_iterator (const IT &, functor_type *)
 
self_typeoperator++ ()
 
self_typeoperator-- ()
 
self_typeoperator+= (difference_type n)
 
self_typeoperator-= (difference_type n)
 
difference_type operator- (xfunctor_iterator rhs) const
 
reference operator* () const
 
pointer operator-> () const
 
bool equal (const xfunctor_iterator &rhs) const
 
bool less_than (const xfunctor_iterator &rhs) const
 
+

Detailed Description

+
template<class F, class IT>
+class xt::xfunctor_iterator< F, IT >
+

Definition at line 574 of file xfunctor_view.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::difference_type = typename subiterator_traits::difference_type
+
+ +

Definition at line 590 of file xfunctor_view.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::functor_type = F
+
+ +

Definition at line 583 of file xfunctor_view.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::iterator_category = typename subiterator_traits::iterator_category
+
+ +

Definition at line 591 of file xfunctor_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::pointer = typename proxy_inner::pointer
+
+ +

Definition at line 589 of file xfunctor_view.hpp.

+ +
+
+ +

◆ proxy_inner

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::proxy_inner = xproxy_inner_types<detail::xfunctor_invoker_t<F, IT> >
+
+ +

Definition at line 586 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::reference = typename proxy_inner::reference
+
+ +

Definition at line 588 of file xfunctor_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::self_type = xfunctor_iterator<F, IT>
+
+ +

Definition at line 593 of file xfunctor_view.hpp.

+ +
+
+ +

◆ subiterator_traits

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::subiterator_traits = std::iterator_traits<IT>
+
+ +

Definition at line 584 of file xfunctor_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class IT >
+ + + + +
using xt::xfunctor_iterator< F, IT >::value_type = typename functor_type::value_type
+
+ +

Definition at line 587 of file xfunctor_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfunctor_iterator()

+ +
+
+
+template<class F , class IT >
+ + + + + + + + + + + + + + + + + + +
xt::xfunctor_iterator< F, IT >::xfunctor_iterator (const IT & it,
functor_type * pf 
)
+
+ +

Definition at line 1508 of file xfunctor_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ equal()

+ +
+
+
+template<class F , class IT >
+ + + + + + + + +
auto xt::xfunctor_iterator< F, IT >::equal (const xfunctor_iterator< F, IT > & rhs) const
+
+ +

Definition at line 1561 of file xfunctor_view.hpp.

+ +
+
+ +

◆ less_than()

+ +
+
+
+template<class F , class IT >
+ + + + + + + + +
auto xt::xfunctor_iterator< F, IT >::less_than (const xfunctor_iterator< F, IT > & rhs) const
+
+ +

Definition at line 1567 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class F , class IT >
+ + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator* () const
+
+ +

Definition at line 1549 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator++()

+ +
+
+
+template<class F , class IT >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator++ ()
+
+inline
+
+ +

Definition at line 1515 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<class F , class IT >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator+= (difference_type n)
+
+inline
+
+ +

Definition at line 1529 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<class F , class IT >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator- (xfunctor_iterator< F, IT > rhs) const
+
+inline
+
+ +

Definition at line 1543 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator--()

+ +
+
+
+template<class F , class IT >
+ + + + + +
+ + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator-- ()
+
+inline
+
+ +

Definition at line 1522 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<class F , class IT >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator-= (difference_type n)
+
+inline
+
+ +

Definition at line 1536 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class F , class IT >
+ + + + + + + +
auto xt::xfunctor_iterator< F, IT >::operator-> () const
+
+ +

Definition at line 1555 of file xfunctor_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfunctor__iterator.png b/classxt_1_1xfunctor__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..30512d163368f728f86cc057a052efc01f70e695 GIT binary patch literal 2610 zcmdT_`#;p_9-pX`R@&^5CG^U~cA<`(A(v(q*7p#Wq})4Bm}SUq29udn(@_>#vZ!gM zVz%6e3=?BWqog5?ySXG$?&Fd%rkOG4J0s_G_O<`Oet-CWp6~PiJfG+Dyg%R1`$_X~ z`$0opR~-U@XaLR*o)E}pJ#g%?MHPHo?y*P*jh=_=X-BzS4h|<~gb7(sA6gyRe^DpD zW8%q^C*ZtSPERq2ZH@PI^MZii%EwZL&65Uw8zXWlhzqrMCI`O)-3M*yJvqYVp< zyo>V9cduDao}P5dzsBu#>D~q_3#2DUNrSCv5*fX4mLWTkz{0@0vRV%z5>m>~Yx>y? zm5$2moZQeM`0e-_6u15TEAMjb)d+SWtBc#&+56a37mKW&*_)a*jt=AV+ZHb~e)OfN(=&2D zFih&)Bi}PrD!;1qizTv`%WnOf>nzge2Qj`yMB8>`?p*q*dEC6V_dcSi%pNG4Mod)- zC=|2Mx;K&!R$ou@&+O_kDhR!L=pgMlp}5U}{)DhdiG6H+b`G@^LMTG%oSD)ZEy-MI z%4FQk9mAQ6xvEJ5@)GA>_ew*5{JHtW*SyF!|D!)QP_B(+4!=5wLEDukW71nBPdg=} zB5Q6N?GXx!NIEc2}G{&qkHax1}o~p#oi^?v)5-pL)4AWGE~@YIcJUcInvF8;S?;rsU~)2Pmg<$$>`ug` zvLdx0(dn!M!YDL6J>0(;D!0sm4^EWajD?rBQAZj&Lpbwi>ALPNchcLjdxlAtn@JhB zY8lfkf^8E;gHqRRmAp?tv@Y-AAx_?G=ohEF-zGXpU~b{u(A!8uz97n)yr`Xp=grWb zmIbB<=gL|uy5yMbQgU9{ZANuJ&1)`3C(&=!eo`J~YdZV-#zQtqUP@PcKUI5QbbAbE zA?9aWp*;n80?uo9abUuB#L2^eAA5K;FpIgMGjXuKuD6&Q7_oaGb-)jy5BLVSKTD~i zjUU5Uobg(=6ID!XHyT{(557FmE7zZLOBho}{=(_sW`HuB|kuV*02un+Q!*VXO!*Hr7M(z(* z(*Jriy!Ka*ay(-o*eJKlX^>rEyJ%8U58K2$a1zKWn`AKV2su^b*wN{xo6pbdeJqVp z+c_WK>{&8;6=wU*Ke#bP7Y*o#0h^4E=tJFptat;1@wa`6x=wt|?#*xXi`meWnj)Vx zeG&mbD=c(C);q<_B%fM@--%;7A1lw{}Y|`lXbN-6yv}zioB7lSnQq818 zF-ebN>*_Int5s-2AJ(I$0qwBq-2tM;5J~SDj*8%`$5=j7-r&;zZ2&IeVfYdGz6uJa z^Gx4FN;$gb)C@~TGW8vBN(Y-P;!cC{$<8Eh;;^>ZpDfB7@(nPYmMu`Vgo7c5A#wNe zcEiNj<|1w@ER8etQ7jOc_c%4a?5~T+k#?EjFiuoY;6$|A1A*5&sKwDS~oO{5j-jEE{!to^LcaazbPG@S5%8ZKq0 z{!a31RCYjAp75lqp!puM1+pR7w@?GJVGm^EzaU5cCYNf(C?*x3x6)wX8=`RUm1d`2 zS5><2fw;O-l{komn!Hrt3INPvePR9o7J`?^8oVJG%o(y_Z5#0ZP{#cpQa}h_58H9- zzhS}K=Fc4V^6x0`IWdH)nhoZ*)Zvk8ToQQ8f@XW2ex%LdGDr|;KEvb2oOQ45b#@?2 zpS?gBU^j%rFLYYk9Ss6!~5)9%eXz{N;H-kcMP{v*UvDEC5wO z8qSF25ZEPrKi=gZU3>n>40_`QoH*reb9d@@3MyAU3pEt`>D8yTIBIHVK29+eX`3-W z6>1MuGuWw}_`CAMp=vBY#Wy|NforpwUsBb(@&5ME_26Llyf?N!2eo# zx=tz6S}P(3{IQj_R2C6zgD*-AHscqi{)1**gm*t6le-KnJRsl$IJ!Aho(R73A0{FQ A0ssI2 literal 0 HcmV?d00001 diff --git a/classxt_1_1xfunctor__stepper-members.html b/classxt_1_1xfunctor__stepper-members.html new file mode 100644 index 000000000..4e15179b5 --- /dev/null +++ b/classxt_1_1xfunctor__stepper-members.html @@ -0,0 +1,126 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunctor_stepper< F, ST > Member List
+
+
+ +

This is the complete list of members for xt::xfunctor_stepper< F, ST >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
functor_type typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
operator*() const (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
pointer typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
proxy_inner typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
reference typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
reset(size_type dim) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
reset_back(size_type dim) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
shape_type typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
size_type typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
step(size_type dim) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
step(size_type dim, size_type n) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
step_back(size_type dim) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
step_back(size_type dim, size_type n) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
to_begin() (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
to_end(layout_type) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
value_type typedef (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
xfunctor_stepper()=default (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
xfunctor_stepper(const ST &, functor_type *) (defined in xt::xfunctor_stepper< F, ST >)xt::xfunctor_stepper< F, ST >
+
+ + + + diff --git a/classxt_1_1xfunctor__stepper.html b/classxt_1_1xfunctor__stepper.html new file mode 100644 index 000000000..910b53048 --- /dev/null +++ b/classxt_1_1xfunctor__stepper.html @@ -0,0 +1,554 @@ + + + + + + + +xtensor: xt::xfunctor_stepper< F, ST > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunctor_stepper< F, ST > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Public Types

using functor_type = F
 
using proxy_inner = xproxy_inner_types< detail::xfunctor_invoker_t< F, ST > >
 
using value_type = typename functor_type::value_type
 
using reference = typename proxy_inner::reference
 
using pointer = std::remove_reference_t< reference > *
 
using size_type = typename ST::size_type
 
using difference_type = typename ST::difference_type
 
using shape_type = typename ST::shape_type
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Extended copy semantic
 xfunctor_stepper (const ST &, functor_type *)
 
reference operator* () const
 
void step (size_type dim)
 
void step_back (size_type dim)
 
void step (size_type dim, size_type n)
 
void step_back (size_type dim, size_type n)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type)
 
+

Detailed Description

+
template<class F, class ST>
+class xt::xfunctor_stepper< F, ST >
+

Definition at line 628 of file xfunctor_view.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::difference_type = typename ST::difference_type
+
+ +

Definition at line 639 of file xfunctor_view.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::functor_type = F
+
+ +

Definition at line 632 of file xfunctor_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::pointer = std::remove_reference_t<reference>*
+
+ +

Definition at line 637 of file xfunctor_view.hpp.

+ +
+
+ +

◆ proxy_inner

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::proxy_inner = xproxy_inner_types<detail::xfunctor_invoker_t<F, ST> >
+
+ +

Definition at line 634 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::reference = typename proxy_inner::reference
+
+ +

Definition at line 636 of file xfunctor_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::shape_type = typename ST::shape_type
+
+ +

Definition at line 641 of file xfunctor_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::size_type = typename ST::size_type
+
+ +

Definition at line 638 of file xfunctor_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class ST >
+ + + + +
using xt::xfunctor_stepper< F, ST >::value_type = typename functor_type::value_type
+
+ +

Definition at line 635 of file xfunctor_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xfunctor_stepper()

+ +
+
+
+template<class F , class ST >
+ + + + + + + + + + + + + + + + + + +
xt::xfunctor_stepper< F, ST >::xfunctor_stepper (const ST & stepper,
functor_type * pf 
)
+
+ +

Definition at line 1589 of file xfunctor_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class F , class ST >
+ + + + + + + +
auto xt::xfunctor_stepper< F, ST >::operator* () const
+
+ +

Definition at line 1596 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class F , class ST >
+ + + + + + + + +
void xt::xfunctor_stepper< F, ST >::reset (size_type dim)
+
+ +

Definition at line 1626 of file xfunctor_view.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class F , class ST >
+ + + + + + + + +
void xt::xfunctor_stepper< F, ST >::reset_back (size_type dim)
+
+ +

Definition at line 1632 of file xfunctor_view.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<class F , class ST >
+ + + + + + + + +
void xt::xfunctor_stepper< F, ST >::step (size_type dim)
+
+ +

Definition at line 1602 of file xfunctor_view.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<class F , class ST >
+ + + + + + + + + + + + + + + + + + +
void xt::xfunctor_stepper< F, ST >::step (size_type dim,
size_type n 
)
+
+ +

Definition at line 1614 of file xfunctor_view.hpp.

+ +
+
+ +

◆ step_back() [1/2]

+ +
+
+
+template<class F , class ST >
+ + + + + + + + +
void xt::xfunctor_stepper< F, ST >::step_back (size_type dim)
+
+ +

Definition at line 1608 of file xfunctor_view.hpp.

+ +
+
+ +

◆ step_back() [2/2]

+ +
+
+
+template<class F , class ST >
+ + + + + + + + + + + + + + + + + + +
void xt::xfunctor_stepper< F, ST >::step_back (size_type dim,
size_type n 
)
+
+ +

Definition at line 1620 of file xfunctor_view.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class F , class ST >
+ + + + + + + +
void xt::xfunctor_stepper< F, ST >::to_begin ()
+
+ +

Definition at line 1638 of file xfunctor_view.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class F , class ST >
+ + + + + + + + +
void xt::xfunctor_stepper< F, ST >::to_end (layout_type l)
+
+ +

Definition at line 1644 of file xfunctor_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfunctor__view-members.html b/classxt_1_1xfunctor__view-members.html new file mode 100644 index 000000000..56fd4a7ac --- /dev/null +++ b/classxt_1_1xfunctor__view-members.html @@ -0,0 +1,224 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xfunctor_view< F, CT > Member List
+
+
+ +

This is the complete list of members for xt::xfunctor_view< F, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< xfunctor_view< F, CT > >inline
at(Args... args) -> referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
at(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
back()xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
back() constxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
backstrides() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
begin() noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
begin() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
build_functor_view(E &&e) const (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >
build_functor_view(E &&e) const -> rebind_t< E > (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >inline
cbegin() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
cend() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
crbegin() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
crbegin(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
crend() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(IT first, IT last) -> referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
element(IT first, IT last) const -> const_referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
end() noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
end() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
expression() noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
expression() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
front()xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
front() constxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
has_linear_assign(const S &strides) constxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
layout() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) -> referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
operator()(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xexpression< E > &e) (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >
operator=(const E &e) (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >
operator=(const xexpression< E > &e) -> self_type &xt::xfunctor_view< F, CT >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
periodic(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
rbegin() noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rbegin() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rebind_t typedef (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >
rend() noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rend() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
rend(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
self_type typedef (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >
semantic_base typedef (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >
shape() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
size() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
strides() const noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
unchecked(Args... args) -> referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
unchecked(Args... args) const -> const_referencext::xfunctor_applier_base< xfunctor_view< F, CT > >inline
xaccessible< self_type > (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >friend
xfunctor_applier_base(undecay_expression) noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inlineexplicit
xfunctor_applier_base(Func &&, E &&) noexceptxt::xfunctor_applier_base< xfunctor_view< F, CT > >inline
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xview_semantic< self_type > (defined in xt::xfunctor_view< F, CT >)xt::xfunctor_view< F, CT >friend
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xfunctor__view.html b/classxt_1_1xfunctor__view.html new file mode 100644 index 000000000..a8668a519 --- /dev/null +++ b/classxt_1_1xfunctor__view.html @@ -0,0 +1,1041 @@ + + + + + + + +xtensor: xt::xfunctor_view< F, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xfunctor_view< F, CT > Class Template Reference
+
+
+ +

View of an xexpression . + More...

+ +

#include <xfunctor_view.hpp>

+
+Inheritance diagram for xt::xfunctor_view< F, CT >:
+
+
+ + +xt::xfunctor_applier_base< xfunctor_view< F, CT > > +xt::xview_semantic< xfunctor_view< F, CT > > +xt::xaccessible< D > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xfunctor_view< F, CT >
 
using semantic_base = xview_semantic< self_type >
 
template<class E >
using rebind_t = xfunctor_view< F, E >
 
- Public Types inherited from xt::xfunctor_applier_base< xfunctor_view< F, CT > >
using self_type = xfunctor_applier_base< xfunctor_view< F, CT > >
 
using inner_types = xcontainer_inner_types< xfunctor_view< F, CT > >
 
using xexpression_type = typename inner_types::xexpression_type
 
using undecay_expression = typename inner_types::undecay_expression
 
using functor_type = typename inner_types::functor_type
 
using accessible_base = xaccessible< xfunctor_view< F, CT > >
 
using extension_base = extension::xfunctor_view_base_t< functor_type, undecay_expression >
 
using expression_tag = typename extension_base::expression_tag
 
using value_type = typename functor_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename functor_type::pointer
 
using const_pointer = typename functor_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using shape_type = typename xexpression_type::shape_type
 
using strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using inner_shape_type = typename xexpression_type::inner_shape_type
 
using inner_strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using inner_backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using stepper = xfunctor_stepper< functor_type, typename xexpression_type::stepper >
 
using const_stepper = xfunctor_stepper< const functor_type, typename xexpression_type::const_stepper >
 
using layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template layout_iterator< L > >
 
using const_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_layout_iterator< L > >
 
using reverse_layout_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_layout_iterator< L > >
 
using const_reverse_layout_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::template const_reverse_layout_iterator< L > >
 
using broadcast_iterator = xfunctor_iterator< functor_type, xiterator< typename xexpression_type::stepper, S, L > >
 
using const_broadcast_iterator = xfunctor_iterator< functor_type, xiterator< typename xexpression_type::const_stepper, S, L > >
 
using reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template reverse_broadcast_iterator< S, L > >
 
using const_reverse_broadcast_iterator = xfunctor_iterator< functor_type, typename xexpression_type::template const_reverse_broadcast_iterator< S, L > >
 
using linear_iterator = xfunctor_iterator< functor_type, typename xexpression_type::linear_iterator >
 
using const_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_linear_iterator >
 
using reverse_linear_iterator = xfunctor_iterator< functor_type, typename xexpression_type::reverse_linear_iterator >
 
using const_reverse_linear_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_linear_iterator >
 
using iterator = xfunctor_iterator< functor_type, typename xexpression_type::iterator >
 
using const_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_iterator >
 
using reverse_iterator = xfunctor_iterator< functor_type, typename xexpression_type::reverse_iterator >
 
using const_reverse_iterator = xfunctor_iterator< const functor_type, typename xexpression_type::const_reverse_iterator >
 
- Public Types inherited from xt::xview_semantic< xfunctor_view< F, CT > >
using base_type = xsemantic_base< xfunctor_view< F, CT > >
 
using derived_type = xfunctor_view< F, CT >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
+template<class E >
rebind_t< E > build_functor_view (E &&e) const
 
- Public Member Functions inherited from xt::xfunctor_applier_base< xfunctor_view< F, CT > >
+reference operator() (Args... args)
 
+const_reference operator() (Args... args) const
 
+reference unchecked (Args... args)
 
+const_reference unchecked (Args... args) const
 
+reference element (IT first, IT last)
 
+const_reference element (IT first, IT last) const
 
auto data_element (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().data_element(i)))
 
auto data_element (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().data_element(i)))
 
auto flat (size_type i) -> decltype(std::declval< FCT >()(std::declval< undecay_expression >().flat(i)))
 
auto flat (size_type i) const -> decltype(std::declval< FCT >()(std::declval< const undecay_expression >().flat(i)))
 
auto load_simd (size_type i) const -> decltype(std::declval< FCT >().template proxy_simd_load< align, requested_type, N >(std::declval< undecay_expression >(), i))
 
auto store_simd (size_type i, const simd &e) -> decltype(std::declval< FCT >() .template proxy_simd_store< align >(std::declval< undecay_expression >(), i, e))
 
+broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+broadcast_iterator< S, L > end (const S &shape) noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
+stepper stepper_begin (const S &shape) noexcept
 
+const_stepper stepper_begin (const S &shape) const noexcept
 
+stepper stepper_end (const S &shape, layout_type l) noexcept
 
+const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
 xfunctor_applier_base (undecay_expression) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
 xfunctor_applier_base (Func &&, E &&) noexcept
 Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
 
size_type size () const noexcept
 Returns the size of the expression.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the expression.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the expression.
 
layout_type layout () const noexcept
 Returns the layout_type of the expression.
 
bool is_contiguous () const noexcept
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
auto element (IT first, IT last) -> reference
 Returns a reference to the element at the specified position in the expression.
 
auto element (IT first, IT last) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a consttant reference to the underlying expression of the view.
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
bool has_linear_assign (const S &strides) const
 Checks whether the xfunctor_applier_base can be linearly assigned to an expression with the specified strides.
 
auto begin () noexcept
 Returns an iterator to the first element of the expression.
 
auto begin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
auto end () noexcept
 Returns an iterator to the element following the last element of the expression.
 
auto end () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () noexcept
 Returns an iterator to the first element of the reversed expression.
 
auto rbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () noexcept
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xview_semantic< xfunctor_view< F, CT > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + +

+Friends

class xview_semantic< self_type >
 
class xaccessible< self_type >
 
+ + + + + + + + + + + +

Extended copy semantic

template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
template<class E >
auto build_functor_view (E &&e) const -> rebind_t< E >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from xt::xfunctor_applier_base< xfunctor_view< F, CT > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Protected Member Functions inherited from xt::xview_semantic< xfunctor_view< F, CT > >
xview_semantic (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Attributes inherited from xt::xfunctor_applier_base< xfunctor_view< F, CT > >
undecay_expression m_e
 
functor_type m_functor
 
+

Detailed Description

+
template<class F, class CT>
+class xt::xfunctor_view< F, CT >

View of an xexpression .

+

The xt::xfunctor_view class is an expression addressing its elements by applying a functor to the corresponding element of an underlying expression. Unlike e.g. xgenerator, an xt::xfunctor_view is an lvalue. It is used e.g. to access real and imaginary parts of complex expressions.

+

xt::xfunctor_view has a view semantics and can be used on any expression. For a similar feature with a container semantics, one can use xt::xfunctor_adaptor.

+

xt::xfunctor_view is not meant to be used directly, but through helper functions such as xt::real or xt::imag.

+
Template Parameters
+ + + +
Fthe functor type to be applied to the elements of specified expression.
CTthe closure type of the xt::xexpression type underlying this view
+
+
+
See also
xt::real, xt::imag
+ +

Definition at line 440 of file xfunctor_view.hpp.

+

Member Typedef Documentation

+ +

◆ rebind_t

+ +
+
+
+template<class F , class CT >
+
+template<class E >
+ + + + +
using xt::xfunctor_view< F, CT >::rebind_t = xfunctor_view<F, E>
+
+ +

Definition at line 459 of file xfunctor_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_view< F, CT >::self_type = xfunctor_view<F, CT>
+
+ +

Definition at line 446 of file xfunctor_view.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class F , class CT >
+ + + + +
using xt::xfunctor_view< F, CT >::semantic_base = xview_semantic<self_type>
+
+ +

Definition at line 447 of file xfunctor_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ build_functor_view()

+ +
+
+
+template<class F , class CT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_view< F, CT >::build_functor_view (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 1436 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class F , class CT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_view< F, CT >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 1422 of file xfunctor_view.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class F , class CT >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xfunctor_view< F, CT >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 1403 of file xfunctor_view.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< self_type >

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + +
friend class xaccessible< self_type >
+
+friend
+
+ +

Definition at line 467 of file xfunctor_view.hpp.

+ +
+
+ +

◆ xview_semantic< self_type >

+ +
+
+
+template<class F , class CT >
+ + + + + +
+ + + + +
friend class xview_semantic< self_type >
+
+friend
+
+ +

Definition at line 467 of file xfunctor_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xfunctor__view.js b/classxt_1_1xfunctor__view.js new file mode 100644 index 000000000..666d4a24b --- /dev/null +++ b/classxt_1_1xfunctor__view.js @@ -0,0 +1,4 @@ +var classxt_1_1xfunctor__view = +[ + [ "operator=", "classxt_1_1xfunctor__view.html#a9e41f726bcd647106ca9f420a045d228", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xfunctor__view.png b/classxt_1_1xfunctor__view.png new file mode 100644 index 0000000000000000000000000000000000000000..e1325b8a8972e2d207263108c3d05904efab3a64 GIT binary patch literal 3948 zcmd5F*002h#5(~bHQ(YYxRBWTkEaw{qgP}``&ZUu=n}x zeST-}yaPTSTB|m#!r^dQp5N~E!{I(*g6~$1Pk@x)G&2D&!vo$2-Bl_T_f zR`M!ycv!Uo-K(2@DfF8%+myqaTf_;YmI*g?40qJFmhLT*FL9rPEy?OoI#&){E8HF zeCK5TC8mnFZE~jXXz6MB4@~Zbba92!=SpMn@ILR)O679XY%VsEUb(L~p0FV~cvXda z+U}m5UCL4Ph5ayIq_3_BPw}+4#{Y2Gl{HI@m>#%wwVgYJTV=Hv}o=mVjBQ$N8@5m?r&N<8N*#ZEDmH_tqA1`E+Uk8$7O#b8>$xtA9 zDvzl>TKWXx1P1vka&V}bvW_#DwuA-n{I64u(O+tR@lBSdF(%u!sV3iK?GXspp8@YJ z09UN#g=nl%Q{Q|J*rUF=upg88OW*%dQnjO^m;aehMenIEHOKe~jx*}&k-US@1{e<5 z`Jo=(dJv+SD%*T6XFw3Z1cI8*F>8v=NDw=1JO*N0j^n4zIuAj$Ws)GM7Ho{*IS)Y~ z+5?~&Y+8UB3F{>FR$I9e|DOIzF1-!IyaXNvgv1}JEkuDO5pD2^wd$`<}A^7 z_-Yp?nOQ)6sl^IO>&pUw1zt+{sb?Vl5p=PWKa!%7pPDa-5Vltwd$psdBwW*Zgm>>7 z=Sl;^HOlkM{18Jos{zqGFQ!h!Z@uMV1rSP-q^FizQR%3}cHG3GXYrwR|E0J+MGYf@ zB=0NAz^DD+&xKLxg}ua!+0vC%mYPeFH5WfU;ic@JKc%cJVFEFg8 zM+u#qX-dnpQDbAj^(Y=Oi*+)mPj-;{I}a%sKNXq;8I4GUE1IDB){)QR0vD1SpYgU_Fu+hh!bNSQv#4w^Hq}emyNI6X zcK&)2O}O#4o=}imc6zRH`1ovrBagq!k|O@8F?zJ>W&mVS(}v{MXvJ;Xm}q31BG#@V zugSf8@g}9~qeV2>(Ux$62453=O09yGp244Cnj8+#FDge}KP!b{-&976D-W$RuZCq- z=#twMyz?Fqd$k1LhrqDDHV7Hd78n*i0WIPaQorYAIvn9F0P&(P&`-KNQ3VJ3DroSa zJMg%f6oxsvKvUBCKTqofp`X*sPYCpMOK~jqY0AQ>zEWl5f}~kEwam+s)gbJ(M=PX= z%5=x{D0hqco-E_9lx-mVS4d7}@(s^~5SR;vt=gmEdCZ#S^NpSO%o_(u{XjEL?E)rU zect1zO#$2BSeP_67wH2_09k}$RD7{mwxs5Z*87+;mgiy)*pP+Tsj#p7Z?%~6%p0%&ziK794y8U7u>gu~o*KS@9rX8TG*wTz^(DUf z+YK0YgVhOAhzV) zq?T_71UZlOy?Fa_8>hdq*md|OK~)8hHCP{YbSY=FA%~o((EbY*A&Ws=2(k$+XZrq@ z(c)Ksf+Os9jY+p1*SX6Xj6J%k+9Z-zYm+gH_S!w@2EpMGz?kj3=Ld1QA8AEY@CNK4 zisuVMkcFTw1%jSS^uXOP^R+K8@II-k_)PxxxO=*BMyESIu&F z$qqyYk&8oL*RYWH5z+?cpy#uOn4gk*e_XGfheHa+^+;;1y)!s3(kz z{Kq?S$@`c?wJA=>aQhaOo@jRNVU5uj!4PB>ASXx?T)Qi(YX=0kQ_V(S5KzMbyQz$Y z`LVogb2&PECHWqI&4}YCX5z zVZ5`FB$uM1WuZ&F`rYnY!EgQ*k zvp;Nyzmlz6T&AU5+gDPTdZsKubwsn==Oj&wmH!^SYuRPlgG{`gPMt()69I|0xFHKp z78SeJN$Wz)#i?v)zd^<8(11;y|pucNPoT|9G{Q> z&3I%gSsr+zqf)p-Hb^bCZoCVR^*0n3ZQH|hy4sN#m-0i^ItVJi-+`PusA_%`w|!qX z@m9Lk>EBzIeN)S1>c|5|Gases#hG&ELIY2-y32D53!4iV__}Gd;k4f_`tv>;RKMq7 zGpXS=@R^-NURqQMr%kNH4lI{05^uT!@~X*;pD3-zp`Pn9j3-p_i!?Y*P4!j= zxB@>)0Guroe@r<3bu#%g*N~KDJ{A7gJEoQ0X*6(Jz5?e}N(vV}XsWyPkH=Uim>Kl##4*tMCo}YP9R9au zFM?-I0Mbqu@Qkcjp)pr%CI$H@cAfmYr3Zj%iT%O)b}vN~B)0{XFDKOFF^G6^IX4#6 zqw>t<3P&;|rZ7L&LNoFf(oz~d(WEG)4>>=2Ss_-nPc{mfEod(HRV-h^@%6{j?1@|j zCGEPin0g~UdZTiIf>3pr%O#%lX<53+kf>Cqx)5d2KhMi}!#jf~Y(uRR!``-!cxYj_ z;In3zo~9O()2yFQU07N`;IIWCf8^RgIWN0nJoRq?AWN#7MWH5tbb!&nHXeO&KFwPXcuNQdm~Y)nT3t z;Hqk0YWxepn<+m~5c*OT`f54m1Ju=Qg;WB|K@j%A?^940<2>Dc_Ex(c`{BO;#}Oet literal 0 HcmV?d00001 diff --git a/classxt_1_1xgenerator-members.html b/classxt_1_1xgenerator-members.html new file mode 100644 index 000000000..c9510293f --- /dev/null +++ b/classxt_1_1xgenerator-members.html @@ -0,0 +1,188 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xgenerator< F, R, S > Member List
+
+
+ +

This is the complete list of members for xt::xgenerator< F, R, S >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
assign_to(xexpression< E > &e) const noexcept (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
at(Args... args) const -> const_referencext::xconst_accessible< xgenerator< F, R, S > >inline
back() constxt::xconst_accessible< xgenerator< F, R, S > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
bool_load_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
broadcast_shape(O &shape, bool reuse_cache=false) constxt::xgenerator< F, R, S >inline
build_generator(OF &&func) const (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
build_generator(OF &&func) const -> rebind_t< OR, OF > (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
const_pointer typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
const_reference typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
const_stepper typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
contiguous_layout (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >static
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
xsharable_expression< xgenerator< F, R, S > >::derived_cast() &noexceptxt::xexpression< D >inline
xsharable_expression< xgenerator< F, R, S > >::derived_cast() const &noexceptxt::xexpression< D >inline
xsharable_expression< xgenerator< F, R, S > >::derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
difference_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
dimension() const noexceptxt::xconst_accessible< xgenerator< F, R, S > >inline
element(It first, It last) const (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
element(It first, It last) const -> const_referencext::xgenerator< F, R, S >inline
end() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
expression_tag typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
extension_base typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
front() constxt::xconst_accessible< xgenerator< F, R, S > >inline
functor() const noexcept (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
functor_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
has_linear_assign(const O &) const noexceptxt::xgenerator< F, R, S >inline
in_bounds(Args... args) constxt::xconst_accessible< xgenerator< F, R, S > >inline
inner_shape_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
inner_types typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
is_contiguous() const noexcept (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
iterable_base typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
layout() const noexcept (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
operator()(Args... args) const (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
operator()(Args... args) const -> const_referencext::xgenerator< F, R, S >inline
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xconst_accessible< xgenerator< F, R, S > >inline
periodic(Args... args) const -> const_referencext::xconst_accessible< xgenerator< F, R, S > >inline
pointer typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
rebind_t typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
reference typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xgenerator< F, R, S > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xgenerator< F, R, S > >inline
reshape(O &&shape) const &xt::xgenerator< F, R, S >inline
reshape(O &&shape) && (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
reshape(std::initializer_list< T > shape) const & (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
reshape(std::initializer_list< T > shape) && (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
self_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
shape() const noexceptxt::xgenerator< F, R, S >inline
shape(size_type index) constxt::xgenerator< F, R, S >inline
shape_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
size() const noexceptxt::xconst_accessible< xgenerator< F, R, S > >inline
size_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
static_layout (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >static
stepper typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
stepper_begin(const O &shape) const noexcept (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
stepper_begin(const O &shape) const noexcept -> const_stepper (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
stepper_end(const O &shape, layout_type) const noexcept (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
stepper_end(const O &shape, layout_type) const noexcept -> const_stepper (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >inline
unchecked(Args... args) const (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
unchecked(Args... args) const -> const_referencext::xgenerator< F, R, S >inline
value_type typedef (defined in xt::xgenerator< F, R, S >)xt::xgenerator< F, R, S >
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xgenerator(Func &&f, const S &shape) noexceptxt::xgenerator< F, R, S >inline
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
+
+ + + + diff --git a/classxt_1_1xgenerator.html b/classxt_1_1xgenerator.html new file mode 100644 index 000000000..ef5ac10bc --- /dev/null +++ b/classxt_1_1xgenerator.html @@ -0,0 +1,1681 @@ + + + + + + + +xtensor: xt::xgenerator< F, R, S > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xgenerator< F, R, S > Class Template Reference
+
+
+ +

Multidimensional function operating on indices. + More...

+ +

#include <xgenerator.hpp>

+
+Inheritance diagram for xt::xgenerator< F, R, S >:
+
+
+ + +xt::xsharable_expression< xgenerator< F, R, S > > +xt::xconst_iterable< xgenerator< F, R, S > > +xt::xconst_accessible< xgenerator< F, R, S > > +xt::xexpression< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xgenerator< F, R, S >
 
using functor_type = typename std::remove_reference< F >::type
 
using accessible_base = xconst_accessible< self_type >
 
using extension_base = extension::xgenerator_base_t< F, R, S >
 
using expression_tag = typename extension_base::expression_tag
 
using inner_types = xcontainer_inner_types< self_type >
 
using value_type = R
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using size_type = typename inner_types::size_type
 
using difference_type = std::ptrdiff_t
 
using iterable_base = xconst_iterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = inner_shape_type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using bool_load_type = xt::bool_load_type< R >
 
template<class OR , class OF >
using rebind_t = xgenerator< OF, OR, S >
 
- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
- Public Types inherited from xt::xconst_iterable< xgenerator< F, R, S > >
using derived_type = xgenerator< F, R, S >
 
using iterable_types = xiterable_inner_types< xgenerator< F, R, S > >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
using broadcast_iterator = xiterator< stepper, S, L >
 
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xconst_accessible< xgenerator< F, R, S > >
using derived_type = xgenerator< F, R, S >
 
using inner_types = xcontainer_inner_types< xgenerator< F, R, S > >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class O >
const_stepper stepper_begin (const O &shape) const noexcept
 
+template<class O >
const_stepper stepper_end (const O &shape, layout_type) const noexcept
 
+template<class OR , class OF >
rebind_t< OR, OF > build_generator (OF &&func) const
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
Constructor
template<class Func >
 xgenerator (Func &&f, const S &shape) noexcept
 Constructs an xgenerator applying the specified function over the given shape.
 
Size and shape
const inner_shape_type & shape () const noexcept
 Returns the shape of the xgenerator.
 
layout_type layout () const noexcept
 
bool is_contiguous () const noexcept
 
Data
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns the evaluated element at the specified position in the function.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the function.
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
- Public Member Functions inherited from xt::xconst_iterable< xgenerator< F, R, S > >
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+const_layout_iterator< L > cbegin () const noexcept
 
+const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+const_layout_iterator< L > cend () const noexcept
 
+const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xconst_accessible< xgenerator< F, R, S > >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = layout_type::dynamic
 
static constexpr bool contiguous_layout = false
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class O >
bool broadcast_shape (O &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
template<class O >
bool has_linear_assign (const O &) const noexcept
 Checks whether the xgenerator can be linearly assigned to an expression with the specified strides.
 
template<class E , class FE = F, class = std::enable_if_t<has_assign_to<E, FE>::value>>
void assign_to (xexpression< E > &e) const noexcept
 
const functor_type & functor () const noexcept
 
template<class O = xt::dynamic_shape<typename shape_type::value_type>>
auto reshape (O &&shape) const &
 Reshapes the generator and keeps old elements.
 
template<class O = xt::dynamic_shape<typename shape_type::value_type>>
auto reshape (O &&shape) &&
 
template<class T >
auto reshape (std::initializer_list< T > shape) const &
 
template<class T >
auto reshape (std::initializer_list< T > shape) &&
 
template<class O >
auto stepper_begin (const O &shape) const noexcept -> const_stepper
 
template<class O >
auto stepper_end (const O &shape, layout_type) const noexcept -> const_stepper
 
template<class OR , class OF >
auto build_generator (OF &&func) const -> rebind_t< OR, OF >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xsharable_expression< xgenerator< F, R, S > >
xsharable_expression (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
- Protected Member Functions inherited from xt::xconst_iterable< xgenerator< F, R, S > >
const inner_shape_type & get_shape () const
 
- Protected Member Functions inherited from xt::xconst_accessible< xgenerator< F, R, S > >
xconst_accessible (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+

Detailed Description

+
template<class F, class R, class S>
+class xt::xgenerator< F, R, S >

Multidimensional function operating on indices.

+

The xgenerator class implements a multidimensional function, generating a value from the supplied indices.

+
Template Parameters
+ + + + +
Fthe function type
Rthe return type of the function
Sthe shape type of the generator
+
+
+ +

Definition at line 91 of file xgenerator.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::accessible_base = xconst_accessible<self_type>
+
+ +

Definition at line 101 of file xgenerator.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::bool_load_type = xt::bool_load_type<R>
+
+ +

Definition at line 121 of file xgenerator.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::const_pointer = const value_type*
+
+ +

Definition at line 110 of file xgenerator.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 108 of file xgenerator.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 119 of file xgenerator.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::difference_type = std::ptrdiff_t
+
+ +

Definition at line 112 of file xgenerator.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 103 of file xgenerator.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::extension_base = extension::xgenerator_base_t<F, R, S>
+
+ +

Definition at line 102 of file xgenerator.hpp.

+ +
+
+ +

◆ functor_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::functor_type = typename std::remove_reference<F>::type
+
+ +

Definition at line 99 of file xgenerator.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 115 of file xgenerator.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 105 of file xgenerator.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::iterable_base = xconst_iterable<self_type>
+
+ +

Definition at line 114 of file xgenerator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::pointer = value_type*
+
+ +

Definition at line 109 of file xgenerator.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class F , class R , class S >
+
+template<class OR , class OF >
+ + + + +
using xt::xgenerator< F, R, S >::rebind_t = xgenerator<OF, OR, S>
+
+ +

Definition at line 159 of file xgenerator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::reference = typename inner_types::reference
+
+ +

Definition at line 107 of file xgenerator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::self_type = xgenerator<F, R, S>
+
+ +

Definition at line 98 of file xgenerator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::shape_type = inner_shape_type
+
+ +

Definition at line 116 of file xgenerator.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::size_type = typename inner_types::size_type
+
+ +

Definition at line 111 of file xgenerator.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 118 of file xgenerator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class R , class S >
+ + + + +
using xt::xgenerator< F, R, S >::value_type = R
+
+ +

Definition at line 106 of file xgenerator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xgenerator()

+ +
+
+
+template<class F , class R , class S >
+
+template<class Func >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xgenerator< F, R, S >::xgenerator (Func && f,
const S & shape 
)
+
+inlinenoexcept
+
+ +

Constructs an xgenerator applying the specified function over the given shape.

+
Parameters
+ + + +
fthe function to apply
shapethe shape of the xgenerator
+
+
+ +

Definition at line 213 of file xgenerator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign_to()

+ +
+
+
+template<class F , class R , class S >
+
+template<class E , class , class >
+ + + + + +
+ + + + + + + + +
void xt::xgenerator< F, R, S >::assign_to (xexpression< E > & e) const
+
+inlinenoexcept
+
+ +

Definition at line 360 of file xgenerator.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class F , class R , class S >
+
+template<class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xgenerator< F, R, S >::broadcast_shape (O & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the function to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 323 of file xgenerator.hpp.

+ +
+
+ +

◆ build_generator()

+ +
+
+
+template<class F , class R , class S >
+
+template<class OR , class OF >
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::build_generator (OF && func) const -> rebind_t<OR, OF> +
+
+inline
+
+ +

Definition at line 374 of file xgenerator.hpp.

+ +
+
+ +

◆ element()

+ +
+
+
+template<class F , class R , class S >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xgenerator< F, R, S >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the function.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 302 of file xgenerator.hpp.

+ +
+
+ +

◆ functor()

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + +
auto xt::xgenerator< F, R, S >::functor () const
+
+inlinenoexcept
+
+ +

Definition at line 367 of file xgenerator.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class F , class R , class S >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
bool xt::xgenerator< F, R, S >::has_linear_assign (const O & ) const
+
+inlinenoexcept
+
+ +

Checks whether the xgenerator can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 335 of file xgenerator.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + +
bool xt::xgenerator< F, R, S >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 241 of file xgenerator.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + +
layout_type xt::xgenerator< F, R, S >::layout () const
+
+inlinenoexcept
+
+ +

Definition at line 235 of file xgenerator.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class F , class R , class S >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns the evaluated element at the specified position in the function.

+
Parameters
+ + +
argsa list of indices specifying the position in the function. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the function.
+
+
+ +

Definition at line 260 of file xgenerator.hpp.

+ +
+
+ +

◆ reshape() [1/4]

+ +
+
+
+template<class F , class R , class S >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::reshape (O && shape) &&
+
+inline
+
+ +

Definition at line 398 of file xgenerator.hpp.

+ +
+
+ +

◆ reshape() [2/4]

+ +
+
+
+template<class F , class R , class S >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::reshape (O && shape) const &
+
+inline
+
+ +

Reshapes the generator and keeps old elements.

+

The shape argument can have one of its value equal to -1, in this case the value is inferred from the number of elements in the generator and the remaining values in the shape.

auto a = xt::arange<double>(50).reshape({-1, 10});
+
//a.shape() is {5, 10}
+
Parameters
+ + +
shapethe new shape (has to have same number of elements as the original generator)
+
+
+ +

Definition at line 391 of file xgenerator.hpp.

+ +
+
+ +

◆ reshape() [3/4]

+ +
+
+
+template<class F , class R , class S >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::reshape (std::initializer_list< T > shape) &&
+
+inline
+
+ +

Definition at line 415 of file xgenerator.hpp.

+ +
+
+ +

◆ reshape() [4/4]

+ +
+
+
+template<class F , class R , class S >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::reshape (std::initializer_list< T > shape) const &
+
+inline
+
+ +

Definition at line 408 of file xgenerator.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + +
auto xt::xgenerator< F, R, S >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the xgenerator.

+ +

Definition at line 229 of file xgenerator.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 41 of file xaccessible.hpp.

+ +
+
+ +

◆ stepper_begin()

+ +
+
+
+template<class F , class R , class S >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::stepper_begin (const O & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 344 of file xgenerator.hpp.

+ +
+
+ +

◆ stepper_end()

+ +
+
+
+template<class F , class R , class S >
+
+template<class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xgenerator< F, R, S >::stepper_end (const O & shape,
layout_type  
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 352 of file xgenerator.hpp.

+ +
+
+ +

◆ unchecked()

+ +
+
+
+template<class F , class R , class S >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xgenerator< F, R, S >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the expression, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 288 of file xgenerator.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + +
constexpr bool xt::xgenerator< F, R, S >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 124 of file xgenerator.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class F , class R , class S >
+ + + + + +
+ + + + +
constexpr layout_type xt::xgenerator< F, R, S >::static_layout = layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 123 of file xgenerator.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xgenerator.js b/classxt_1_1xgenerator.js new file mode 100644 index 000000000..fb0b7e64b --- /dev/null +++ b/classxt_1_1xgenerator.js @@ -0,0 +1,12 @@ +var classxt_1_1xgenerator = +[ + [ "xgenerator", "classxt_1_1xgenerator.html#a6f07eda985bc0f0e510a44afa3b8899d", null ], + [ "broadcast_shape", "classxt_1_1xgenerator.html#ae6b7796ce3f5e9aa5333e6c066013b24", null ], + [ "element", "classxt_1_1xgenerator.html#a78b35b4322ef73b541653bc0e009c058", null ], + [ "has_linear_assign", "classxt_1_1xgenerator.html#ab1a2913449b319eede92915d0b410c0d", null ], + [ "operator()", "classxt_1_1xgenerator.html#a5d2e22a7df365f2d238aef28715a46f8", null ], + [ "reshape", "classxt_1_1xgenerator.html#a8d78d70b368a9010ded32ee263299b8b", null ], + [ "shape", "classxt_1_1xgenerator.html#a72035cb01c8e3ead3dedcd013fe59737", null ], + [ "shape", "classxt_1_1xgenerator.html#aec0ae6f83f7e86f32e083cb6714af552", null ], + [ "unchecked", "classxt_1_1xgenerator.html#af95208893a8690ab495c3ac4f570d590", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xgenerator.png b/classxt_1_1xgenerator.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb4a8ac41c51e269a7c4f22421012d25d4e482b GIT binary patch literal 3398 zcmd5s|S>!N=sQ( z1QbE!MZ%VVCLuuqQ;UG2B#{6qLO=~+hY+^R4dL|6oX(t?KjzGt`^Q`E`|j`i?zi3F zOFiuAhFG<6m71Cw!u`7gN7U3b+rjfS?G@mvmxewAZm7c^M_m*O1$g{0G!>oxti-{} zEMh~>%MbPS^A`Toy5hZ;)R@K? z3f$?Mxl&zYD8sZ24n}!z)YPsxSV)6m;sL_iE%lbE?J!*P#gg#Z>UIVU7mTHqLUdEn zHywG4JOpHy#Y}-=sY+O`5AZIm7nzm8Nb%c>h_3A;MwlyV>M<`uit}7X<+YQ~N_&sU z=Q*459NFx!0uxI&{yE-lc_?RdjDPShk+iS9lL~ZiR$13iZ-*(|bJ!>7uINWs@pcZS z(u+R}dy5)6s%m*1`ye~>Sd8z?GfcR2b`*Xj9Ew zv8mfaHY$nvl+}*4{={C)&Z!HYDSNA0Fn^q&kMA-k_K+k2iDfM|KArL7RWVuo;-DRg zY){DIw{dtgA|w;1auEWP>v0}mSN+m2NoKTdWY6)W%1`r|k*Q^#G{1*%pm_K1@%!(; zT0$;iVLM$kBRPI>&hxhNgtBOeV$FZu{}bWKyT62}J00uvaJ`NRL8^c=r5MMA!GYvq z_^yxe#Hzvc=CR56)4O1})T4RNh8X`(j3Jl&YTguPHNoHcL4NaF;G(rlF;Th*4j4sw zu@bVhB&?8LQ-p@5V5_5dCx2DAbz8xg7E1q5zwpe&`peK0N1=t!RUz(C##o{Cry&3P zjQBXm)=d)0P#~E!G~=4IG_^sV>_~0j0@8~s?lbZP3N;L}m4;|X_&HrimViuCzkyM@ zP}9No3y@)Jf3H_6{`S&}^~znSuklcQv{Ksk|NHUKYy*MM>gT<0s2CE56d`tzgj zNf==(W?}d+G?gK*KCx6`83Gu-eaoD}Kb1}oN*V=?(HFboz#kd1ezmCk+}ZyeNt z9S_AqcE2daQ`=KcZ2(tLa~VO^Fnp^K3w3y8qIDWxd1PWCde-h-2x>8|0U(96QyWqO zu^0&q^LB^ck?r0LlwZalqQWQSfu+NfwP6q8(k{EBkOd(QT`S_*j!%3Tqs8{mms`Uy zZfsXgK@kMelg&D=h-IkaJ-0@Yc1{8PQ|**51|Rbf4OSjvDp1g?r>Fzg^fbl_RW&Uj zqlWv_v!EPn-HB^>Y@Z?=CtI4WECIelTP%h62x~SYQ%v_YW18 z_#W4kb+8!8`a4Ig?!&O2sBt=tmVITIJ%AdzDW`ueov5O2bl7|`DG_~#-CAIRY>A9c ztm)Eq;Im=AjYmjJ> zR@kps(-ISQHmkaeZ2L=j0Qo%2h0xK_cb;70!w(+Fz9YM>-0{e132c~sh_GkFT-=NO z1N?`yw5kE|`_g+Tq}YApEyEyUtm~6bEibnc*}Ofa1reP)jw4Kn^|=jJI$lrAh!@hk zp`c9@J9Nnd;);*mkI&*{Ph(h$GLDc%X+A--6n$tWM)E7pH4u+<+PgbFP7cqU_HUhQ zc?btL)mAPzl$}89mhA32>Gs=55XRAYZuJvCj-hQ^(pXea;t+-)E5YZ571NSeI4iO> zeC_5vf<@*;anXcs)W_p>Pmr7*dQ3Sjo?DhMM(@$9me%b4*wB1J2hXwMhrgQhr`Fs$$WBx4a5)?+ZeF;Hjap~KX*opDH|olap_0QHZW!N}%(4r6n#_wW zsHeXw4KpidCg3b)P71b_c4wj&aLs&C-!a|-wiNU;;m}i-{HLaCTH&vli&JTFNjtqn zcfolwsNRM$468YWNx0eHcQs0{`}{!d&Jp{ih&N4BXxKCMp%q4AK1>txi}I39k!ajZ zA2n#(V|rzPDKUvbuNp`}rJM?A&8 z0M<8_y|*ogWdDc)>q(?&q3Ly@^hKbskXGW}gP)rvj?U^Y=vH!}uwHVP&?7bRI}{L1Vt>|Z5`bV@+A;6EdBwa=dsuFmAKx~P1Vv0Um0G@d zx8PM(&P#7=~0)e*F5H1fgnH|2vVP2DcEp3L=@mC7b8Ig-mBCi)atGrf+_c-p=l_(P@Z?So{HqF1k51f(}aGzSJcZeguHTHBs`E|9bOu z%HqkAHqWw0@HPqPIrhkYk!&GE)zxi^qy72GR0)G$zeavZ&B7S{{kF=zHmQi34BFjW zjVoK0CZ4)FIjz&T%@8b42{7%K1J|K!e_5J9$#u+0dr_%~+wP&SJWgLJGqzX;0TUH@ zXFpSc{23LSfn0_F690(l>yA@Gsg#^FcVE4X4JJaj5|mK?R9RNhzgFf1#xpLL>ox<1 z_GT~=R%mF>kX@&p|7V9W`gOFwK7%SjD>;P#)$MTO%mywg(S4bj5)HVdKd33mfcpnG zeNHl{RgqI;42nzYTBfob?@rxg3xT-USzr4f`y2p81&d;rNu`xi(%TcUn!E76vCrW~ z`4V;U9}m>JQ#UTJefu(KK{DF47@xQ)X4naFJkbv)%tGJjn+Z~JrTAKH1}V|66<^(O zkodYfG>=_lO5DiYWeDtDz09o^KNOs`F1tXnY^49h$EEm4JUqJjqVe676i&`El_bNo z>f~%Xg=M)Xt#{%am*kfzCKw_Tn9IbJwNS}PB|v$&9C~silAfGt_%)FLjssybQc0N{ z#VxvvP3DpQc@%ugttX*d%S|x3sioco@)p_>1vDcU(W;+^-QLM}<{;Mqb~#VlNE+{X z6kRvE564e09kh-%;Es7+Q_?p7@!EB9{YAh>_=wt8XXce91QW#pZM;eRo7Bbq_g$3# z0#0&!*AEQx_xV83`70H#S6mJTF;IM_+IS)DKM0QL-$fIId>=o$d*zmTg^ofiD3&C) UrrwVSe>`gLE}jRd`%Yf|8=-uERR910 literal 0 HcmV?d00001 diff --git a/classxt_1_1xindex__view-members.html b/classxt_1_1xindex__view-members.html new file mode 100644 index 000000000..8a43cd58a --- /dev/null +++ b/classxt_1_1xindex__view-members.html @@ -0,0 +1,277 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xindex_view< CT, I > Member List
+
+
+ +

This is the complete list of members for xt::xindex_view< CT, I >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< xindex_view< CT, I > >inline
base_index_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
begin() noexcept -> layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
broadcast_shape(O &shape, bool reuse_cache=false) constxt::xindex_view< CT, I >inline
build_index_view(E &&e) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
build_index_view(E &&e) const -> rebind_t< E > (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
cbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
cend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
const_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_pointer typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
const_reference typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
const_reverse_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_stepper typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
contiguous_layout (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >static
crbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
crend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
difference_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
dimension() const noexceptxt::xindex_view< CT, I >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
element(It first, It last) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
element(It first, It) -> referencext::xindex_view< CT, I >inline
element(It first, It) const -> const_referencext::xindex_view< CT, I >inline
end() noexcept -> layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
end() const noexcept -> const_layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
expression() noexceptxt::xindex_view< CT, I >inline
expression() const noexceptxt::xindex_view< CT, I >inline
expression_tag typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
extension_base typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
fill(const T &value)xt::xindex_view< CT, I >inline
get_cbegin(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cbegin(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_shape() const (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inlineprotected
has_linear_assign(const O &) const noexceptxt::xindex_view< CT, I >inline
indices_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
inner_shape_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
is_contiguous() const noexcept (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
iterable_base typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
iterable_types typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
layout() const noexcept (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(size_type idx=size_type(0))xt::xindex_view< CT, I >inline
operator()(size_type idx0, size_type idx1, Args... args) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator()(size_type idx=size_type(0)) constxt::xindex_view< CT, I >inline
operator()(size_type idx0, size_type idx1, Args... args) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator()(size_type, size_type idx1, Args... args) -> reference (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator()(size_type, size_type idx1, Args... args) const -> const_reference (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xexpression< E > &e) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator=(const E &e) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator=(const xexpression< E > &e) -> self_type &xt::xindex_view< CT, I >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator[](const S &index) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator[](std::initializer_list< OI > index) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator[](size_type i) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator[](const S &index) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator[](std::initializer_list< OI > index) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
operator[](size_type i) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator[](const S &index) -> disable_integral_t< S, reference >xt::xindex_view< CT, I >inline
operator[](std::initializer_list< OI > index) -> reference (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xindex_view< CT, I >inline
operator[](std::initializer_list< OI > index) const -> const_reference (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
rebind_t typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
reference typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
rend() noexcept -> reverse_layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< xindex_view< CT, I > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< xindex_view< CT, I > >inline
self_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
semantic_base typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
shape() const noexceptxt::xindex_view< CT, I >inline
shape(size_type index) constxt::xindex_view< CT, I >inline
shape_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
size() const noexceptxt::xindex_view< CT, I >inline
size_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
static_layout (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >static
stepper typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
stepper_begin(const ST &shape) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
stepper_begin(const ST &shape) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
stepper_begin(const ST &shape) -> stepper (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
stepper_begin(const ST &shape) const -> const_stepper (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
stepper_end(const ST &shape, layout_type) (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
stepper_end(const ST &shape, layout_type) const (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
stepper_end(const ST &shape, layout_type) -> stepper (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
stepper_end(const ST &shape, layout_type) const -> const_stepper (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >inline
temporary_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
unchecked(size_type idx)xt::xindex_view< CT, I >inline
unchecked(size_type idx) constxt::xindex_view< CT, I >inline
value_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
xexpression_type typedef (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >
xindex_view(CTA &&e, I2 &&indices) noexceptxt::xindex_view< CT, I >inline
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xview_semantic< xindex_view< CT, I > > (defined in xt::xindex_view< CT, I >)xt::xindex_view< CT, I >friend
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xindex__view.html b/classxt_1_1xindex__view.html new file mode 100644 index 000000000..9586e5962 --- /dev/null +++ b/classxt_1_1xindex__view.html @@ -0,0 +1,2725 @@ + + + + + + + +xtensor: xt::xindex_view< CT, I > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xindex_view< CT, I > Class Template Reference
+
+
+ +

View of an xexpression from vector of indices. + More...

+ +

#include <xindex_view.hpp>

+
+Inheritance diagram for xt::xindex_view< CT, I >:
+
+
+ + +xt::xview_semantic< xindex_view< CT, I > > +xt::xiterable< xindex_view< CT, I > > +xt::xsemantic_base< D > +xt::xconst_iterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xindex_view< CT, I >
 
using xexpression_type = std::decay_t< CT >
 
using semantic_base = xview_semantic< self_type >
 
using extension_base = extension::xindex_view_base_t< CT, I >
 
using expression_tag = typename extension_base::expression_tag
 
using value_type = typename xexpression_type::value_type
 
using reference = inner_reference_t< CT >
 
using const_reference = typename xexpression_type::const_reference
 
using pointer = typename xexpression_type::pointer
 
using const_pointer = typename xexpression_type::const_pointer
 
using size_type = typename xexpression_type::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using iterable_base = xiterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = inner_shape_type
 
using indices_type = I
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using temporary_type = typename xcontainer_inner_types< self_type >::temporary_type
 
using base_index_type = xindex_type_t< shape_type >
 
using bool_load_type = typename xexpression_type::bool_load_type
 
template<class E >
using rebind_t = xindex_view< E, I >
 
- Public Types inherited from xt::xview_semantic< xindex_view< CT, I > >
using base_type = xsemantic_base< xindex_view< CT, I > >
 
using derived_type = xindex_view< CT, I >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
- Public Types inherited from xt::xiterable< xindex_view< CT, I > >
using derived_type = xindex_view< CT, I >
 
using base_type = xconst_iterable< xindex_view< CT, I > >
 
using inner_shape_type = typename base_type::inner_shape_type
 
using stepper = typename base_type::stepper
 
using const_stepper = typename base_type::const_stepper
 
using linear_iterator = typename base_type::linear_iterator
 
using reverse_linear_iterator = typename base_type::reverse_linear_iterator
 
using layout_iterator = typename base_type::template layout_iterator< L >
 
using const_layout_iterator = typename base_type::template const_layout_iterator< L >
 
using reverse_layout_iterator = typename base_type::template reverse_layout_iterator< L >
 
using const_reverse_layout_iterator = typename base_type::template const_reverse_layout_iterator< L >
 
using broadcast_iterator = typename base_type::template broadcast_iterator< S, L >
 
using const_broadcast_iterator = typename base_type::template const_broadcast_iterator< S, L >
 
using reverse_broadcast_iterator = typename base_type::template reverse_broadcast_iterator< S, L >
 
using const_reverse_broadcast_iterator = typename base_type::template const_reverse_broadcast_iterator< S, L >
 
using iterator = typename base_type::iterator
 
using const_iterator = typename base_type::const_iterator
 
using reverse_iterator = typename base_type::reverse_iterator
 
using const_reverse_iterator = typename base_type::const_reverse_iterator
 
- Public Types inherited from xt::xconst_iterable< D >
using derived_type = D
 
using iterable_types = xiterable_inner_types< D >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
template<layout_type L>
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
template<layout_type L>
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
template<layout_type L>
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
template<layout_type L>
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
template<class S , layout_type L>
using broadcast_iterator = xiterator< stepper, S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
+template<class... Args>
reference operator() (size_type idx0, size_type idx1, Args... args)
 
+template<class S >
disable_integral_t< S, reference > operator[] (const S &index)
 
+template<class OI >
reference operator[] (std::initializer_list< OI > index)
 
+template<class It >
reference element (It first, It last)
 
+template<class... Args>
const_reference operator() (size_type idx0, size_type idx1, Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class OI >
const_reference operator[] (std::initializer_list< OI > index) const
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class ST >
stepper stepper_begin (const ST &shape)
 
+template<class ST >
stepper stepper_end (const ST &shape, layout_type)
 
+template<class ST >
const_stepper stepper_begin (const ST &shape) const
 
+template<class ST >
const_stepper stepper_end (const ST &shape, layout_type) const
 
+template<class E >
rebind_t< E > build_index_view (E &&e) const
 
Constructor
template<class CTA , class I2 >
 xindex_view (CTA &&e, I2 &&indices) noexcept
 Constructs an xindex_view, selecting the indices specified by indices.
 
Size and shape
size_type size () const noexcept
 Returns the size of the xindex_view.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the xindex_view.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the xindex_view.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
layout_type layout () const noexcept
 
bool is_contiguous () const noexcept
 
Data
template<class T >
void fill (const T &value)
 Fills the view with the given value.
 
reference operator() (size_type idx=size_type(0))
 Returns a reference to the element at the specified position in the xindex_view.
 
reference unchecked (size_type idx)
 Returns a reference to the element at the specified position in the xindex_view.
 
reference operator[] (size_type i)
 
const_reference operator() (size_type idx=size_type(0)) const
 Returns a constant reference to the element at the specified position in the xindex_view.
 
const_reference unchecked (size_type idx) const
 Returns a constant reference to the element at the specified position in the xindex_view.
 
const_reference operator[] (size_type i) const
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the view.
 
template<class... Args>
auto operator() (size_type, size_type idx1, Args... args) -> reference
 
template<class... Args>
auto operator() (size_type, size_type idx1, Args... args) const -> const_reference
 
template<class S >
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the container.
 
template<class OI >
auto operator[] (std::initializer_list< OI > index) -> reference
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the container.
 
template<class OI >
auto operator[] (std::initializer_list< OI > index) const -> const_reference
 
template<class It >
auto element (It first, It) -> reference
 Returns a reference to the element at the specified position in the xindex_view.
 
template<class It >
auto element (It first, It) const -> const_reference
 Returns a reference to the element at the specified position in the xindex_view.
 
Broadcasting
template<class O >
bool broadcast_shape (O &shape, bool reuse_cache=false) const
 Broadcast the shape of the xindex_view to the specified parameter.
 
template<class O >
bool has_linear_assign (const O &) const noexcept
 Checks whether the xindex_view can be linearly assigned to an expression with the specified strides.
 
template<class ST >
auto stepper_begin (const ST &shape) -> stepper
 
template<class ST >
auto stepper_end (const ST &shape, layout_type) -> stepper
 
template<class ST >
auto stepper_begin (const ST &shape) const -> const_stepper
 
template<class ST >
auto stepper_end (const ST &shape, layout_type) const -> const_stepper
 
template<class E >
auto build_index_view (E &&e) const -> rebind_t< E >
 
- Public Member Functions inherited from xt::xview_semantic< xindex_view< CT, I > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xiterable< xindex_view< CT, I > >
+layout_iterator< L > begin () noexcept
 
+broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+layout_iterator< L > end () noexcept
 
+broadcast_iterator< S, L > end (const S &shape) noexcept
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+reverse_layout_iterator< L > rbegin () noexcept
 
+reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+reverse_layout_iterator< L > rend () noexcept
 
+reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto get_begin (bool end_index) noexcept -> layout_iterator< L >
 
auto get_begin (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
auto get_end (bool end_index) noexcept -> layout_iterator< L >
 
auto get_end (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
auto get_stepper_begin (const S &shape) noexcept -> stepper
 
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto get_stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xconst_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L>
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L, class S >
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = layout_type::dynamic
 
static constexpr bool contiguous_layout = false
 
+ + + +

+Friends

class xview_semantic< xindex_view< CT, I > >
 
+ + + + + + + + +

Extended copy semantic

template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xview_semantic< xindex_view< CT, I > >
xview_semantic (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xconst_iterable< D >
const inner_shape_type & get_shape () const
 
+

Detailed Description

+
template<class CT, class I>
+class xt::xindex_view< CT, I >

View of an xexpression from vector of indices.

+

The xindex_view class implements a flat (1D) view into a multidimensional xexpression yielding the values at the indices of the index array. xindex_view is not meant to be used directly, but only with the index_view and filter helper functions.

+
Template Parameters
+ + + +
CTthe closure type of the xexpression type underlying this view
Ithe index array type of the view
+
+
+
See also
index_view, filter
+ +

Definition at line 90 of file xindex_view.hpp.

+

Member Typedef Documentation

+ +

◆ base_index_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::base_index_type = xindex_type_t<shape_type>
+
+ +

Definition at line 121 of file xindex_view.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::bool_load_type = typename xexpression_type::bool_load_type
+
+ +

Definition at line 123 of file xindex_view.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::const_pointer = typename xexpression_type::const_pointer
+
+ +

Definition at line 107 of file xindex_view.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::const_reference = typename xexpression_type::const_reference
+
+ +

Definition at line 105 of file xindex_view.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 118 of file xindex_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 109 of file xindex_view.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 101 of file xindex_view.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::extension_base = extension::xindex_view_base_t<CT, I>
+
+ +

Definition at line 100 of file xindex_view.hpp.

+ +
+
+ +

◆ indices_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::indices_type = I
+
+ +

Definition at line 115 of file xindex_view.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 112 of file xindex_view.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::iterable_base = xiterable<self_type>
+
+ +

Definition at line 111 of file xindex_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::pointer = typename xexpression_type::pointer
+
+ +

Definition at line 106 of file xindex_view.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class CT , class I >
+
+template<class E >
+ + + + +
using xt::xindex_view< CT, I >::rebind_t = xindex_view<E, I>
+
+ +

Definition at line 193 of file xindex_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::reference = inner_reference_t<CT>
+
+ +

Definition at line 104 of file xindex_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::self_type = xindex_view<CT, I>
+
+ +

Definition at line 96 of file xindex_view.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::semantic_base = xview_semantic<self_type>
+
+ +

Definition at line 98 of file xindex_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::shape_type = inner_shape_type
+
+ +

Definition at line 113 of file xindex_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::size_type = typename xexpression_type::size_type
+
+ +

Definition at line 108 of file xindex_view.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 117 of file xindex_view.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::temporary_type = typename xcontainer_inner_types<self_type>::temporary_type
+
+ +

Definition at line 120 of file xindex_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::value_type = typename xexpression_type::value_type
+
+ +

Definition at line 103 of file xindex_view.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class I >
+ + + + +
using xt::xindex_view< CT, I >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 97 of file xindex_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xindex_view()

+ +
+
+
+template<class CT , class I >
+
+template<class CTA , class I2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xindex_view< CT, I >::xindex_view (CTA && e,
I2 && indices 
)
+
+inlinenoexcept
+
+ +

Constructs an xindex_view, selecting the indices specified by indices.

+

The resulting xexpression has a 1D shape with a length of n for n indices.

+
Parameters
+ + + +
ethe underlying xexpression for this view
indicesthe indices to select
+
+
+ +

Definition at line 287 of file xindex_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT , class I >
+
+template<class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xindex_view< CT, I >::broadcast_shape (O & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the xindex_view to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 560 of file xindex_view.hpp.

+ +
+
+ +

◆ build_index_view()

+ +
+
+
+template<class CT , class I >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::build_index_view (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 617 of file xindex_view.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::xindex_view< CT, I >::dimension () const
+
+inlinenoexcept
+
+ +

Returns the number of dimensions of the xindex_view.

+ +

Definition at line 343 of file xindex_view.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class CT , class I >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xindex_view< CT, I >::element (It first,
It  
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xindex_view.

+
Parameters
+ + +
firstiterator starting the sequence of indices The number of indices in the sequence should be equal to or greater 1.
+
+
+ +

Definition at line 511 of file xindex_view.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class CT , class I >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xindex_view< CT, I >::element (It first,
It  
) const -> const_reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xindex_view.

+
Parameters
+ + +
firstiterator starting the sequence of indices The number of indices in the sequence should be equal to or greater 1.
+
+
+ +

Definition at line 523 of file xindex_view.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::xindex_view< CT, I >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the view.

+ +

Definition at line 541 of file xindex_view.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::xindex_view< CT, I >::expression ()
+
+inlinenoexcept
+
+ +

Returns a reference to the underlying expression of the view.

+ +

Definition at line 532 of file xindex_view.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class CT , class I >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xindex_view< CT, I >::fill (const T & value)
+
+inline
+
+ +

Fills the view with the given value.

+
Parameters
+ + +
valuethe value to fill the view with.
+
+
+ +

Definition at line 391 of file xindex_view.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT , class I >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
bool xt::xindex_view< CT, I >::has_linear_assign (const O & ) const
+
+inlinenoexcept
+
+ +

Checks whether the xindex_view can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 572 of file xindex_view.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
bool xt::xindex_view< CT, I >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 373 of file xindex_view.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
layout_type xt::xindex_view< CT, I >::layout () const
+
+inlinenoexcept
+
+ +

Definition at line 367 of file xindex_view.hpp.

+ +
+
+ +

◆ operator()() [1/4]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator() (size_type idx = size_type(0))
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xindex_view.

+
Parameters
+ + +
idxindex specifying the position in the index_view. More indices may be provided, only the last one will be used.
+
+
+ +

Definition at line 402 of file xindex_view.hpp.

+ +
+
+ +

◆ operator()() [2/4]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator() (size_type idx = size_type(0)) const
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the xindex_view.

+
Parameters
+ + +
idxindex specifying the position in the index_view. More indices may be provided, only the last one will be used.
+
+
+ +

Definition at line 430 of file xindex_view.hpp.

+ +
+
+ +

◆ operator()() [3/4]

+ +
+
+
+template<class CT , class I >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xindex_view< CT, I >::operator() (size_type ,
size_type idx1,
Args... args 
) -> reference +
+
+inline
+
+ +

Definition at line 409 of file xindex_view.hpp.

+ +
+
+ +

◆ operator()() [4/4]

+ +
+
+
+template<class CT , class I >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xindex_view< CT, I >::operator() (size_type ,
size_type idx1,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 437 of file xindex_view.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class CT , class I >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 314 of file xindex_view.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class CT , class I >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 305 of file xindex_view.hpp.

+ +
+
+ +

◆ operator[]() [1/6]

+ +
+
+
+template<class CT , class I >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator[] (const S & index) -> disable_integral_t<S, reference> +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the container.

+
Parameters
+ + +
indexa sequence of indices specifying the position in the container. Indices must be unsigned integers, the number of indices in the list should be equal or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 460 of file xindex_view.hpp.

+ +
+
+ +

◆ operator[]() [2/6]

+ +
+
+
+template<class CT , class I >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator[] (const S & index) const -> disable_integral_t<S, const_reference> +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the container.

+
Parameters
+ + +
indexa sequence of indices specifying the position in the container. Indices must be unsigned integers, the number of indices in the list should be equal or greater than the number of dimensions of the container.
+
+
+ +

Definition at line 486 of file xindex_view.hpp.

+ +
+
+ +

◆ operator[]() [3/6]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator[] (size_type i)
+
+inline
+
+ +

Definition at line 473 of file xindex_view.hpp.

+ +
+
+ +

◆ operator[]() [4/6]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator[] (size_type i) const
+
+inline
+
+ +

Definition at line 499 of file xindex_view.hpp.

+ +
+
+ +

◆ operator[]() [5/6]

+ +
+
+
+template<class CT , class I >
+
+template<class OI >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator[] (std::initializer_list< OI > index) -> reference +
+
+inline
+
+ +

Definition at line 467 of file xindex_view.hpp.

+ +
+
+ +

◆ operator[]() [6/6]

+ +
+
+
+template<class CT , class I >
+
+template<class OI >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::operator[] (std::initializer_list< OI > index) const -> const_reference +
+
+inline
+
+ +

Definition at line 493 of file xindex_view.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::xindex_view< CT, I >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the xindex_view.

+ +

Definition at line 352 of file xindex_view.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 361 of file xindex_view.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + +
auto xt::xindex_view< CT, I >::size () const
+
+inlinenoexcept
+
+ +

Returns the size of the xindex_view.

+ +

Definition at line 334 of file xindex_view.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CT , class I >
+
+template<class ST >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::stepper_begin (const ST & shape) -> stepper +
+
+inline
+
+ +

Definition at line 585 of file xindex_view.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CT , class I >
+
+template<class ST >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::stepper_begin (const ST & shape) const -> const_stepper +
+
+inline
+
+ +

Definition at line 601 of file xindex_view.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CT , class I >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xindex_view< CT, I >::stepper_end (const ST & shape,
layout_type  
) -> stepper +
+
+inline
+
+ +

Definition at line 593 of file xindex_view.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CT , class I >
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xindex_view< CT, I >::stepper_end (const ST & shape,
layout_type  
) const -> const_stepper +
+
+inline
+
+ +

Definition at line 609 of file xindex_view.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::unchecked (size_type idx)
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xindex_view.

+
Parameters
+ + +
idxindex specifying the position in the index_view.
+
+
+ +

Definition at line 419 of file xindex_view.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + + + + + +
auto xt::xindex_view< CT, I >::unchecked (size_type idx) const
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the xindex_view.

+
Parameters
+ + +
idxindex specifying the position in the index_view.
+
+
+ +

Definition at line 447 of file xindex_view.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xview_semantic< xindex_view< CT, I > >

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + +
friend class xview_semantic< xindex_view< CT, I > >
+
+friend
+
+ +

Definition at line 204 of file xindex_view.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + +
constexpr bool xt::xindex_view< CT, I >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 126 of file xindex_view.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT , class I >
+ + + + + +
+ + + + +
constexpr layout_type xt::xindex_view< CT, I >::static_layout = layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 125 of file xindex_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xindex__view.js b/classxt_1_1xindex__view.js new file mode 100644 index 000000000..187aa9dae --- /dev/null +++ b/classxt_1_1xindex__view.js @@ -0,0 +1,22 @@ +var classxt_1_1xindex__view = +[ + [ "xindex_view", "classxt_1_1xindex__view.html#a0306275ff45341e84fe63836010c7ad5", null ], + [ "broadcast_shape", "classxt_1_1xindex__view.html#ac341559ffeb015df5070beec5596d2a9", null ], + [ "dimension", "classxt_1_1xindex__view.html#afeaa3f6f6c150f659935d1a625497203", null ], + [ "element", "classxt_1_1xindex__view.html#a4bdd94010df7af626590d532b2febefb", null ], + [ "element", "classxt_1_1xindex__view.html#a49787050a31b9c40a75f6644c6ee4c10", null ], + [ "expression", "classxt_1_1xindex__view.html#abad555c9ed25f834763760c88a236325", null ], + [ "expression", "classxt_1_1xindex__view.html#ab19a3dd1a9b7f67c557ee57bc189d319", null ], + [ "fill", "classxt_1_1xindex__view.html#aeecb2ec9572eac54def9d4f9934a86fd", null ], + [ "has_linear_assign", "classxt_1_1xindex__view.html#a436dfb313bdf3ce42a16cfa2a5c9f98f", null ], + [ "operator()", "classxt_1_1xindex__view.html#ab0eefdf0f3dedf19a78763643718e353", null ], + [ "operator()", "classxt_1_1xindex__view.html#aab9b1fd3d2f19db29b52cd9cad772a2d", null ], + [ "operator=", "classxt_1_1xindex__view.html#aac159eb55755735609a3095f1e73bf3a", null ], + [ "operator[]", "classxt_1_1xindex__view.html#a5f26e28734c1db46865b6eeb39009a2a", null ], + [ "operator[]", "classxt_1_1xindex__view.html#a2a2211fb97b8bbb0b6a8ea3e4ac6c0b5", null ], + [ "shape", "classxt_1_1xindex__view.html#ad124eaa3959093d86deab646c4a2fb18", null ], + [ "shape", "classxt_1_1xindex__view.html#a47f560d67ba251afd96c617e6c6e2a0e", null ], + [ "size", "classxt_1_1xindex__view.html#a9c3f7c72cb0e1172b75bb256e92e6b94", null ], + [ "unchecked", "classxt_1_1xindex__view.html#aa6c15d2a26e0a3a993332606bb3d8ddc", null ], + [ "unchecked", "classxt_1_1xindex__view.html#a9ff5247ea89e3a5ed114685960edd042", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xindex__view.png b/classxt_1_1xindex__view.png new file mode 100644 index 0000000000000000000000000000000000000000..4506581442ebfe8d06d9366086921232f23b187e GIT binary patch literal 3467 zcmdT{YgE$N7WYx{d?baLgNq+%Na zJLKcm-Et%!!K;Tcv`|iM$_1E#{>fP;5m?=YXF@8Hvvdx|t(yKELK(Fu$zC0j;{Cuv zPMzl+k;U;Ej@6h@zZME(y-q6!HYoOq)@{u&=^^)ps>q$z(>1>L!_m;1CVm=O@=I>( zv6u0^ClblkUY-ay10Wg050t6rDv)&aX9N+;AVb@od&!C*+H*^ub%}*%v|Egzb`xi1 zyScH`Fql?vF((s7zhRD}IEs`sv46ShJk_oQzpyFuP9R%sclTfob}2s-@-&Y3L9>;c!vlZcs5lmhyV4U4pf7 zwk2-O@Ob}oC2i7FT7g;pe$U6nX_z<2pLX5qpLFYX>gvyMo0c6-Ro-2~tZ6xr2h_&; zgXnQ+QFL+_+Bz+yNTOKSuI!S^>nF6m0%z(AJ`qx6ksk)slaa40WfV9Evf^lWK-djI9}Z`b&UgH2!5+@^t}Vg?%!}Uy&9WEE-sWSi3dD z%2}tb)T!R_|7(?{9Km~8r+WpkC-AZQH#T0PP;7$U`y>0z?1|U&SNVbNQhdb5YX5!h zB+3}%uU$9Rnp6C9KrV{~G|>l(c3N9V+m z%NKT+D@_ntbt^Ml!*nYdk`Bp;OsHCib>;I(v}3-VPLV?!b6dmKBrph<18-$VJ45q& zJZfV+TAvIi7d}9j0you=d~@I`!Pnb#x$O~zsoSn#mG+)TGI#a0JTO$4PbWbwpuxvWDP5}eDX%KQ@lT+wOWa?~jRJ*yQs)|dZQ0!G! zGT`zZXgB{zx_J?T>_dRI*=)E3+mB5BI~RL+LNy!!C$dj0GyV{P&%BbfH3Ph1X}v#u z?eZ-X1r(rX<*iyAY71WBwuQ7{Uif6bKzwHaEig4cO}e=?_qL%y=S*N+zs!)2`ghkZcMCtf)gGdp=Yv!wmDdg4Vt^Bac~i7+qR+ zO4Gt7JwJ>SjwehvGYQDPA{;D1sxBFNnu`{Sw0-R9@leLelSAdWa`5N|Agxb#^V8XS z;@q1(u*uWMleIr;D}t$%!O3JqQFKW8$Snv%NK(Y}7(CLJX1dkef_K~s&W^_J{p4NH ziI{AfuyGF0=#E8YJPY<#Hk!H$C_~bT^RZ(hcUXd>A9tp?B}h3f)b>?V8oc77$}VT; z%!Hqj@l!ko%E!kPd`-WqKk1%;v%alwBY6pT-5`o;BzKm6lhQ?kzw*jz8B$u6l=-US z!n4oDk774o!=jqGQ?D&LN4BZ;g$`F+4{7G4I)qpge^)%iOBXI|y#aEcfR5LCY~t9B zms_PNwh9Xy~e%IRfA}$QATzbcM zz~^~M;V9!^dE&^COLm2tsI-|%>JcPOvH@{!*;DPQgeJ$fGZnmxI8dYgJ{-LmGS@VT z2N#D;Hb78=gb1WPF`R&M6cA;5p;+OYpd0sE*bPeSsF!b#-RRmSQ4qr`lD(P98buCT zJ%&VvS;HpPT&{*N+W<#<_T~?KgLBuuB8kp87}3q2>f69w=p%1BD%JE|8WiU6JUicM z6S(eKd@GTU_9c2+bWU&6@&N$)^^H6$XC958qEMjuT+*{wf~bL@`TNG%K0Ml~gVz&p zgQ?PnWzQdCQAIZ$!x2r$Tb{9=Lu_G6e$H|w$ckHl<)n4Whxn;8Gw18g1n}p}Bu9$9 zBpqIU!@MctEO?;+4HYQRkYLLw9*t*;l;sYMP*U2HlZ%9E;k9wd&?Chm`VBODCnpvG4pWqr9Z^h(@W z?H0cl@0ZBvkfP|3F#xHU?7GF1R{@wyH?xT!4$xg=?c(xOx*2@(?8rInJ&O9c53Zt0 zlZrrSUsMMpQ8T{aM#eNim`bxv%1=)?_-Q9Fw<%**+DE$X*6bBb6hKd`{{ChD^)psU zIwtU5+9WuF2w*|gOOFH?2p~7Aievx~S;X6rkc`aRhR^~c*Op;x5@6Kj4=-43=?@10 z?{MLj&9-2tb))_kN7s%5NH|U+eQvhLq5AnAXV5dY9iR5br z&@PaHW^TN~C4PH`o)REiYgy$0zcP6D->R+l0Jr`yoT;bp1`4WrIhqYnEmj^-uC**3 z_Whf5jE{2dz^kUg)`IyDGPDk=#&Phnpgp>oc|uXgXwsNC5eHMAD*<+=wT#^Ni2j*& zKZmN&QtM96hiGe1=U<3;}lN{#)W=?0AdCG=89SzII1=7%I1w*5dpsRkj&7 zqR7&*Txkrb5f9ww1PQkX({c?~djt#`MaMT18aKbi1HUwKtB#Pj*7oa)g;RKzy94Cf zDxFW_Vnj`wO98J&1 + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xindexed_stepper< E, is_const > Member List
+
+
+ +

This is the complete list of members for xt::xindexed_stepper< E, is_const >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
index_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
operator*() const (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
pointer typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
reference typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
reset(size_type dim) (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
reset_back(size_type dim) (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
self_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
shape_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
size_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
step(size_type dim, size_type n=1) (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
step_back(size_type dim, size_type n=1) (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
to_begin() (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
to_end(layout_type l) (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
value_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
xexpression_type typedef (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
xindexed_stepper()=default (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >
xindexed_stepper(xexpression_type *e, size_type offset, bool end=false) noexcept (defined in xt::xindexed_stepper< E, is_const >)xt::xindexed_stepper< E, is_const >inline
+
+ + + + diff --git a/classxt_1_1xindexed__stepper.html b/classxt_1_1xindexed__stepper.html new file mode 100644 index 000000000..7308596e8 --- /dev/null +++ b/classxt_1_1xindexed__stepper.html @@ -0,0 +1,596 @@ + + + + + + + +xtensor: xt::xindexed_stepper< E, is_const > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xindexed_stepper< E, is_const > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xindexed_stepper< E, is_const >
 
using xexpression_type = std::conditional_t< is_const, const E, E >
 
using value_type = typename xexpression_type::value_type
 
using reference = std::conditional_t< is_const, typename xexpression_type::const_reference, typename xexpression_type::reference >
 
using pointer = std::conditional_t< is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer >
 
using size_type = typename xexpression_type::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using shape_type = typename xexpression_type::shape_type
 
using index_type = xindex_type_t< shape_type >
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 xindexed_stepper (xexpression_type *e, size_type offset, bool end=false) noexcept
 
reference operator* () const
 
void step (size_type dim, size_type n=1)
 
void step_back (size_type dim, size_type n=1)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
+

Detailed Description

+
template<class E, bool is_const>
+class xt::xindexed_stepper< E, is_const >
+

Definition at line 177 of file xiterator.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 190 of file xiterator.hpp.

+ +
+
+ +

◆ index_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::index_type = xindex_type_t<shape_type>
+
+ +

Definition at line 193 of file xiterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::pointer = std:: conditional_t<is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer>
+
+ +

Definition at line 187 of file xiterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::reference = std:: conditional_t<is_const, typename xexpression_type::const_reference, typename xexpression_type::reference>
+
+ +

Definition at line 185 of file xiterator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::self_type = xindexed_stepper<E, is_const>
+
+ +

Definition at line 181 of file xiterator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::shape_type = typename xexpression_type::shape_type
+
+ +

Definition at line 192 of file xiterator.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::size_type = typename xexpression_type::size_type
+
+ +

Definition at line 189 of file xiterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::value_type = typename xexpression_type::value_type
+
+ +

Definition at line 184 of file xiterator.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class E , bool is_const>
+ + + + +
using xt::xindexed_stepper< E, is_const >::xexpression_type = std::conditional_t<is_const, const E, E>
+
+ +

Definition at line 182 of file xiterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xindexed_stepper()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xindexed_stepper< C, is_const >::xindexed_stepper (xexpression_type * e,
size_type offset,
bool end = false 
)
+
+inlinenoexcept
+
+ +

Definition at line 975 of file xiterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + +
auto xt::xindexed_stepper< C, is_const >::operator* () const
+
+inline
+
+ +

Definition at line 988 of file xiterator.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + + +
void xt::xindexed_stepper< C, is_const >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 1012 of file xiterator.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + + +
void xt::xindexed_stepper< C, is_const >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 1021 of file xiterator.hpp.

+ +
+
+ +

◆ step()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xindexed_stepper< C, is_const >::step (size_type dim,
size_type n = 1 
)
+
+inline
+
+ +

Definition at line 994 of file xiterator.hpp.

+ +
+
+ +

◆ step_back()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xindexed_stepper< C, is_const >::step_back (size_type dim,
size_type n = 1 
)
+
+inline
+
+ +

Definition at line 1003 of file xiterator.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + +
void xt::xindexed_stepper< C, is_const >::to_begin ()
+
+inline
+
+ +

Definition at line 1030 of file xiterator.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class C , bool is_const>
+ + + + + +
+ + + + + + + + +
void xt::xindexed_stepper< C, is_const >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 1036 of file xiterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xiterable-members.html b/classxt_1_1xiterable-members.html new file mode 100644 index 000000000..bc3e77879 --- /dev/null +++ b/classxt_1_1xiterable-members.html @@ -0,0 +1,190 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xiterable< D > Member List
+
+
+ +

This is the complete list of members for xt::xiterable< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
base_type typedef (defined in xt::xiterable< D >)xt::xiterable< D >
begin() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin() noexcept -> layout_iterator< L >xt::xiterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< D >inline
begin() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
begin() const noexcept -> const_layout_iterator< L >xt::xiterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< D >inline
broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
cbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
cend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_reverse_broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_reverse_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_reverse_layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
const_reverse_linear_iterator typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
const_stepper typedef (defined in xt::xiterable< D >)xt::xiterable< D >
crbegin() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
crend() const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< D >inline
derived_type typedef (defined in xt::xiterable< D >)xt::xiterable< D >
end() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end() noexcept -> layout_iterator< L >xt::xiterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xiterable< D >inline
end() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
end() const noexcept -> const_layout_iterator< L >xt::xiterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xiterable< D >inline
get_begin(bool end_index) noexcept -> layout_iterator< L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_begin(const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_cbegin(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cbegin(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(bool end_index) const noexcept -> const_layout_iterator< L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_cend(const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inline
get_end(bool end_index) noexcept -> layout_iterator< L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_end(const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L > (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_shape() const (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >inlineprotected
get_stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
get_stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xiterable< D >)xt::xiterable< D >inline
inner_shape_type typedef (defined in xt::xiterable< D >)xt::xiterable< D >
iterable_types typedef (defined in xt::xconst_iterable< D >)xt::xconst_iterable< D >
iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
linear_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xiterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
rbegin() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
rend() noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend(const S &shape) noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend() noexcept -> reverse_layout_iterator< L >xt::xiterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
rend() const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend(const S &shape) const noexcept (defined in xt::xiterable< D >)xt::xiterable< D >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xiterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xiterable< D >inline
reverse_broadcast_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
reverse_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
reverse_layout_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
reverse_linear_iterator typedef (defined in xt::xiterable< D >)xt::xiterable< D >
stepper typedef (defined in xt::xiterable< D >)xt::xiterable< D >
+
+ + + + diff --git a/classxt_1_1xiterable.html b/classxt_1_1xiterable.html new file mode 100644 index 000000000..f121ff782 --- /dev/null +++ b/classxt_1_1xiterable.html @@ -0,0 +1,1932 @@ + + + + + + + +xtensor: xt::xiterable< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xiterable< D > Class Template Reference
+
+
+ +

Base class for multidimensional iterable expressions. + More...

+ +

#include <xiterable.hpp>

+
+Inheritance diagram for xt::xiterable< D >:
+
+
+ + +xt::xconst_iterable< D > +xt::xcontiguous_iterable< xarray_adaptor< EC, L, SC, Tag > > +xt::xcontiguous_iterable< xarray_container< EC, L, SC, Tag > > +xt::xcontiguous_iterable< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xcontiguous_iterable< xfixed_container< ET, S, L, SH, Tag > > +xt::xcontiguous_iterable< xtensor_adaptor< EC, N, L, Tag > > +xt::xcontiguous_iterable< xtensor_container< EC, N, L, Tag > > +xt::xcontiguous_iterable< xtensor_view< EC, N, L, Tag > > +xt::xoptional_assembly_base< xoptional_assembly< VE, FE > > +xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > > +xt::xcontiguous_iterable< D > +xt::xdynamic_view< CT, S, L, FST > +xt::xoptional_assembly_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using derived_type = D
 
using base_type = xconst_iterable< D >
 
using inner_shape_type = typename base_type::inner_shape_type
 
using stepper = typename base_type::stepper
 
using const_stepper = typename base_type::const_stepper
 
using linear_iterator = typename base_type::linear_iterator
 
using reverse_linear_iterator = typename base_type::reverse_linear_iterator
 
template<layout_type L>
using layout_iterator = typename base_type::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename base_type::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename base_type::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename base_type::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename base_type::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename base_type::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename base_type::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename base_type::template const_reverse_broadcast_iterator< S, L >
 
using iterator = typename base_type::iterator
 
using const_iterator = typename base_type::const_iterator
 
using reverse_iterator = typename base_type::reverse_iterator
 
using const_reverse_iterator = typename base_type::const_reverse_iterator
 
- Public Types inherited from xt::xconst_iterable< D >
using derived_type = D
 
using iterable_types = xiterable_inner_types< D >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
template<layout_type L>
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
template<layout_type L>
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
template<layout_type L>
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
template<layout_type L>
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
template<class S , layout_type L>
using broadcast_iterator = xiterator< stepper, S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<layout_type L = ::xt::layout_type::row_major>
layout_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
layout_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_layout_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_layout_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
Iterators
template<layout_type L>
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
Reverse iterators
template<layout_type L>
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
Broadcast iterators
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
- Public Member Functions inherited from xt::xconst_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L>
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
template<layout_type L, class S >
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Reverse broadcast iterators

template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto get_begin (bool end_index) noexcept -> layout_iterator< L >
 
template<layout_type L>
auto get_end (bool end_index) noexcept -> layout_iterator< L >
 
template<layout_type L, class S >
auto get_begin (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
template<layout_type L, class S >
auto get_end (const S &shape, bool end_index) noexcept -> broadcast_iterator< S, L >
 
template<class S >
auto get_stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xconst_iterable< D >
const inner_shape_type & get_shape () const
 
+

Detailed Description

+
template<class D>
+class xt::xiterable< D >

Base class for multidimensional iterable expressions.

+

The xiterable class defines the interface for multidimensional expressions that can be iterated.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xiterable provides the interface.
+
+
+ +

Definition at line 151 of file xiterable.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::base_type = xconst_iterable<D>
+
+ +

Definition at line 157 of file xiterable.hpp.

+ +
+
+ +

◆ broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xiterable< D >::broadcast_iterator = typename base_type::template broadcast_iterator<S, L>
+
+ +

Definition at line 176 of file xiterable.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xiterable< D >::const_broadcast_iterator = typename base_type::template const_broadcast_iterator<S, L>
+
+ +

Definition at line 178 of file xiterable.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::const_iterator = typename base_type::const_iterator
+
+ +

Definition at line 185 of file xiterable.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xiterable< D >::const_layout_iterator = typename base_type::template const_layout_iterator<L>
+
+ +

Definition at line 169 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xiterable< D >::const_reverse_broadcast_iterator = typename base_type::template const_reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 182 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::const_reverse_iterator = typename base_type::const_reverse_iterator
+
+ +

Definition at line 187 of file xiterable.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xiterable< D >::const_reverse_layout_iterator = typename base_type::template const_reverse_layout_iterator<L>
+
+ +

Definition at line 173 of file xiterable.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::const_stepper = typename base_type::const_stepper
+
+ +

Definition at line 161 of file xiterable.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::derived_type = D
+
+ +

Definition at line 155 of file xiterable.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 158 of file xiterable.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::iterator = typename base_type::iterator
+
+ +

Definition at line 184 of file xiterable.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xiterable< D >::layout_iterator = typename base_type::template layout_iterator<L>
+
+ +

Definition at line 167 of file xiterable.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::linear_iterator = typename base_type::linear_iterator
+
+ +

Definition at line 163 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xiterable< D >::reverse_broadcast_iterator = typename base_type::template reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 180 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::reverse_iterator = typename base_type::reverse_iterator
+
+ +

Definition at line 186 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xiterable< D >::reverse_layout_iterator = typename base_type::template reverse_layout_iterator<L>
+
+ +

Definition at line 171 of file xiterable.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::reverse_linear_iterator = typename base_type::reverse_linear_iterator
+
+ +

Definition at line 164 of file xiterable.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xiterable< D >::stepper = typename base_type::stepper
+
+ +

Definition at line 160 of file xiterable.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::begin () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 464 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::begin () -> layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 757 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::begin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 571 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::begin (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 818 of file xiterable.hpp.

+ +
+
+ +

◆ end() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::end () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 476 of file xiterable.hpp.

+ +
+
+ +

◆ end() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::end () -> layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 769 of file xiterable.hpp.

+ +
+
+ +

◆ end() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::end (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 585 of file xiterable.hpp.

+ +
+
+ +

◆ end() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::end (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 832 of file xiterable.hpp.

+ +
+
+ +

◆ get_begin() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::get_begin (bool end_index) -> layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Definition at line 875 of file xiterable.hpp.

+ +
+
+ +

◆ get_begin() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xiterable< D >::get_begin (const S & shape,
bool end_index 
) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 889 of file xiterable.hpp.

+ +
+
+ +

◆ get_end() [1/2]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::get_end (bool end_index) -> layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Definition at line 882 of file xiterable.hpp.

+ +
+
+ +

◆ get_end() [2/2]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xiterable< D >::get_end (const S & shape,
bool end_index 
) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 896 of file xiterable.hpp.

+ +
+
+ +

◆ get_stepper_begin() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::get_stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 917 of file xiterable.hpp.

+ +
+
+ +

◆ get_stepper_begin() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::get_stepper_begin (const S & shape) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 903 of file xiterable.hpp.

+ +
+
+ +

◆ get_stepper_end() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xiterable< D >::get_stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 924 of file xiterable.hpp.

+ +
+
+ +

◆ get_stepper_end() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xiterable< D >::get_stepper_end (const S & shape,
layout_type l 
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 910 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::rbegin () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 516 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::rbegin () -> reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 786 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::rbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 633 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::rbegin (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 852 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::rend () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 528 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::rend () -> reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 798 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::rend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 648 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::rend (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 866 of file xiterable.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterable.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xiterable.js b/classxt_1_1xiterable.js new file mode 100644 index 000000000..7e7ef3467 --- /dev/null +++ b/classxt_1_1xiterable.js @@ -0,0 +1,19 @@ +var classxt_1_1xiterable = +[ + [ "begin", "classxt_1_1xiterable.html#a6ab0e76125fa876b97b53a813a3d4713", null ], + [ "begin", "classxt_1_1xiterable.html#aa92f6e2edb798a381d131475e463bf31", null ], + [ "begin", "classxt_1_1xiterable.html#a095cfd6ccf0bb5696073af2c8536f8e9", null ], + [ "begin", "classxt_1_1xiterable.html#a4123b26a873b7ed680b13ef557cd3c3c", null ], + [ "end", "classxt_1_1xiterable.html#a74906f6a3242a5a2b001e6a534007589", null ], + [ "end", "classxt_1_1xiterable.html#a76c73882716f9e9915dab847639db2da", null ], + [ "end", "classxt_1_1xiterable.html#a8ca771d1dda2e42203cfdaaebfeba601", null ], + [ "end", "classxt_1_1xiterable.html#a9b56f37894a5055ffe49a46c857b7111", null ], + [ "rbegin", "classxt_1_1xiterable.html#a52be134ecb3d529fddf7e8ba888a59a0", null ], + [ "rbegin", "classxt_1_1xiterable.html#a7bc86e4fb6f2f55c74e33836a32739eb", null ], + [ "rbegin", "classxt_1_1xiterable.html#a3671f77843974f6962cd425318c0ef00", null ], + [ "rbegin", "classxt_1_1xiterable.html#a66bef4e8cff9bf584e71f0ac7ba828ad", null ], + [ "rend", "classxt_1_1xiterable.html#ade7cb42ea93353d00bbb739743be090d", null ], + [ "rend", "classxt_1_1xiterable.html#af04d43d598e8933225287e044c12d4c6", null ], + [ "rend", "classxt_1_1xiterable.html#a634cb122a80a40c5c38ff2b4527e3f26", null ], + [ "rend", "classxt_1_1xiterable.html#a92e4a1b212968fcc8a8240be122fe8e4", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xiterable.png b/classxt_1_1xiterable.png new file mode 100644 index 0000000000000000000000000000000000000000..9b31718940ce810164a3c5803b1dfe8a129138b9 GIT binary patch literal 11060 zcmeHtdstIfy1uQ`p=v8_skMrbX$??I3s&V0Nm~^fRIv3z0Rvh^t4Jae5<(zpWh$aV z#wbP%7fS}CMG^%ekN{CpF~yKZgaBbDBA5#y2@sM1xt+bSxA{$P=lq^C=RD7u{m&wM zC!4+3`rhw-zxP`On`5G0oWFGboH=t|M18dGlR0zd;^xeGcI^4N;2HJn?M85L-@I|_ zdZ*I~of$P{Qg5+>SFSkpI{m)-#*G```7N}rOW?J6xKCoX%mF{o9zoAC9?qHbwg9#6 zgRNQ5=m5=j*}Z4Kl88R$@Uxsgtp!o2hLTt2A79oV)^L$_L7QQ(f2ZS`TGe}{Y(8TTGs}($L4cSbRg;K?W}S! z(ne_6libaTQ1Grtx**#Kg?^~FQ5fijU61RpZWq-icnPDxkDtcz;3XTFc?AJ~aD2C; z_F?Ti9qTS!cx0V|z542_IqXQ6=bo!DP@Jimn>UYXmU@8aT9ZZfp>KhYU$}7o{G*>A z-n@C``^>x}N1lPMzVMy;!iAk*KtG$i2K?6R7bG8iaB~jy)jxlZ`)~a!R;kfwE|-Ic z_p{GsWM`AfWVQ-C_OAh_f=L2DmOq^g=w#Eco$SR)be>aEr9FA@y5;6g1yT$iTMmGW z+{YvhbXU8uYS>_)DNBg$oBezrUS=da?edI%JIOjZZTYfmKexI+ozye3)MMkp$^y%z z&2~$BM*76485((%t|(Ju&gXy+;cHIDUG@l~?S?&5{>TW^Hd=^Brx&4gl-7Rc6dS4?c}(?4Eu z8jQ&L>B_LL8jkB9^-B!me5c<$`Bqb^_+V8)=+qKrSvK@e&Wp1UgZ|9e558Wc#b&dG zKgHdD;Uo(@vccp0^I(X;oM1d05qE>J@W^O4P-?*CN1&k~5nHO8wnH&h1I5KloBjoH z@dpF*2J&T~_MHtN1~&eQe2KE02fqw2iTnfTX$j)7;KVze4Ef>yYF350b>9^@Q6k#u zf6{@Q3ZY~Z&lu{3A4cCiYsl|K0^W3_W)C@AzCz+lR9 zhbs0-Ggky3bds(1>8qJpVX=3NOH?(cd-=Onr`Sx-{6uu_zVldiLNc#JM`sO$fBS^3 z{Xjo_m>~kxo`1r}KNA=GH#khH-uW3eSyN8qb4;==wM3x&n&;=pF|T$~8`|5@R;?ev z1Q@Ut>b;X)z1qa)_jnyusM@-u=VG~le6J-0mDB^>fU4(>4q)UPMm|oHJ;oUOMq4WG zq`A{eT3RNRe$_6mt7k9{XOdK0>>b~tUsG$<4un|D{6~4SAuCfgjB0u7gPO|dT4EVpY;v>3EE)ecldGoqIQVlM2q9cLW4wGFxkK+f3Y{qzLR8vta-(>zq%i)F$1yA|l+#tu0GRe+>3#-ArFzOb^i(T+GDrx*^7)97-FBYJ{D9rr~2lC?t9m?y> z4Ya5E>zBvgpM~+8P^LccuSmat5N5wY6^|;8VdBqLolS}Neir#q@G_dVm9~)yCflWG z+Wo5E809YmTWHOXr6Jf5U3XV3NwIo6tyz-UE5(k@B5>T09D@S!D8P{Ab{ zOa-Trj_!;&YPt0m-3`-e>kxbdPIQYG53tyXG3do#w3!WDMTKi(KG*oC@QQSK0yQTX z@2LqLNpI}#CU{$v-*g8z%LoyQv1 zr`pYD4kmH;U2*Am%@K~v57Adx$G!>UCW_39j{>8K6rU?t^If$c-CNk1y(k>WATa}>-tEX8vA7Pj!crK;Ur&t$goS?F_T>t&OV8%O=q0~ z6q?Q^uIrRz6ylgHoGczcBS&u38gmrvg!Vj{CTpO7M|~5Hly8-!#mEu2m3s}JYPNsu z)z{qFp&B7rvwj5OmLEXK&-^@K?7+1?HqLrS)%oE1_))b!mzQ+4rO%xihP>CN#yDO= zYj!ey0sP&AtS4=?oeLh$q;ZX3py$1^M)$+zr?jSaET3m$G#GS84C$$MU(xiS+)a0!+XIVq+VH{;}nBdag6$R`mvg z(SCDFl0Ks*&GeE?%UOG{GZ@ymmq>nSFOhNzhdhFk7oa8(kn%dKrVRs*&p|oVo;y)v zU>`yq9$Fqn8(sumTp&-DgWouu z4588!&?h=q)%kVY+-0@MKv7fECYug(&gdwi4NIpFjfOwSd^mKdy4ry3++UN3ypPF^ z*9{=m$_BznW6f|kj!T!joAnvq!r2Vq{wt`Q&Nh6*C={s)<;uOoU5m7Xuy;2Rtb&YN zZEAhEO1VK@=mmk=y^`-2#${M&*;{1|jWTs0$-uhS;(T($>={J(G-9;u6rsy*c{7{6 z1{K&4A3ib>eB1uqq&Y-U0g9l47mF}qcVd!f+UI4Tx69T~WE~2UVwtiX4W0XPA7h5Q zyEyrjT~#tetK!K5UqF8faUP%+=>^Uyjr=7blP1TshVeGFFuugnub6I<;?neuiT=sx zLohbZ^+ag-^oKZ=n`b0}uwEZ6E%rkN#&o5uUP5KKDkt{q8e4UExp<#o@}O&yYDnn_ za;>XYncu@iB3wysGW%V}Cpf9BC2W=%Nx1x`+!B?bAvX1P;Mq17AS1pPq8nJpU8)Hm z7!-6|vX*4|^MDAyjH#)6()PxpX1*@l)+V0r3Ty+4j3rh#wnVr1JKb`y8iBH|R^lb( z+l8gkH1WhK6|YIDpHGJeAr8Zzij9hw0JARwg)cfG+?P51SPg5`D6sl&Eka2Rwy%4$fRx<*;lAf7>fjF>-pwZ34ba3&Km=*@Gr7tn^c zLvUOMq|ZmUUhrQ%(l}%*b69m({dTy%NMd}}jmVlR}Azm2w>8OW_sl+#37^GVbD)-U}-jddrP6D8yC7pyWvGTi3wwNGkXTsmhd%wrm*|+5KG_ zEWH;GSsWJ6$>yW%xNkd_p4(&Z-wX2O&~9{8V}!*_R20vG@+2m#J|@}RUO+r=dJ{U&^<w z*GXaiZ?MW3>g~(R^22O|C7H;%hV@*2dx~D3d#fXYU0>t5GndsSHr>mtQJ@bYu#{V- z+FU_*Lar;8)eMwik5CLWon zi*#B=Ei?JiG#5yyVmY{q#an5%zfi{Vp$b{xG0TqS|7OR3(&)X`|A!qn>~2vZsQ%fz z&VY+E-KATvMe}zR(aGw0r-x5Lj?{IC5?j-83|Gc&j0G;do9qt?r2$au>Sd1bA$G@& zpNKHsX*y}_$sTUIX8cI{F}1CR-RcZxoc4Dnx$ynMSwq_PrWX#Wj%Nm1j)WoyQYC4I zQaGg&5|?!kBD@I6S}tpkkr%N$;yd!A4Mmot{Ed&os2K*iwIPl`)+}WC_Hd`W)C~mr zLV>ju&VlR#%Q^xYj|nn(nJzV?rE@_;3{j*$>?AEWxbT-4$35^Kwxo@-g`rvDL5<@v z!kiz^+8f&>X{v$!i-I@mjaL+YG*FQWi3OO93DY%9&)2|ye%KZA3DO&Y>qujN%WHtS zlkyY$xdD1cZr!wA9caS*IZ5o0ub97Y`l}gSn)q3E$ zilj{YqM&^{7LTSzOQZTq>zXoXwgPZDNl`e|1ctJk<|W)Wea{&2saU?|05h*0ENyIG z>Ih^IVT(_R^%HmaIggYujJ{hCMQi>5BDs-h%k&3cLfDd-FDM!Vl=~~dAAzXb2Bys( zHEoaIZ;TB;kw?Wb&}(T;_}}2v{XP#)`BeT)KV#R?;l=PS$c2rh!=JiUzcLcmTh72a zQ<DN)NKS(o-xy+g{i$N1+ zKg-}~JA)9LbZ-*F8_Q^Pb)Zi&Oj{#C`zeaJ@zkV5O=mR#W(AnZ^+!r`2fe5YY@ose zxF{Fhs7?Y6a`Ir4^LfJdYC4l|(PZB=AEhh>M6j=YJw|a=GVyucnVe61h+ifMK#5s^ zQDrN?xwI|3-70v=hTysEQ`pZoZq0U+RaNMU2J zT@S*m@g(6XymD`K!JAqkc+Cajo}b}_!7g-Z1ctBTFFiKH9YwA0{y#i6q_^j%|svCF^EPC3{(rq zwB{&~!Cs8lAdr{f(+v(YM*-er?X0CBfaJ&T8GE1=cp(04%9~?r?QT%NATIU4w}tfk z#Pr8{Sk84gu&D|5Hdnno^|hl=P5V1-&(hzZ=^tp^+^H_74WCMOfq78Id2ohQGt5Yp z2Yf{9*4Dw&>MfR4BJT8 zN+;8eS5;$!lL6#jft&y&P_!^bkF%T|T%N_7tj)|lYSPFG?WY%#uWM@zIxKF?yATtE zEvLz(>13bSYAIe}<~w;qor~H71KVo+0oSIGp;r{@DE@Y5tGY+=niX60y-T?ac;ZVI zO#daXyN^-Q(wA|U>ErX+E9L{NPkF_Y(_;~}2JFe!muBMBm zX+qt|sDDc#X7#Oo|axSEun=wySgAQ$fZ@c#PljBD1 zs#|-{mzxbyz5cM|@z43{g-F6@{AC}}T%q1C7nCHf_VG2*G^+!r=Hy-%H<6&IKcS!U za?0bglF|^(@8?V~y@b0fw&p-DZ79}@T^x6*XTLAGy`Wapl3lY+I68cF{8Eqmke{)R z8~}B3pbCGS4>~fleeuGz8DJd!pObZ)aIvU~dz?IKksu2VIs~{0QGj77TsUItqnaON z`IqK|Pg(~TBJ&HotWVB#ooe3)7sh~d-Qo-8PnA2UA1ygl(5CB&D@7s^%Tag;Jg)=# zFtd%~XdKc=t>eaBsr3e4y<-H?TH}mBr-zT@G%4CppofJG!q?#@nKgcZLe(5oM$Us* zONnO~*F7UG7Y)b2g$b*{#R`ERA){pE)I*R7;V;4DYRLCQOXyRr!xA<=-9#T*On)%3fRmYoy4nWfRe9esnXSk4W4NMJ@{dUx`8^ADjwep+oAE? zV_`C_1|*pW`uRjW_BCWLx2!^n^LJu;j@qlh(k-&_{vDA=>y$(fSRK(8l_aw&uR{4c zu>Zh8hZGhRtB@N?`(lMN#jGnyT7Vy7y1?u{X+0msFX!?`lq-iD*((xgHPtWU753zb z&#N~`msc2a$=}Mp8l5N{x2kL!{d_`3BrW_q5CrXDhWlEoe4m!{UByCsG1VMpaWGG~ zLm6;A!FG{s*viYP7dRhqDA$o1rMUGSXnlR-cu3fkFHGka*9Rv;#Z=215Y(nU&wh`l z(_mNWK1f0vhvOhvL21}iz<^K?`nkZ?Ao z=d4xw$9C83g?88YlFN)|yOJX8Pd7oJCSHVgA(Vn?DJ%!hqXH{XP(QyQm#!{4 zZL8&#s%-n)$8}F}^os=&_Jpl`c2f>F{ujH_Wxip_+(P|DA$)ojxD@8Jf410Po!(hx zjhQWLs3$R}?-94zOc|czQ^bIQUF{dEb8(6le3%D7agKN8f*sx!zz;_GPkScrYNP4! zyk&70Ho3Dzq?EG7mrOE@s!WY%?_(zb5jTQ1Ld~ewL|p!NG2a9QvwD`d78m0HGYX#ya01zV7+rupIxnXSOiYHfn`0e#+ydB@cDYM z*Oh6#Zg>&AVBW(R z7jy|C)6m-$ZSu5qnUEY|Z=}GUg#4{*o0bx1^-nLuAN-8J8cd=kVE(fn0ps?$<$Fz{ z2+x{Bs0kg^qv4*=r*+w{zL`dEh7*}hP%5l5yargx^{5FGlv8CjvppB6{qlRe%6`^G z^r-~5{&0H!$F_$3r*f#HK>f42!(HNq@)E8A-~IP`Oru(;E{-C5vQh6ql7q&L3{4-L&=(M+x4n5rxCb&hiu0Y>7 zbmo?3Xu8y8L!Ted^n8125L(By_WvluizT{O8W;EG<;rkuO_Bq+l4RWgc1lhjLJWYL z(j096lln$Kv}!8TXt_@T)lASj%Z~~?emTs$6{DRzsCX0VFX3Tq%-uoV z*1`P>;Vy%B+0g6lZ^StDAM#FKZ5?Z-AaAvPlT2!Ty4!IvB)4-Pzv@Jo;6fKDX75Wp zdMXH<_f>aB6W>kxzMUkl!F6#!PQPeIgT_xZE%6UjUq7hoX`~o)0^8hmZX3A2bq;EM L%sTdmJCFPa6FCXf literal 0 HcmV?d00001 diff --git a/classxt_1_1xiterator-members.html b/classxt_1_1xiterator-members.html new file mode 100644 index 000000000..fa85fa5ed --- /dev/null +++ b/classxt_1_1xiterator-members.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xiterator< St, S, L > Member List
+
+
+ +

This is the complete list of members for xt::xiterator< St, S, L >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
equal(const xiterator &rhs) const (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
index_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
iterator_category typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
less_than(const xiterator &rhs) const (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator*() const (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator++() (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator+=(difference_type n) (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator-(const self_type &rhs) const (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator--() (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator-=(difference_type n) (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
operator->() const (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
pointer typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
private_base typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
reference typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
self_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
shape_param_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
shape_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
size_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
stepper_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
value_type typedef (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
xiterator()=default (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >
xiterator(St st, shape_param_type shape, bool end_index) (defined in xt::xiterator< St, S, L >)xt::xiterator< St, S, L >inline
+
+ + + + diff --git a/classxt_1_1xiterator.html b/classxt_1_1xiterator.html new file mode 100644 index 000000000..1ddd020d1 --- /dev/null +++ b/classxt_1_1xiterator.html @@ -0,0 +1,704 @@ + + + + + + + +xtensor: xt::xiterator< St, S, L > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xiterator< St, S, L > Class Template Reference
+
+
+
+Inheritance diagram for xt::xiterator< St, S, L >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xiterator< St, S, L >
 
using stepper_type = St
 
using value_type = typename stepper_type::value_type
 
using reference = typename stepper_type::reference
 
using pointer = typename stepper_type::pointer
 
using difference_type = typename stepper_type::difference_type
 
using size_type = typename stepper_type::size_type
 
using iterator_category = std::random_access_iterator_tag
 
using private_base = detail::shape_storage< S >
 
using shape_type = typename private_base::shape_type
 
using shape_param_type = typename private_base::param_type
 
using index_type = xindex_type_t< shape_type >
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xiterator (St st, shape_param_type shape, bool end_index)
 
self_typeoperator++ ()
 
self_typeoperator-- ()
 
self_typeoperator+= (difference_type n)
 
self_typeoperator-= (difference_type n)
 
difference_type operator- (const self_type &rhs) const
 
reference operator* () const
 
pointer operator-> () const
 
bool equal (const xiterator &rhs) const
 
bool less_than (const xiterator &rhs) const
 
+

Detailed Description

+
template<class St, class S, layout_type L>
+class xt::xiterator< St, S, L >
+

Definition at line 287 of file xiterator.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::difference_type = typename stepper_type::difference_type
+
+ +

Definition at line 303 of file xiterator.hpp.

+ +
+
+ +

◆ index_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::index_type = xindex_type_t<shape_type>
+
+ +

Definition at line 310 of file xiterator.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::iterator_category = std::random_access_iterator_tag
+
+ +

Definition at line 305 of file xiterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::pointer = typename stepper_type::pointer
+
+ +

Definition at line 302 of file xiterator.hpp.

+ +
+
+ +

◆ private_base

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::private_base = detail::shape_storage<S>
+
+ +

Definition at line 307 of file xiterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::reference = typename stepper_type::reference
+
+ +

Definition at line 301 of file xiterator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::self_type = xiterator<St, S, L>
+
+ +

Definition at line 297 of file xiterator.hpp.

+ +
+
+ +

◆ shape_param_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::shape_param_type = typename private_base::param_type
+
+ +

Definition at line 309 of file xiterator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::shape_type = typename private_base::shape_type
+
+ +

Definition at line 308 of file xiterator.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::size_type = typename stepper_type::size_type
+
+ +

Definition at line 304 of file xiterator.hpp.

+ +
+
+ +

◆ stepper_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::stepper_type = St
+
+ +

Definition at line 299 of file xiterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + +
using xt::xiterator< St, S, L >::value_type = typename stepper_type::value_type
+
+ +

Definition at line 300 of file xiterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xiterator()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xiterator< St, S, L >::xiterator (St st,
shape_param_type shape,
bool end_index 
)
+
+inline
+
+ +

Definition at line 1097 of file xiterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ equal()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + + +
bool xt::xiterator< St, S, L >::equal (const xiterator< St, S, L > & rhs) const
+
+inline
+
+ +

Definition at line 1197 of file xiterator.hpp.

+ +
+
+ +

◆ less_than()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + + +
bool xt::xiterator< St, S, L >::less_than (const xiterator< St, S, L > & rhs) const
+
+inline
+
+ +

Definition at line 1204 of file xiterator.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterator< St, S, L >::operator* () const
+
+inline
+
+ +

Definition at line 1185 of file xiterator.hpp.

+ +
+
+ +

◆ operator++()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterator< St, S, L >::operator++ ()
+
+inline
+
+ +

Definition at line 1133 of file xiterator.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xiterator< St, S, L >::operator+= (difference_type n)
+
+inline
+
+ +

Definition at line 1149 of file xiterator.hpp.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xiterator< St, S, L >::operator- (const self_typerhs) const
+
+inline
+
+ +

Definition at line 1179 of file xiterator.hpp.

+ +
+
+ +

◆ operator--()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterator< St, S, L >::operator-- ()
+
+inline
+
+ +

Definition at line 1141 of file xiterator.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xiterator< St, S, L >::operator-= (difference_type n)
+
+inline
+
+ +

Definition at line 1164 of file xiterator.hpp.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class St , class S , layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterator< St, S, L >::operator-> () const
+
+inline
+
+ +

Definition at line 1191 of file xiterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xiterator.png b/classxt_1_1xiterator.png new file mode 100644 index 0000000000000000000000000000000000000000..7eca44e82bcc25d8c0e01504be34eda985c6bca3 GIT binary patch literal 2340 zcmcImeLRzU8y|Ag8rIO>3p_6Q4 zn};Q;Q;OuEQM=95j+N$~ybd$Yz1#Dg=RAKre?Ipg_wVIT&v^l+7@Q6OHSp4m&|{q&vQ zzK)LDQ~#{We@M{P{^Qi!ro&j26%&WuP|V!cJBcc0`eRXrOq?ub9cCxv9I|CcIUci+ zu>wi>?w)4iu&j-Z)WzJn9&rFdeLc7~kl6{O=mu*o#&8*k#a&~q&LCT%yxToI1RA&9 z&R`gwcJpQZ%>jXpIpGFNYyRitQ9N3G%?mgwF!ud6)2TGr+WlUwEH4rlBI~3leX4-OZBht>T=!QOgUh5u^6-`)@Mnxc`kRA zGtx8@D?)aGEehjmXAv254vi^<^4$GcsMtDON}vQdGFEH^do1Ir+iZ^<@{x^8lp*q| zvCWFGexIYCS;v3>);cv?`G(TfJ{ua{QLAt9#u3W`@aZykK-ulsoNY0@ki8Y&rxzUP zs?evC4GJO!k5snGblRRCbpO^cI`^21;;fXkeLj_B@bP_C5gsEtQr>Irx^=Z=zkKZ{ zX{fRJ$e{~K&a;!30~s^)gWR%vLkR{GM;ktzRaA&vDtW8CRS_gE zQT28E@=3T8_s8;|M4n6LJimCNk;qKX+t8kv(7NSJy96I=s6N6}uK%JBQOX@Ik*$6$ z^j7n7$exjGKApK}Fq06P=DTI_;R42}-S9ib@F)4{K)6qfiS5M%fTeK2-^Q;|v)PO2tHG`8Ab zf!O+54)PWR_YLt&c7LdG;Us=wWv zMwU-19J7U!ue*Wx_m91t3l@tjU7jYy6cy(tfsYr96i*-P^abvnn&=4>b8KsbB(vif zx$wn3vFMQ*+R_Yavc_NmvBJx$r}LeYQKU=sWkTJNTj*sRmMk%nV)Of^R|S!jkwoIr z`X}LDgA($iB#>P`)^h$JI!{m+S0o-AvwufgKWzqPg$l);225^P-dUw|f0D&7FYSJ) z5h^w~6a|llxNxPPC!p>z;r9VAPg8^Pvcv6WdTH%HpoVGT$!G=U0?sSn#wHJvihgV)J4{ekc87tI zn6(Dmy>O{CtRqDaR)~J6Sv|eD z@6Od$wjmHEdLFs|6cvX^XC6Se7_aRG;<%Ln{tzf6V!U?*_o0D`Yfm2R} z8;{?VS%30L7)_0_CR`@mdP@|0)Lo7)k$5poWg z*tb1Sk1@KfzElk4fep=I_eaKPzx==4LU|#uzU@L4@7Y-_#$gu}GnZpg#}^{B8wTUF^blI%Tb>}a zcOY(^k1$$`c;n4ov=kxx7@I-S(r%#9l3oZP3zK{J6vU5~ZJQvo^s)r0W@UCj{!)Xj z`Wu$%4TYGOf>?_1vlQv-A?$~BmqI+I9*`jnoHBu9T({HM$ku9XV4&j?8KS#F)0ziG zp0BZifxEjk*_`-ek;ZwO#s&s@9p*R>BebB5pZ3MpTxjl#U69+{x5Z4eH7|vp9|4bl zWdg5YmcK=Sa@&D$x~lo^dH+dTOSAg_nl_g*anONWz+rFeXoyRS-jgf9aKL^ks11E+ z2ASyce%wJ*wQ#?CctD@;x&*FUPDB^~JaMl(d`3tS4|3`F%SEM&Phq1Qzo)Kz6{{X~ zHz!(%V}S29C9cYetOkvub>f2s5_~=Efbe-wNUfB%1B>aEW-eE!?|ou z1LN0(#bE1$N2`bAFnuk~cP~EdL zG|hLH^_8gNER&1I3;tD_4;qjFcjjFWfyQ_49;|O;6XyfJT$~HUjRKzXOW``lEeA#a l!v(%{&~HbRDb!qX6BZIf12iXm-xCD%U_AXi*t^2d{R!RQQ|$l% literal 0 HcmV?d00001 diff --git a/classxt_1_1xiterator__adaptor-members.html b/classxt_1_1xiterator__adaptor-members.html new file mode 100644 index 000000000..a039eea55 --- /dev/null +++ b/classxt_1_1xiterator__adaptor-members.html @@ -0,0 +1,129 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xiterator_adaptor< I, CI > Member List
+
+
+ +

This is the complete list of members for xt::xiterator_adaptor< I, CI >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
base_type typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
const_iterator typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
data() noexcept (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
data() const noexcept (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
iterator typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
operator=(const self_type &)=default (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
operator=(self_type &&)=default (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
operator=(const temporary_type &rhs) (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
operator=(temporary_type &&rhs) (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
resize(size_type size) (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
self_type typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
size() const noexcept (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
size_type typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
swap(self_type &rhs) noexcept (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
temporary_type typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
value_type typedef (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
xiterator_adaptor()=default (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
xiterator_adaptor(I it, CI cit, size_type size) (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >inline
xiterator_adaptor(const self_type &)=default (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
xiterator_adaptor(self_type &&)=default (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
~xiterator_adaptor()=default (defined in xt::xiterator_adaptor< I, CI >)xt::xiterator_adaptor< I, CI >
+
+ + + + diff --git a/classxt_1_1xiterator__adaptor.html b/classxt_1_1xiterator__adaptor.html new file mode 100644 index 000000000..192bef08a --- /dev/null +++ b/classxt_1_1xiterator__adaptor.html @@ -0,0 +1,666 @@ + + + + + + + +xtensor: xt::xiterator_adaptor< I, CI > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xiterator_adaptor< I, CI > Class Template Reference
+
+
+
+Inheritance diagram for xt::xiterator_adaptor< I, CI >:
+
+
+ + +xt::xbuffer_adaptor_base< xiterator_adaptor< I, CI > > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xiterator_adaptor< I, CI >
 
using base_type = xbuffer_adaptor_base< self_type >
 
using value_type = typename base_type::value_type
 
using allocator_type = std::allocator< value_type >
 
using size_type = typename base_type::size_type
 
using iterator = typename base_type::iterator
 
using const_iterator = typename base_type::const_iterator
 
using temporary_type = uvector< value_type, allocator_type >
 
- Public Types inherited from xt::xbuffer_adaptor_base< xiterator_adaptor< I, CI > >
using self_type = xbuffer_adaptor_base< xiterator_adaptor< I, CI > >
 
using derived_type = xiterator_adaptor< I, CI >
 
using inner_types = buffer_inner_types< xiterator_adaptor< I, CI > >
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename inner_types::pointer
 
using const_pointer = typename inner_types::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename inner_types::difference_type
 
using iterator = typename inner_types::iterator
 
using const_iterator = typename inner_types::const_iterator
 
using reverse_iterator = typename inner_types::reverse_iterator
 
using const_reverse_iterator = typename inner_types::const_reverse_iterator
 
using index_type = typename inner_types::index_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xiterator_adaptor (I it, CI cit, size_type size)
 
xiterator_adaptor (const self_type &)=default
 
+xiterator_adaptoroperator= (const self_type &)=default
 
xiterator_adaptor (self_type &&)=default
 
+xiterator_adaptoroperator= (self_type &&)=default
 
xiterator_adaptoroperator= (const temporary_type &rhs)
 
xiterator_adaptoroperator= (temporary_type &&rhs)
 
size_type size () const noexcept
 
void resize (size_type size)
 
iterator data () noexcept
 
const_iterator data () const noexcept
 
void swap (self_type &rhs) noexcept
 
- Public Member Functions inherited from xt::xbuffer_adaptor_base< xiterator_adaptor< I, CI > >
bool empty () const noexcept
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
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
 
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xbuffer_adaptor_base< xiterator_adaptor< I, CI > >
xbuffer_adaptor_base (const self_type &)=default
 
xbuffer_adaptor_base (self_type &&)=default
 
+self_typeoperator= (const self_type &)=default
 
+self_typeoperator= (self_type &&)=default
 
+

Detailed Description

+
template<class I, class CI>
+class xt::xiterator_adaptor< I, CI >
+

Definition at line 441 of file xbuffer_adaptor.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::allocator_type = std::allocator<value_type>
+
+ +

Definition at line 448 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::base_type = xbuffer_adaptor_base<self_type>
+
+ +

Definition at line 446 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::const_iterator = typename base_type::const_iterator
+
+ +

Definition at line 451 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::iterator = typename base_type::iterator
+
+ +

Definition at line 450 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::self_type = xiterator_adaptor<I, CI>
+
+ +

Definition at line 445 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::size_type = typename base_type::size_type
+
+ +

Definition at line 449 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::temporary_type = uvector<value_type, allocator_type>
+
+ +

Definition at line 452 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class I , class CI >
+ + + + +
using xt::xiterator_adaptor< I, CI >::value_type = typename base_type::value_type
+
+ +

Definition at line 447 of file xbuffer_adaptor.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xiterator_adaptor()

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xiterator_adaptor< I, CI >::xiterator_adaptor (it,
CI cit,
size_type size 
)
+
+inline
+
+ +

Definition at line 1077 of file xbuffer_adaptor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ data() [1/2]

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + +
auto xt::xiterator_adaptor< I, CI >::data () const
+
+inlinenoexcept
+
+ +

Definition at line 1120 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + +
auto xt::xiterator_adaptor< I, CI >::data ()
+
+inlinenoexcept
+
+ +

Definition at line 1114 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + + +
auto xt::xiterator_adaptor< I, CI >::operator= (const temporary_typerhs)
+
+inline
+
+ +

Definition at line 1085 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + + +
auto xt::xiterator_adaptor< I, CI >::operator= (temporary_type && rhs)
+
+inline
+
+ +

Definition at line 1093 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ resize()

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + + +
void xt::xiterator_adaptor< I, CI >::resize (size_type size)
+
+inline
+
+ +

Definition at line 1105 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + +
auto xt::xiterator_adaptor< I, CI >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1099 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ swap()

+ +
+
+
+template<class I , class CI >
+ + + + + +
+ + + + + + + + +
void xt::xiterator_adaptor< I, CI >::swap (self_typerhs)
+
+inlinenoexcept
+
+ +

Definition at line 1126 of file xbuffer_adaptor.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xiterator__adaptor.png b/classxt_1_1xiterator__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..7a494ea814cd6a45bbf79dd480a33dc3fa0e32ae GIT binary patch literal 1041 zcmeAS@N?(olHy`uVBq!ia0y~yV6+Fa12~w0WW?I0MLlb%&6BQA{v25Ow)Xe@rFZ?^<=#Gf{w~|sc#D}twf(v6w#zQ8OWu29 z&ry>N{XzMAlxFwZPhYO`cGH>tN~L{I&-@LEIb_tl>n^i8He|^46`5Km-J6mkG`R>-5W@8mtmTW)Sck$nZf2F)_e@eGq z`#3GX@Zx=$)ogL=6W^cj-_3LJbGha0s}ajzZ%;1RU1xoNoALiy7w)!&|JkW}J67BE z)A6XkTW=h{xhLbFsr0Lwo9|k*E_JDw&nabl{(Jsv@t})s#`WQwUcRfJ{i}M@|IoyK zyVt*V-&vQPZoPH+svRMFqW0DvE&h3R(r%q4e}C=nG~&J3`?tpI?X)*$VxG5_zpJ10 zCCaaD+7kXE-P!5I{}%2)KJA|0tiv&U)gG7lE9|5_S3iEar|6$&(42B$=>LaD0W40= zoxN|s;|z>10mcXBpIIj`w0P7rB<|Z6q~I{+3%kIxW%{g4ES~iY_KI&Aj{xbyOY#nL zfD-C|smlHN^`Dofs^-!u0wTtnkDSqQ_+@O|J^A06Gmn7iU*}u?&;GoAhOErw{-=9(zP?vk^F8&1w#zkOYvpX=4B zSI+*L`|Hft^1MCQ51-H8&;DoUuk5sMV(U_W-TeMD^`9JTTK>Y=Q(q3R|NQ^i{FyhO v|L_I|MV&M#82nH}#=L&%lu1*9yjt=_k_3*s=4!47W?lwQS3j3^P6 + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xiterator_owner_adaptor< C, IG > Member List
+
+
+ +

This is the complete list of members for xt::xiterator_owner_adaptor< C, IG >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
base_type typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
const_iterator typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
data() noexcept (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
data() const noexcept (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
iterator typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
operator=(const self_type &) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
operator=(self_type &&) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
operator=(const temporary_type &rhs) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
operator=(temporary_type &&rhs) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
resize(size_type size) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
self_type typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
size() const noexcept (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
size_type typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
swap(self_type &rhs) noexcept (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
temporary_type typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
value_type typedef (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
xiterator_owner_adaptor(C &&c) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
xiterator_owner_adaptor(const self_type &) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
xiterator_owner_adaptor(self_type &&) (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >inline
~xiterator_owner_adaptor()=default (defined in xt::xiterator_owner_adaptor< C, IG >)xt::xiterator_owner_adaptor< C, IG >
+
+ + + + diff --git a/classxt_1_1xiterator__owner__adaptor.html b/classxt_1_1xiterator__owner__adaptor.html new file mode 100644 index 000000000..9428a99ac --- /dev/null +++ b/classxt_1_1xiterator__owner__adaptor.html @@ -0,0 +1,766 @@ + + + + + + + +xtensor: xt::xiterator_owner_adaptor< C, IG > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xiterator_owner_adaptor< C, IG > Class Template Reference
+
+
+
+Inheritance diagram for xt::xiterator_owner_adaptor< C, IG >:
+
+
+ + +xt::xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xiterator_owner_adaptor< C, IG >
 
using base_type = xbuffer_adaptor_base< self_type >
 
using value_type = typename base_type::value_type
 
using allocator_type = std::allocator< value_type >
 
using size_type = typename base_type::size_type
 
using iterator = typename base_type::iterator
 
using const_iterator = typename base_type::const_iterator
 
using temporary_type = uvector< value_type, allocator_type >
 
- Public Types inherited from xt::xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >
using self_type = xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >
 
using derived_type = xiterator_owner_adaptor< C, IG >
 
using inner_types = buffer_inner_types< xiterator_owner_adaptor< C, IG > >
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename inner_types::pointer
 
using const_pointer = typename inner_types::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename inner_types::difference_type
 
using iterator = typename inner_types::iterator
 
using const_iterator = typename inner_types::const_iterator
 
using reverse_iterator = typename inner_types::reverse_iterator
 
using const_reverse_iterator = typename inner_types::const_reverse_iterator
 
using index_type = typename inner_types::index_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xiterator_owner_adaptor (C &&c)
 
 xiterator_owner_adaptor (const self_type &)
 
xiterator_owner_adaptoroperator= (const self_type &)
 
 xiterator_owner_adaptor (self_type &&)
 
xiterator_owner_adaptoroperator= (self_type &&)
 
xiterator_owner_adaptoroperator= (const temporary_type &rhs)
 
xiterator_owner_adaptoroperator= (temporary_type &&rhs)
 
size_type size () const noexcept
 
void resize (size_type size)
 
iterator data () noexcept
 
const_iterator data () const noexcept
 
void swap (self_type &rhs) noexcept
 
- Public Member Functions inherited from xt::xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >
bool empty () const noexcept
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
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
 
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >
xbuffer_adaptor_base (const self_type &)=default
 
xbuffer_adaptor_base (self_type &&)=default
 
+self_typeoperator= (const self_type &)=default
 
+self_typeoperator= (self_type &&)=default
 
+

Detailed Description

+
template<class C, class IG>
+class xt::xiterator_owner_adaptor< C, IG >
+

Definition at line 520 of file xbuffer_adaptor.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::allocator_type = std::allocator<value_type>
+
+ +

Definition at line 527 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::base_type = xbuffer_adaptor_base<self_type>
+
+ +

Definition at line 525 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::const_iterator = typename base_type::const_iterator
+
+ +

Definition at line 530 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::iterator = typename base_type::iterator
+
+ +

Definition at line 529 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::self_type = xiterator_owner_adaptor<C, IG>
+
+ +

Definition at line 524 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::size_type = typename base_type::size_type
+
+ +

Definition at line 528 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::temporary_type = uvector<value_type, allocator_type>
+
+ +

Definition at line 531 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class C , class IG >
+ + + + +
using xt::xiterator_owner_adaptor< C, IG >::value_type = typename base_type::value_type
+
+ +

Definition at line 526 of file xbuffer_adaptor.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xiterator_owner_adaptor() [1/3]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xt::xiterator_owner_adaptor< C, IG >::xiterator_owner_adaptor (C && c)
+
+inline
+
+ +

Definition at line 1145 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ xiterator_owner_adaptor() [2/3]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xt::xiterator_owner_adaptor< C, IG >::xiterator_owner_adaptor (const self_typerhs)
+
+inline
+
+ +

Definition at line 1152 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ xiterator_owner_adaptor() [3/3]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xt::xiterator_owner_adaptor< C, IG >::xiterator_owner_adaptor (self_type && rhs)
+
+inline
+
+ +

Definition at line 1166 of file xbuffer_adaptor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ data() [1/2]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + +
auto xt::xiterator_owner_adaptor< C, IG >::data () const
+
+inlinenoexcept
+
+ +

Definition at line 1215 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + +
auto xt::xiterator_owner_adaptor< C, IG >::data ()
+
+inlinenoexcept
+
+ +

Definition at line 1209 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator=() [1/4]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xiterator_owner_adaptor< C, IG > & xt::xiterator_owner_adaptor< C, IG >::operator= (const self_typerhs)
+
+inline
+
+ +

Definition at line 1159 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xiterator_owner_adaptor< C, IG > & xt::xiterator_owner_adaptor< C, IG >::operator= (const temporary_typerhs)
+
+inline
+
+ +

Definition at line 1180 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xiterator_owner_adaptor< C, IG > & xt::xiterator_owner_adaptor< C, IG >::operator= (self_type && rhs)
+
+inline
+
+ +

Definition at line 1173 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
xiterator_owner_adaptor< C, IG > & xt::xiterator_owner_adaptor< C, IG >::operator= (temporary_type && rhs)
+
+inline
+
+ +

Definition at line 1188 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ resize()

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
void xt::xiterator_owner_adaptor< C, IG >::resize (size_type size)
+
+inline
+
+ +

Definition at line 1200 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + +
auto xt::xiterator_owner_adaptor< C, IG >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1194 of file xbuffer_adaptor.hpp.

+ +
+
+ +

◆ swap()

+ +
+
+
+template<class C , class IG >
+ + + + + +
+ + + + + + + + +
void xt::xiterator_owner_adaptor< C, IG >::swap (self_typerhs)
+
+inlinenoexcept
+
+ +

Definition at line 1221 of file xbuffer_adaptor.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xiterator__owner__adaptor.png b/classxt_1_1xiterator__owner__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..49fb3ec19025106293c86a00340242289da8a73f GIT binary patch literal 1171 zcmeAS@N?(olHy`uVBq!ia0y~yV9W=y12~w0njyc%EmsjeJs1tvNPl9+kNMazJ6TOH*fvsxU$#(&wh{db1h-T~#JZTVp51j@NW7w6 zs9gA}W8L<1yT9+7$5WK9Zr^4t^H0WTWn*67Y@e(Rrt@E2`Tpm|R=bYhbN{?ED%0P8 zck70-TGez#>DV>Rxh&7W-oDeHlDK^G=F5`xV&$qkj+k1ldw=ykSA{1}`9^b#ZPB|e zr+cr+mb{&2{(TQ;LFrz>^=8q=APSj8NaixoSf3NB=h8K zmB&-|cpCY^8T|JyoA|EGoVARD@j(0)eugCs3N9z584i8$_#iN9Q+8?vq3{Fch>hqXzT_4{v0ugg&1ckuVL zQ$_B!kwIt5XSbBjUnZHW88x|asbi@Bm2+M1j6IEVO}Dw3Z|How_ljh2@w$)OKF_XR z|Lo(rn}uKaKJ6~m^NhbT_iIW-+^pR%=KvGRpE8eIXWrN8JujcGIq8e--O~7N8DVLz zlP)X1Z~S=B(_+p2c@KoHC!Ey%v_Eiv_yO+Z!_|5mSD&Rma?hSBQ6wLI?p}EF)wlEV zqrqvy^OEhZ#dY47_FtW9d-UD^=^yK2JMv|pIG^UO=DJt+Y`e&l( jwqkma*QzN&N?+{v)mo&lYcDYc79R|ru6{1-oD!M<8v{r5 literal 0 HcmV?d00001 diff --git a/classxt_1_1xkeep__slice-members.html b/classxt_1_1xkeep__slice-members.html new file mode 100644 index 000000000..3d6810c9b --- /dev/null +++ b/classxt_1_1xkeep__slice-members.html @@ -0,0 +1,124 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xkeep_slice< T > Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + +
container_type typedef (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >
contains(size_type i) const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
convert() const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
normalize(std::size_t s) (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
operator xkeep_slice< S >() const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
operator!=(const self_type &rhs) const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
operator()(size_type i) const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
operator==(const self_type &rhs) const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
revert_index(std::size_t i) const (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
self_type typedef (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >
size() const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
size_type typedef (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >
step_size(std::size_t i, std::size_t n=1) const noexcept (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
xkeep_slice (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >friend
xkeep_slice(C &cont) (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inlineexplicit
xkeep_slice(container_type &&cont) (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inlineexplicit
xkeep_slice(std::initializer_list< S > t) (defined in xt::xkeep_slice< T >)xt::xkeep_slice< T >inline
+
+ + + + diff --git a/classxt_1_1xkeep__slice.html b/classxt_1_1xkeep__slice.html new file mode 100644 index 000000000..b3f99ca6c --- /dev/null +++ b/classxt_1_1xkeep__slice.html @@ -0,0 +1,683 @@ + + + + + + + +xtensor: xt::xkeep_slice< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xkeep_slice< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::xkeep_slice< T >:
+
+
+ + +xt::xslice< xkeep_slice< T > > + +
+ + + + + + + + + + + +

+Public Types

using container_type = svector< T >
 
using size_type = typename container_type::value_type
 
using self_type = xkeep_slice< T >
 
- Public Types inherited from xt::xslice< xkeep_slice< T > >
using derived_type = xkeep_slice< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class C , typename = detail::disable_xkeep_slice_t<C>>
 xkeep_slice (C &cont)
 
 xkeep_slice (container_type &&cont)
 
template<class S >
 xkeep_slice (std::initializer_list< S > t)
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
 operator xkeep_slice< S > () const noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
xkeep_slice< S > convert () const noexcept
 
size_type operator() (size_type i) const noexcept
 
size_type size () const noexcept
 
void normalize (std::size_t s)
 
size_type step_size (std::size_t i, std::size_t n=1) const noexcept
 
size_type revert_index (std::size_t i) const
 
bool contains (size_type i) const noexcept
 
bool operator== (const self_type &rhs) const noexcept
 
bool operator!= (const self_type &rhs) const noexcept
 
- Public Member Functions inherited from xt::xslice< xkeep_slice< T > >
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xslice< xkeep_slice< T > >
xslice (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (const xslice &)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class T>
+class xt::xkeep_slice< T >
+

Definition at line 332 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ container_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xkeep_slice< T >::container_type = svector<T>
+
+ +

Definition at line 336 of file xslice.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xkeep_slice< T >::self_type = xkeep_slice<T>
+
+ +

Definition at line 338 of file xslice.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xkeep_slice< T >::size_type = typename container_type::value_type
+
+ +

Definition at line 337 of file xslice.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xkeep_slice() [1/3]

+ +
+
+
+template<class T >
+
+template<class C , typename >
+ + + + + +
+ + + + + + + + +
xt::xkeep_slice< T >::xkeep_slice (C & cont)
+
+inlineexplicit
+
+ +

Definition at line 1355 of file xslice.hpp.

+ +
+
+ +

◆ xkeep_slice() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
xt::xkeep_slice< T >::xkeep_slice (container_type && cont)
+
+inlineexplicit
+
+ +

Definition at line 1361 of file xslice.hpp.

+ +
+
+ +

◆ xkeep_slice() [3/3]

+ +
+
+
+template<class T >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
xt::xkeep_slice< T >::xkeep_slice (std::initializer_list< S > t)
+
+inline
+
+ +

Definition at line 1368 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ contains()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xkeep_slice< T >::contains (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1475 of file xslice.hpp.

+ +
+
+ +

◆ convert()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xkeep_slice< S > xt::xkeep_slice< T >::convert () const
+
+inlinenoexcept
+
+ +

Definition at line 1414 of file xslice.hpp.

+ +
+
+ +

◆ normalize()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xkeep_slice< T >::normalize (std::size_t s)
+
+inline
+
+ +

Definition at line 1420 of file xslice.hpp.

+ +
+
+ +

◆ operator xkeep_slice< S >()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xt::xkeep_slice< T >::operator xkeep_slice< S > () const
+
+inlinenoexcept
+
+ +

Definition at line 1384 of file xslice.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xkeep_slice< T >::operator!= (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1487 of file xslice.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xkeep_slice< T >::operator() (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1432 of file xslice.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xkeep_slice< T >::operator== (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1481 of file xslice.hpp.

+ +
+
+ +

◆ revert_index()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xkeep_slice< T >::revert_index (std::size_t i) const
+
+inline
+
+ +

Definition at line 1461 of file xslice.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xkeep_slice< T >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1438 of file xslice.hpp.

+ +
+
+ +

◆ step_size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xkeep_slice< T >::step_size (std::size_t i,
std::size_t n = 1 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1444 of file xslice.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xkeep_slice

+ +
+
+
+template<class T >
+
+template<class S >
+ + + + + +
+ + + + +
friend class xkeep_slice
+
+friend
+
+ +

Definition at line 376 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xkeep__slice.png b/classxt_1_1xkeep__slice.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f09644984146f68c12bed57bfe7e9596c556a5 GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^TYxx#gBeJ+A6q{KNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cv(aNqz?Jb2RO6+k)8k|4ie1|S~{%$a6iVPIgA^K@|xsbG9N_hQ}?1s+#@ z@ywF{|GUkt8;?#fQGDAMsuC^}DA7JgqJ59j^Eu(nGgYoDE%Ch6JVDKqpY5f~B<0&r zUfOtGR&z=V^ZqUGS$A@YiRZl!4zpDBcl55f^!~uNj^7{N`<(Xu`Ef#$GlozxG$#vAWge*0-ZscSVog|8xJ;;$;sla<*rN9sla}tmhs z`OMFX_rA@$c6;UZfc-1Os`NMB`pQ+jn)hkpqFSB)hqCX@uB^F{pB^q(d)@xt-zQr)$=*x%nWu%xEaEdU0+_$c6=?m)cpC^HPff`U1nye;mBn8psG4Vjutw@7(R+9IZ?>nYc=MWynCLlwuIy?Nccxpbd5s`x%u()AR#x%XP~Wx0#@ zal18=I+v@rpS|_;)Ez^=NtyB!!!BiNd;Q;1c6wXfq#Wbe+694Cn|z)DgJ_NPw4V9a zrZd&<9%|>6e6Qje{wJbJe>N~!mf5WOVx4Co?I!&7*9x0o3j<|@Dx(yyz5hHjFaO?0 z*FRfLV|BY%RJQFksC)iW(KFbhHr8J8@7(@5D!#%qr>XEeMNI + + + + + + +xtensor: xt::xmasked_value< T, B > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xmasked_value< T, B > Class Template Reference
+
+
+

Detailed Description

+
template<class T, class B>
+class xt::xmasked_value< T, B >
+

Definition at line 418 of file xmime.hpp.

+

The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xmime.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xmasked__view-members.html b/classxt_1_1xmasked__view-members.html new file mode 100644 index 000000000..09b29df55 --- /dev/null +++ b/classxt_1_1xmasked__view-members.html @@ -0,0 +1,272 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xmasked_view< CTD, CTM > Member List
+
+
+ +

This is the complete list of members for xt::xmasked_view< CTD, CTM >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< xmasked_view< CTD, CTM > >inline
at(Args... args) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
at(Args... args) -> referencext::xmasked_view< CTD, CTM >inline
at(Args... args) const (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
at(Args... args) const -> const_referencext::xmasked_view< CTD, CTM >inline
back()xt::xmasked_view< CTD, CTM >inline
back() constxt::xmasked_view< CTD, CTM >inline
backstrides() const noexceptxt::xmasked_view< CTD, CTM >inline
base_const_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
base_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
base_value_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
broadcast_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_broadcast_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_layout_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_pointer typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_reverse_broadcast_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_reverse_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_reverse_layout_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
const_stepper typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
contiguous_layout (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >static
data_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
difference_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
element(It first, It last) const (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
element(It first, It last) -> referencext::xmasked_view< CTD, CTM >inline
element(It first, It last) const -> const_referencext::xmasked_view< CTD, CTM >inline
expression_tag typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
fill(const T &value)xt::xmasked_view< CTD, CTM >inline
flag_const_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
flag_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
flag_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
front()xt::xmasked_view< CTD, CTM >inline
front() constxt::xmasked_view< CTD, CTM >inline
has_linear_assign(const S &strides) const noexcept (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
inner_backstrides_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
inner_shape_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
inner_strides_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
inner_types typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
is_contiguous() const noexcept (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
is_data_const (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >static
iterable_base typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
layout() const noexceptxt::xmasked_view< CTD, CTM >inline
layout_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
mask_expression typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
mask_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
mask_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
operator()(Args... args) const (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
operator()(Args... args) -> referencext::xmasked_view< CTD, CTM >inline
operator()(Args... args) const -> const_referencext::xmasked_view< CTD, CTM >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const self_type &rhs) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
operator=(const xexpression< E > &e) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
operator=(const E &e) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
operator=(const xexpression< E > &e) -> self_type & (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
periodic(Args... args) -> referencext::xmasked_view< CTD, CTM >inline
periodic(Args... args) const (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
periodic(Args... args) const -> const_referencext::xmasked_view< CTD, CTM >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
reverse_broadcast_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
reverse_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
reverse_layout_iterator typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
self_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
semantic_base typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
shape() const noexceptxt::xmasked_view< CTD, CTM >inline
xaccessible< xmasked_view< CTD, CTM > >::shape(size_type index) constxt::xconst_accessible< D >inlineprivate
shape_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
size() const noexceptxt::xmasked_view< CTD, CTM >inline
size_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
static_layout (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >static
stepper typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
stepper_begin(const S &shape) noexcept (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
stepper_begin(const S &shape) const noexcept (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >inline
strides() const noexceptxt::xmasked_view< CTD, CTM >inline
strides_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
temporary_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
unchecked(Args... args) (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
unchecked(Args... args) const (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
unchecked(Args... args) -> referencext::xmasked_view< CTD, CTM >inline
unchecked(Args... args) const -> const_referencext::xmasked_view< CTD, CTM >inline
val_reference typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
value() noexceptxt::xmasked_view< CTD, CTM >inline
value() const noexceptxt::xmasked_view< CTD, CTM >inline
value_expression typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
value_type typedef (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
visible() noexceptxt::xmasked_view< CTD, CTM >inline
visible() const noexceptxt::xmasked_view< CTD, CTM >inline
xaccessible< self_type > (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >friend
xconst_accessible< self_type > (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >friend
xconst_iterable< self_type > (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >friend
xiterable< self_type > (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >friend
xmasked_view(D &&data, M &&mask)xt::xmasked_view< CTD, CTM >inline
xmasked_view(const xmasked_view &)=default (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xview_semantic< self_type > (defined in xt::xmasked_view< CTD, CTM >)xt::xmasked_view< CTD, CTM >friend
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xmasked__view.html b/classxt_1_1xmasked__view.html new file mode 100644 index 000000000..82813989c --- /dev/null +++ b/classxt_1_1xmasked__view.html @@ -0,0 +1,3051 @@ + + + + + + + +xtensor: xt::xmasked_view< CTD, CTM > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xmasked_view< CTD, CTM > Class Template Reference
+
+
+ +

View on an xoptional_assembly or xoptional_assembly_adaptor hiding values depending on a given mask. + More...

+ +

#include <xmasked_view.hpp>

+
+Inheritance diagram for xt::xmasked_view< CTD, CTM >:
+
+
+ + +xt::xview_semantic< xmasked_view< CTD, CTM > > +xt::xaccessible< xmasked_view< CTD, CTM > > +xt::xiterable< xmasked_view< CTD, CTM > > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xmasked_view< CTD, CTM >
 
using semantic_base = xview_semantic< xmasked_view< CTD, CTM > >
 
using accessible_base = xaccessible< self_type >
 
using inner_types = xcontainer_inner_types< self_type >
 
using temporary_type = typename inner_types::temporary_type
 
using data_type = typename inner_types::data_type
 
using mask_type = typename inner_types::mask_type
 
using value_expression = CTD
 
using mask_expression = CTM
 
using base_value_type = typename inner_types::base_value_type
 
using base_reference = typename data_type::reference
 
using base_const_reference = typename data_type::const_reference
 
using flag_type = typename inner_types::flag_type
 
using flag_reference = typename mask_type::reference
 
using flag_const_reference = typename mask_type::const_reference
 
using val_reference = typename inner_types::val_reference
 
using mask_reference = typename inner_types::mask_reference
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = xtl::xclosure_pointer< reference >
 
using const_pointer = xtl::xclosure_pointer< const_reference >
 
using size_type = typename inner_types::size_type
 
using difference_type = typename data_type::difference_type
 
using bool_load_type = xtl::xmasked_value< typename data_type::bool_load_type, mask_type >
 
using shape_type = typename data_type::shape_type
 
using strides_type = typename data_type::strides_type
 
using inner_shape_type = typename data_type::inner_shape_type
 
using inner_strides_type = typename data_type::inner_strides_type
 
using inner_backstrides_type = typename data_type::inner_backstrides_type
 
using expression_tag = xtensor_expression_tag
 
using iterable_base = xiterable< xmasked_view< CTD, CTM > >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using iterator = typename iterable_base::iterator
 
using const_iterator = typename iterable_base::const_iterator
 
using reverse_iterator = typename iterable_base::reverse_iterator
 
using const_reverse_iterator = typename iterable_base::const_reverse_iterator
 
- Public Types inherited from xt::xview_semantic< xmasked_view< CTD, CTM > >
using base_type = xsemantic_base< xmasked_view< CTD, CTM > >
 
using derived_type = xmasked_view< CTD, CTM >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xmasked_view (const xmasked_view &)=default
 
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
Constructors
template<class D , class M >
 xmasked_view (D &&data, M &&mask)
 Creates an xmasked_view, given the xoptional_assembly or xoptional_assembly_adaptor and the mask.
 
Size and shape
size_type size () const noexcept
 Returns the number of elements in the xmasked_view.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the xmasked_view.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the xmasked_view.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the xmasked_view.
 
layout_type layout () const noexcept
 Return the layout_type of the xmasked_view.
 
bool is_contiguous () const noexcept
 
template<class T >
void fill (const T &value)
 Fills the data with the given value.
 
- Public Member Functions inherited from xt::xview_semantic< xmasked_view< CTD, CTM > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + +

+Static Public Attributes

static constexpr bool is_data_const = std::is_const<std::remove_reference_t<value_expression>>::value
 
static constexpr layout_type static_layout = data_type::static_layout
 
static constexpr bool contiguous_layout = false
 
+ + + + + + + + + + + +

+Friends

class xiterable< self_type >
 
class xconst_iterable< self_type >
 
class xview_semantic< self_type >
 
class xaccessible< self_type >
 
class xconst_accessible< self_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

template<class S >
bool has_linear_assign (const S &strides) const noexcept
 
data_type & value () noexcept
 Return an expression for the values of the xmasked_view.
 
const data_type & value () const noexcept
 Return a constant expression for the values of the xmasked_view.
 
mask_type & visible () noexcept
 Return an expression for the mask of the xmasked_view.
 
const mask_type & visible () const noexcept
 Return a constant expression for the mask of the xmasked_view.
 
self_typeoperator= (const self_type &rhs)
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the xmasked_view.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the xmasked_view.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the xmasked_view.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the xmasked_view.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the xmasked_view.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the xmasked_view.
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xview_semantic< xmasked_view< CTD, CTM > >
xview_semantic (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class CTD, class CTM>
+class xt::xmasked_view< CTD, CTM >

View on an xoptional_assembly or xoptional_assembly_adaptor hiding values depending on a given mask.

+

The xmasked_view class implements a view on an xoptional_assembly or xoptional_assembly_adaptor, it takes this xoptional_assembly and a mask as input. The mask is an xexpression containing boolean values, whenever the value of the mask is false, the optional value of xmasked_view is considered missing, otherwise it depends on the underlying xoptional_assembly.

+
Template Parameters
+ + + +
CTDThe type of expression holding the values.
CTMThe type of expression holding the mask.
+
+
+ +

Definition at line 78 of file xmasked_view.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::accessible_base = xaccessible<self_type>
+
+ +

Definition at line 86 of file xmasked_view.hpp.

+ +
+
+ +

◆ base_const_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::base_const_reference = typename data_type::const_reference
+
+ +

Definition at line 99 of file xmasked_view.hpp.

+ +
+
+ +

◆ base_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::base_reference = typename data_type::reference
+
+ +

Definition at line 98 of file xmasked_view.hpp.

+ +
+
+ +

◆ base_value_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::base_value_type = typename inner_types::base_value_type
+
+ +

Definition at line 97 of file xmasked_view.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::bool_load_type = xtl::xmasked_value<typename data_type::bool_load_type, mask_type>
+
+ +

Definition at line 118 of file xmasked_view.hpp.

+ +
+
+ +

◆ broadcast_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S , layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>
+
+ +

Definition at line 146 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S , layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>
+
+ +

Definition at line 148 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_iterator = typename iterable_base::const_iterator
+
+ +

Definition at line 155 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_layout_iterator = typename iterable_base::template const_layout_iterator<L>
+
+ +

Definition at line 139 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_pointer = xtl::xclosure_pointer<const_reference>
+
+ +

Definition at line 113 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 110 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S , layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 152 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_reverse_iterator = typename iterable_base::const_reverse_iterator
+
+ +

Definition at line 157 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>
+
+ +

Definition at line 143 of file xmasked_view.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 134 of file xmasked_view.hpp.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::data_type = typename inner_types::data_type
+
+ +

Definition at line 90 of file xmasked_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::difference_type = typename data_type::difference_type
+
+ +

Definition at line 116 of file xmasked_view.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::expression_tag = xtensor_expression_tag
+
+ +

Definition at line 130 of file xmasked_view.hpp.

+ +
+
+ +

◆ flag_const_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::flag_const_reference = typename mask_type::const_reference
+
+ +

Definition at line 103 of file xmasked_view.hpp.

+ +
+
+ +

◆ flag_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::flag_reference = typename mask_type::reference
+
+ +

Definition at line 102 of file xmasked_view.hpp.

+ +
+
+ +

◆ flag_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::flag_type = typename inner_types::flag_type
+
+ +

Definition at line 101 of file xmasked_view.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::inner_backstrides_type = typename data_type::inner_backstrides_type
+
+ +

Definition at line 128 of file xmasked_view.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::inner_shape_type = typename data_type::inner_shape_type
+
+ +

Definition at line 126 of file xmasked_view.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::inner_strides_type = typename data_type::inner_strides_type
+
+ +

Definition at line 127 of file xmasked_view.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 87 of file xmasked_view.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::iterable_base = xiterable<xmasked_view<CTD, CTM> >
+
+ +

Definition at line 132 of file xmasked_view.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::iterator = typename iterable_base::iterator
+
+ +

Definition at line 154 of file xmasked_view.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::layout_iterator = typename iterable_base::template layout_iterator<L>
+
+ +

Definition at line 137 of file xmasked_view.hpp.

+ +
+
+ +

◆ mask_expression

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::mask_expression = CTM
+
+ +

Definition at line 93 of file xmasked_view.hpp.

+ +
+
+ +

◆ mask_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::mask_reference = typename inner_types::mask_reference
+
+ +

Definition at line 106 of file xmasked_view.hpp.

+ +
+
+ +

◆ mask_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::mask_type = typename inner_types::mask_type
+
+ +

Definition at line 91 of file xmasked_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::pointer = xtl::xclosure_pointer<reference>
+
+ +

Definition at line 112 of file xmasked_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::reference = typename inner_types::reference
+
+ +

Definition at line 109 of file xmasked_view.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S , layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 150 of file xmasked_view.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::reverse_iterator = typename iterable_base::reverse_iterator
+
+ +

Definition at line 156 of file xmasked_view.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class CTD , class CTM >
+
+template<layout_type L>
+ + + + +
using xt::xmasked_view< CTD, CTM >::reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>
+
+ +

Definition at line 141 of file xmasked_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::self_type = xmasked_view<CTD, CTM>
+
+ +

Definition at line 84 of file xmasked_view.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::semantic_base = xview_semantic<xmasked_view<CTD, CTM> >
+
+ +

Definition at line 85 of file xmasked_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::shape_type = typename data_type::shape_type
+
+ +

Definition at line 120 of file xmasked_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::size_type = typename inner_types::size_type
+
+ +

Definition at line 115 of file xmasked_view.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 133 of file xmasked_view.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::strides_type = typename data_type::strides_type
+
+ +

Definition at line 121 of file xmasked_view.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::temporary_type = typename inner_types::temporary_type
+
+ +

Definition at line 88 of file xmasked_view.hpp.

+ +
+
+ +

◆ val_reference

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::val_reference = typename inner_types::val_reference
+
+ +

Definition at line 105 of file xmasked_view.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::value_expression = CTD
+
+ +

Definition at line 92 of file xmasked_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CTD , class CTM >
+ + + + +
using xt::xmasked_view< CTD, CTM >::value_type = typename inner_types::value_type
+
+ +

Definition at line 108 of file xmasked_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xmasked_view()

+ +
+
+
+template<class CTD , class CTM >
+
+template<class D , class M >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xmasked_view< CTD, CTM >::xmasked_view (D && data,
M && mask 
)
+
+inline
+
+ +

Creates an xmasked_view, given the xoptional_assembly or xoptional_assembly_adaptor and the mask.

+
Parameters
+ + + +
datathe underlying xoptional_assembly or xoptional_assembly_adaptor
maskthe mask.
+
+
+ +

Definition at line 309 of file xmasked_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::at (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 274 of file xaccessible.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 111 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::back ()
+
+inline
+
+ +

Returns a reference to the last element of the expression.

+ +

Definition at line 109 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 113 of file xaccessible.hpp.

+ +
+
+ +

◆ backstrides()

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::backstrides () const
+
+inlinenoexcept
+
+ +

Returns the backstrides of the xmasked_view.

+ +

Definition at line 350 of file xmasked_view.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xmasked_view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the xmasked_view.
+
+
+ +

Definition at line 475 of file xmasked_view.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the xmasked_view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the xmasked_view.
+
+
+ +

Definition at line 489 of file xmasked_view.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class CTD , class CTM >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xmasked_view< CTD, CTM >::fill (const T & value)
+
+inline
+
+ +

Fills the data with the given value.

+
Parameters
+ + +
valuethe value to fill the data with.
+
+
+ +

Definition at line 379 of file xmasked_view.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::front ()
+
+inline
+
+ +

Returns a reference to the first element of the expression.

+ +

Definition at line 108 of file xaccessible.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 114 of file xaccessible.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xmasked_view< CTD, CTM >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Definition at line 498 of file xmasked_view.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
bool xt::xmasked_view< CTD, CTM >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 368 of file xmasked_view.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
layout_type xt::xmasked_view< CTD, CTM >::layout () const
+
+inlinenoexcept
+
+ +

Return the layout_type of the xmasked_view.

+
Returns
layout_type of the xmasked_view
+ +

Definition at line 362 of file xmasked_view.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xmasked_view.

+
Parameters
+ + +
argsa list of indices specifying the position in the xmasked_view. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the xmasked_view.
+
+
+ +

Definition at line 396 of file xmasked_view.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the xmasked_view.

+
Parameters
+ + +
argsa list of indices specifying the position in the xmasked_view. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the xmasked_view.
+
+
+ +

Definition at line 409 of file xmasked_view.hpp.

+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 584 of file xmasked_view.hpp.

+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::operator= (const self_typerhs)
+
+inline
+
+ +

Definition at line 569 of file xmasked_view.hpp.

+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

Definition at line 577 of file xmasked_view.hpp.

+ +
+
+ +

◆ periodic() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::periodic (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 315 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 115 of file xaccessible.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the xmasked_view.

+ +

Definition at line 332 of file xmasked_view.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::size () const
+
+inlinenoexcept
+
+ +

Returns the number of elements in the xmasked_view.

+ +

Definition at line 323 of file xmasked_view.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 555 of file xmasked_view.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::stepper_begin (const S & shape) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 541 of file xmasked_view.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 562 of file xmasked_view.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::stepper_end (const S & shape,
layout_type l 
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 548 of file xmasked_view.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::strides () const
+
+inlinenoexcept
+
+ +

Returns the strides of the xmasked_view.

+ +

Definition at line 341 of file xmasked_view.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the xmasked_view.

+
Parameters
+ + +
argsa list of indices specifying the position in the xmasked_view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the xmasked_view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 435 of file xmasked_view.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xmasked_view< CTD, CTM >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the xmasked_view.

+
Parameters
+ + +
argsa list of indices specifying the position in the xmasked_view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the xmasked_view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
+ +

Definition at line 461 of file xmasked_view.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::value () const
+
+inlinenoexcept
+
+ +

Return a constant expression for the values of the xmasked_view.

+ +

Definition at line 516 of file xmasked_view.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::value ()
+
+inlinenoexcept
+
+ +

Return an expression for the values of the xmasked_view.

+ +

Definition at line 507 of file xmasked_view.hpp.

+ +
+
+ +

◆ visible() [1/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::visible () const
+
+inlinenoexcept
+
+ +

Return a constant expression for the mask of the xmasked_view.

+ +

Definition at line 534 of file xmasked_view.hpp.

+ +
+
+ +

◆ visible() [2/2]

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view< CTD, CTM >::visible ()
+
+inlinenoexcept
+
+ +

Return an expression for the mask of the xmasked_view.

+ +

Definition at line 525 of file xmasked_view.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< self_type >

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
friend class xaccessible< self_type >
+
+friend
+
+ +

Definition at line 243 of file xmasked_view.hpp.

+ +
+
+ +

◆ xconst_accessible< self_type >

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
friend class xconst_accessible< self_type >
+
+friend
+
+ +

Definition at line 243 of file xmasked_view.hpp.

+ +
+
+ +

◆ xconst_iterable< self_type >

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
friend class xconst_iterable< self_type >
+
+friend
+
+ +

Definition at line 243 of file xmasked_view.hpp.

+ +
+
+ +

◆ xiterable< self_type >

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
friend class xiterable< self_type >
+
+friend
+
+ +

Definition at line 243 of file xmasked_view.hpp.

+ +
+
+ +

◆ xview_semantic< self_type >

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
friend class xview_semantic< self_type >
+
+friend
+
+ +

Definition at line 243 of file xmasked_view.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
constexpr bool xt::xmasked_view< CTD, CTM >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 124 of file xmasked_view.hpp.

+ +
+
+ +

◆ is_data_const

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
constexpr bool xt::xmasked_view< CTD, CTM >::is_data_const = std::is_const<std::remove_reference_t<value_expression>>::value
+
+staticconstexpr
+
+ +

Definition at line 95 of file xmasked_view.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CTD , class CTM >
+ + + + + +
+ + + + +
constexpr layout_type xt::xmasked_view< CTD, CTM >::static_layout = data_type::static_layout
+
+staticconstexpr
+
+ +

Definition at line 123 of file xmasked_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xmasked__view.js b/classxt_1_1xmasked__view.js new file mode 100644 index 000000000..6ad111eaa --- /dev/null +++ b/classxt_1_1xmasked__view.js @@ -0,0 +1,28 @@ +var classxt_1_1xmasked__view = +[ + [ "xmasked_view", "classxt_1_1xmasked__view.html#a9c3d8a13f687279e628800050a8d4048", null ], + [ "at", "classxt_1_1xmasked__view.html#abd1a88f04c122d8d066a5b2abc7f2c8f", null ], + [ "at", "classxt_1_1xmasked__view.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xmasked__view.html#a905660a4d87f4d3e7b651bcf6bb690d0", null ], + [ "back", "classxt_1_1xmasked__view.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "backstrides", "classxt_1_1xmasked__view.html#a11f6663bf33dc7e1afbce7f6132e58fe", null ], + [ "element", "classxt_1_1xmasked__view.html#a9ac6b54e4c97bd60b65a6c02d5823380", null ], + [ "element", "classxt_1_1xmasked__view.html#ae44c90a8ceb326570ea97116ecc5dd2f", null ], + [ "fill", "classxt_1_1xmasked__view.html#a4c949ee680c72512a1d9f02b60536428", null ], + [ "front", "classxt_1_1xmasked__view.html#ad36ac2c194e7e6f470548dad89e88ca2", null ], + [ "front", "classxt_1_1xmasked__view.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "layout", "classxt_1_1xmasked__view.html#a7f160d16d17eea921739b9ff1457c374", null ], + [ "operator()", "classxt_1_1xmasked__view.html#a871b0392cccaac8fb981273bb5008186", null ], + [ "operator()", "classxt_1_1xmasked__view.html#a7cd2236961bba48f19933c8450052790", null ], + [ "periodic", "classxt_1_1xmasked__view.html#a038772dfb1936fa221a220c5ded4ac05", null ], + [ "periodic", "classxt_1_1xmasked__view.html#a34d4a20e640737443fd0a7266b77b2b2", null ], + [ "shape", "classxt_1_1xmasked__view.html#a3e501b72ae46be33e45dd249ac6e369c", null ], + [ "size", "classxt_1_1xmasked__view.html#a9b8f0d6d6f4fd32f161ffbae9828a7e2", null ], + [ "strides", "classxt_1_1xmasked__view.html#a0cc1342c4e640acb9f726ccbb1a74da7", null ], + [ "unchecked", "classxt_1_1xmasked__view.html#a1f080554ead02ec72ee2e53691b2d793", null ], + [ "unchecked", "classxt_1_1xmasked__view.html#a430cf3c34d4e7ac88d55522fcef881ff", null ], + [ "value", "classxt_1_1xmasked__view.html#a8c5a06d1b2b6f5aa3f08ac36dc6956f8", null ], + [ "value", "classxt_1_1xmasked__view.html#a888a7481ce4e40148e55a280dd2d721e", null ], + [ "visible", "classxt_1_1xmasked__view.html#ae0e58b3d80d80523a86ee38b97550c68", null ], + [ "visible", "classxt_1_1xmasked__view.html#a420f33aa357210c322d5d34f06c6b81e", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xmasked__view.png b/classxt_1_1xmasked__view.png new file mode 100644 index 0000000000000000000000000000000000000000..260b1646ba3980b7c649469c845f0c6f9ebd15d0 GIT binary patch literal 3412 zcmd5*52p2e{Or9`=j&Y%$YOu%yQm2@0>|K zg|%1MtiBn6KqxqTY2%DQtOu~(B)=Y(W;!9MaHVm|$;DP8k-+Mk=|y6Cb1~|$Uf9me zr*E2?nqd3sA9|>8-=<5>*wYBOEh{GLa$X=1TSpvhj=4n3@rF3Dxpm5R-N(w&Ekg7x z1EYniCcIHhLB-o|*WSD1RQJyz#+aU~MS*Ut$vg;vwsn*e_$aXGCh{wuMJ$(wf z4cgmOZo{Te)hXCO@?oFjs;BBg*5h`p+vVuOtD|$Qq(kT2A=U1sr1&bX@O-6O$K%qe zx*4Kuc(IFgd@2u!F9#$bUk2{@stZ^L>(T@2ITz)bysB%|C#b zFqdwrUEd`y1r>3rfJ?oARr9DmOjbF|{2F=IcjlKx_yoG&f^9Fq@-Bdldr(*k0nkX=uVY@~?2gR>aDDYlrHpf zoQBd3i+UjRo%VZ9nmpLK|EcFMantE%#$VBpOrN;qe0ck70S(dGQC@wb1j!`btB-hc zyVM11;enQ0I1N>VhN++%^r;!1Pz~-Y-2&N@K)2AE?P9}bL;-WcUtzX9qs z(wY5EEmq)5ISY016!GCTx5y$P=|1FG(S=Tg-D3yznwrA$TOnygzB`xEzpVcudcP&$_?jR2iw46O&+Og_uJIe80+f6I9gQ>;nG<0Zk&~qo&QgUNr zB{x#DzPB>4zy4sZty}hybaN+`E$hBlZ%emV03;~tdzIG5Nv{t!+-(OyT#EEmAH!IP zcQA3~fU7S98V^?8YA0JO0avHt)745jnK8Z;M&07rdxE2Z5Bvte2YLfRzq4Bj7?6>h zGCc45VO0dqHTZr>x$>%s{I)$!YRLeWZZUBwG`M#7y=7udw@yI3-VeJCp?jbZmc=?! z{ck4U%?5KA3Iq-Vty2qYL-rAU3_`sU0fMMtRc)N-3he-ZY!`uts?()0lYF5D0Mh;_ z2oin^$4gFIBn=GM|C#PAfPvUo7P|q+f5(iCOK82$-w1-9XA4Hc)=+9`ka19@8hYzm zB9CF{D{vBlt2`H?%F-xu^_3o{2##BFWb5FM)gZg7YeO)FVt9>~at_b_S!4=HrkOOb zdL5ln)<<3S+PhMs=Ru9#bSX7_lX&*^oUw+bVy2_OTw%*KV*Y%wXf!cGsccSV9y;DO z>xHJ+)vPTQ_^WC7g&hs}VtfOj7te~-Y4JseNESkiO&q|z+ZbJPvZm2=*q?>;Ylq{q zgz=<*EV;PH@+MLmIgzB>Q{48X6)=^NckaSMgpcJ5)N-#;+E~ZDsih>M-Wa0sXlM+( zQPg~uKnEDMDsSJjRiu!l=K*3RMjdtf&#^v%qOrTiDHIP6BF*@wmC|$6%+vhoEF;Sk z6MY=Q!PJ{38j@PpOi?Hk_#RaJU_bA% z4iUGWe5@HsTm3Y7{Ql?M(NIjkH5;dpH@HGh)Kg-N^#QE@lqf^#?hW*v`H$|SUyz0^ zVk%os#OjvT&uLkjN`mT3io?H8e_U!Vz9PxEN`Mx9mGQ$b1;x_^AhXY%x=QvlLnfm= zcQvjCqwFV`!!KR~C?IL~G=4 z@Z~h%-Ig-5aw&o3U!SMr8;_g8-l>SMmC{BF8V{3!x6Plq^nWd6qVd%P4iY99@ps*k zAL4SqEG{?Z-ZYUf%aR;R=-3}smQ39&Y>P~UEmiMp?(W=4H@G?j&*dmfdIt@d^5MkMeNO^R>%Hr0Bh>1ZhC(e^-@Gl2 zLE$5g1bm?lvp(xb-Kg*$fj-ZxC5L`@i}reonsaO|Wz!4rX=6V%hjMSt7jV2IUAw2n){IXi5=nCTW2jLv8U%S#AW!C!XZ$ zj-aG(bWG%U+LrSpCMl7s+@f)6ngP@(ICQoPV%LIu@Cz9_URx6P$(Z`Ya2|DFLG-|@ zOXY{uiQOI+;%)b}T>rt;e5951+E$t&ocF%Vwe6|}eAR2iZCU9B53`M-&`ebo#T0`I zFKeed>9fm){a`Qi!>?Y00+J*@Y{F6IG08oUPn>oB81{5j#2a&&ja3MiNF!Rd@1Na2 jF!&2_8U683Va&%{EnM<}a<)?7{|~~!7HdPdK6B+?+q;T< literal 0 HcmV?d00001 diff --git a/classxt_1_1xmasked__view__stepper-members.html b/classxt_1_1xmasked__view__stepper-members.html new file mode 100644 index 000000000..683b9581e --- /dev/null +++ b/classxt_1_1xmasked__view__stepper-members.html @@ -0,0 +1,128 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xmasked_view_stepper< D, is_const > Member List
+
+
+ +

This is the complete list of members for xt::xmasked_view_stepper< D, is_const >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
data_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
difference_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
mask_stepper typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
mask_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
masked_view_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
operator*() const (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
pointer typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
reference typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
reset(size_type dim) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
reset_back(size_type dim) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
self_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
size_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
step(size_type dim) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
step(size_type dim, size_type n) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
step_back(size_type dim) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
step_back(size_type dim, size_type n) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
to_begin() (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
to_end(layout_type l) (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
value_stepper typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
value_type typedef (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >
xmasked_view_stepper(value_stepper vs, mask_stepper fs) noexcept (defined in xt::xmasked_view_stepper< D, is_const >)xt::xmasked_view_stepper< D, is_const >inline
+
+ + + + diff --git a/classxt_1_1xmasked__view__stepper.html b/classxt_1_1xmasked__view__stepper.html new file mode 100644 index 000000000..08684c4c1 --- /dev/null +++ b/classxt_1_1xmasked__view__stepper.html @@ -0,0 +1,694 @@ + + + + + + + +xtensor: xt::xmasked_view_stepper< D, is_const > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xmasked_view_stepper< D, is_const > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xmasked_view_stepper< D, is_const >
 
using masked_view_type = std::decay_t< D >
 
using value_type = typename masked_view_type::value_type
 
using reference = std::conditional_t< is_const, typename masked_view_type::const_reference, typename masked_view_type::reference >
 
using pointer = std::conditional_t< is_const, typename masked_view_type::const_pointer, typename masked_view_type::pointer >
 
using size_type = typename masked_view_type::size_type
 
using difference_type = typename masked_view_type::difference_type
 
using data_type = typename masked_view_type::data_type
 
using mask_type = typename masked_view_type::mask_type
 
using value_stepper = std::conditional_t< is_const, typename data_type::const_stepper, typename data_type::stepper >
 
using mask_stepper = std::conditional_t< is_const, typename mask_type::const_stepper, typename mask_type::stepper >
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Data
 xmasked_view_stepper (value_stepper vs, mask_stepper fs) noexcept
 
void step (size_type dim)
 
void step_back (size_type dim)
 
void step (size_type dim, size_type n)
 
void step_back (size_type dim, size_type n)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
reference operator* () const
 
+

Detailed Description

+
template<class D, bool is_const>
+class xt::xmasked_view_stepper< D, is_const >
+

Definition at line 253 of file xmasked_view.hpp.

+

Member Typedef Documentation

+ +

◆ data_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::data_type = typename masked_view_type::data_type
+
+ +

Definition at line 266 of file xmasked_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::difference_type = typename masked_view_type::difference_type
+
+ +

Definition at line 265 of file xmasked_view.hpp.

+ +
+
+ +

◆ mask_stepper

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::mask_stepper = std::conditional_t<is_const, typename mask_type::const_stepper, typename mask_type::stepper>
+
+ +

Definition at line 269 of file xmasked_view.hpp.

+ +
+
+ +

◆ mask_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::mask_type = typename masked_view_type::mask_type
+
+ +

Definition at line 267 of file xmasked_view.hpp.

+ +
+
+ +

◆ masked_view_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::masked_view_type = std::decay_t<D>
+
+ +

Definition at line 258 of file xmasked_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::pointer = std:: conditional_t<is_const, typename masked_view_type::const_pointer, typename masked_view_type::pointer>
+
+ +

Definition at line 262 of file xmasked_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::reference = std:: conditional_t<is_const, typename masked_view_type::const_reference, typename masked_view_type::reference>
+
+ +

Definition at line 260 of file xmasked_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::self_type = xmasked_view_stepper<D, is_const>
+
+ +

Definition at line 257 of file xmasked_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::size_type = typename masked_view_type::size_type
+
+ +

Definition at line 264 of file xmasked_view.hpp.

+ +
+
+ +

◆ value_stepper

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::value_stepper = std::conditional_t<is_const, typename data_type::const_stepper, typename data_type::stepper>
+
+ +

Definition at line 268 of file xmasked_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xmasked_view_stepper< D, is_const >::value_type = typename masked_view_type::value_type
+
+ +

Definition at line 259 of file xmasked_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xmasked_view_stepper()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xmasked_view_stepper< D, C >::xmasked_view_stepper (value_stepper vs,
mask_stepper fs 
)
+
+inlinenoexcept
+
+ +

Definition at line 607 of file xmasked_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + +
auto xt::xmasked_view_stepper< D, C >::operator* () const
+
+inline
+
+ +

Definition at line 670 of file xmasked_view.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xmasked_view_stepper< D, C >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 642 of file xmasked_view.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xmasked_view_stepper< D, C >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 649 of file xmasked_view.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xmasked_view_stepper< D, C >::step (size_type dim)
+
+inline
+
+ +

Definition at line 614 of file xmasked_view.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xmasked_view_stepper< D, C >::step (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 628 of file xmasked_view.hpp.

+ +
+
+ +

◆ step_back() [1/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xmasked_view_stepper< D, C >::step_back (size_type dim)
+
+inline
+
+ +

Definition at line 621 of file xmasked_view.hpp.

+ +
+
+ +

◆ step_back() [2/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xmasked_view_stepper< D, C >::step_back (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 635 of file xmasked_view.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + +
void xt::xmasked_view_stepper< D, C >::to_begin ()
+
+inline
+
+ +

Definition at line 656 of file xmasked_view.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xmasked_view_stepper< D, C >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 663 of file xmasked_view.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xmultiindex__iterator-members.html b/classxt_1_1xmultiindex__iterator-members.html new file mode 100644 index 000000000..fbf331529 --- /dev/null +++ b/classxt_1_1xmultiindex__iterator-members.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xmultiindex_iterator< S > Member List
+
+
+ +

This is the complete list of members for xt::xmultiindex_iterator< S >, including all inherited members.

+ + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
iterator_category typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
operator!=(const self_type &rhs) const (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
operator*() (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
operator*() const (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
operator++() (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
operator++(int) (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
operator==(const self_type &rhs) const (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
pointer typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
reference typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
self_type typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
shape_type typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
value_type typedef (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
xmultiindex_iterator()=default (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >
xmultiindex_iterator(B &&begin, E &&end, C &&current, const std::size_t linear_index) (defined in xt::xmultiindex_iterator< S >)xt::xmultiindex_iterator< S >inline
+
+ + + + diff --git a/classxt_1_1xmultiindex__iterator.html b/classxt_1_1xmultiindex__iterator.html new file mode 100644 index 000000000..3bf27f9b4 --- /dev/null +++ b/classxt_1_1xmultiindex__iterator.html @@ -0,0 +1,512 @@ + + + + + + + +xtensor: xt::xmultiindex_iterator< S > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xmultiindex_iterator< S > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Types

using self_type = xmultiindex_iterator< S >
 
using shape_type = S
 
using value_type = shape_type
 
using reference = value_type &
 
using pointer = value_type *
 
using difference_type = std::size_t
 
using iterator_category = std::forward_iterator_tag
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

template<class B , class E , class C >
 xmultiindex_iterator (B &&begin, E &&end, C &&current, const std::size_t linear_index)
 
self_typeoperator++ ()
 
self_type operator++ (int)
 
shape_type & operator* ()
 
const shape_type & operator* () const
 
bool operator== (const self_type &rhs) const
 
bool operator!= (const self_type &rhs) const
 
+

Detailed Description

+
template<class S>
+class xt::xmultiindex_iterator< S >
+

Definition at line 20 of file xmultiindex_iterator.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::difference_type = std::size_t
+
+ +

Definition at line 30 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::iterator_category = std::forward_iterator_tag
+
+ +

Definition at line 31 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::pointer = value_type*
+
+ +

Definition at line 29 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::reference = value_type&
+
+ +

Definition at line 28 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::self_type = xmultiindex_iterator<S>
+
+ +

Definition at line 24 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::shape_type = S
+
+ +

Definition at line 25 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class S >
+ + + + +
using xt::xmultiindex_iterator< S >::value_type = shape_type
+
+ +

Definition at line 27 of file xmultiindex_iterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xmultiindex_iterator()

+ +
+
+
+template<class S >
+
+template<class B , class E , class C >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xmultiindex_iterator< S >::xmultiindex_iterator (B && begin,
E && end,
C && current,
const std::size_t linear_index 
)
+
+inline
+
+ +

Definition at line 36 of file xmultiindex_iterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator!=()

+ +
+
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xmultiindex_iterator< S >::operator!= (const self_typerhs) const
+
+inline
+
+ +

Definition at line 86 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+
+template<class S >
+ + + + + +
+ + + + + + + +
shape_type & xt::xmultiindex_iterator< S >::operator* ()
+
+inline
+
+ +

Definition at line 71 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+
+template<class S >
+ + + + + +
+ + + + + + + +
const shape_type & xt::xmultiindex_iterator< S >::operator* () const
+
+inline
+
+ +

Definition at line 76 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<class S >
+ + + + + +
+ + + + + + + +
self_type & xt::xmultiindex_iterator< S >::operator++ ()
+
+inline
+
+ +

Definition at line 44 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<class S >
+ + + + + +
+ + + + + + + + +
self_type xt::xmultiindex_iterator< S >::operator++ (int )
+
+inline
+
+ +

Definition at line 64 of file xmultiindex_iterator.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xmultiindex_iterator< S >::operator== (const self_typerhs) const
+
+inline
+
+ +

Definition at line 81 of file xmultiindex_iterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xnewaxis-members.html b/classxt_1_1xnewaxis-members.html new file mode 100644 index 000000000..14a4d0ce5 --- /dev/null +++ b/classxt_1_1xnewaxis-members.html @@ -0,0 +1,120 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xnewaxis< T > Member List
+
+
+ +

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

+ + + + + + + + + + + + + + +
contains(size_type i) const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
convert() const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
operator xnewaxis< S >() const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
operator!=(const self_type &rhs) const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
operator()(size_type i) const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
operator==(const self_type &rhs) const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
revert_index(std::size_t i) const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
self_type typedef (defined in xt::xnewaxis< T >)xt::xnewaxis< T >
size() const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
size_type typedef (defined in xt::xnewaxis< T >)xt::xnewaxis< T >
step_size() const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
step_size(std::size_t i, std::size_t n=1) const noexcept (defined in xt::xnewaxis< T >)xt::xnewaxis< T >inline
xnewaxis()=default (defined in xt::xnewaxis< T >)xt::xnewaxis< T >
+
+ + + + diff --git a/classxt_1_1xnewaxis.html b/classxt_1_1xnewaxis.html new file mode 100644 index 000000000..489af08c3 --- /dev/null +++ b/classxt_1_1xnewaxis.html @@ -0,0 +1,530 @@ + + + + + + + +xtensor: xt::xnewaxis< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xnewaxis< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::xnewaxis< T >:
+
+
+ + +xt::xslice< xnewaxis< T > > + +
+ + + + + + + + + +

+Public Types

using size_type = T
 
using self_type = xnewaxis< T >
 
- Public Types inherited from xt::xslice< xnewaxis< T > >
using derived_type = xnewaxis< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
 operator xnewaxis< S > () const noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
xnewaxis< S > convert () const noexcept
 
size_type operator() (size_type i) const noexcept
 
size_type size () const noexcept
 
size_type step_size () const noexcept
 
size_type step_size (std::size_t i, std::size_t n=1) const noexcept
 
size_type revert_index (std::size_t i) const noexcept
 
bool contains (size_type i) const noexcept
 
bool operator== (const self_type &rhs) const noexcept
 
bool operator!= (const self_type &rhs) const noexcept
 
- Public Member Functions inherited from xt::xslice< xnewaxis< T > >
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xslice< xnewaxis< T > >
xslice (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (const xslice &)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class T>
+class xt::xnewaxis< T >
+

Definition at line 265 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ self_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xnewaxis< T >::self_type = xnewaxis<T>
+
+ +

Definition at line 270 of file xslice.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xnewaxis< T >::size_type = T
+
+ +

Definition at line 269 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ contains()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xnewaxis< T >::contains (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1332 of file xslice.hpp.

+ +
+
+ +

◆ convert()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xnewaxis< S > xt::xnewaxis< T >::convert () const
+
+inlinenoexcept
+
+ +

Definition at line 1296 of file xslice.hpp.

+ +
+
+ +

◆ operator xnewaxis< S >()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xt::xnewaxis< T >::operator xnewaxis< S > () const
+
+inlinenoexcept
+
+ +

Definition at line 1289 of file xslice.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xnewaxis< T >::operator!= (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1344 of file xslice.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xnewaxis< T >::operator() (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1302 of file xslice.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xnewaxis< T >::operator== (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1338 of file xslice.hpp.

+ +
+
+ +

◆ revert_index()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xnewaxis< T >::revert_index (std::size_t i) const
+
+inlinenoexcept
+
+ +

Definition at line 1326 of file xslice.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xnewaxis< T >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1308 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xnewaxis< T >::step_size () const
+
+inlinenoexcept
+
+ +

Definition at line 1314 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xnewaxis< T >::step_size (std::size_t i,
std::size_t n = 1 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1320 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xnewaxis.png b/classxt_1_1xnewaxis.png new file mode 100644 index 0000000000000000000000000000000000000000..a2dc84f678d2fda59e9d3dc65c4ccc088f5182c3 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^OMy6mgBeKruX1$)QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NuNJzX3_Dj46+y*O#Hf`F_3 z^;K8?{@1^!At0q9J^AICtXy}0UInw`%VwtQoZd7?PDiD(=+GpUS`P0?UlKR?s8|-s z&*_`|r25REC4ZDpE|=M&a`OGhqQ$X0Bx>aV;yQ5ai zTU0XN9iHY>Q#;$fZ0Dyte%aIBZq*A)&yI4tvE_E(^(}9Ao0Ub^_gt?(`cL+A&6$kr z^D6({y>zUuC4T#c``gYLP4D&0(VJ+tT_Wh6i6_4t*-y-SkXV=lvw{3wzp9=M*x0P|{&M(7u6%LH>{sLk)*F z!v{sY0zc|?gS}pUQSiKUlGEGslcJ95$#!!c`yX>|YCpZ=bt!RQwx*}>y}ptoMYAvN zvoF8C+U`Vht9$+I&EHg4KGvS*HS2DF*wu||Rc`LyZn`%4(DAYwZnGnKR$f`m`@VwgEt}OT0C)3k!*IDhK + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xoptional_assembly< VE, FE > Member List
+
+
+ +

This is the complete list of members for xt::xoptional_assembly< VE, FE >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assembly_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xoptional_assembly< VE, FE > >inline
at(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
at(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
back()xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
back() constxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
backstrides() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
base_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
begin() noexcept -> layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
const_flag_expression typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
const_pointer typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
const_reference typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
const_value_expression typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
dimension() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) -> referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
element(It first, It last) const -> const_referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
end() noexcept -> layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
end() const noexcept -> const_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
fill(const T &value)xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
flag_expression typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
flat(size_type args)xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
flat(size_type args) constxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
from_shape(S &&s) (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >static
from_shape(S &&s)xt::xoptional_assembly< VE, FE >inline
front()xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
front() constxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
has_linear_assign(const S &strides) const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
has_value() noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
has_value() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
in_bounds(Args... args) constxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
layout() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
operator()(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xoptional_assembly &) (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >inline
operator=(xoptional_assembly &&) (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >inline
operator=(const xexpression< E > &e) (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
operator=(const xexpression< E > &e) -> self_type &xt::xoptional_assembly< VE, FE >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator[](const S &index) -> disable_integral_t< S, reference >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
periodic(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
raw_flag_expression typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
raw_value_expression typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
reference typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
rend() noexcept -> reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
reshape(const S &shape, layout_type layout=static_layout) &xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
resize(const S &shape, bool force=false)xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
resize(const S &shape, layout_type l)xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
resize(const S &shape, const strides_type &strides)xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
self_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
semantic_base typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
shape() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
shape(size_type index) constxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
shape_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
size() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
storage_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
strides() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
strides_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
unchecked(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
unchecked(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
value() noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
value() const noexceptxt::xoptional_assembly_base< xoptional_assembly< VE, FE > >inline
value_expression typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
value_type typedef (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
xoptional_assembly()xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(const shape_type &shape, layout_type l=base_type::static_layout)xt::xoptional_assembly< VE, FE >inlineexplicit
xoptional_assembly(const shape_type &shape, const value_type &value, layout_type l=base_type::static_layout)xt::xoptional_assembly< VE, FE >inlineexplicit
xoptional_assembly(const shape_type &shape, const strides_type &strides)xt::xoptional_assembly< VE, FE >inlineexplicit
xoptional_assembly(const shape_type &shape, const strides_type &strides, const value_type &value)xt::xoptional_assembly< VE, FE >inlineexplicit
xoptional_assembly(const VE &ve)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(VE &&ve)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(OVE &&ove, OFE &&ofe)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(const value_type &value)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(nested_initializer_list_t< value_type, 1 > t)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(nested_initializer_list_t< value_type, 2 > t)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(nested_initializer_list_t< value_type, 3 > t)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(nested_initializer_list_t< value_type, 4 > t)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(nested_initializer_list_t< value_type, 5 > t)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(const xoptional_assembly &) (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(xoptional_assembly &&) (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly(const xexpression< E > &e)xt::xoptional_assembly< VE, FE >inline
xoptional_assembly_base< xoptional_assembly< VE, FE > > (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xoptional_assembly()=default (defined in xt::xoptional_assembly< VE, FE >)xt::xoptional_assembly< VE, FE >
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xoptional__assembly.html b/classxt_1_1xoptional__assembly.html new file mode 100644 index 000000000..c494c4eba --- /dev/null +++ b/classxt_1_1xoptional__assembly.html @@ -0,0 +1,2162 @@ + + + + + + + +xtensor: xt::xoptional_assembly< VE, FE > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xoptional_assembly< VE, FE > Class Template Reference
+
+
+ +

Dense multidimensional container holding optional values, optimized for tensor operations. + More...

+ +

#include <xoptional_assembly.hpp>

+
+Inheritance diagram for xt::xoptional_assembly< VE, FE >:
+
+
+ + +xt::xoptional_assembly_base< xoptional_assembly< VE, FE > > +xt::xcontainer_semantic< xoptional_assembly< VE, FE > > +xt::xiterable< D > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xoptional_assembly< VE, FE >
 
using base_type = xoptional_assembly_base< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using raw_value_expression = typename base_type::raw_value_expression
 
using raw_flag_expression = typename base_type::raw_flag_expression
 
using value_expression = typename base_type::value_expression
 
using flag_expression = typename base_type::flag_expression
 
using const_value_expression = typename base_type::const_value_expression
 
using const_flag_expression = typename base_type::const_flag_expression
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using assembly_type = base_type
 
- Public Types inherited from xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >
using self_type = xoptional_assembly_base< xoptional_assembly< VE, FE > >
 
using derived_type = xoptional_assembly< VE, FE >
 
using inner_types = xcontainer_inner_types< xoptional_assembly< VE, FE > >
 
using raw_value_expression = typename inner_types::raw_value_expression
 
using base_value_type = typename raw_value_expression::value_type
 
using base_reference = typename raw_value_expression::reference
 
using base_const_reference = typename raw_value_expression::const_reference
 
using raw_flag_expression = typename inner_types::raw_flag_expression
 
using flag_type = typename raw_flag_expression::value_type
 
using flag_reference = typename raw_flag_expression::reference
 
using flag_const_reference = typename raw_flag_expression::const_reference
 
using storage_type = typename inner_types::storage_type
 
using value_type = typename storage_type::value_type
 
using reference = typename storage_type::reference
 
using const_reference = typename storage_type::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename raw_value_expression::size_type
 
using difference_type = typename raw_value_expression::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename raw_value_expression::shape_type
 
using strides_type = typename raw_value_expression::strides_type
 
using backstrides_type = typename raw_value_expression::backstrides_type
 
using inner_shape_type = typename raw_value_expression::inner_shape_type
 
using inner_strides_type = typename raw_value_expression::inner_strides_type
 
using inner_backstrides_type = typename raw_value_expression::inner_backstrides_type
 
using iterable_base = xiterable< xoptional_assembly< VE, FE > >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using expression_tag = xoptional_expression_tag
 
using value_expression = raw_value_expression &
 
using flag_expression = raw_flag_expression &
 
using const_value_expression = const raw_value_expression &
 
using const_flag_expression = const raw_flag_expression &
 
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_iterator = typename storage_type::iterator
 
using const_linear_iterator = typename storage_type::const_iterator
 
using reverse_linear_iterator = typename storage_type::reverse_iterator
 
using const_reverse_linear_iterator = typename storage_type::const_reverse_iterator
 
using iterator = typename iterable_base::iterator
 
using const_iterator = typename iterable_base::const_iterator
 
using reverse_iterator = typename iterable_base::reverse_iterator
 
using const_reverse_iterator = typename iterable_base::const_reverse_iterator
 
- Public Types inherited from xt::xcontainer_semantic< xoptional_assembly< VE, FE > >
using base_type = xsemantic_base< xoptional_assembly< VE, FE > >
 
using derived_type = xoptional_assembly< VE, FE >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
xoptional_assemblyoperator= (const xexpression< E > &e)
 
Constructors
 xoptional_assembly ()
 Allocates an uninitialized xoptional_assembly that holds 0 element.
 
 xoptional_assembly (const shape_type &shape, layout_type l=base_type::static_layout)
 Allocates an uninitialized xoptional_assembly with the specified shape and layout_type.
 
 xoptional_assembly (const shape_type &shape, const value_type &value, layout_type l=base_type::static_layout)
 Allocates an xoptional_assembly with the specified shape and layout_type.
 
 xoptional_assembly (const shape_type &shape, const strides_type &strides)
 Allocates an uninitialized xoptional_assembly with the specified shape and strides.
 
 xoptional_assembly (const shape_type &shape, const strides_type &strides, const value_type &value)
 Allocates an uninitialized xoptional_assembly with the specified shape and strides.
 
 xoptional_assembly (const VE &ve)
 Allocates an xoptional_assembly from the specified value expression.
 
 xoptional_assembly (VE &&ve)
 Allocates an xoptional_assembly from the specified value expression.
 
template<class OVE , class OFE , typename = std::enable_if_t<is_xexpression<OVE>::value && is_xexpression<OFE>::value>>
 xoptional_assembly (OVE &&ove, OFE &&ofe)
 Allocates an xoptional_assembly from the specified value expression and missing mask expression.
 
 xoptional_assembly (const value_type &value)
 Allocates an xoptional_assembly that holds a single element initialized to the specified value.
 
Constructors from initializer list
 xoptional_assembly (nested_initializer_list_t< value_type, 1 > t)
 Allocates a one-dimensional xoptional_assembly.
 
 xoptional_assembly (nested_initializer_list_t< value_type, 2 > t)
 Allocates a two-dimensional xoptional_assembly.
 
 xoptional_assembly (nested_initializer_list_t< value_type, 3 > t)
 Allocates a three-dimensional xoptional_assembly.
 
 xoptional_assembly (nested_initializer_list_t< value_type, 4 > t)
 Allocates a four-dimensional xoptional_assembly.
 
 xoptional_assembly (nested_initializer_list_t< value_type, 5 > t)
 Allocates a five-dimensional xoptional_assembly.
 
 xoptional_assembly (const xoptional_assembly &)
 
xoptional_assemblyoperator= (const xoptional_assembly &)
 
 xoptional_assembly (xoptional_assembly &&)
 
xoptional_assemblyoperator= (xoptional_assembly &&)
 
template<class S >
xoptional_assembly< VE, FE > from_shape (S &&s)
 Allocates and returns an xoptional_assembly with the specified shape.
 
- Public Member Functions inherited from xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >
+reference operator() (Args... args)
 
+const_reference operator() (Args... args) const
 
+reference at (Args... args)
 
+const_reference at (Args... args) const
 
+reference unchecked (Args... args)
 
+const_reference unchecked (Args... args) const
 
+disable_integral_t< S, reference > operator[] (const S &index)
 
+reference operator[] (std::initializer_list< I > index)
 
+disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+const_reference operator[] (std::initializer_list< I > index) const
 
+reference periodic (Args... args)
 
+const_reference periodic (Args... args) const
 
+reference element (It first, It last)
 
+const_reference element (It first, It last) const
 
+stepper stepper_begin (const S &shape) noexcept
 
+const_stepper stepper_begin (const S &shape) const noexcept
 
+stepper stepper_end (const S &shape, layout_type l) noexcept
 
+const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+layout_iterator< L > begin () noexcept
 
+broadcast_iterator< S, L > begin (const S &shape) noexcept
 
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+layout_iterator< L > end () noexcept
 
+broadcast_iterator< S, L > end (const S &shape) noexcept
 
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+reverse_layout_iterator< L > rbegin () noexcept
 
+reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+reverse_layout_iterator< L > rend () noexcept
 
+reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
size_type size () const noexcept
 Returns the number of element in the optional assembly.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the optional assembly.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the optional assembly.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the optional assembly.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the optional assembly.
 
void resize (const S &shape, bool force=false)
 Resizes the optional assembly.
 
void resize (const S &shape, layout_type l)
 Resizes the optional assembly.
 
void resize (const S &shape, const strides_type &strides)
 Resizes the optional assembly.
 
auto & reshape (const S &shape, layout_type layout=static_layout) &
 Reshapes the optional assembly.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
void fill (const T &value)
 Fills the data with the given value.
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly, after dimension and bounds checking.
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly, after dimension and bounds checking.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the optional assembly.
 
auto operator[] (std::initializer_list< I > index) -> reference
 
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the optional assembly.
 
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
reference front ()
 Returns a reference to the first element of the optional assembly.
 
const_reference front () const
 Returns a constant reference to the first element of the optional assembly.
 
reference back ()
 Returns a reference to the last element of the optional assembly.
 
const_reference back () const
 Returns a constant reference to the last element of the optional assembly.
 
reference flat (size_type args)
 Returns a reference to the element at the specified position of the underlying storage in the optional assembly.
 
const_reference flat (size_type args) const
 Returns a constant reference to the element at the specified position of the underlying storage in the optional assembly.
 
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
storage_type & storage () noexcept
 
const storage_type & storage () const noexcept
 
value_type * data () noexcept
 
const value_type * data () const noexcept
 
const size_type data_offset () const noexcept
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the optional assembly to the specified parameter.
 
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xoptional_assembly_base can be linearly assigned to an expression with the specified strides.
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
value_expression value () noexcept
 Return an expression for the values of the optional assembly.
 
const_value_expression value () const noexcept
 Return a constant expression for the values of the optional assembly.
 
flag_expression has_value () noexcept
 Return an expression for the missing mask of the optional assembly.
 
const_flag_expression has_value () const noexcept
 Return a constant expression for the missing mask of the optional assembly.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xoptional_assembly< VE, FE > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + +

+Static Public Member Functions

+template<class S = shape_type>
static xoptional_assembly from_shape (S &&s)
 
+ + + +

+Friends

class xoptional_assembly_base< xoptional_assembly< VE, FE > >
 
+ + + + + + + + + +

Extended copy semantic

template<class E >
 xoptional_assembly (const xexpression< E > &e)
 The extended copy constructor.
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Protected Member Functions inherited from xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >
xoptional_assembly_base (const xoptional_assembly_base &)=default
 
xoptional_assembly_base (xoptional_assembly_base &&)=default
 
+xoptional_assembly_baseoperator= (const xoptional_assembly_base &)=default
 
+xoptional_assembly_baseoperator= (xoptional_assembly_base &&)=default
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xoptional_assembly< VE, FE > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class VE, class FE>
+class xt::xoptional_assembly< VE, FE >

Dense multidimensional container holding optional values, optimized for tensor operations.

+

The xoptional_assembly class implements a dense multidimensional container hoding optional values. This container is optimized of tensor operations: contrary to xarray_optional, xoptional_assembly holds two separated expressions, one for the values, the other for the missing mask.

+
Template Parameters
+ + + +
VEThe type of expression holding the values.
FEThe type of expression holding the missing mask.
+
+
+ +

Definition at line 61 of file xoptional_assembly.hpp.

+

Member Typedef Documentation

+ +

◆ assembly_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::assembly_type = base_type
+
+ +

Definition at line 84 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::base_type = xoptional_assembly_base<self_type>
+
+ +

Definition at line 67 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_flag_expression

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::const_flag_expression = typename base_type::const_flag_expression
+
+ +

Definition at line 74 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 80 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 78 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::const_value_expression = typename base_type::const_value_expression
+
+ +

Definition at line 73 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::flag_expression = typename base_type::flag_expression
+
+ +

Definition at line 72 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::pointer = typename base_type::pointer
+
+ +

Definition at line 79 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ raw_flag_expression

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::raw_flag_expression = typename base_type::raw_flag_expression
+
+ +

Definition at line 70 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ raw_value_expression

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::raw_value_expression = typename base_type::raw_value_expression
+
+ +

Definition at line 69 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::reference = typename base_type::reference
+
+ +

Definition at line 77 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::self_type = xoptional_assembly<VE, FE>
+
+ +

Definition at line 66 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 68 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 81 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 75 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 82 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::value_expression = typename base_type::value_expression
+
+ +

Definition at line 71 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly< VE, FE >::value_type = typename base_type::value_type
+
+ +

Definition at line 76 of file xoptional_assembly.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xoptional_assembly() [1/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly ()
+
+inline
+
+ +

Allocates an uninitialized xoptional_assembly that holds 0 element.

+ +

Definition at line 279 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [2/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const shape_type & shape,
layout_type l = base_type::static_layout 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xoptional_assembly with the specified shape and layout_type.

+
Parameters
+ + + +
shapethe shape of the xoptional_assembly
lthe layout_type of the xoptional_assembly
+
+
+ +

Definition at line 293 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [3/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const shape_type & shape,
const value_type & value,
layout_type l = base_type::static_layout 
)
+
+inlineexplicit
+
+ +

Allocates an xoptional_assembly with the specified shape and layout_type.

+

Elements are initialized to the specified value.

Parameters
+ + + + +
shapethe shape of the xoptional_assembly
valuethe value of the elements
lthe layout_type of the xoptional_assembly
+
+
+ +

Definition at line 308 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [4/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const shape_type & shape,
const strides_type & strides 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xoptional_assembly with the specified shape and strides.

+
Parameters
+ + + +
shapethe shape of the xoptional_assembly
stridesthe strides of the xoptional_assembly
+
+
+ +

Definition at line 325 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [5/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const shape_type & shape,
const strides_type & strides,
const value_type & value 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xoptional_assembly with the specified shape and strides.

+

Elements are initialized to the specified value.

Parameters
+ + + + +
shapethe shape of the xoptional_assembly
stridesthe strides of the xoptional_assembly
valuethe value of the elements
+
+
+ +

Definition at line 340 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [6/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const VE & ve)
+
+inline
+
+ +

Allocates an xoptional_assembly from the specified value expression.

+

The flag expression is initialized as if no value is missing.

Parameters
+ + +
vethe expression holding the values
+
+
+ +

Definition at line 370 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [7/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (VE && ve)
+
+inline
+
+ +

Allocates an xoptional_assembly from the specified value expression.

+

The flag expression is initialized as if no value is missing. The value expression is moved inside the xoptional_assembly and is therefore not available after the xoptional_assembly has been constructed.

Parameters
+ + +
vethe expression holding the values
+
+
+ +

Definition at line 385 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [8/17]

+ +
+
+
+template<class VE , class FE >
+
+template<class OVE , class OFE , typename >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (OVE && ove,
OFE && ofe 
)
+
+inline
+
+ +

Allocates an xoptional_assembly from the specified value expression and missing mask expression.

+
Parameters
+ + + +
ovethe expression holding the values
ofethe expression holding the missing mask
+
+
+ +

Definition at line 400 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [9/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const value_type & value)
+
+inline
+
+ +

Allocates an xoptional_assembly that holds a single element initialized to the specified value.

+
Parameters
+ + +
valuethe value of the element
+
+
+ +

Definition at line 357 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [10/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (nested_initializer_list_t< value_type, 1 > t)
+
+inline
+
+ +

Allocates a one-dimensional xoptional_assembly.

+
Parameters
+ + +
tthe elements of the xoptional_assembly
+
+
+ +

Definition at line 418 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [11/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (nested_initializer_list_t< value_type, 2 > t)
+
+inline
+
+ +

Allocates a two-dimensional xoptional_assembly.

+
Parameters
+ + +
tthe elements of the xoptional_assembly
+
+
+ +

Definition at line 436 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [12/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (nested_initializer_list_t< value_type, 3 > t)
+
+inline
+
+ +

Allocates a three-dimensional xoptional_assembly.

+
Parameters
+ + +
tthe elements of the xoptional_assembly
+
+
+ +

Definition at line 454 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [13/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (nested_initializer_list_t< value_type, 4 > t)
+
+inline
+
+ +

Allocates a four-dimensional xoptional_assembly.

+
Parameters
+ + +
tthe elements of the xoptional_assembly
+
+
+ +

Definition at line 472 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [14/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (nested_initializer_list_t< value_type, 5 > t)
+
+inline
+
+ +

Allocates a five-dimensional xoptional_assembly.

+
Parameters
+ + +
tthe elements of the xoptional_assembly
+
+
+ +

Definition at line 490 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [15/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const xoptional_assembly< VE, FE > & rhs)
+
+inline
+
+ +

Definition at line 518 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [16/17]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (xoptional_assembly< VE, FE > && rhs)
+
+inline
+
+ +

Definition at line 528 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly() [17/17]

+ +
+
+
+template<class VE , class FE >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly< VE, FE >::xoptional_assembly (const xexpression< E > & e)
+
+inline
+
+ +

The extended copy constructor.

+ +

Definition at line 564 of file xoptional_assembly.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ from_shape()

+ +
+
+
+template<class VE , class FE >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
xoptional_assembly< VE, FE > xt::xoptional_assembly< VE, FE >::from_shape (S && s)
+
+inline
+
+ +

Allocates and returns an xoptional_assembly with the specified shape.

+
Parameters
+ + +
sthe shape of the xoptional_assembly
+
+
+ +

Definition at line 511 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class VE , class FE >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly< VE, FE >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 578 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly< VE, FE >::operator= (const xoptional_assembly< VE, FE > & rhs)
+
+inline
+
+ +

Definition at line 538 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly< VE, FE >::operator= (xoptional_assembly< VE, FE > && rhs)
+
+inline
+
+ +

Definition at line 547 of file xoptional_assembly.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xoptional_assembly_base< xoptional_assembly< VE, FE > >

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + +
friend class xoptional_assembly_base< xoptional_assembly< VE, FE > >
+
+friend
+
+ +

Definition at line 139 of file xoptional_assembly.hpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classxt_1_1xoptional__assembly.js b/classxt_1_1xoptional__assembly.js new file mode 100644 index 000000000..b8e055c42 --- /dev/null +++ b/classxt_1_1xoptional__assembly.js @@ -0,0 +1,20 @@ +var classxt_1_1xoptional__assembly = +[ + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a13b42b1a2ff43f41688d9e9dfecb70ab", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a9148277e3915fdc930d875a7ad4b1156", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#af86f39ed88264ad627dcc09454b02d3e", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#af53e6578e2720b3de87db901d4ef63c0", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a91d71b9f5a1c0df8f7f10568a667149c", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a3ded488b5944690be387afa5e35165fb", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#aa525cc23b8a082ca1caf3fafcd321c88", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a18157a685aad00bd30890b9fe0484628", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#ae5c0585bcb1ec14efb01b993aa17c9d7", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a2454d878267c2ac27179ef2ca365d48e", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#ae13345d56e1c0e1b2a21290a66c8aa46", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a61dd51f2bf58adb62310d475253fc5b5", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#ace216a4aee450e4bd52f50b791091d99", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a16611b26c4241fdbbc7e6afcc8a09780", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html#a251ff352299adb4dd685ae71755c112f", null ], + [ "from_shape", "classxt_1_1xoptional__assembly.html#a04719a5f78f5bba3faa0f9a8d6aa393d", null ], + [ "operator=", "classxt_1_1xoptional__assembly.html#af67042d373194546b43afffb160ce687", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xoptional__assembly.png b/classxt_1_1xoptional__assembly.png new file mode 100644 index 0000000000000000000000000000000000000000..7bbd87ddc86182cc5ebdf39313ee293a76871b35 GIT binary patch literal 3300 zcmc(hcT`hZ9>;^Y>L_Iy6i_MSpg2e`f|St441^+*sPqJZ5J7252?-<|of%Y`Mna^6 zfG9}71OuT7f`D|CfEfZ(L`t486r+*0FW}6Xb9QIW*_}W3os-<(``vrr{oV5U-rtSW zr>w&%bmUapKGQn2r-UB%+v3%cp&*3b|5R=vkfc zr2Wgb=Wb82AA48KPmlyp%*vx_!=2*T$R#R8mS++%H#j^m45bV;(>Dt58y{SKg0HN& zTZgXq5vw5^dVFLzN@rAd)_5IV@jKcqH__w65jo&w$uDhBn>67t`aQ`6){tI?8PoBS z8^C>&X$6k1E1U+ZzBa!uhlJG3CIv!k29(;e-?#*kR0)0TFrCWpqDR_MmXRG2z1MeJ zM~+4K3k+VQ&TKSHUK8~`y5h#F?@3b_En8Z&XNF$MNxS0I3dB%?l%ubQA|-syahx$? zn%ezAHgXtTrHRQsrpNZu&_3Q>YL}5%fq7QWfl>`B@n#V7SXm4yBGsHYz0_KF>}U6g zSpFFlPtIpG8*TJJ&L>(?IQ#(0^A69TZp7$8lbLtIML|6bT>S>&>Zd_l%fKH2xB-n3PhoVoyhd*)cI<#HdY8M5f4cRd&qY2s309j7J?9_(TU17bB zfQa@Qr7D1~?l>M(SSAXqNRScR%9BC@&DtVioq!Td|tar zTZ|Gi9d}+Xz2O`959H!o9h$406R}MG?VR zF!$W&{Zt8!B*=Q`9r-;u`>hB^Nv_cel5^KaiMNnXC+Q`w_)-g$QBodoSehE~^-?w6 z4$*jpZue3uxI$5~ofyNb?r7=g+3?@!8hkb1a}dcG?#}#0M#G#`mRM9oEs1VQMhm8v zo0plB&oiv4&Pwc!1DxchXj8VOWAuSd_f$nIBA%n)F2hcJ_A7k~8%;bHkr+HbVkWxiU^_(cN~mYgD;eb=f`?+%*B z&qpvh({vhBBY02Ht;Kt}kKVGE_89J*Ds5boV$a`M`&pZ$Mu<|+to$U(TPOgKZy9H+ z=yN^1Lq<%GZZo)R+R!QM(dbo7;*#|s1$}JM=SqyXrk&)o|K1zna#Gg89NfOJMnayoDif`|G2$z!P>*z2-2x8SEzg7lxVdmvb84_PYha*{zGn z#s1;}5wkb~ijg$*klXA)6&?8SQQr`yHHSBRk{I)1IYd+q!tdD91)NM5iyI8E)lWmCm3HoBgFW4 zsNc>DSA~ENgSr_o-YL<${Wqffo6{6>zY)LPE$v1VKxr;Ps@YQj_=GI~Vj^I7af=8WnbdE=4J1(k}wSG6^E_b-icc&M6uZba0Nf`6#MX!ZfiBjAGqVoQTQGDXHW5M#YhDdsj zW^-S`N3*$oM%n%{34!68pD4m8pdwb%k=#Ma>k+TAN4aVKI8@V z47g8_zFrIV-M}9TBFEg}IQrq|f;U4g1qLf=ga9+?DQSP>MEZ3iDlkQ1rHwhe*z7TI zCxSttzH^lvQs8=D$oS;Ab5V1yLmX~A_5(*!_Fm@b+0>{cK|y6GG~Hh&>v0J%M!dQi z3puRa6KebNz3EW+P#$!V9}H6arhP>?KcYQ9G-uc(H>%0}*9(+9_)8;6aaKCe^W#}E zzZMPdU}2yiseS@&st-4ANb@AyqHw-kjhe&z;h#lDTq59j>|fyid)1$C4_>#q1`<#U z2l>!gl@rU5eJl_8%dtB^>v(9hNcw26=$W_5qY_3IG4gm2)^UhK$h64pI1Yq14}?$| z1T;=DS0(9$h4dd91dLz*ZyQiMCcQPO9ffAX`#(A{Tx3fFHdSIvN4CKK8}1OjKjxB! zDfYIiXSZ_6q7=lJT+&vRy_HM;n`@j+Cvi4fyBI5xi5CN+S36x+1jRfw5nKFv*haNb zb~E*HmjkKLH5zd%cr=VKcFD1;>Q=x?^v%>X0&q3NgRQwayZ<{^eK{~;hk7H8bq(i_5 M4m)*{X61GDU*B9lr~m)} literal 0 HcmV?d00001 diff --git a/classxt_1_1xoptional__assembly__adaptor-members.html b/classxt_1_1xoptional__assembly__adaptor-members.html new file mode 100644 index 000000000..f6ae62741 --- /dev/null +++ b/classxt_1_1xoptional__assembly__adaptor-members.html @@ -0,0 +1,244 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xoptional_assembly_adaptor< VEC, FEC > Member List
+
+
+ +

This is the complete list of members for xt::xoptional_assembly_adaptor< VEC, FEC >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assembly_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >inline
at(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
at(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
back()xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
back() constxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
backstrides() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
base_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
begin() noexcept -> layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
const_flag_expression typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
const_pointer typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
const_reference typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
const_value_expression typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
dimension() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) -> referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
element(It first, It last) const -> const_referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
end() noexcept -> layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
end() const noexcept -> const_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
fill(const T &value)xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
flag_expression typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
flat(size_type args)xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
flat(size_type args) constxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
front()xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
front() constxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
has_linear_assign(const S &strides) const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
has_value() noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
has_value() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
in_bounds(Args... args) constxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
layout() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
operator()(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xoptional_assembly_adaptor &) (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >inline
operator=(xoptional_assembly_adaptor &&) (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >inline
operator=(temporary_type &&) (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >inline
operator=(const xexpression< E > &e) (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
operator=(const xexpression< E > &e) -> self_type &xt::xoptional_assembly_adaptor< VEC, FEC >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator[](const S &index) -> disable_integral_t< S, reference >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
periodic(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
reference typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
rend() noexcept -> reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
reshape(const S &shape, layout_type layout=static_layout) &xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
resize(const S &shape, bool force=false)xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
resize(const S &shape, layout_type l)xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
resize(const S &shape, const strides_type &strides)xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
self_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
semantic_base typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
shape() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
shape(size_type index) constxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
shape_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
size() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
storage_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
strides() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
strides_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
temporary_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
unchecked(Args... args) -> referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
unchecked(Args... args) const -> const_referencext::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
value() noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
value() const noexceptxt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >inline
value_expression typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
value_type typedef (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
xoptional_assembly_adaptor(OVE &&ve, OFE &&fe)xt::xoptional_assembly_adaptor< VEC, FEC >inline
xoptional_assembly_adaptor(const xoptional_assembly_adaptor &) (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >inline
xoptional_assembly_adaptor(xoptional_assembly_adaptor &&) (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >inline
xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > > (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xoptional_assembly_adaptor()=default (defined in xt::xoptional_assembly_adaptor< VEC, FEC >)xt::xoptional_assembly_adaptor< VEC, FEC >
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__adaptor.html b/classxt_1_1xoptional__assembly__adaptor.html new file mode 100644 index 000000000..fc2c5815f --- /dev/null +++ b/classxt_1_1xoptional__assembly__adaptor.html @@ -0,0 +1,1499 @@ + + + + + + + +xtensor: xt::xoptional_assembly_adaptor< VEC, FEC > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xoptional_assembly_adaptor< VEC, FEC > Class Template Reference
+
+
+ +

Dense multidimensional adaptor holding optional values, optimized for tensor operations. + More...

+ +

#include <xoptional_assembly.hpp>

+
+Inheritance diagram for xt::xoptional_assembly_adaptor< VEC, FEC >:
+
+
+ + +xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > > +xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > > +xt::xiterable< D > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xoptional_assembly_adaptor< VEC, FEC >
 
using base_type = xoptional_assembly_base< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using storage_type = typename base_type::storage_type
 
using value_expression = typename base_type::value_expression
 
using flag_expression = typename base_type::flag_expression
 
using const_value_expression = typename base_type::const_value_expression
 
using const_flag_expression = typename base_type::const_flag_expression
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using assembly_type = base_type
 
- Public Types inherited from xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
using self_type = xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
 
using derived_type = xoptional_assembly_adaptor< VEC, FEC >
 
using inner_types = xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
 
using raw_value_expression = typename inner_types::raw_value_expression
 
using base_value_type = typename raw_value_expression::value_type
 
using base_reference = typename raw_value_expression::reference
 
using base_const_reference = typename raw_value_expression::const_reference
 
using raw_flag_expression = typename inner_types::raw_flag_expression
 
using flag_type = typename raw_flag_expression::value_type
 
using flag_reference = typename raw_flag_expression::reference
 
using flag_const_reference = typename raw_flag_expression::const_reference
 
using storage_type = typename inner_types::storage_type
 
using value_type = typename storage_type::value_type
 
using reference = typename storage_type::reference
 
using const_reference = typename storage_type::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename raw_value_expression::size_type
 
using difference_type = typename raw_value_expression::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename raw_value_expression::shape_type
 
using strides_type = typename raw_value_expression::strides_type
 
using backstrides_type = typename raw_value_expression::backstrides_type
 
using inner_shape_type = typename raw_value_expression::inner_shape_type
 
using inner_strides_type = typename raw_value_expression::inner_strides_type
 
using inner_backstrides_type = typename raw_value_expression::inner_backstrides_type
 
using iterable_base = xiterable< xoptional_assembly_adaptor< VEC, FEC > >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using expression_tag = xoptional_expression_tag
 
using value_expression = raw_value_expression &
 
using flag_expression = raw_flag_expression &
 
using const_value_expression = const raw_value_expression &
 
using const_flag_expression = const raw_flag_expression &
 
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_iterator = typename storage_type::iterator
 
using const_linear_iterator = typename storage_type::const_iterator
 
using reverse_linear_iterator = typename storage_type::reverse_iterator
 
using const_reverse_linear_iterator = typename storage_type::const_reverse_iterator
 
using iterator = typename iterable_base::iterator
 
using const_iterator = typename iterable_base::const_iterator
 
using reverse_iterator = typename iterable_base::reverse_iterator
 
using const_reverse_iterator = typename iterable_base::const_reverse_iterator
 
- Public Types inherited from xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >
using base_type = xsemantic_base< xoptional_assembly_adaptor< VEC, FEC > >
 
using derived_type = xoptional_assembly_adaptor< VEC, FEC >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
xoptional_assembly_adaptoroperator= (const xexpression< E > &e)
 
Constructors
template<class OVE , class OFE >
 xoptional_assembly_adaptor (OVE &&ve, OFE &&fe)
 Constructs an xoptional_assembly_adaptor of the given value and missing mask expressions.
 
 xoptional_assembly_adaptor (const xoptional_assembly_adaptor &)
 
xoptional_assembly_adaptoroperator= (const xoptional_assembly_adaptor &)
 
 xoptional_assembly_adaptor (xoptional_assembly_adaptor &&)
 
xoptional_assembly_adaptoroperator= (xoptional_assembly_adaptor &&)
 
xoptional_assembly_adaptoroperator= (temporary_type &&)
 
- Public Member Functions inherited from xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
+reference operator() (Args... args)
 
+const_reference operator() (Args... args) const
 
+reference at (Args... args)
 
+const_reference at (Args... args) const
 
+reference unchecked (Args... args)
 
+const_reference unchecked (Args... args) const
 
+disable_integral_t< S, reference > operator[] (const S &index)
 
+reference operator[] (std::initializer_list< I > index)
 
+disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+const_reference operator[] (std::initializer_list< I > index) const
 
+reference periodic (Args... args)
 
+const_reference periodic (Args... args) const
 
+reference element (It first, It last)
 
+const_reference element (It first, It last) const
 
+stepper stepper_begin (const S &shape) noexcept
 
+const_stepper stepper_begin (const S &shape) const noexcept
 
+stepper stepper_end (const S &shape, layout_type l) noexcept
 
+const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+layout_iterator< L > begin () noexcept
 
+broadcast_iterator< S, L > begin (const S &shape) noexcept
 
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+layout_iterator< L > end () noexcept
 
+broadcast_iterator< S, L > end (const S &shape) noexcept
 
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+reverse_layout_iterator< L > rbegin () noexcept
 
+reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+reverse_layout_iterator< L > rend () noexcept
 
+reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
size_type size () const noexcept
 Returns the number of element in the optional assembly.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the optional assembly.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the optional assembly.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the optional assembly.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the optional assembly.
 
void resize (const S &shape, bool force=false)
 Resizes the optional assembly.
 
void resize (const S &shape, layout_type l)
 Resizes the optional assembly.
 
void resize (const S &shape, const strides_type &strides)
 Resizes the optional assembly.
 
auto & reshape (const S &shape, layout_type layout=static_layout) &
 Reshapes the optional assembly.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
void fill (const T &value)
 Fills the data with the given value.
 
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly, after dimension and bounds checking.
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly, after dimension and bounds checking.
 
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the optional assembly.
 
auto operator[] (std::initializer_list< I > index) -> reference
 
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the optional assembly.
 
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
reference front ()
 Returns a reference to the first element of the optional assembly.
 
const_reference front () const
 Returns a constant reference to the first element of the optional assembly.
 
reference back ()
 Returns a reference to the last element of the optional assembly.
 
const_reference back () const
 Returns a constant reference to the last element of the optional assembly.
 
reference flat (size_type args)
 Returns a reference to the element at the specified position of the underlying storage in the optional assembly.
 
const_reference flat (size_type args) const
 Returns a constant reference to the element at the specified position of the underlying storage in the optional assembly.
 
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
storage_type & storage () noexcept
 
const storage_type & storage () const noexcept
 
value_type * data () noexcept
 
const value_type * data () const noexcept
 
const size_type data_offset () const noexcept
 
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the optional assembly to the specified parameter.
 
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xoptional_assembly_base can be linearly assigned to an expression with the specified strides.
 
linear_iterator linear_begin () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
auto stepper_begin (const S &shape) noexcept -> stepper
 
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
value_expression value () noexcept
 Return an expression for the values of the optional assembly.
 
const_value_expression value () const noexcept
 Return a constant expression for the values of the optional assembly.
 
flag_expression has_value () noexcept
 Return an expression for the missing mask of the optional assembly.
 
const_flag_expression has_value () const noexcept
 Return a constant expression for the missing mask of the optional assembly.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + +

+Friends

class xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
 
+ + + + + +

Extended copy semantic

template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
static constexpr layout_type static_layout
 
static constexpr bool contiguous_layout
 
- Protected Member Functions inherited from xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
xoptional_assembly_base (const xoptional_assembly_base &)=default
 
xoptional_assembly_base (xoptional_assembly_base &&)=default
 
+xoptional_assembly_baseoperator= (const xoptional_assembly_base &)=default
 
+xoptional_assembly_baseoperator= (xoptional_assembly_base &&)=default
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class VEC, class FEC>
+class xt::xoptional_assembly_adaptor< VEC, FEC >

Dense multidimensional adaptor holding optional values, optimized for tensor operations.

+

The xoptional_assembly_adaptor class implements a dense multidimensional adaptor hoding optional values. It is used to provide an optional expression semantic to two tensor expressions, one holding the value, the hother holding the missing mask.

+
Template Parameters
+ + + +
VECThe closure for the type of expression holding the values.
FEThe closure for the type of expression holding the missing mask.
+
+
+ +

Definition at line 190 of file xoptional_assembly.hpp.

+

Member Typedef Documentation

+ +

◆ assembly_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::assembly_type = base_type
+
+ +

Definition at line 212 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::base_type = xoptional_assembly_base<self_type>
+
+ +

Definition at line 196 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_flag_expression

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::const_flag_expression = typename base_type::const_flag_expression
+
+ +

Definition at line 202 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 207 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 205 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::const_value_expression = typename base_type::const_value_expression
+
+ +

Definition at line 201 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::flag_expression = typename base_type::flag_expression
+
+ +

Definition at line 200 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::pointer = typename base_type::pointer
+
+ +

Definition at line 206 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::reference = typename base_type::reference
+
+ +

Definition at line 204 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::self_type = xoptional_assembly_adaptor<VEC, FEC>
+
+ +

Definition at line 195 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 197 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 208 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 198 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 209 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 210 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::value_expression = typename base_type::value_expression
+
+ +

Definition at line 199 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class VEC , class FEC >
+ + + + +
using xt::xoptional_assembly_adaptor< VEC, FEC >::value_type = typename base_type::value_type
+
+ +

Definition at line 203 of file xoptional_assembly.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xoptional_assembly_adaptor() [1/3]

+ +
+
+
+template<class VEC , class FEC >
+
+template<class OVE , class OFE >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly_adaptor< VEC, FEC >::xoptional_assembly_adaptor (OVE && ve,
OFE && fe 
)
+
+inline
+
+ +

Constructs an xoptional_assembly_adaptor of the given value and missing mask expressions.

+
Parameters
+ + + +
vethe expression holding the values
fethe expression holding the missing mask
+
+
+ +

Definition at line 637 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly_adaptor() [2/3]

+ +
+
+
+template<class VEC , class FEC >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly_adaptor< VEC, FEC >::xoptional_assembly_adaptor (const xoptional_assembly_adaptor< VEC, FEC > & rhs)
+
+inline
+
+ +

Definition at line 647 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ xoptional_assembly_adaptor() [3/3]

+ +
+
+
+template<class VEC , class FEC >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly_adaptor< VEC, FEC >::xoptional_assembly_adaptor (xoptional_assembly_adaptor< VEC, FEC > && rhs)
+
+inline
+
+ +

Definition at line 666 of file xoptional_assembly.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator=() [1/4]

+ +
+
+
+template<class VEC , class FEC >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_adaptor< VEC, FEC >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 701 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<class VEC , class FEC >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_adaptor< VEC, FEC >::operator= (const xoptional_assembly_adaptor< VEC, FEC > & rhs)
+
+inline
+
+ +

Definition at line 657 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<class VEC , class FEC >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_adaptor< VEC, FEC >::operator= (temporary_type && tmp)
+
+inline
+
+ +

Definition at line 685 of file xoptional_assembly.hpp.

+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<class VEC , class FEC >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_adaptor< VEC, FEC >::operator= (xoptional_assembly_adaptor< VEC, FEC > && rhs)
+
+inline
+
+ +

Definition at line 676 of file xoptional_assembly.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >

+ +
+
+
+template<class VEC , class FEC >
+ + + + + +
+ + + + +
friend class xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >
+
+friend
+
+ +

Definition at line 242 of file xoptional_assembly.hpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__adaptor.js b/classxt_1_1xoptional__assembly__adaptor.js new file mode 100644 index 000000000..87fc476ce --- /dev/null +++ b/classxt_1_1xoptional__assembly__adaptor.js @@ -0,0 +1,5 @@ +var classxt_1_1xoptional__assembly__adaptor = +[ + [ "xoptional_assembly_adaptor", "classxt_1_1xoptional__assembly__adaptor.html#a49ed47cb40d83d823a72f7907f4b4430", null ], + [ "operator=", "classxt_1_1xoptional__assembly__adaptor.html#ae9fc0069591e77f0b879152b82032987", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xoptional__assembly__adaptor.png b/classxt_1_1xoptional__assembly__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..b5931724d2a368eefed9769c612292e817ea03b0 GIT binary patch literal 3668 zcmc&%dpMNa8viE6uI+Yqxs!^BrtK09<603jZZ&Agom>jzGQ%{4*%U=6x#TiBa?6M) z*O4emxs1$&!i><+n2dxi_w!Bdz0Y}`Q-7R)&R);+t@VEIdf)Ya>s@R8*6+J|(%MXD zhx85r0E7_cCMW>l!+~<^PkdkCq(^4IEm0-!N?hmc4 zt)SjEjeZyG+m1t7+XCSG*8r8adzAIbQ=qCELHQYAYbwIi;W@26|U7AnOK4sc?t10@}m zc=`LP?p#E@3^i&(@BCs^kX7;+N3A%Wx!poQ^j3?C3sPmV!G$s^4~}XO5Bhh@K<}z# zSW2;ug%oxlrYFCQ?cH1q@UPmyFrZ=*37uK}62p4o!jFfkTipTA&nt^s*;?f&(xHUF z_50f5n*(0Rw#sxdSc~4FoODzpbqfAi~7QAzzIoM z2)F}+t@F!Ys=~f1Y1%Dv7_*}D+?sWnTd#O4O~6Nh`lIxXUn8Ii2#oy1yeh*vatagK&SwR?e8 zY7Ddlj~x79C^9}D!xYWrEU$5%I0x37Lgh~mtieZBdn*RZLj`h#S+gUa(Zeg_Z6!02 z;kRE2*L`GP7}TxYix3G-!mXcNEaf0Y2bi7liO>m}C_t>z=0gloe&5n9ImD^X|5AMK?J(K1jrgCU}cN72>6mO-iP zW?Eob`D18H_uIj?ve!BDQn^guS zkTS|h5l(0tpMb!P=wZhf7wyFqwr)0Nx3_j;m-l>F`vA&lH9!j2Xt2Njpo--ifwESPCTouueSm@29T z#I3+v)+8L=P^U5}^tj?l+3E_%KJ?sGj$Zw!(g}Z&#f=*6Ly@jbm#EmHJJ50tCrFpW zjc<}pTd){WaFHW#;KXd5ZLG7!5*to8>y)G|?Bu3fr{zBlQtNf1M1Nq|$TleUkL)8U zHj8)Ip&a)iVSzgJ)EAWFaz~=hrr3mWx6v4|sgyFsnJ>PY3=y~?S{6Z(@TI)ch=Q>d zUz*djJrT-?=iqK~hmsU8w}XP#_XU6P&v|eFPY*Wm)RPUw&av|<_^!Mx#nuV$+4aqkcj#@aLV>>Ee7>KO{yO!> zT6y1m{y6rcLcVZf)xRObq%HevoIf$6FSz9IcJFe_#K?B^U7OJ1e>x@ug2m5;ic*Lj z$5lwYCa(Bqk)Hz`u_Ninf`tNO55nxCp?*YkEvbmyoq-R;Oq-xi~o= zux3Lw}l zKX|<;-q&0iArjJSVu9*%6TAiPGn#hiuX0wf_}&RzbfYRa5Y4hym+KsDY_|)+P+S8G z)yfAYddzMc)Z96@n(sZF+hPpvU)S&(@M~kKcb1ZI=s1GbmoC^KS@53-zK7o6NSv48Km%AkWv=Le5J1Y9-1 zZ(?9~wlN;vZ@c}AjdDEp1f1NLJdUTy@jrxxM5^Un#_KpW6C4Kb@P*%Hw9#gmk5bNY zyeqKRJK^%q^%Vk}u?1pL{RXq1Z@TBb^&ZDe=wBJ1MWU%s7Pimp&%gtG%3&gb)8LfK zd@?Gf!h=vCZrpA%^yrx5=e^KTwE=<2y^Pl zrb2GoWtvi!t?X^+tVdEKI;Z07#D!FmgeIx+qYjB87kXaRMR=e1@VqK}39e~x(o|jU z#Y}w%qq&GorWW~YGM)s;MZPD>sn%z4H9z+xgF2?{t!*tN6RY(a-^gIv%`Di1NrmAs+)o*Sjh5@Uz-#cF$>z zw#5eQ;TjYDjpC;ys^5Wq3jXjKXopGnDH8TI{pc=b>gs} zu#B;#tRc})=RDvM@&y_bSJ|1lE(t!e;?|xm7RFbAD zGWSklvR`)*4j`lMBQ@KTt&xU4ur2L!jb(6J+ zX`T-gvt)*6uVWo4G%+hqz6|@!sUtF_c8nVs>X?~!KAFV(DOg3+JGFCGm=TT~T+zW6 zKTbK9pzNaXa(@i-Haq{`SDT$#Cn}6>s^TJR;kgt}P)6NQ$?CN*oK80`)ndvLq_Ds1 z2ZnT)*PY3rv+^7;>6jOdP{IpSl^}faL0jkHp6Ouv1ExmKuA$D;7AuxtNqYXTjP}?= zSi!7qgvJ=hJbHoih8wyTj+Hk(cE$m$NdN!< literal 0 HcmV?d00001 diff --git a/classxt_1_1xoptional__assembly__base-members.html b/classxt_1_1xoptional__assembly__base-members.html new file mode 100644 index 000000000..97d889d54 --- /dev/null +++ b/classxt_1_1xoptional__assembly__base-members.html @@ -0,0 +1,282 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xoptional_assembly_base< D > Member List
+
+
+ +

This is the complete list of members for xt::xoptional_assembly_base< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(Args... args) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
at(Args... args) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
at(Args... args) -> referencext::xoptional_assembly_base< D >inline
at(Args... args) const -> const_referencext::xoptional_assembly_base< D >inline
back()xt::xoptional_assembly_base< D >inline
back() constxt::xoptional_assembly_base< D >inline
backstrides() const noexceptxt::xoptional_assembly_base< D >inline
backstrides_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
base_const_reference typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
base_reference typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
base_value_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
begin() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
begin(const S &shape) noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
begin() noexcept -> layout_iterator< L >xt::xoptional_assembly_base< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
begin() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
begin(const S &shape) const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
begin() const noexcept -> const_layout_iterator< L >xt::xoptional_assembly_base< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
bool_load_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
broadcast_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xoptional_assembly_base< D >inline
const_broadcast_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_flag_expression typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_layout_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_linear_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_pointer typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_reference typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_reverse_broadcast_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_reverse_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_reverse_layout_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_reverse_linear_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_stepper typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
const_value_expression typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
contiguous_layout (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >static
data() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
data() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
data_offset() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
derived_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
difference_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
dimension() const noexceptxt::xoptional_assembly_base< D >inline
element(It first, It last) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
element(It first, It last) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
element(It first, It last) -> referencext::xoptional_assembly_base< D >inline
element(It first, It last) const -> const_referencext::xoptional_assembly_base< D >inline
end() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
end(const S &shape) noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
end() noexcept -> layout_iterator< L >xt::xoptional_assembly_base< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
end() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
end(const S &shape) const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
end() const noexcept -> const_layout_iterator< L >xt::xoptional_assembly_base< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
expression_tag typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
fill(const T &value)xt::xoptional_assembly_base< D >inline
flag_const_reference typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
flag_expression typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
flag_reference typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
flag_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
flat(size_type args)xt::xoptional_assembly_base< D >inline
flat(size_type args) constxt::xoptional_assembly_base< D >inline
front()xt::xoptional_assembly_base< D >inline
front() constxt::xoptional_assembly_base< D >inline
has_linear_assign(const S &strides) const noexceptxt::xoptional_assembly_base< D >inline
has_value() noexceptxt::xoptional_assembly_base< D >inline
has_value() const noexceptxt::xoptional_assembly_base< D >inline
in_bounds(Args... args) constxt::xoptional_assembly_base< D >inline
inner_backstrides_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
inner_shape_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
inner_strides_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
inner_types typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
is_contiguous() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
iterable_base typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
layout() const noexceptxt::xoptional_assembly_base< D >inline
layout_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
linear_begin() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_begin() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_cbegin() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_cend() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_crbegin() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_crend() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_end() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_end() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
linear_rbegin() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_rbegin() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_rend() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
linear_rend() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
operator()(Args... args) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
operator()(Args... args) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
operator()(Args... args) -> referencext::xoptional_assembly_base< D >inline
operator()(Args... args) const -> const_referencext::xoptional_assembly_base< D >inline
operator=(const xoptional_assembly_base &)=default (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >protected
operator=(xoptional_assembly_base &&)=default (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >protected
operator[](const S &index) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
operator[](std::initializer_list< I > index) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
operator[](size_type i) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
operator[](const S &index) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
operator[](std::initializer_list< I > index) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
operator[](size_type i) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
operator[](const S &index) -> disable_integral_t< S, reference >xt::xoptional_assembly_base< D >inline
operator[](std::initializer_list< I > index) -> reference (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xoptional_assembly_base< D >inline
operator[](std::initializer_list< I > index) const -> const_reference (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
periodic(Args... args) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
periodic(Args... args) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
periodic(Args... args) -> referencext::xoptional_assembly_base< D >inline
periodic(Args... args) const -> const_referencext::xoptional_assembly_base< D >inline
pointer typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
raw_flag_expression typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
raw_value_expression typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rbegin() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rbegin(const S &shape) noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rbegin() noexcept -> reverse_layout_iterator< L >xt::xoptional_assembly_base< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
rbegin() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rbegin(const S &shape) const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xoptional_assembly_base< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
reference typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rend() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rend(const S &shape) noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rend() noexcept -> reverse_layout_iterator< L >xt::xoptional_assembly_base< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
rend() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rend(const S &shape) const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xoptional_assembly_base< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xoptional_assembly_base< D >inline
reshape(const S &shape, layout_type layout=static_layout) &xt::xoptional_assembly_base< D >inline
reshape(std::initializer_list< T > shape, layout_type layout=static_layout) & (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
resize(const S &shape, bool force=false)xt::xoptional_assembly_base< D >inline
resize(const S &shape, layout_type l)xt::xoptional_assembly_base< D >inline
resize(const S &shape, const strides_type &strides)xt::xoptional_assembly_base< D >inline
reverse_broadcast_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
reverse_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
reverse_layout_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
reverse_linear_iterator typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
self_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
shape() const noexceptxt::xoptional_assembly_base< D >inline
shape(size_type index) constxt::xoptional_assembly_base< D >inline
shape_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
simd_value_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
size() const noexceptxt::xoptional_assembly_base< D >inline
size_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
static_layout (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >static
stepper typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
stepper_begin(const S &shape) noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
storage() noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
storage() const noexcept (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >inline
storage_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
strides() const noexceptxt::xoptional_assembly_base< D >inline
strides_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
unchecked(Args... args) (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
unchecked(Args... args) const (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
unchecked(Args... args) -> referencext::xoptional_assembly_base< D >inline
unchecked(Args... args) const -> const_referencext::xoptional_assembly_base< D >inline
value() noexceptxt::xoptional_assembly_base< D >inline
value() const noexceptxt::xoptional_assembly_base< D >inline
value_expression typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
value_type typedef (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >
xconst_iterable< D > (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >friend
xiterable< D > (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >friend
xoptional_assembly_base()=default (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >protected
xoptional_assembly_base(const xoptional_assembly_base &)=default (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >protected
xoptional_assembly_base(xoptional_assembly_base &&)=default (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >protected
~xoptional_assembly_base()=default (defined in xt::xoptional_assembly_base< D >)xt::xoptional_assembly_base< D >protected
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__base.html b/classxt_1_1xoptional__assembly__base.html new file mode 100644 index 000000000..afeee318e --- /dev/null +++ b/classxt_1_1xoptional__assembly__base.html @@ -0,0 +1,4727 @@ + + + + + + + +xtensor: xt::xoptional_assembly_base< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xoptional_assembly_base< D > Class Template Reference
+
+
+ +

Base class for dense multidimensional optional assemblies. + More...

+ +

#include <xoptional_assembly_base.hpp>

+
+Inheritance diagram for xt::xoptional_assembly_base< D >:
+
+
+ + +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xoptional_assembly_base< D >
 
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using raw_value_expression = typename inner_types::raw_value_expression
 
using base_value_type = typename raw_value_expression::value_type
 
using base_reference = typename raw_value_expression::reference
 
using base_const_reference = typename raw_value_expression::const_reference
 
using raw_flag_expression = typename inner_types::raw_flag_expression
 
using flag_type = typename raw_flag_expression::value_type
 
using flag_reference = typename raw_flag_expression::reference
 
using flag_const_reference = typename raw_flag_expression::const_reference
 
using storage_type = typename inner_types::storage_type
 
using value_type = typename storage_type::value_type
 
using reference = typename storage_type::reference
 
using const_reference = typename storage_type::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename raw_value_expression::size_type
 
using difference_type = typename raw_value_expression::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename raw_value_expression::shape_type
 
using strides_type = typename raw_value_expression::strides_type
 
using backstrides_type = typename raw_value_expression::backstrides_type
 
using inner_shape_type = typename raw_value_expression::inner_shape_type
 
using inner_strides_type = typename raw_value_expression::inner_strides_type
 
using inner_backstrides_type = typename raw_value_expression::inner_backstrides_type
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using expression_tag = xoptional_expression_tag
 
using value_expression = raw_value_expression &
 
using flag_expression = raw_flag_expression &
 
using const_value_expression = const raw_value_expression &
 
using const_flag_expression = const raw_flag_expression &
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_iterator = typename storage_type::iterator
 
using const_linear_iterator = typename storage_type::const_iterator
 
using reverse_linear_iterator = typename storage_type::reverse_iterator
 
using const_reverse_linear_iterator = typename storage_type::const_reverse_iterator
 
using iterator = typename iterable_base::iterator
 
using const_iterator = typename iterable_base::const_iterator
 
using reverse_iterator = typename iterable_base::reverse_iterator
 
using const_reverse_iterator = typename iterable_base::const_reverse_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference at (Args... args)
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class S >
disable_integral_t< S, reference > operator[] (const S &index)
 
+template<class I >
reference operator[] (std::initializer_list< I > index)
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
+template<class... Args>
reference periodic (Args... args)
 
+template<class... Args>
const_reference periodic (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
layout_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
template<layout_type L>
auto begin () noexcept -> layout_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
template<layout_type L>
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
layout_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
template<layout_type L>
auto end () noexcept -> layout_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_layout_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
template<layout_type L>
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_layout_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
template<layout_type L>
auto rbegin () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_layout_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
template<layout_type L>
auto rend () noexcept -> reverse_layout_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_layout_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
Size and shape
size_type size () const noexcept
 Returns the number of element in the optional assembly.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the optional assembly.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the optional assembly.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the optional assembly.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the optional assembly.
 
template<class S = shape_type>
void resize (const S &shape, bool force=false)
 Resizes the optional assembly.
 
template<class S = shape_type>
void resize (const S &shape, layout_type l)
 Resizes the optional assembly.
 
template<class S = shape_type>
void resize (const S &shape, const strides_type &strides)
 Resizes the optional assembly.
 
template<class S = shape_type>
auto & reshape (const S &shape, layout_type layout=static_layout) &
 Reshapes the optional assembly.
 
template<class T >
auto & reshape (std::initializer_list< T > shape, layout_type layout=static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
template<class T >
void fill (const T &value)
 Fills the data with the given value.
 
Data
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference front ()
 Returns a reference to the first element of the optional assembly.
 
const_reference front () const
 Returns a constant reference to the first element of the optional assembly.
 
reference back ()
 Returns a reference to the last element of the optional assembly.
 
const_reference back () const
 Returns a constant reference to the last element of the optional assembly.
 
reference flat (size_type args)
 Returns a reference to the element at the specified position of the underlying storage in the optional assembly.
 
const_reference flat (size_type args) const
 Returns a constant reference to the element at the specified position of the underlying storage in the optional assembly.
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
storage_type & storage () noexcept
 
const storage_type & storage () const noexcept
 
value_type * data () noexcept
 
const value_type * data () const noexcept
 
const size_type data_offset () const noexcept
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly, after dimension and bounds checking.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly, after dimension and bounds checking.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
template<class S >
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the optional assembly.
 
template<class I >
auto operator[] (std::initializer_list< I > index) -> reference
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the optional assembly.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the optional assembly.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the optional assembly.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = raw_value_expression::static_layout
 
static constexpr bool contiguous_layout = raw_value_expression::contiguous_layout
 
+ + + + + + + + + +

+Protected Member Functions

xoptional_assembly_base (const xoptional_assembly_base &)=default
 
+xoptional_assembly_baseoperator= (const xoptional_assembly_base &)=default
 
xoptional_assembly_base (xoptional_assembly_base &&)=default
 
+xoptional_assembly_baseoperator= (xoptional_assembly_base &&)=default
 
+ + + + + +

+Friends

class xiterable< D >
 
class xconst_iterable< D >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the optional assembly to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xoptional_assembly_base can be linearly assigned to an expression with the specified strides.
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
value_expression value () noexcept
 Return an expression for the values of the optional assembly.
 
const_value_expression value () const noexcept
 Return a constant expression for the values of the optional assembly.
 
flag_expression has_value () noexcept
 Return an expression for the missing mask of the optional assembly.
 
const_flag_expression has_value () const noexcept
 Return a constant expression for the missing mask of the optional assembly.
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
+

Detailed Description

+
template<class D>
+class xt::xoptional_assembly_base< D >

Base class for dense multidimensional optional assemblies.

+

The xoptional_assembly_base class defines the interface for dense multidimensional optional assembly classes. Optional assembly classes hold optional values and are optimized for tensor operations. xoptional_assembly_base does not embed any data container, this responsibility is delegated to the inheriting classes.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xoptional_assembly_base provides the interface.
+
+
+ +

Definition at line 39 of file xoptional_assembly_base.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::backstrides_type = typename raw_value_expression::backstrides_type
+
+ +

Definition at line 71 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ base_const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::base_const_reference = typename raw_value_expression::const_reference
+
+ +

Definition at line 50 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ base_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::base_reference = typename raw_value_expression::reference
+
+ +

Definition at line 49 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ base_value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::base_value_type = typename raw_value_expression::value_type
+
+ +

Definition at line 48 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::bool_load_type = xt::bool_load_type<value_type>
+
+ +

Definition at line 67 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>
+
+ +

Definition at line 100 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>
+
+ +

Definition at line 102 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_flag_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_flag_expression = const raw_flag_expression&
+
+ +

Definition at line 88 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_iterator = typename iterable_base::const_iterator
+
+ +

Definition at line 114 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::const_layout_iterator = typename iterable_base::template const_layout_iterator<L>
+
+ +

Definition at line 93 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_linear_iterator = typename storage_type::const_iterator
+
+ +

Definition at line 109 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_pointer = typename storage_type::const_pointer
+
+ +

Definition at line 63 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_reference = typename storage_type::const_reference
+
+ +

Definition at line 61 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 106 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_reverse_iterator = typename iterable_base::const_reverse_iterator
+
+ +

Definition at line 116 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>
+
+ +

Definition at line 97 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_reverse_linear_iterator = typename storage_type::const_reverse_iterator
+
+ +

Definition at line 111 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 79 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ const_value_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::const_value_expression = const raw_value_expression&
+
+ +

Definition at line 87 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::derived_type = D
+
+ +

Definition at line 44 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::difference_type = typename raw_value_expression::difference_type
+
+ +

Definition at line 65 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::expression_tag = xoptional_expression_tag
+
+ +

Definition at line 84 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flag_const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::flag_const_reference = typename raw_flag_expression::const_reference
+
+ +

Definition at line 55 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flag_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::flag_expression = raw_flag_expression&
+
+ +

Definition at line 86 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flag_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::flag_reference = typename raw_flag_expression::reference
+
+ +

Definition at line 54 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flag_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::flag_type = typename raw_flag_expression::value_type
+
+ +

Definition at line 53 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::inner_backstrides_type = typename raw_value_expression::inner_backstrides_type
+
+ +

Definition at line 75 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::inner_shape_type = typename raw_value_expression::inner_shape_type
+
+ +

Definition at line 73 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::inner_strides_type = typename raw_value_expression::inner_strides_type
+
+ +

Definition at line 74 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::inner_types = xcontainer_inner_types<D>
+
+ +

Definition at line 45 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::iterable_base = xiterable<D>
+
+ +

Definition at line 77 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::iterator = typename iterable_base::iterator
+
+ +

Definition at line 113 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::layout_iterator = typename iterable_base::template layout_iterator<L>
+
+ +

Definition at line 91 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::linear_iterator = typename storage_type::iterator
+
+ +

Definition at line 108 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::pointer = typename storage_type::pointer
+
+ +

Definition at line 62 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ raw_flag_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::raw_flag_expression = typename inner_types::raw_flag_expression
+
+ +

Definition at line 52 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ raw_value_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::raw_value_expression = typename inner_types::raw_value_expression
+
+ +

Definition at line 47 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::reference = typename storage_type::reference
+
+ +

Definition at line 60 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class D >
+
+template<class S , layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 104 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::reverse_iterator = typename iterable_base::reverse_iterator
+
+ +

Definition at line 115 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + +
using xt::xoptional_assembly_base< D >::reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>
+
+ +

Definition at line 95 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::reverse_linear_iterator = typename storage_type::reverse_iterator
+
+ +

Definition at line 110 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::self_type = xoptional_assembly_base<D>
+
+ +

Definition at line 43 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::shape_type = typename raw_value_expression::shape_type
+
+ +

Definition at line 69 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 66 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::size_type = typename raw_value_expression::size_type
+
+ +

Definition at line 64 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 78 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::storage_type = typename inner_types::storage_type
+
+ +

Definition at line 57 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::strides_type = typename raw_value_expression::strides_type
+
+ +

Definition at line 70 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ value_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::value_expression = raw_value_expression&
+
+ +

Definition at line 85 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xoptional_assembly_base< D >::value_type = typename storage_type::value_type
+
+ +

Definition at line 59 of file xoptional_assembly_base.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::at (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the optional assembly, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the optional assembly.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 510 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the optional assembly, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the optional assembly.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 526 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::back ()
+
+inline
+
+ +

Returns a reference to the last element of the optional assembly.

+ +

Definition at line 686 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::back () const
+
+inline
+
+ +

Returns a constant reference to the last element of the optional assembly.

+ +

Definition at line 695 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ backstrides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::backstrides () const
+
+inlinenoexcept
+
+ +

Returns the backstrides of the optional assembly.

+ +

Definition at line 373 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ begin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::begin () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 189 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::begin () -> layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 757 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::begin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 189 of file xiterable.hpp.

+ +
+
+ +

◆ begin() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::begin (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 818 of file xiterable.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xoptional_assembly_base< D >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the optional assembly to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 806 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::data () const
+
+inlinenoexcept
+
+ +

Definition at line 783 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::data ()
+
+inlinenoexcept
+
+ +

Definition at line 777 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::data_offset () const
+
+inlinenoexcept
+
+ +

Definition at line 789 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
constexpr auto xt::xoptional_assembly_base< D >::dimension () const
+
+inlineconstexprnoexcept
+
+ +

Returns the number of dimensions of the optional assembly.

+ +

Definition at line 337 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xoptional_assembly_base< D >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the optional assembly.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 731 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xoptional_assembly_base< D >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the optional assembly.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 745 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ end() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::end () const -> const_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 190 of file xiterable.hpp.

+ +
+
+ +

◆ end() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::end () -> layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 769 of file xiterable.hpp.

+ +
+
+ +

◆ end() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::end (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 190 of file xiterable.hpp.

+ +
+
+ +

◆ end() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::end (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 832 of file xiterable.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class D >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_base< D >::fill (const T & value)
+
+inline
+
+ +

Fills the data with the given value.

+
Parameters
+ + +
valuethe value to fill the data with.
+
+
+ +

Definition at line 464 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::flat (size_type i)
+
+inline
+
+ +

Returns a reference to the element at the specified position of the underlying storage in the optional assembly.

+
Parameters
+ + +
indexindex to underlying flat storage.
+
+
+ +

Definition at line 706 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::flat (size_type i) const
+
+inline
+
+ +

Returns a constant reference to the element at the specified position of the underlying storage in the optional assembly.

+
Parameters
+ + +
indexindex to underlying flat storage.
+
+
+ +

Definition at line 717 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::front ()
+
+inline
+
+ +

Returns a reference to the first element of the optional assembly.

+ +

Definition at line 668 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::front () const
+
+inline
+
+ +

Returns a constant reference to the first element of the optional assembly.

+ +

Definition at line 677 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xoptional_assembly_base< D >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Checks whether the xoptional_assembly_base can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 819 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ has_value() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::has_value () const
+
+inlinenoexcept
+
+ +

Return a constant expression for the missing mask of the optional assembly.

+ +

Definition at line 958 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::has_value ()
+
+inlinenoexcept
+
+ +

Return an expression for the missing mask of the optional assembly.

+ +

Definition at line 949 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ in_bounds()

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
bool xt::xoptional_assembly_base< D >::in_bounds (Args... args) const
+
+inline
+
+ +

Returns true only if the the specified position is a valid entry in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression.
+
+
+
Returns
bool
+ +

Definition at line 757 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
bool xt::xoptional_assembly_base< D >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 453 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
layout_type xt::xoptional_assembly_base< D >::layout () const
+
+inlinenoexcept
+
+ +

Return the layout_type of the container.

+
Returns
layout_type of the container
+ +

Definition at line 447 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_begin () const
+
+inlinenoexcept
+
+ +

Definition at line 839 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_begin ()
+
+inlinenoexcept
+
+ +

Definition at line 827 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 851 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_cend () const
+
+inlinenoexcept
+
+ +

Definition at line 857 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 887 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_crend () const
+
+inlinenoexcept
+
+ +

Definition at line 893 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_end () const
+
+inlinenoexcept
+
+ +

Definition at line 845 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_end ()
+
+inlinenoexcept
+
+ +

Definition at line 833 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 875 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 863 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_rend () const
+
+inlinenoexcept
+
+ +

Definition at line 881 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::linear_rend ()
+
+inlinenoexcept
+
+ +

Definition at line 869 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the optional assembly.

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 481 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the optional assembly.

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 494 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator[]() [1/6]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator[] (const S & index) -> disable_integral_t<S, reference> +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the optional assembly.

+
Parameters
+ + +
indexa sequence of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices in the list should be equal or greater than the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 591 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator[]() [2/6]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator[] (const S & index) const -> disable_integral_t<S, const_reference> +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the optional assembly.

+
Parameters
+ + +
indexa sequence of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices in the list should be equal or greater than the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 617 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator[]() [3/6]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator[] (size_type i)
+
+inline
+
+ +

Definition at line 604 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator[]() [4/6]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator[] (size_type i) const
+
+inline
+
+ +

Definition at line 631 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator[]() [5/6]

+ +
+
+
+template<class D >
+
+template<class I >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator[] (std::initializer_list< I > index) -> reference +
+
+inline
+
+ +

Definition at line 598 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ operator[]() [6/6]

+ +
+
+
+template<class D >
+
+template<class I >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::operator[] (std::initializer_list< I > index) const -> const_reference +
+
+inline
+
+ +

Definition at line 625 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ periodic() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::periodic (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 645 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ periodic() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the optional assembly, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the optional assembly.
+
+
+ +

Definition at line 659 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ rbegin() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::rbegin () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 191 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::rbegin () -> reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 786 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::rbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 191 of file xiterable.hpp.

+ +
+
+ +

◆ rbegin() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::rbegin (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the first element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 852 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [1/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xconst_iterable< D >::rend () const -> const_reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 192 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [2/4]

+ +
+
+
+template<class D >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xiterable< D >::rend () -> reverse_layout_iterator<L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+
Template Parameters
+ + +
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 798 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [3/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_iterable< D >::rend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns a constant iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 192 of file xiterable.hpp.

+ +
+
+ +

◆ rend() [4/4]

+ +
+
+
+template<class D >
+
+template<layout_type L, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xiterable< D >::rend (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Returns an iterator to the element following the last element of the reversed expression.

+

The iteration is broadcasted to the specified shape.

Parameters
+ + +
shapethe shape used for broadcasting
+
+
+
Template Parameters
+ + + +
Stype of the shape parameter.
Lorder used for the traversal. Default value is XTENSOR_DEFAULT_TRAVERSAL.
+
+
+ +

Definition at line 866 of file xiterable.hpp.

+ +
+
+ +

◆ reshape() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto & xt::xoptional_assembly_base< D >::reshape (const S & shape,
layout_type layout = static_layout 
) &
+
+inline
+
+ +

Reshapes the optional assembly.

+
Parameters
+ + + +
shapethe new shape
layoutthe new layout
+
+
+ +

Definition at line 426 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reshape() [2/2]

+ +
+
+
+template<class D >
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto & xt::xoptional_assembly_base< D >::reshape (std::initializer_list< T > shape,
layout_type layout = static_layout 
) &
+
+inline
+
+ +

Definition at line 435 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ resize() [1/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xoptional_assembly_base< D >::resize (const S & shape,
bool force = false 
)
+
+inline
+
+ +

Resizes the optional assembly.

+
Parameters
+ + + +
shapethe new shape
forceforce reshaping, even if the shape stays the same (default: false)
+
+
+ +

Definition at line 387 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ resize() [2/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xoptional_assembly_base< D >::resize (const S & shape,
const strides_type & strides 
)
+
+inline
+
+ +

Resizes the optional assembly.

+
Parameters
+ + + +
shapethe new shape
stridesthe new strides
+
+
+ +

Definition at line 413 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ resize() [3/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xoptional_assembly_base< D >::resize (const S & shape,
layout_type l 
)
+
+inline
+
+ +

Resizes the optional assembly.

+
Parameters
+ + + +
shapethe new shape
lthe new layout_type
+
+
+ +

Definition at line 400 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the optional assembly.

+ +

Definition at line 346 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 355 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the number of element in the optional assembly.

+ +

Definition at line 328 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 914 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::stepper_begin (const S & shape) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 900 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xoptional_assembly_base< D >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 921 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xoptional_assembly_base< D >::stepper_end (const S & shape,
layout_type l 
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 907 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::storage () const
+
+inlinenoexcept
+
+ +

Definition at line 771 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::storage ()
+
+inlinenoexcept
+
+ +

Definition at line 765 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::strides () const
+
+inlinenoexcept
+
+ +

Returns the strides of the optional assembly.

+ +

Definition at line 364 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the optional assembly.

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the optional assembly, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 552 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_base< D >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the optional assembly.

+
Parameters
+ + +
argsa list of indices specifying the position in the optional assembly. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the optional assembly, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
+ +

Definition at line 578 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::value () const
+
+inlinenoexcept
+
+ +

Return a constant expression for the values of the optional assembly.

+ +

Definition at line 940 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_base< D >::value ()
+
+inlinenoexcept
+
+ +

Return an expression for the values of the optional assembly.

+ +

Definition at line 931 of file xoptional_assembly_base.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xconst_iterable< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xconst_iterable< D >
+
+friend
+
+ +

Definition at line 265 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ xiterable< D >

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
friend class xiterable< D >
+
+friend
+
+ +

Definition at line 265 of file xoptional_assembly_base.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr bool xt::xoptional_assembly_base< D >::contiguous_layout = raw_value_expression::contiguous_layout
+
+staticconstexpr
+
+ +

Definition at line 82 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr layout_type xt::xoptional_assembly_base< D >::static_layout = raw_value_expression::static_layout
+
+staticconstexpr
+
+ +

Definition at line 81 of file xoptional_assembly_base.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__base.js b/classxt_1_1xoptional__assembly__base.js new file mode 100644 index 000000000..542882748 --- /dev/null +++ b/classxt_1_1xoptional__assembly__base.js @@ -0,0 +1,56 @@ +var classxt_1_1xoptional__assembly__base = +[ + [ "at", "classxt_1_1xoptional__assembly__base.html#a73dd5d1abc3eeb977466ea06cbd010a6", null ], + [ "at", "classxt_1_1xoptional__assembly__base.html#ab6aeecb3fd2184aa49cf51142487ae31", null ], + [ "back", "classxt_1_1xoptional__assembly__base.html#a30a6a24dfa921de015892bddeef5e731", null ], + [ "back", "classxt_1_1xoptional__assembly__base.html#a8d17eac6565a38c69ce3597b087daa24", null ], + [ "backstrides", "classxt_1_1xoptional__assembly__base.html#a0af0bee6bcff1b475520937f31b84bd5", null ], + [ "begin", "classxt_1_1xoptional__assembly__base.html#a6ab0e76125fa876b97b53a813a3d4713", null ], + [ "begin", "classxt_1_1xoptional__assembly__base.html#aa92f6e2edb798a381d131475e463bf31", null ], + [ "begin", "classxt_1_1xoptional__assembly__base.html#a095cfd6ccf0bb5696073af2c8536f8e9", null ], + [ "begin", "classxt_1_1xoptional__assembly__base.html#a4123b26a873b7ed680b13ef557cd3c3c", null ], + [ "broadcast_shape", "classxt_1_1xoptional__assembly__base.html#a98fdda9ecaf31ce8310614ad46aee9cd", null ], + [ "dimension", "classxt_1_1xoptional__assembly__base.html#a89f917b17d7b6ded98b95ba5f9c52de2", null ], + [ "element", "classxt_1_1xoptional__assembly__base.html#a1878f869c91ab899acc2fc560990538c", null ], + [ "element", "classxt_1_1xoptional__assembly__base.html#afe8cc2e4841489d3f1af56dbab957af3", null ], + [ "end", "classxt_1_1xoptional__assembly__base.html#a74906f6a3242a5a2b001e6a534007589", null ], + [ "end", "classxt_1_1xoptional__assembly__base.html#a76c73882716f9e9915dab847639db2da", null ], + [ "end", "classxt_1_1xoptional__assembly__base.html#a8ca771d1dda2e42203cfdaaebfeba601", null ], + [ "end", "classxt_1_1xoptional__assembly__base.html#a9b56f37894a5055ffe49a46c857b7111", null ], + [ "fill", "classxt_1_1xoptional__assembly__base.html#a6b2d66863b5c7e149d54f75d3911d34d", null ], + [ "flat", "classxt_1_1xoptional__assembly__base.html#abdea1fd8c021f170b2b34fbfae36f2db", null ], + [ "flat", "classxt_1_1xoptional__assembly__base.html#a2ab81721e7b9e8986206742c4baddf71", null ], + [ "front", "classxt_1_1xoptional__assembly__base.html#a0e191af3d00801e0018161ab739fc6d2", null ], + [ "front", "classxt_1_1xoptional__assembly__base.html#aacfa0f794bd3a92bf3ad57833861f73e", null ], + [ "has_linear_assign", "classxt_1_1xoptional__assembly__base.html#a7e2c9d6439909805db95ebe75339fc06", null ], + [ "has_value", "classxt_1_1xoptional__assembly__base.html#a4501b171b337744f6c013a9a46c6414b", null ], + [ "has_value", "classxt_1_1xoptional__assembly__base.html#af274b99476f869609568a3e09fcf3c55", null ], + [ "in_bounds", "classxt_1_1xoptional__assembly__base.html#a109b7cd1df5661aaacc763e2c914795d", null ], + [ "layout", "classxt_1_1xoptional__assembly__base.html#a894c8a27844c4543906eb44fb33f579e", null ], + [ "operator()", "classxt_1_1xoptional__assembly__base.html#aea309f566b610b826a2609bb32b63d25", null ], + [ "operator()", "classxt_1_1xoptional__assembly__base.html#ab5abb6c1e1c8c57c1662421c5f679b5a", null ], + [ "operator[]", "classxt_1_1xoptional__assembly__base.html#ab9a1749164786ed873b216223098fe31", null ], + [ "operator[]", "classxt_1_1xoptional__assembly__base.html#af783d13bcc3bbd5082fdc79f8f2aeee8", null ], + [ "periodic", "classxt_1_1xoptional__assembly__base.html#a1b77e82dc265d815b17f17d337d96636", null ], + [ "periodic", "classxt_1_1xoptional__assembly__base.html#a282a52135c367ae4d80db9575f41d3a5", null ], + [ "rbegin", "classxt_1_1xoptional__assembly__base.html#a52be134ecb3d529fddf7e8ba888a59a0", null ], + [ "rbegin", "classxt_1_1xoptional__assembly__base.html#a7bc86e4fb6f2f55c74e33836a32739eb", null ], + [ "rbegin", "classxt_1_1xoptional__assembly__base.html#a3671f77843974f6962cd425318c0ef00", null ], + [ "rbegin", "classxt_1_1xoptional__assembly__base.html#a66bef4e8cff9bf584e71f0ac7ba828ad", null ], + [ "rend", "classxt_1_1xoptional__assembly__base.html#ade7cb42ea93353d00bbb739743be090d", null ], + [ "rend", "classxt_1_1xoptional__assembly__base.html#af04d43d598e8933225287e044c12d4c6", null ], + [ "rend", "classxt_1_1xoptional__assembly__base.html#a634cb122a80a40c5c38ff2b4527e3f26", null ], + [ "rend", "classxt_1_1xoptional__assembly__base.html#a92e4a1b212968fcc8a8240be122fe8e4", null ], + [ "reshape", "classxt_1_1xoptional__assembly__base.html#adcf1eb03fa74eac4bfd3c1c53647e841", null ], + [ "resize", "classxt_1_1xoptional__assembly__base.html#ad75f3602dcf419d0d35af7121da5e802", null ], + [ "resize", "classxt_1_1xoptional__assembly__base.html#a6679efb40275d9066e15627f79430759", null ], + [ "resize", "classxt_1_1xoptional__assembly__base.html#a346e0ff791f6279005d0229311e62b75", null ], + [ "shape", "classxt_1_1xoptional__assembly__base.html#a574aec951fe205155709a7871055ec75", null ], + [ "shape", "classxt_1_1xoptional__assembly__base.html#a58bcff261d17d4b7e5b89a9d4ac6a362", null ], + [ "size", "classxt_1_1xoptional__assembly__base.html#a21f778be8956cf3c7c72aa37169a0d2a", null ], + [ "strides", "classxt_1_1xoptional__assembly__base.html#aa1afe87047106cd980f036335b978199", null ], + [ "unchecked", "classxt_1_1xoptional__assembly__base.html#afca63e0308421875f479c8373eea66d3", null ], + [ "unchecked", "classxt_1_1xoptional__assembly__base.html#a53735c2da40556583e93ec94c618b325", null ], + [ "value", "classxt_1_1xoptional__assembly__base.html#ad6761e5fda241e0eed545c4b545d9f1c", null ], + [ "value", "classxt_1_1xoptional__assembly__base.html#a5b5b3c3f0201b416989eb3cc388c9ea2", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xoptional__assembly__base.png b/classxt_1_1xoptional__assembly__base.png new file mode 100644 index 0000000000000000000000000000000000000000..c0902527ecaa7afbf5960ab9dba7f1f6c07feaa2 GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^r-3+tgBeIRv=lZ1Dd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=B*ao-U3d6^w7^-k$YJfu~h` zrTFW=^DDv^3i$b5?Xx~SU2>Y4fPp>d7qQ#ha=STZcbpI^5)%}x1{1$}R69DdcHjJR zrEc=U-}5_8EZ;RHRqkDXbNGQhCxz|KI<8$-CWi=e=h>x%Rx{7X5}wbA87r zp5B4apMP1wmVCeAX>(Ea?qi?at}jbl=^w~%b@KFWll=!LW%*xCw2o-Kef`F46Zz{m zHasaRVO=D6=s6&z}~o>59J}{YuXJdf1)^&%V#-{odWtA!`XF zY!QU+u}!(Rx3w`m_+HA~;JQWN^xJKGXPk7bPZ=3#Z)7-N^=S=5gKcFT!-07=`V0yF z^TZi8sGsL%xH0)TE5nZRiVuDPbdWz|ap1@$4v}JkQ zQ_UN87Si>Z&XbDGpFdIR*X~w{-h0Anl5*|T)MwQjT-teRejM-HP=EY+`_f-sOSkLR zy*zKCY_)9VO)bZ)@3&q|U^lSTZC*`x({3kS z(`#??&D2+Gzket5wC|Io$K7K(&8o#BTcgEas_Jaido87HKTnQ-{>fwJI#sO}+gEMg zckEI@eDd0#b5g^Se-#HDef6S5=PK9YpkJE$FE@mn&g}d3WRFcc=aM|05a04}N!$9k zQ_H?Tf68GOYqq#rhj-QN*BfSad}7RhzwwTj?e(LO)ss>G&GoPA)pWJ0{BM}ks`B<^q{pRsWzz(lBAov-Je##b Vea$PcAHamk;OXk;vd$@?2>?SIW_$nu literal 0 HcmV?d00001 diff --git a/classxt_1_1xoptional__assembly__linear__iterator-members.html b/classxt_1_1xoptional__assembly__linear__iterator-members.html new file mode 100644 index 000000000..4d8efaa2f --- /dev/null +++ b/classxt_1_1xoptional__assembly__linear__iterator-members.html @@ -0,0 +1,126 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xoptional_assembly_linear_iterator< VE, FE, is_const > Member List
+
+
+ +

This is the complete list of members for xt::xoptional_assembly_linear_iterator< VE, FE, is_const >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
base_type typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
difference_type typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
flag_iterator typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
operator*() const (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator++() (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator+=(difference_type n) (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator-(const self_type &rhs) const (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator--() (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator-=(difference_type n) (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator->() const (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator<(const self_type &rhs) const (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
operator==(const self_type &rhs) const (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
pointer typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
reference typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
self_type typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
value_iterator typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
value_type typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
xoptional_assembly_linear_iterator(value_iterator value_it, flag_iterator flag_it) (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >inline
xoptional_assembly_storage_type typedef (defined in xt::xoptional_assembly_linear_iterator< VE, FE, is_const >)xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__linear__iterator.html b/classxt_1_1xoptional__assembly__linear__iterator.html new file mode 100644 index 000000000..ae531f706 --- /dev/null +++ b/classxt_1_1xoptional__assembly__linear__iterator.html @@ -0,0 +1,638 @@ + + + + + + + +xtensor: xt::xoptional_assembly_linear_iterator< VE, FE, is_const > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xoptional_assembly_linear_iterator< VE, FE, is_const > Class Template Reference
+
+
+
+Inheritance diagram for xt::xoptional_assembly_linear_iterator< VE, FE, is_const >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xoptional_assembly_linear_iterator< VE, FE, is_const >
 
using base_type = xtl::xrandom_access_iterator_base2< xoptional_assembly_linear_iterator_traits< VE, FE, is_const > >
 
using xoptional_assembly_storage_type = xoptional_assembly_storage< VE, FE >
 
using value_iterator = std::conditional_t< is_const, typename xoptional_assembly_storage_type::value_storage::const_iterator, typename xoptional_assembly_storage_type::value_storage::iterator >
 
using flag_iterator = std::conditional_t< is_const, typename xoptional_assembly_storage_type::flag_storage::const_iterator, typename xoptional_assembly_storage_type::flag_storage::iterator >
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using pointer = typename base_type::pointer
 
using difference_type = typename base_type::difference_type
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xoptional_assembly_linear_iterator (value_iterator value_it, flag_iterator flag_it)
 
self_typeoperator++ ()
 
self_typeoperator-- ()
 
self_typeoperator+= (difference_type n)
 
self_typeoperator-= (difference_type n)
 
difference_type operator- (const self_type &rhs) const
 
reference operator* () const
 
pointer operator-> () const
 
bool operator== (const self_type &rhs) const
 
bool operator< (const self_type &rhs) const
 
+

Detailed Description

+
template<class VE, class FE, bool is_const>
+class xt::xoptional_assembly_linear_iterator< VE, FE, is_const >
+

Definition at line 169 of file xoptional_assembly_storage.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::base_type = xtl::xrandom_access_iterator_base2< xoptional_assembly_linear_iterator_traits<VE, FE, is_const> >
+
+ +

Definition at line 175 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::difference_type = typename base_type::difference_type
+
+ +

Definition at line 191 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ flag_iterator

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::flag_iterator = std::conditional_t< is_const, typename xoptional_assembly_storage_type::flag_storage::const_iterator, typename xoptional_assembly_storage_type::flag_storage::iterator>
+
+ +

Definition at line 183 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::pointer = typename base_type::pointer
+
+ +

Definition at line 190 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::reference = typename base_type::reference
+
+ +

Definition at line 189 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::self_type = xoptional_assembly_linear_iterator<VE, FE, is_const>
+
+ +

Definition at line 174 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ value_iterator

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::value_iterator = std::conditional_t< is_const, typename xoptional_assembly_storage_type::value_storage::const_iterator, typename xoptional_assembly_storage_type::value_storage::iterator>
+
+ +

Definition at line 179 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::value_type = typename base_type::value_type
+
+ +

Definition at line 188 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ xoptional_assembly_storage_type

+ +
+
+
+template<class VE , class FE , bool is_const>
+ + + + +
using xt::xoptional_assembly_linear_iterator< VE, FE, is_const >::xoptional_assembly_storage_type = xoptional_assembly_storage<VE, FE>
+
+ +

Definition at line 178 of file xoptional_assembly_storage.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xoptional_assembly_linear_iterator()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly_linear_iterator< VE, FE, C >::xoptional_assembly_linear_iterator (value_iterator value_it,
flag_iterator flag_it 
)
+
+inline
+
+ +

Definition at line 486 of file xoptional_assembly_storage.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator* () const
+
+inline
+
+ +

Definition at line 535 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator++()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator++ ()
+
+inline
+
+ +

Definition at line 496 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator+= (difference_type n)
+
+inline
+
+ +

Definition at line 512 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator- (const self_typerhs) const
+
+inline
+
+ +

Definition at line 528 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator--()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator-- ()
+
+inline
+
+ +

Definition at line 504 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator-= (difference_type n)
+
+inline
+
+ +

Definition at line 520 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator-> () const
+
+inline
+
+ +

Definition at line 541 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator<()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + + +
bool xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator< (const self_typerhs) const
+
+inline
+
+ +

Definition at line 553 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class VE , class FE , bool C>
+ + + + + +
+ + + + + + + + +
bool xt::xoptional_assembly_linear_iterator< VE, FE, C >::operator== (const self_typerhs) const
+
+inline
+
+ +

Definition at line 547 of file xoptional_assembly_storage.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__linear__iterator.png b/classxt_1_1xoptional__assembly__linear__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..9efd216e57f3e6bc1eda5ded322356f53aba9106 GIT binary patch literal 1696 zcmcIl{X5fZ9A4#gr7M*Ig zv;Zdz4gy(;1#7o8tH9k>`OFSHwz)au9hR1sz;bwOhLZmLA=1p`!j{{u!;OuNVE+W8 zqZs5gBXKS#ARzv+tXAepAduDj0E`_zW`&aF9W{hrhcTt{iA(#aDHazt28x2F1|tn= zook4(0|7I!o##FH>Mi)VYN)_#BSQ5C9^8c3;A`>BQla`u+F zPF@{57N-#q>O=Ze#=SBz9VV<;_l9-eQ?J#Gj=lcX+R<;?rw~U!L+$8+zdHCX2$gF8 zV)97y?twjNiweIEarL4FJiCEXBs-*s6y9iO1gbSvcSCGWTk%jiw+KY_DYe^pv~OTJ z+dNZZg_MYEsL?F?W%6lXj^ER7VpCSJVp##%hPP`Ysp-a@aRbh- ziO=753`)#q4oh)P6!+r2oUi#zm!`?AzWXi??lj(178B8P8lINPpcA@2;y>0qNH3a% zR^>(99gt(N`gg`dHeJ*3Pn2x>W2M=vg2N_8Afo?7v@D!6M6*%1 z1P1o<@yiM9|&xdi&fo%JfC4nzUOK+}GKjaFRBWu3I zCP%L}JziiK9#0Vwk(M&GMep8?^IPE`)X7z12I;i_5iB>aS}zE(i*rtpCI6-fM7+;a zsN26?3|Dt~5@+mB+s=%m&wk;p?+GO}h8XuAX7>ft;zCEu1p~5rq=Yn`z})O5Un51< zSj(Et<%>Y?F2qfn{UVPK?%7hQ?d;htsV5~e=V*!e%%I9sUKl!?z|oswFkQB9+X)En zl9o1(XAJS@s=dAo&`DYLBQh<8)fm6KLwtVGXo6FUs*`&8U_2AYH4e@wpLNKJm*zE6Qc|hO0xo>0IWO7CK?1zMWUQgBn|nrNj-o5>3YV z$Wz%}S6#8!@s{|u6z0(gg$bO6jN0nc_XjXu#Fi_VR!b0{E&l(E*o*LfWo&GhB zKjG7NgLJsx^sRWRvVam0`^77%ftyI$z(cT2eWhICop=kxf_jU;e7rd?botR2e<@;y ySwB{SuH>?0YS5Pd@r8)SG%#Q+2Vs!1xXR45?P|Yg%pmxeKmZ39Oyv>(#D4)06jFWw literal 0 HcmV?d00001 diff --git a/classxt_1_1xoptional__assembly__stepper-members.html b/classxt_1_1xoptional__assembly__stepper-members.html new file mode 100644 index 000000000..1fedc439c --- /dev/null +++ b/classxt_1_1xoptional__assembly__stepper-members.html @@ -0,0 +1,128 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xoptional_assembly_stepper< D, is_const > Member List
+
+
+ +

This is the complete list of members for xt::xoptional_assembly_stepper< D, is_const >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
assembly_type typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
difference_type typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
flag_stepper typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
operator*() const (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
pointer typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
raw_flag_expression typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
raw_value_expression typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
reference typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
reset(size_type dim) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
reset_back(size_type dim) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
self_type typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
size_type typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
step(size_type dim) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
step(size_type dim, size_type n) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
step_back(size_type dim) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
step_back(size_type dim, size_type n) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
to_begin() (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
to_end(layout_type l) (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
value_stepper typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
value_type typedef (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >
xoptional_assembly_stepper(value_stepper vs, flag_stepper fs) noexcept (defined in xt::xoptional_assembly_stepper< D, is_const >)xt::xoptional_assembly_stepper< D, is_const >inline
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__stepper.html b/classxt_1_1xoptional__assembly__stepper.html new file mode 100644 index 000000000..c1776f8c5 --- /dev/null +++ b/classxt_1_1xoptional__assembly__stepper.html @@ -0,0 +1,694 @@ + + + + + + + +xtensor: xt::xoptional_assembly_stepper< D, is_const > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xoptional_assembly_stepper< D, is_const > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xoptional_assembly_stepper< D, is_const >
 
using assembly_type = typename D::assembly_type
 
using value_type = typename assembly_type::value_type
 
using reference = std::conditional_t< is_const, typename assembly_type::const_reference, typename assembly_type::reference >
 
using pointer = std::conditional_t< is_const, typename assembly_type::const_pointer, typename assembly_type::pointer >
 
using size_type = typename assembly_type::size_type
 
using difference_type = typename assembly_type::difference_type
 
using raw_value_expression = typename assembly_type::raw_value_expression
 
using raw_flag_expression = typename assembly_type::raw_flag_expression
 
using value_stepper = std::conditional_t< is_const, typename raw_value_expression::const_stepper, typename raw_value_expression::stepper >
 
using flag_stepper = std::conditional_t< is_const, typename raw_flag_expression::const_stepper, typename raw_flag_expression::stepper >
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Broadcasting
 xoptional_assembly_stepper (value_stepper vs, flag_stepper fs) noexcept
 
void step (size_type dim)
 
void step_back (size_type dim)
 
void step (size_type dim, size_type n)
 
void step_back (size_type dim, size_type n)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
reference operator* () const
 
+

Detailed Description

+
template<class D, bool is_const>
+class xt::xoptional_assembly_stepper< D, is_const >
+

Definition at line 276 of file xoptional_assembly_base.hpp.

+

Member Typedef Documentation

+ +

◆ assembly_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::assembly_type = typename D::assembly_type
+
+ +

Definition at line 281 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::difference_type = typename assembly_type::difference_type
+
+ +

Definition at line 287 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ flag_stepper

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::flag_stepper = std:: conditional_t<is_const, typename raw_flag_expression::const_stepper, typename raw_flag_expression::stepper>
+
+ +

Definition at line 292 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::pointer = std::conditional_t<is_const, typename assembly_type::const_pointer, typename assembly_type::pointer>
+
+ +

Definition at line 285 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ raw_flag_expression

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::raw_flag_expression = typename assembly_type::raw_flag_expression
+
+ +

Definition at line 289 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ raw_value_expression

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::raw_value_expression = typename assembly_type::raw_value_expression
+
+ +

Definition at line 288 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::reference = std:: conditional_t<is_const, typename assembly_type::const_reference, typename assembly_type::reference>
+
+ +

Definition at line 283 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::self_type = xoptional_assembly_stepper<D, is_const>
+
+ +

Definition at line 280 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::size_type = typename assembly_type::size_type
+
+ +

Definition at line 286 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ value_stepper

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::value_stepper = std:: conditional_t<is_const, typename raw_value_expression::const_stepper, typename raw_value_expression::stepper>
+
+ +

Definition at line 290 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D , bool is_const>
+ + + + +
using xt::xoptional_assembly_stepper< D, is_const >::value_type = typename assembly_type::value_type
+
+ +

Definition at line 282 of file xoptional_assembly_base.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xoptional_assembly_stepper()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly_stepper< D, C >::xoptional_assembly_stepper (value_stepper vs,
flag_stepper fs 
)
+
+inlinenoexcept
+
+ +

Definition at line 980 of file xoptional_assembly_base.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_stepper< D, C >::operator* () const
+
+inline
+
+ +

Definition at line 1043 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 1015 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 1022 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::step (size_type dim)
+
+inline
+
+ +

Definition at line 987 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::step (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 1001 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ step_back() [1/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::step_back (size_type dim)
+
+inline
+
+ +

Definition at line 994 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ step_back() [2/2]

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::step_back (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 1008 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::to_begin ()
+
+inline
+
+ +

Definition at line 1029 of file xoptional_assembly_base.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class D , bool C>
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_stepper< D, C >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 1036 of file xoptional_assembly_base.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__storage-members.html b/classxt_1_1xoptional__assembly__storage-members.html new file mode 100644 index 000000000..b3eefee09 --- /dev/null +++ b/classxt_1_1xoptional__assembly__storage-members.html @@ -0,0 +1,159 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xoptional_assembly_storage< VE, FE > Member List
+
+
+ +

This is the complete list of members for xt::xoptional_assembly_storage< VE, FE >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
back() (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
back() const (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
begin() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
begin() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
cbegin() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
cend() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
const_iterator typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
const_pointer typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
const_reference typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
const_reverse_iterator typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
crbegin() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
crend() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
data() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
data() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
difference_type typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
empty() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
end() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
end() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
flag_reference typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
flag_storage typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
front() (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
front() const (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
has_value() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
has_value() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
is_flag_const (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >static
is_val_const (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >static
iterator typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
operator=(const xoptional_assembly_storage &) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
operator=(xoptional_assembly_storage &&) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
operator[](size_type i) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
operator[](size_type i) const (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
pointer typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
rbegin() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
rbegin() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
reference typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
rend() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
rend() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
resize(size_type size) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
reverse_iterator typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
self_type typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
size() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
size_type typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
swap(self_type &rhs) noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
val_reference typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
value() noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
value() const noexcept (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
value_storage typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
value_type typedef (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >
xoptional_assembly_storage(const VE1 &value_stor, const FE1 &flag_stor) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
xoptional_assembly_storage(VE1 &value_stor, FE1 &flag_stor) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
xoptional_assembly_storage(const xoptional_assembly_storage &) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
xoptional_assembly_storage(xoptional_assembly_storage &&) (defined in xt::xoptional_assembly_storage< VE, FE >)xt::xoptional_assembly_storage< VE, FE >inline
+
+ + + + diff --git a/classxt_1_1xoptional__assembly__storage.html b/classxt_1_1xoptional__assembly__storage.html new file mode 100644 index 000000000..17dafda45 --- /dev/null +++ b/classxt_1_1xoptional__assembly__storage.html @@ -0,0 +1,1597 @@ + + + + + + + +xtensor: xt::xoptional_assembly_storage< VE, FE > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xoptional_assembly_storage< VE, FE > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xoptional_assembly_storage< VE, FE >
 
using value_storage = std::remove_reference_t< VE >
 
using flag_storage = std::remove_reference_t< FE >
 
using value_type = xtl::xoptional< typename value_storage::value_type, typename flag_storage::value_type >
 
using val_reference = std::conditional_t< is_val_const, typename value_storage::const_reference, typename value_storage::reference >
 
using flag_reference = std::conditional_t< is_flag_const, typename flag_storage::const_reference, typename flag_storage::reference >
 
using reference = xtl::xoptional< val_reference, flag_reference >
 
using const_reference = xtl::xoptional< typename value_storage::const_reference, typename flag_storage::const_reference >
 
using pointer = xtl::xclosure_pointer< reference >
 
using const_pointer = xtl::xclosure_pointer< const_reference >
 
using size_type = typename value_storage::size_type
 
using difference_type = typename value_storage::difference_type
 
using iterator = xoptional_assembly_linear_iterator< VE, FE, false >
 
using const_iterator = xoptional_assembly_linear_iterator< VE, FE, true >
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class VE1 , class FE1 >
 xoptional_assembly_storage (const VE1 &value_stor, const FE1 &flag_stor)
 
template<class VE1 , class FE1 >
 xoptional_assembly_storage (VE1 &value_stor, FE1 &flag_stor)
 
 xoptional_assembly_storage (const xoptional_assembly_storage &)
 
xoptional_assembly_storageoperator= (const xoptional_assembly_storage &)
 
 xoptional_assembly_storage (xoptional_assembly_storage &&)
 
xoptional_assembly_storageoperator= (xoptional_assembly_storage &&)
 
bool empty () const noexcept
 
size_type size () const noexcept
 
void resize (size_type size)
 
reference operator[] (size_type i)
 
const_reference operator[] (size_type i) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
pointer data () noexcept
 
const_pointer data () const noexcept
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator begin () const 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
 
void swap (self_type &rhs) noexcept
 
value_storage & value () noexcept
 
const value_storage & value () const noexcept
 
flag_storage & has_value () noexcept
 
const flag_storage & has_value () const noexcept
 
+ + + + + +

+Static Public Attributes

static constexpr bool is_val_const = std::is_const<value_storage>::value
 
static constexpr bool is_flag_const = std::is_const<flag_storage>::value
 
+

Detailed Description

+
template<class VE, class FE>
+class xt::xoptional_assembly_storage< VE, FE >
+

Definition at line 27 of file xoptional_assembly_storage.hpp.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::const_iterator = xoptional_assembly_linear_iterator<VE, FE, true>
+
+ +

Definition at line 54 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::const_pointer = xtl::xclosure_pointer<const_reference>
+
+ +

Definition at line 48 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::const_reference = xtl::xoptional<typename value_storage::const_reference, typename flag_storage::const_reference>
+
+ +

Definition at line 45 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::const_reverse_iterator = std::reverse_iterator<const_iterator>
+
+ +

Definition at line 56 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::difference_type = typename value_storage::difference_type
+
+ +

Definition at line 51 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ flag_reference

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::flag_reference = std:: conditional_t<is_flag_const, typename flag_storage::const_reference, typename flag_storage::reference>
+
+ +

Definition at line 42 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ flag_storage

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::flag_storage = std::remove_reference_t<FE>
+
+ +

Definition at line 34 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::iterator = xoptional_assembly_linear_iterator<VE, FE, false>
+
+ +

Definition at line 53 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::pointer = xtl::xclosure_pointer<reference>
+
+ +

Definition at line 47 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::reference = xtl::xoptional<val_reference, flag_reference>
+
+ +

Definition at line 44 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::reverse_iterator = std::reverse_iterator<iterator>
+
+ +

Definition at line 55 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::self_type = xoptional_assembly_storage<VE, FE>
+
+ +

Definition at line 31 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::size_type = typename value_storage::size_type
+
+ +

Definition at line 50 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ val_reference

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::val_reference = std:: conditional_t<is_val_const, typename value_storage::const_reference, typename value_storage::reference>
+
+ +

Definition at line 40 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ value_storage

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::value_storage = std::remove_reference_t<VE>
+
+ +

Definition at line 33 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class VE , class FE >
+ + + + +
using xt::xoptional_assembly_storage< VE, FE >::value_type = xtl::xoptional<typename value_storage::value_type, typename flag_storage::value_type>
+
+ +

Definition at line 36 of file xoptional_assembly_storage.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xoptional_assembly_storage() [1/4]

+ +
+
+
+template<class VE , class FE >
+
+template<class VE1 , class FE1 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly_storage< VE, FE >::xoptional_assembly_storage (const VE1 & value_stor,
const FE1 & flag_stor 
)
+
+inline
+
+ +

Definition at line 221 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ xoptional_assembly_storage() [2/4]

+ +
+
+
+template<class VE , class FE >
+
+template<class VE1 , class FE1 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xoptional_assembly_storage< VE, FE >::xoptional_assembly_storage (VE1 & value_stor,
FE1 & flag_stor 
)
+
+inline
+
+ +

Definition at line 229 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ xoptional_assembly_storage() [3/4]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly_storage< VE, FE >::xoptional_assembly_storage (const xoptional_assembly_storage< VE, FE > & rhs)
+
+inline
+
+ +

Definition at line 236 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ xoptional_assembly_storage() [4/4]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
xt::xoptional_assembly_storage< VE, FE >::xoptional_assembly_storage (xoptional_assembly_storage< VE, FE > && rhs)
+
+inline
+
+ +

Definition at line 251 of file xoptional_assembly_storage.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ back() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::back ()
+
+inline
+
+ +

Definition at line 309 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::back () const
+
+inline
+
+ +

Definition at line 315 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 345 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::begin ()
+
+inlinenoexcept
+
+ +

Definition at line 333 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 357 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 363 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ crbegin()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 393 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ crend()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::crend () const
+
+inlinenoexcept
+
+ +

Definition at line 399 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::data () const
+
+inlinenoexcept
+
+ +

Definition at line 327 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::data ()
+
+inlinenoexcept
+
+ +

Definition at line 321 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
bool xt::xoptional_assembly_storage< VE, FE >::empty () const
+
+inlinenoexcept
+
+ +

Definition at line 266 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 351 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::end ()
+
+inlinenoexcept
+
+ +

Definition at line 339 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::front ()
+
+inline
+
+ +

Definition at line 297 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::front () const
+
+inline
+
+ +

Definition at line 303 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ has_value() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::has_value () const
+
+inlinenoexcept
+
+ +

Definition at line 430 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ has_value() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::has_value ()
+
+inlinenoexcept
+
+ +

Definition at line 424 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::operator= (const xoptional_assembly_storage< VE, FE > & rhs)
+
+inline
+
+ +

Definition at line 243 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::operator= (xoptional_assembly_storage< VE, FE > && rhs)
+
+inline
+
+ +

Definition at line 258 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::operator[] (size_type i)
+
+inline
+
+ +

Definition at line 285 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::operator[] (size_type i) const
+
+inline
+
+ +

Definition at line 291 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ rbegin() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 381 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ rbegin() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 369 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ rend() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::rend () const
+
+inlinenoexcept
+
+ +

Definition at line 387 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ rend() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::rend ()
+
+inlinenoexcept
+
+ +

Definition at line 375 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ resize()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_storage< VE, FE >::resize (size_type size)
+
+inline
+
+ +

Definition at line 278 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 272 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ swap()

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + + +
void xt::xoptional_assembly_storage< VE, FE >::swap (self_typerhs)
+
+inlinenoexcept
+
+ +

Definition at line 405 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ value() [1/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::value () const
+
+inlinenoexcept
+
+ +

Definition at line 418 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ value() [2/2]

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + + + + +
auto xt::xoptional_assembly_storage< VE, FE >::value ()
+
+inlinenoexcept
+
+ +

Definition at line 412 of file xoptional_assembly_storage.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ is_flag_const

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + +
constexpr bool xt::xoptional_assembly_storage< VE, FE >::is_flag_const = std::is_const<flag_storage>::value
+
+staticconstexpr
+
+ +

Definition at line 39 of file xoptional_assembly_storage.hpp.

+ +
+
+ +

◆ is_val_const

+ +
+
+
+template<class VE , class FE >
+ + + + + +
+ + + + +
constexpr bool xt::xoptional_assembly_storage< VE, FE >::is_val_const = std::is_const<value_storage>::value
+
+staticconstexpr
+
+ +

Definition at line 38 of file xoptional_assembly_storage.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xrange-members.html b/classxt_1_1xrange-members.html new file mode 100644 index 000000000..5e22138a9 --- /dev/null +++ b/classxt_1_1xrange-members.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xrange< T > Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + +
contains(size_type i) const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
convert() const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
operator xrange< S >() const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
operator!=(const self_type &rhs) const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
operator()(size_type i) const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
operator==(const self_type &rhs) const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
revert_index(std::size_t i) const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
self_type typedef (defined in xt::xrange< T >)xt::xrange< T >
size() const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
size_type typedef (defined in xt::xrange< T >)xt::xrange< T >
step_size() const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
step_size(std::size_t i, std::size_t n=1) const noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
xrange (defined in xt::xrange< T >)xt::xrange< T >friend
xrange()=default (defined in xt::xrange< T >)xt::xrange< T >
xrange(size_type start_val, size_type stop_val) noexcept (defined in xt::xrange< T >)xt::xrange< T >inline
+
+ + + + diff --git a/classxt_1_1xrange.html b/classxt_1_1xrange.html new file mode 100644 index 000000000..dbd829138 --- /dev/null +++ b/classxt_1_1xrange.html @@ -0,0 +1,602 @@ + + + + + + + +xtensor: xt::xrange< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xrange< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::xrange< T >:
+
+
+ + +xt::xslice< xrange< T > > + +
+ + + + + + + + + +

+Public Types

using size_type = T
 
using self_type = xrange< T >
 
- Public Types inherited from xt::xslice< xrange< T > >
using derived_type = xrange< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xrange (size_type start_val, size_type stop_val) noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
 operator xrange< S > () const noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
xrange< S > convert () const noexcept
 
size_type operator() (size_type i) const noexcept
 
size_type size () const noexcept
 
size_type step_size () const noexcept
 
size_type step_size (std::size_t i, std::size_t n=1) const noexcept
 
size_type revert_index (std::size_t i) const noexcept
 
bool contains (size_type i) const noexcept
 
bool operator== (const self_type &rhs) const noexcept
 
bool operator!= (const self_type &rhs) const noexcept
 
- Public Member Functions inherited from xt::xslice< xrange< T > >
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xslice< xrange< T > >
xslice (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (const xslice &)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class T>
+class xt::xrange< T >
+

Definition at line 105 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ self_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xrange< T >::self_type = xrange<T>
+
+ +

Definition at line 110 of file xslice.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xrange< T >::size_type = T
+
+ +

Definition at line 109 of file xslice.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xrange()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xrange< T >::xrange (size_type start_val,
size_type stop_val 
)
+
+inlinenoexcept
+
+ +

Definition at line 1060 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ contains()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xrange< T >::contains (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1114 of file xslice.hpp.

+ +
+
+ +

◆ convert()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xrange< S > xt::xrange< T >::convert () const
+
+inlinenoexcept
+
+ +

Definition at line 1078 of file xslice.hpp.

+ +
+
+ +

◆ operator xrange< S >()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xt::xrange< T >::operator xrange< S > () const
+
+inlinenoexcept
+
+ +

Definition at line 1068 of file xslice.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xrange< T >::operator!= (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1126 of file xslice.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xrange< T >::operator() (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1084 of file xslice.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xrange< T >::operator== (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1120 of file xslice.hpp.

+ +
+
+ +

◆ revert_index()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xrange< T >::revert_index (std::size_t i) const
+
+inlinenoexcept
+
+ +

Definition at line 1108 of file xslice.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xrange< T >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1090 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xrange< T >::step_size () const
+
+inlinenoexcept
+
+ +

Definition at line 1096 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xrange< T >::step_size (std::size_t i,
std::size_t n = 1 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1102 of file xslice.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xrange

+ +
+
+
+template<class T >
+
+template<class S >
+ + + + + +
+ + + + +
friend class xrange
+
+friend
+
+ +

Definition at line 141 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xrange.png b/classxt_1_1xrange.png new file mode 100644 index 0000000000000000000000000000000000000000..377b907981d1d3f8c1e5e280f8d4423168b74e0f GIT binary patch literal 633 zcmV-<0*3vGP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~00066 zNklaHWkmSg9aCe*}-y@`dB>9v{Gm<=(mk%vw+r+w$)V+<=nB^ZI_IjV27Niwr zZo86Xy{63=`1)#Y>9t+9Z~ZcUpErs=Y^IA`*WPpc zyIGsfVz#BcPfuf(4#Z%#vt-ETj@x54hkER?*+!;I%snj6Vm7{hK4y8>O-9O*etFJn z1?(t&e$I+Ywt25M^RKxekE%_QJcGCY7@lg@*Az(_I5%dmzCa}Tj34twC&@){Gm^Bi zv{{TXt_T1e#svVDWLdMzWmUCh&8}jLs;z70wFv-L+zbG0xETQ0a5Dg~;bs6}!_5G| zhMNI^4L1V-8*T;wHrxyVY`7T!*l;rdu<={WLI`0=5F}|q+)R>exS1r`FqnO?gwefOLdvs8?o z*;aeO42NcJ?>DmzD^|R1CEWE^$R3P&-gFC=#unB+)R>eENvD-2rKdjLLY+1 TN>?>b00000NkvXXu0mjfKbI^D literal 0 HcmV?d00001 diff --git a/classxt_1_1xreducer-members.html b/classxt_1_1xreducer-members.html new file mode 100644 index 000000000..5f39b25c9 --- /dev/null +++ b/classxt_1_1xreducer-members.html @@ -0,0 +1,207 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xreducer< F, CT, X, O > Member List
+
+
+ +

This is the complete list of members for xt::xreducer< F, CT, X, O >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(Args... args) -> referencext::xaccessible< xreducer< F, CT, X, O > >inline
at(Args... args) const -> const_referencext::xaccessible< xreducer< F, CT, X, O > >inline
axes_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
back()xt::xaccessible< xreducer< F, CT, X, O > >inline
back() constxt::xaccessible< xreducer< F, CT, X, O > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
bool_load_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xreducer< F, CT, X, O >inline
build_reducer(E &&e) const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
build_reducer(E &&e, Func &&func, Opts &&opts) const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
build_reducer(E &&e) const -> rebind_t< E > (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
build_reducer(E &&e, Func &&func, Opts &&opts) const -> rebind_t< E, Func, Opts > (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
const_pointer typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
const_reference typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
const_stepper typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
contiguous_layout (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >static
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
xsharable_expression< xreducer< F, CT, X, O > >::derived_cast() &noexceptxt::xexpression< D >inline
xsharable_expression< xreducer< F, CT, X, O > >::derived_cast() const &noexceptxt::xexpression< D >inline
xsharable_expression< xreducer< F, CT, X, O > >::derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
difference_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
dim_mapping_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
dimension() const noexceptxt::xconst_accessible< D >inline
element(It first, It last) const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
element(It first, It last) const -> const_referencext::xreducer< F, CT, X, O >inline
end() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
expression() const noexceptxt::xreducer< F, CT, X, O >inline
expression_tag typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
extension_base typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
front()xt::xaccessible< xreducer< F, CT, X, O > >inline
front() constxt::xaccessible< xreducer< F, CT, X, O > >inline
functors() const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
has_linear_assign(const S &strides) const noexceptxt::xreducer< F, CT, X, O >inline
in_bounds(Args... args) constxt::xconst_accessible< D >inline
init_functor_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
inner_shape_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
inner_types typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
is_contiguous() const noexcept (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
iterable_base typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
layout() const noexceptxt::xreducer< F, CT, X, O >inline
merge_functor_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
operator()(Args... args) const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
operator()(Args... args) const -> const_referencext::xreducer< F, CT, X, O >inline
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator[](const S &index) -> disable_integral_t< S, reference >xt::xaccessible< xreducer< F, CT, X, O > >inline
operator[](const S &index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](std::initializer_list< I > index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](size_type i) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
options() const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
periodic(Args... args) -> referencext::xaccessible< xreducer< F, CT, X, O > >inline
periodic(Args... args) const -> const_referencext::xaccessible< xreducer< F, CT, X, O > >inline
pointer typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
rebind_t typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
reduce_functor_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
reference typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xreducer< F, CT, X, O > >inline
self_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
shape() const noexceptxt::xreducer< F, CT, X, O >inline
xaccessible< xreducer< F, CT, X, O > >::shape(size_type index) constxt::xconst_accessible< D >inline
shape_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
size() const noexceptxt::xconst_accessible< D >inline
size_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
static_layout (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >static
stepper typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
stepper_begin(const S &shape) const noexcept (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
stepper_end(const S &shape, layout_type) const noexcept (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >inline
substepper_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
unchecked(Args... args) const (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
unchecked(Args... args) const -> const_referencext::xreducer< F, CT, X, O >inline
value_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
xreducer(Func &&func, CTA &&e, AX &&axes, OX &&options)xt::xreducer< F, CT, X, O >inline
xreducer_functors_type typedef (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >
xreducer_stepper< F, CT, X, O > (defined in xt::xreducer< F, CT, X, O >)xt::xreducer< F, CT, X, O >friend
~xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
+
+ + + + diff --git a/classxt_1_1xreducer.html b/classxt_1_1xreducer.html new file mode 100644 index 000000000..8f4b4a854 --- /dev/null +++ b/classxt_1_1xreducer.html @@ -0,0 +1,1839 @@ + + + + + + + +xtensor: xt::xreducer< F, CT, X, O > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xreducer< F, CT, X, O > Class Template Reference
+
+
+ +

Reducing function operating over specified axes. + More...

+ +

#include <xreducer.hpp>

+
+Inheritance diagram for xt::xreducer< F, CT, X, O >:
+
+
+ + +xt::xsharable_expression< xreducer< F, CT, X, O > > +xt::xconst_iterable< xreducer< F, CT, X, O > > +xt::xaccessible< xreducer< F, CT, X, O > > +xt::xexpression< D > +xt::xconst_accessible< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xreducer< F, CT, X, O >
 
using inner_types = xcontainer_inner_types< self_type >
 
using reduce_functor_type = typename inner_types::reduce_functor_type
 
using init_functor_type = typename inner_types::init_functor_type
 
using merge_functor_type = typename inner_types::merge_functor_type
 
using xreducer_functors_type = xreducer_functors< reduce_functor_type, init_functor_type, merge_functor_type >
 
using xexpression_type = typename inner_types::xexpression_type
 
using axes_type = X
 
using extension_base = extension::xreducer_base_t< F, CT, X, O >
 
using expression_tag = typename extension_base::expression_tag
 
using substepper_type = typename inner_types::substepper_type
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using iterable_base = xconst_iterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = inner_shape_type
 
using dim_mapping_type = typename select_dim_mapping_type< inner_shape_type >::type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using bool_load_type = typename xexpression_type::bool_load_type
 
template<class E , class Func = F, class Opts = O>
using rebind_t = xreducer< Func, E, X, Opts >
 
- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
- Public Types inherited from xt::xconst_iterable< xreducer< F, CT, X, O > >
using derived_type = xreducer< F, CT, X, O >
 
using iterable_types = xiterable_inner_types< xreducer< F, CT, X, O > >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
using broadcast_iterator = xiterator< stepper, S, L >
 
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xaccessible< xreducer< F, CT, X, O > >
using base_type = xconst_accessible< xreducer< F, CT, X, O > >
 
using derived_type = typename base_type::derived_type
 
using reference = typename base_type::reference
 
using size_type = typename base_type::size_type
 
- Public Types inherited from xt::xconst_accessible< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type) const noexcept
 
+template<class E >
rebind_t< E > build_reducer (E &&e) const
 
+template<class E , class Func , class Opts >
rebind_t< E, Func, Opts > build_reducer (E &&e, Func &&func, Opts &&opts) const
 
xreducer_functors_type functors () const
 
const O & options () const
 
Constructor
template<class Func , class CTA , class AX , class OX >
 xreducer (Func &&func, CTA &&e, AX &&axes, OX &&options)
 Constructs an xreducer expression applying the specified function to the given expression over the given axes.
 
Size and shape
const inner_shape_type & shape () const noexcept
 Returns the shape of the expression.
 
layout_type layout () const noexcept
 Returns the shape of the expression.
 
bool is_contiguous () const noexcept
 
Data
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the reducer.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the reducer.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the reducer.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the reducer.
 
Broadcasting
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the reducer to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xreducer can be linearly assigned to an expression with the specified strides.
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class E >
auto build_reducer (E &&e) const -> rebind_t< E >
 
template<class E , class Func , class Opts >
auto build_reducer (E &&e, Func &&func, Opts &&opts) const -> rebind_t< E, Func, Opts >
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
- Public Member Functions inherited from xt::xconst_iterable< xreducer< F, CT, X, O > >
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+const_layout_iterator< L > cbegin () const noexcept
 
+const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+const_layout_iterator< L > cend () const noexcept
 
+const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xaccessible< xreducer< F, CT, X, O > >
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+disable_integral_t< S, reference > operator[] (const S &index)
 
+reference operator[] (std::initializer_list< I > index)
 
reference operator[] (size_type i)
 
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the expression.
 
auto operator[] (std::initializer_list< I > index) -> reference
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
- Public Member Functions inherited from xt::xconst_accessible< D >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = layout_type::dynamic
 
static constexpr bool contiguous_layout = false
 
+ + + +

+Friends

class xreducer_stepper< F, CT, X, O >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xsharable_expression< xreducer< F, CT, X, O > >
xsharable_expression (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
- Protected Member Functions inherited from xt::xconst_iterable< xreducer< F, CT, X, O > >
const inner_shape_type & get_shape () const
 
- Protected Member Functions inherited from xt::xaccessible< xreducer< F, CT, X, O > >
xaccessible (const xaccessible &)=default
 
xaccessible (xaccessible &&)=default
 
+xaccessibleoperator= (const xaccessible &)=default
 
+xaccessibleoperator= (xaccessible &&)=default
 
- Protected Member Functions inherited from xt::xconst_accessible< D >
xconst_accessible (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+

Detailed Description

+
template<class F, class CT, class X, class O>
+class xt::xreducer< F, CT, X, O >

Reducing function operating over specified axes.

+

The xreducer class implements an xexpression applying a reducing function to an xexpression over the specified axes.

+
Template Parameters
+ + + + +
Fa tuple of functors (class xreducer_functors or compatible)
CTthe closure type of the xexpression to reduce
Xthe list of axes
+
+
+

The reducer's result_type is deduced from the result type of function F::reduce_functor_type when called with elements of the expression

Template Parameters
+ + +
CT.
+
+
+
See also
reduce
+ +

Definition at line 813 of file xreducer.hpp.

+

Member Typedef Documentation

+ +

◆ axes_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::axes_type = X
+
+ +

Definition at line 829 of file xreducer.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::bool_load_type = typename xexpression_type::bool_load_type
+
+ +

Definition at line 852 of file xreducer.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::const_pointer = const value_type*
+
+ +

Definition at line 839 of file xreducer.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 837 of file xreducer.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 851 of file xreducer.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 842 of file xreducer.hpp.

+ +
+
+ +

◆ dim_mapping_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::dim_mapping_type = typename select_dim_mapping_type<inner_shape_type>::type
+
+ +

Definition at line 848 of file xreducer.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 832 of file xreducer.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::extension_base = extension::xreducer_base_t<F, CT, X, O>
+
+ +

Definition at line 831 of file xreducer.hpp.

+ +
+
+ +

◆ init_functor_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::init_functor_type = typename inner_types::init_functor_type
+
+ +

Definition at line 824 of file xreducer.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 845 of file xreducer.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 821 of file xreducer.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::iterable_base = xconst_iterable<self_type>
+
+ +

Definition at line 844 of file xreducer.hpp.

+ +
+
+ +

◆ merge_functor_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::merge_functor_type = typename inner_types::merge_functor_type
+
+ +

Definition at line 825 of file xreducer.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::pointer = value_type*
+
+ +

Definition at line 838 of file xreducer.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class E , class Func = F, class Opts = O>
+ + + + +
using xt::xreducer< F, CT, X, O >::rebind_t = xreducer<Func, E, X, Opts>
+
+ +

Definition at line 886 of file xreducer.hpp.

+ +
+
+ +

◆ reduce_functor_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::reduce_functor_type = typename inner_types::reduce_functor_type
+
+ +

Definition at line 823 of file xreducer.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::reference = typename inner_types::reference
+
+ +

Definition at line 836 of file xreducer.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::self_type = xreducer<F, CT, X, O>
+
+ +

Definition at line 820 of file xreducer.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::shape_type = inner_shape_type
+
+ +

Definition at line 846 of file xreducer.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::size_type = typename inner_types::size_type
+
+ +

Definition at line 841 of file xreducer.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 850 of file xreducer.hpp.

+ +
+
+ +

◆ substepper_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::substepper_type = typename inner_types::substepper_type
+
+ +

Definition at line 834 of file xreducer.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::value_type = typename inner_types::value_type
+
+ +

Definition at line 835 of file xreducer.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::xexpression_type = typename inner_types::xexpression_type
+
+ +

Definition at line 828 of file xreducer.hpp.

+ +
+
+ +

◆ xreducer_functors_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer< F, CT, X, O >::xreducer_functors_type = xreducer_functors<reduce_functor_type, init_functor_type, merge_functor_type>
+
+ +

Definition at line 826 of file xreducer.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xreducer()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class Func , class CTA , class AX , class OX >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xreducer< F, CT, X, O >::xreducer (Func && func,
CTA && e,
AX && axes,
OX && options 
)
+
+inline
+
+ +

Constructs an xreducer expression applying the specified function to the given expression over the given axes.

+
Parameters
+ + + + +
functhe function to apply
ethe expression to reduce
axesthe axes along which the reduction is performed
+
+
+ +

Definition at line 1414 of file xreducer.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ broadcast_shape()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xreducer< F, CT, X, O >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the reducer to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 1609 of file xreducer.hpp.

+ +
+
+ +

◆ build_reducer() [1/2]

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xreducer< F, CT, X, O >::build_reducer (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 1647 of file xreducer.hpp.

+ +
+
+ +

◆ build_reducer() [2/2]

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class E , class Func , class Opts >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xreducer< F, CT, X, O >::build_reducer (E && e,
Func && func,
Opts && opts 
) const -> rebind_t<E, Func, Opts> +
+
+inline
+
+ +

Definition at line 1659 of file xreducer.hpp.

+ +
+
+ +

◆ element()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xreducer< F, CT, X, O >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the reducer.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the number of dimensions of the reducer.
+
+
+ +

Definition at line 1560 of file xreducer.hpp.

+ +
+
+ +

◆ expression()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xreducer< F, CT, X, O >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the reducer.

+ +

Definition at line 1590 of file xreducer.hpp.

+ +
+
+ +

◆ functors()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
xreducer_functors_type xt::xreducer< F, CT, X, O >::functors () const
+
+inline
+
+ +

Definition at line 894 of file xreducer.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xreducer< F, CT, X, O >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Checks whether the xreducer can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 1621 of file xreducer.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
bool xt::xreducer< F, CT, X, O >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 1497 of file xreducer.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
layout_type xt::xreducer< F, CT, X, O >::layout () const
+
+inlinenoexcept
+
+ +

Returns the shape of the expression.

+ +

Definition at line 1491 of file xreducer.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xreducer< F, CT, X, O >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the reducer.

+
Parameters
+ + +
argsa list of indices specifying the position in the reducer. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the reducer.
+
+
+ +

Definition at line 1516 of file xreducer.hpp.

+ +
+
+ +

◆ options()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
const O & xt::xreducer< F, CT, X, O >::options () const
+
+inline
+
+ +

Definition at line 901 of file xreducer.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xreducer< F, CT, X, O >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the expression.

+ +

Definition at line 1482 of file xreducer.hpp.

+ +
+
+ +

◆ stepper_begin()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xreducer< F, CT, X, O >::stepper_begin (const S & shape) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 1630 of file xreducer.hpp.

+ +
+
+ +

◆ stepper_end()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xreducer< F, CT, X, O >::stepper_end (const S & shape,
layout_type l 
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 1638 of file xreducer.hpp.

+ +
+
+ +

◆ unchecked()

+ +
+
+
+template<class F , class CT , class X , class O >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xreducer< F, CT, X, O >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the reducer.

+
Parameters
+ + +
argsa list of indices specifying the position in the reducer. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the reducer, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 1545 of file xreducer.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xreducer_stepper< F, CT, X, O >

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + +
friend class xreducer_stepper< F, CT, X, O >
+
+friend
+
+ +

Definition at line 915 of file xreducer.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + +
constexpr bool xt::xreducer< F, CT, X, O >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 855 of file xreducer.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + +
constexpr layout_type xt::xreducer< F, CT, X, O >::static_layout = layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 854 of file xreducer.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xmime.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xreducer.js b/classxt_1_1xreducer.js new file mode 100644 index 000000000..485d42643 --- /dev/null +++ b/classxt_1_1xreducer.js @@ -0,0 +1,12 @@ +var classxt_1_1xreducer = +[ + [ "xreducer", "classxt_1_1xreducer.html#ac1a504813c1a2d91e1aa5c871bee7a77", null ], + [ "broadcast_shape", "classxt_1_1xreducer.html#a20c55f56bcedfe9f3e3662253a922073", null ], + [ "element", "classxt_1_1xreducer.html#aa6b950db4c421bef297b1b1d76047b23", null ], + [ "expression", "classxt_1_1xreducer.html#a35efc1a78c0ad4a52cef8dca2a472a83", null ], + [ "has_linear_assign", "classxt_1_1xreducer.html#a6dc809c4eefc124d5bfb4d579afea715", null ], + [ "layout", "classxt_1_1xreducer.html#aeee3a89a9dd452a00cfd55cbbfd2aa17", null ], + [ "operator()", "classxt_1_1xreducer.html#a979a86f103f655328d35e67fcc5bca7b", null ], + [ "shape", "classxt_1_1xreducer.html#aaf23386e8c796f997a2e80c71e57e74c", null ], + [ "unchecked", "classxt_1_1xreducer.html#a55be3ba3c0268968d7c6efef7621e3e4", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xreducer.png b/classxt_1_1xreducer.png new file mode 100644 index 0000000000000000000000000000000000000000..c5883102d77a2b2d46fdc55670aaabd9bbe63f98 GIT binary patch literal 3839 zcmdT{c|4SB8@ALz8)?(nqntKUWTz}e3mUy643bh!X__*OVQ@+jk)0-jq0aff@4s{Y_@=gJ`);eKU= zaXi^nt^D;dwynE7<_BjhBuPweS&&eD|DQvXj68S+1Q}RLrR}yl3o%?`EH9YeI0Y5P zEnC|jV~&E@TkiyKQw@b6KdZkt<#p%5VHlo%;Xc@DS6b}~9cL4|TQ!ID0y+_nP~klQ ze@!KtYeF71X}VYJA2?#?p#?JWS8AgmQtYg|Jyh6z_3Zak-p`QSPqIfrZb@5~)__kl zsI8m3H^JO=T?LB8X+uBEok-VL_oF9s7iy{Qbb9Z&Z}+6kb1-z2Rf>zB&=E&b}p7cYI-|he4mHz5Gzm z`DE*`FDa$1PPfM}M5w-<-P##8{O#mKHus$7!QdkF)|Zs_%b!aUN;f_!DI9<^i;O1} z>n})494|JD_(UvifA!`u1>QjR+7*M}kkYo!<+$?|6gkx<&^0S=El<_k>FDHCGU;%n z#Fm0@`q9*J>gGpNb}ondBZKDIceh1<2=2rf8jW1iZZJ^q46omzW;YyZM|JlxX77+% zZU2Y-wPS!66I&MX4`pq841ddG`g~|Ohi~)4yO7kq{dnFtrzeIkp7k;J6wpnb2e-7=_jS~M6@_9m6 zNsGIEA%-H}n995M{bEz{ey1ih+8XrqWmVwjGDa3Q9I(;yY#q;GK39j@Oz<1tiwiVL zw^G&W3D8#fN_f#TJFj<3ksf((pa9)~s;}<*ZNLdS?x|4L*37!!R#%$|_j<0V-?f+g zq0XewPu7eAdq;uNu4LnO3OePpv5|`z_C8>g-_6NoF%+91ee z8|aCaU>{F#Bp3IHi$#Q_ruz-?h>KBgM`rAysbl=`MPltwxI>IewV(4BVgPGVN`n0k zOsdg>{k|nlLgEZK64K@uj!HX#Bk@nCfK!(?IvcP_>hb13hut;4H-&^1tfeJ{6^`5x z7f!jUDlK9dL#3*&6)_aGQe8&)RbtCB!kQRM@iEJ;>+!0lL262Of`ueOeL{@~1!2d| z{0zIl3YUzj_A}nOzcjbwRt3D{B*Z>Ff5;xX1;g@BqabK?JOw9n zTX|LWo?#`-Gq~NRs~?7cS@eV=Lfm8!Qb2^*YFIA_5=FiRF7t@$J*!rSA}H{5tWGHm z3vWLQTu*3jGPi*bf@a^zIzx=0^)G?z1Z&SKGf@-~sKqC+Bucu1fWHP-CufhYwuPq-y_R%rIl3v;YP5q&lro={@xt9p6^(@1u48|NB z5*}6F1Ux6ThpV9oOV3-tj9LXWO%8os-x&{&x;1p!>OAfWj%c6xqJH){@zDu2<2; zhI9J{F6z%ts`MofJTbOo4OiJ?4B7sH$+}`MD5Y)cOzYo^{Zok#C3(_SZI5fp;VW&u zqK$eLcb#pVhjTPMwO_#=Z0{r3t^8{+uX$kB8S7&T(STJ^HCO5OS&vU__RxJ2ys_m6leQIG20EoH}ew-J3Sx{$0RrJ(yA z=w{vB>Goy$k-T{PNG?OyDIxAy-<;~D`~%N2)paPJ8p(mrZaPuM?IpUO<#u|t!?#r;ENkBT>KXWB3bTC~iTA}t+i-M3X8v3+wxiq3Oy zk3_7Dt61pFrcM3!05STI)rUcsuxH-d$PZcIQ$i-X3K4zsaU(Sz8z|c|hEkKrUZn*! zlebsSL?rD;u^4YHa3Y8i9DS;fbHZO<7IAVJ7;sO^<0{DbJA)V+#NCI2ex5mDn`dGP< zKb``^xigW7Jd8ovWVUoTwVS^;cgKv?w*_+s45NmTtV0%`Z*^LKseOQ@BA5_v{9_10 z5}85IbY=r95LOGPR53q#e-j z>$f2nCdyTA`shkb*IDTRO=|MJSmbhS+;Wj+;!;lziAyOR2t_C#2oh4p1OrcS*4lsO*i-m#kyR#XL#66o z&Y#&L0BsE6#nO#*lcVFrPN;xaQ}YP$?srF!cGDINuzxw)EG{fkE_DLfSuTRAx^IOd z=r}p9w6cG~3CbyG0qV*%hcoY; zqrbn){GN@Iqhr@C#+$q2X&S(}xrF1G zm@Z2nnog_EFIy9tG`icu*YF(=u1KRfIlf97)REh~gm~ReZoO9W)P<+v-;4Iw&fj`d zdau%eQEdDi$;x}HDd5s2G%$;n-dn^VAiL?&ybYwxO1vvo|5^skHOhTyz4hlbb-K_u zu0zfgTyFlODv%{3n%dlozPm^iQmdt=$#W-T_oP6Lc9Yb5@3C|XCpK52SeRyw(4{P4 zu1MDJk!ltx&D?;o0zJ%dxx*x20vp?!X+};Xn;pHQK1bNBAIX~8X&xb^RJD>*J0e5J zUH-kkwtQqJ&S(7+!%SONY{C-aoys)82mQS2(kimR7^m?MJ7@mm + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xreducer_stepper< F, CT, X, O > Member List
+
+
+ +

This is the complete list of members for xt::xreducer_stepper< F, CT, X, O >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
operator*() const (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
pointer typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
reference typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
reset(size_type dim) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
reset_back(size_type dim) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
self_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
shape_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
size_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
step(size_type dim) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
step(size_type dim, size_type n) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
step_back(size_type dim) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
step_back(size_type dim, size_type n) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
substepper_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
to_begin() (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
to_end(layout_type l) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
value_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
xexpression_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
xreducer_stepper(const xreducer_type &red, size_type offset, bool end=false, layout_type l=default_assignable_layout(xexpression_type::static_layout)) (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >inline
xreducer_type typedef (defined in xt::xreducer_stepper< F, CT, X, O >)xt::xreducer_stepper< F, CT, X, O >
+
+ + + + diff --git a/classxt_1_1xreducer__stepper.html b/classxt_1_1xreducer__stepper.html new file mode 100644 index 000000000..041df5a09 --- /dev/null +++ b/classxt_1_1xreducer__stepper.html @@ -0,0 +1,684 @@ + + + + + + + +xtensor: xt::xreducer_stepper< F, CT, X, O > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xreducer_stepper< F, CT, X, O > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xreducer_stepper< F, CT, X, O >
 
using xreducer_type = xreducer< F, CT, X, O >
 
using value_type = typename xreducer_type::value_type
 
using reference = typename xreducer_type::value_type
 
using pointer = typename xreducer_type::const_pointer
 
using size_type = typename xreducer_type::size_type
 
using difference_type = typename xreducer_type::difference_type
 
using xexpression_type = typename xreducer_type::xexpression_type
 
using substepper_type = typename xexpression_type::const_stepper
 
using shape_type = typename xreducer_type::shape_type
 
+ + + + + + + + + + + + + + + + + + + + + +

Broadcasting

 xreducer_stepper (const xreducer_type &red, size_type offset, bool end=false, layout_type l=default_assignable_layout(xexpression_type::static_layout))
 
reference operator* () const
 
void step (size_type dim)
 
void step_back (size_type dim)
 
void step (size_type dim, size_type n)
 
void step_back (size_type dim, size_type n)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
+

Detailed Description

+
template<class F, class CT, class X, class O>
+class xt::xreducer_stepper< F, CT, X, O >
+

Definition at line 1095 of file xreducer.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::difference_type = typename xreducer_type::difference_type
+
+ +

Definition at line 1106 of file xreducer.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::pointer = typename xreducer_type::const_pointer
+
+ +

Definition at line 1104 of file xreducer.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::reference = typename xreducer_type::value_type
+
+ +

Definition at line 1103 of file xreducer.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::self_type = xreducer_stepper<F, CT, X, O>
+
+ +

Definition at line 1099 of file xreducer.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::shape_type = typename xreducer_type::shape_type
+
+ +

Definition at line 1110 of file xreducer.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::size_type = typename xreducer_type::size_type
+
+ +

Definition at line 1105 of file xreducer.hpp.

+ +
+
+ +

◆ substepper_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::substepper_type = typename xexpression_type::const_stepper
+
+ +

Definition at line 1109 of file xreducer.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::value_type = typename xreducer_type::value_type
+
+ +

Definition at line 1102 of file xreducer.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::xexpression_type = typename xreducer_type::xexpression_type
+
+ +

Definition at line 1108 of file xreducer.hpp.

+ +
+
+ +

◆ xreducer_type

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + +
using xt::xreducer_stepper< F, CT, X, O >::xreducer_type = xreducer<F, CT, X, O>
+
+ +

Definition at line 1100 of file xreducer.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xreducer_stepper()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xreducer_stepper< F, CT, X, O >::xreducer_stepper (const xreducer_typered,
size_type offset,
bool end = false,
layout_type l = default_assignable_layout(xexpression_type::static_layout) 
)
+
+inline
+
+ +

Definition at line 1675 of file xreducer.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
auto xt::xreducer_stepper< F, CT, X, O >::operator* () const
+
+inline
+
+ +

Definition at line 1692 of file xreducer.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 1735 of file xreducer.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 1752 of file xreducer.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::step (size_type dim)
+
+inline
+
+ +

Definition at line 1699 of file xreducer.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::step (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 1717 of file xreducer.hpp.

+ +
+
+ +

◆ step_back() [1/2]

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::step_back (size_type dim)
+
+inline
+
+ +

Definition at line 1708 of file xreducer.hpp.

+ +
+
+ +

◆ step_back() [2/2]

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::step_back (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 1726 of file xreducer.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::to_begin ()
+
+inline
+
+ +

Definition at line 1768 of file xreducer.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class F , class CT , class X , class O >
+ + + + + +
+ + + + + + + + +
void xt::xreducer_stepper< F, CT, X, O >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 1774 of file xreducer.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xrepeat-members.html b/classxt_1_1xrepeat-members.html new file mode 100644 index 000000000..c76a796da --- /dev/null +++ b/classxt_1_1xrepeat-members.html @@ -0,0 +1,184 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xrepeat< CT, R > Member List
+
+
+ +

This is the complete list of members for xt::xrepeat< CT, R >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
access(Arg arg, Args... args) const -> const_reference (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
access_impl(stepper &&s, Arg arg, Args... args) const -> const_reference (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
access_impl(stepper &&s) const -> const_reference (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
accessible_base typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
at(Args... args) const -> const_referencext::xconst_accessible< xrepeat< CT, R > >inline
back() constxt::xconst_accessible< xrepeat< CT, R > >inline
begin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
bool_load_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xrepeat< CT, R >inline
cbegin() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
cend() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
const_pointer typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
const_reference typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
const_stepper typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
container_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
contiguous_layout (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >static
crbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
crend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
derived_cast() &noexceptxt::xexpression< D >inline
xsharable_expression< xrepeat< CT, R > >::derived_cast() const &noexceptxt::xexpression< D >inline
xsharable_expression< xrepeat< CT, R > >::derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
difference_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
dimension() const noexceptxt::xconst_accessible< xrepeat< CT, R > >inline
element(It first, It last) const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
element(It first, It last) const -> const_referencext::xrepeat< CT, R >inline
end() const noexcept -> const_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
expression() const noexceptxt::xrepeat< CT, R >inline
expression_tag typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
extension_base typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
front() constxt::xconst_accessible< xrepeat< CT, R > >inline
has_linear_assign(const S &strides) const noexceptxt::xrepeat< CT, R >inline
in_bounds(Args... args) constxt::xconst_accessible< xrepeat< CT, R > >inline
is_contiguous() const noexcept (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
iterable_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
layout() const noexceptxt::xrepeat< CT, R >inline
operator()(Args... args) const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
operator()(Args... args) const -> const_referencext::xrepeat< CT, R >inline
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator[](const S &index) const -> disable_integral_t< S, const_reference >xt::xconst_accessible< xrepeat< CT, R > >inline
periodic(Args... args) const -> const_referencext::xconst_accessible< xrepeat< CT, R > >inline
pointer typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
rbegin() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
reference typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
rend() const noexcept -> const_reverse_layout_iterator< L >xt::xconst_iterable< xrepeat< CT, R > >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xconst_iterable< xrepeat< CT, R > >inline
repeats_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
self_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
shape() const noexceptxt::xrepeat< CT, R >inline
shape(size_type index) constxt::xrepeat< CT, R >inline
shape_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
size() const noexceptxt::xrepeat< CT, R >inline
size_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
static_layout (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >static
stepper typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
stepper_begin() const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
stepper_begin(const shape_type &s) const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
stepper_end(layout_type l) const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
stepper_end(const shape_type &s, layout_type l) const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >inline
temporary_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
unchecked(Args... args) const (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
unchecked(Args... args) const -> const_referencext::xrepeat< CT, R >inline
value_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression_type typedef (defined in xt::xrepeat< CT, R >)xt::xrepeat< CT, R >
xrepeat(CTA &&e, R &&repeats, size_type axis)xt::xrepeat< CT, R >explicit
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
+
+ + + + diff --git a/classxt_1_1xrepeat.html b/classxt_1_1xrepeat.html new file mode 100644 index 000000000..0168aed2a --- /dev/null +++ b/classxt_1_1xrepeat.html @@ -0,0 +1,1672 @@ + + + + + + + +xtensor: xt::xrepeat< CT, R > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xrepeat< CT, R > Class Template Reference
+
+
+ +

Expression with repeated values along an axis. + More...

+ +

#include <xrepeat.hpp>

+
+Inheritance diagram for xt::xrepeat< CT, R >:
+
+
+ + +xt::xconst_iterable< xrepeat< CT, R > > +xt::xconst_accessible< xrepeat< CT, R > > +xt::xsharable_expression< xrepeat< CT, R > > +xt::xexpression< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xrepeat< CT, R >
 
using xexpression_type = std::decay_t< CT >
 
using accessible_base = xconst_accessible< self_type >
 
using extension_base = extension::xrepeat_base_t< CT, R >
 
using expression_tag = typename extension_base::expression_tag
 
using value_type = typename xexpression_type::value_type
 
using shape_type = typename xexpression_type::shape_type
 
using repeats_type = xtl::const_closure_type_t< R >
 
using container_type = xcontainer_inner_types< xrepeat< CT, R > >
 
using reference = typename container_type::reference
 
using const_reference = typename container_type::const_reference
 
using size_type = typename container_type::size_type
 
using temporary_type = typename container_type::temporary_type
 
using bool_load_type = typename xexpression_type::bool_load_type
 
using pointer = typename xexpression_type::pointer
 
using const_pointer = typename xexpression_type::const_pointer
 
using difference_type = typename xexpression_type::difference_type
 
using iterable_type = xiterable< xrepeat< CT, R > >
 
using stepper = typename iterable_type::stepper
 
using const_stepper = typename iterable_type::const_stepper
 
- Public Types inherited from xt::xconst_iterable< xrepeat< CT, R > >
using derived_type = xrepeat< CT, R >
 
using iterable_types = xiterable_inner_types< xrepeat< CT, R > >
 
using inner_shape_type = typename iterable_types::inner_shape_type
 
using stepper = typename iterable_types::stepper
 
using const_stepper = typename iterable_types::const_stepper
 
using layout_iterator = xiterator< stepper, inner_shape_type *, L >
 
using const_layout_iterator = xiterator< const_stepper, inner_shape_type *, L >
 
using reverse_layout_iterator = std::reverse_iterator< layout_iterator< L > >
 
using const_reverse_layout_iterator = std::reverse_iterator< const_layout_iterator< L > >
 
using linear_iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_linear_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_linear_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_linear_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
using broadcast_iterator = xiterator< stepper, S, L >
 
using const_broadcast_iterator = xiterator< const_stepper, S, L >
 
using reverse_broadcast_iterator = std::reverse_iterator< broadcast_iterator< S, L > >
 
using const_reverse_broadcast_iterator = std::reverse_iterator< const_broadcast_iterator< S, L > >
 
using iterator = layout_iterator< ::xt::layout_type::row_major >
 
using const_iterator = const_layout_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = reverse_layout_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = const_reverse_layout_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xconst_accessible< xrepeat< CT, R > >
using derived_type = xrepeat< CT, R >
 
using inner_types = xcontainer_inner_types< xrepeat< CT, R > >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class CTA >
 xrepeat (CTA &&e, R &&repeats, size_type axis)
 Constructs an xrepeat expression repeating the element of the specified xexpression.
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
const_reference element (It first, It last) const
 
size_type size () const noexcept
 Returns the size of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
Size and shape
const shape_type & shape () const noexcept
 Returns the shape of the expression.
 
layout_type layout () const noexcept
 Returns the layout_type of the expression.
 
bool is_contiguous () const noexcept
 
Data
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the broadcast expression.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
- Public Member Functions inherited from xt::xconst_iterable< xrepeat< CT, R > >
+const_layout_iterator< L > begin () const noexcept
 
+const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+const_layout_iterator< L > end () const noexcept
 
+const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+const_layout_iterator< L > cbegin () const noexcept
 
+const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+const_layout_iterator< L > cend () const noexcept
 
+const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > rend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crbegin () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+const_reverse_layout_iterator< L > crend () const noexcept
 
+const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
auto begin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto end () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
auto cend () const noexcept -> const_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
auto rbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend () const noexcept -> const_reverse_layout_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
auto get_cbegin (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cbegin (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_cend (bool end_index) const noexcept -> const_layout_iterator< L >
 
auto get_cend (const S &shape, bool end_index) const noexcept -> const_broadcast_iterator< S, L >
 
auto get_stepper_begin (const S &shape) const noexcept -> const_stepper
 
auto get_stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
- Public Member Functions inherited from xt::xconst_accessible< xrepeat< CT, R > >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = xexpression_type::static_layout
 
static constexpr bool contiguous_layout = false
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the function to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xbroadcast can be linearly assigned to an expression with the specified strides.
 
const_stepper stepper_begin () const
 
const_stepper stepper_begin (const shape_type &s) const
 
const_stepper stepper_end (layout_type l) const
 
const_stepper stepper_end (const shape_type &s, layout_type l) const
 
template<class Arg , class... Args>
auto access (Arg arg, Args... args) const -> const_reference
 
template<std::size_t I, class Arg , class... Args>
auto access_impl (stepper &&s, Arg arg, Args... args) const -> const_reference
 
template<std::size_t I>
auto access_impl (stepper &&s) const -> const_reference
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xconst_iterable< xrepeat< CT, R > >
const inner_shape_type & get_shape () const
 
- Protected Member Functions inherited from xt::xconst_accessible< xrepeat< CT, R > >
xconst_accessible (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
- Protected Member Functions inherited from xt::xsharable_expression< xrepeat< CT, R > >
xsharable_expression (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
+

Detailed Description

+
template<class CT, class R>
+class xt::xrepeat< CT, R >

Expression with repeated values along an axis.

+

The xrepeat class implements the repetition of the elements of an xexpression along a given axis. xrepeat is not meant to be used directly, but only with the repeat helper functions.

+
See also
repeat
+ +

Definition at line 96 of file xrepeat.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::accessible_base = xconst_accessible<self_type>
+
+ +

Definition at line 105 of file xrepeat.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::bool_load_type = typename xexpression_type::bool_load_type
+
+ +

Definition at line 122 of file xrepeat.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::const_pointer = typename xexpression_type::const_pointer
+
+ +

Definition at line 124 of file xrepeat.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::const_reference = typename container_type::const_reference
+
+ +

Definition at line 115 of file xrepeat.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::const_stepper = typename iterable_type::const_stepper
+
+ +

Definition at line 129 of file xrepeat.hpp.

+ +
+
+ +

◆ container_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::container_type = xcontainer_inner_types<xrepeat<CT, R> >
+
+ +

Definition at line 113 of file xrepeat.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 125 of file xrepeat.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 107 of file xrepeat.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::extension_base = extension::xrepeat_base_t<CT, R>
+
+ +

Definition at line 106 of file xrepeat.hpp.

+ +
+
+ +

◆ iterable_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::iterable_type = xiterable<xrepeat<CT, R> >
+
+ +

Definition at line 127 of file xrepeat.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::pointer = typename xexpression_type::pointer
+
+ +

Definition at line 123 of file xrepeat.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::reference = typename container_type::reference
+
+ +

Definition at line 114 of file xrepeat.hpp.

+ +
+
+ +

◆ repeats_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::repeats_type = xtl::const_closure_type_t<R>
+
+ +

Definition at line 111 of file xrepeat.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::self_type = xrepeat<CT, R>
+
+ +

Definition at line 103 of file xrepeat.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::shape_type = typename xexpression_type::shape_type
+
+ +

Definition at line 110 of file xrepeat.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::size_type = typename container_type::size_type
+
+ +

Definition at line 116 of file xrepeat.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::stepper = typename iterable_type::stepper
+
+ +

Definition at line 128 of file xrepeat.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::temporary_type = typename container_type::temporary_type
+
+ +

Definition at line 117 of file xrepeat.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::value_type = typename xexpression_type::value_type
+
+ +

Definition at line 109 of file xrepeat.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class R >
+ + + + +
using xt::xrepeat< CT, R >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 104 of file xrepeat.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xrepeat()

+ +
+
+
+template<class CT , class R >
+
+template<class CTA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xrepeat< CT, R >::xrepeat (CTA && e,
R && repeats,
size_type axis 
)
+
+explicit
+
+ +

Constructs an xrepeat expression repeating the element of the specified xexpression.

+
Parameters
+ + + + +
ethe input expression
repeatsThe number of repetitions for each elements
axisThe axis along which to repeat the value
+
+
+ +

Definition at line 259 of file xrepeat.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ access()

+ +
+
+
+template<class CT , class R >
+
+template<class Arg , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xrepeat< CT, R >::access (Arg arg,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 417 of file xrepeat.hpp.

+ +
+
+ +

◆ access_impl() [1/2]

+ +
+
+
+template<class CT , class R >
+
+template<std::size_t I>
+ + + + + +
+ + + + + + + + +
auto xt::xrepeat< CT, R >::access_impl (stepper && s) const -> const_reference +
+
+inline
+
+ +

Definition at line 463 of file xrepeat.hpp.

+ +
+
+ +

◆ access_impl() [2/2]

+ +
+
+
+template<class CT , class R >
+
+template<std::size_t I, class Arg , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xrepeat< CT, R >::access_impl (stepper && s,
Arg arg,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 455 of file xrepeat.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT , class R >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xrepeat< CT, R >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the function to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 390 of file xrepeat.hpp.

+ +
+
+ +

◆ element()

+ +
+
+
+template<class CT , class R >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xrepeat< CT, R >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the the number of dimensions of the view..
+
+
+ +

Definition at line 353 of file xrepeat.hpp.

+ +
+
+ +

◆ expression()

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + +
auto xt::xrepeat< CT, R >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the broadcast expression.

+ +

Definition at line 371 of file xrepeat.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT , class R >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xrepeat< CT, R >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Checks whether the xbroadcast can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 402 of file xrepeat.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + +
bool xt::xrepeat< CT, R >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 294 of file xrepeat.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + +
auto xt::xrepeat< CT, R >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout_type of the expression.

+ +

Definition at line 288 of file xrepeat.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class CT , class R >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xrepeat< CT, R >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the function. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the expression.
+
+
+ +

Definition at line 313 of file xrepeat.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + +
auto xt::xrepeat< CT, R >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the expression.

+ +

Definition at line 279 of file xrepeat.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::shape (size_type index) const
+
+inline
+
+ +

Returns the i-th dimension of the expression.

+ +

Definition at line 41 of file xaccessible.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::size () const
+
+inlinenoexcept
+
+ +

Returns the size of the expression.

+ +

Definition at line 39 of file xaccessible.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + +
auto xt::xrepeat< CT, R >::stepper_begin () const
+
+inline
+
+ +

Definition at line 428 of file xrepeat.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + + +
auto xt::xrepeat< CT, R >::stepper_begin (const shape_type & s) const
+
+inline
+
+ +

Definition at line 434 of file xrepeat.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xrepeat< CT, R >::stepper_end (const shape_type & s,
layout_type l 
) const
+
+inline
+
+ +

Definition at line 446 of file xrepeat.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + + + + + +
auto xt::xrepeat< CT, R >::stepper_end (layout_type l) const
+
+inline
+
+ +

Definition at line 440 of file xrepeat.hpp.

+ +
+
+ +

◆ unchecked()

+ +
+
+
+template<class CT , class R >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xrepeat< CT, R >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the expression, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 339 of file xrepeat.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + +
constexpr bool xt::xrepeat< CT, R >::contiguous_layout = false
+
+staticconstexpr
+
+ +

Definition at line 120 of file xrepeat.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT , class R >
+ + + + + +
+ + + + +
constexpr layout_type xt::xrepeat< CT, R >::static_layout = xexpression_type::static_layout
+
+staticconstexpr
+
+ +

Definition at line 119 of file xrepeat.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xrepeat.js b/classxt_1_1xrepeat.js new file mode 100644 index 000000000..b525bf10f --- /dev/null +++ b/classxt_1_1xrepeat.js @@ -0,0 +1,14 @@ +var classxt_1_1xrepeat = +[ + [ "xrepeat", "classxt_1_1xrepeat.html#a8597732ef22eb32ab54d780d1410386f", null ], + [ "broadcast_shape", "classxt_1_1xrepeat.html#a2610f596c5e9b7475d30aa36132a93be", null ], + [ "element", "classxt_1_1xrepeat.html#a38462b0a1711572653036bb3f77e4d2a", null ], + [ "expression", "classxt_1_1xrepeat.html#a54a644b7c615e8f1bca91c0f4ac5a714", null ], + [ "has_linear_assign", "classxt_1_1xrepeat.html#a1cf9569d72c1fb3af6e2e29252b9f03b", null ], + [ "layout", "classxt_1_1xrepeat.html#a44b37d9a8b603737eec64e57ce108ad0", null ], + [ "operator()", "classxt_1_1xrepeat.html#aa896d82b715c106f2424266feabfe7d9", null ], + [ "shape", "classxt_1_1xrepeat.html#abbeb6ae19bc34035323c7577c65f0d84", null ], + [ "shape", "classxt_1_1xrepeat.html#aec0ae6f83f7e86f32e083cb6714af552", null ], + [ "size", "classxt_1_1xrepeat.html#a2f23977016e337e834dfdc912d1fc435", null ], + [ "unchecked", "classxt_1_1xrepeat.html#af545974287e021de5253fcfd602d2f6a", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xrepeat.png b/classxt_1_1xrepeat.png new file mode 100644 index 0000000000000000000000000000000000000000..23eb365cb8c8cdac6d2eea7170698f8c26d871b8 GIT binary patch literal 3111 zcmc&$c{tST9v{&`LPz%HXrV`S!jQaI^m2H_-+(N7{v zWIwrMDuaZ|HbXL)F^LI{ZSFfWy3cdYbN;>0oj>MXe&6l=e&6@={iK|7u#w)Px&?ti zNZTH_JdHqz;lTW#5~AQg_fnHP7}QSLJ6Z8~JTRS_S%}PdK{C0k5Q;Z0EgdJ6BCT}%HVJp8_!_N6bT0Vh656UJr zZhd}bWB0XnHy5F&>-)i@alqMvDdLs>Fu3?i&?i-KtLjRFN~$i8AY z-~fwKP(JBJYJ!<8OMy1ph3ePS9MoZy5M1ZoxHi(Ir`f0(ykhXaYWmOxZ9|KY=nFEn z6uR18z6bBy-3pkSOqXz!(eR~;&uD*t=M(3qmL+?AO_`G9YH#<3G8ndy7ZuqQ$dDv^ zI!`tp3nAQ9WuB^Gz}IhBIX_gqkYrRn-O%@jlp0H4#>M{n567)y5*67Y2N?DLnpNmc z3|)x{bA7U4jUqh2(1+6W(r!6sC{zV=3(pF3adID{k{MDO9%hQIuD+1eb7t`k^E3NR z@$7tnDf21romqmnzQCkt0Wf)!vM6^G;!+>M z%e#b8gJeJpl4@BIP=9L3NKkpwPGK1`_Tg)JJHF3B+LeUCH-Hi_HHAXk$xaYPXa?-& zq~dlQz1(Sug8H2V>DvR`6brQ|<8#V6(woF2z92)dB1Ay(Z}KZDQK3n~sDo6CeMs9_ zha{(*0cH^KKk{#jNR;+faJWq~$N3h;KHL#X?dCh(=3~P*zN0mre+!OY)=1&|M;w+D zDr)g#|34`ryXInkPR83Af^&b+?orR6oFSOzw2g&IbTV8agp0ZAr{Lpj`kD!;6TUp%IC7Ngu0n--JBu6 z^>FWGUsJ~A<^^wH_>yhO${nM$MCxp%^bdE)T+wxm2SG-}g`|VOQ-BR|q+MSmiQ7$*C zBOTlI)w32Vo-fTY^;ORHqp`Y{7q@qYr@F=ZgYdVXHN+7Vov`#6T!D|P*=Iob2w zw5a*85%S$4Tc*j|jvO%v5Jq|YDUMdVcoF0ov*<|m>SmRW&-Z#J&T?W68oH!AVuz`> z{g$S!-?x)XWU=VHp`<<8m*lHH4xcj-z-Aa`vxR zlXHe6pAu&t1VH86-x|w@6SHRW>=YSp`|<9KG(3$EH~UkXq}h_UZHZC)<4jq3PLWUk zX=-HGaAKWZ1)=SuLglxoT}PNTtUlhVv8-F?$0+=8FdZFOPl;P>F{0Cg*=OqtbRno< z?mDjd&dY@)>|&m5?b<{;GN;FaJiNJ50+-oEx;vT>$>|H2AD*b*vI=f(A&#avRdmIe zeBY?YWV|u~xwq_B)q`Fc?=z4cYZoKY_9r-^#fyG)@nVS;HHuC6VC(7KQ&7l6{pIKTmx$MpSGc(V_aJ?n} zC;-M_cc*ub0H-W5P``GnO0w^i9NDSAuo7Tmy;cr@Ku4Jv~PWmZDyA(u(&if43{VqL=bRy_RZqq?xwd)NkiEc5eN; z>y7qz!NE8wtvjve0=cQo^A#mpn}B+RtsxL;&HNG1IeMb zt&GT%4X8eUBpNI{3Z7{YG!ju!+uQb^f744FC z5bZ?GYXN%ELcJ=^t|l{|dREbOYlB&LqKD#(>@-yACsFe1Wgh{l5l=jhI@jR|8SMWQ z8ufzPHq_76H>z2Bp7`@C5{U@TI3geRElEYdfw|ay3?<$xA*tmZ zLyeoHw^#~uM0Qyc^2srutN#HqbgljX literal 0 HcmV?d00001 diff --git a/classxt_1_1xrepeat__stepper-members.html b/classxt_1_1xrepeat__stepper-members.html new file mode 100644 index 000000000..7bd0be2b9 --- /dev/null +++ b/classxt_1_1xrepeat__stepper-members.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xrepeat_stepper< S, R > Member List
+
+
+ +

This is the complete list of members for xt::xrepeat_stepper< S, R >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
operator*() const (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
pointer typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
reference typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
repeats_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
reset(size_type dim) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
reset_back(size_type dim) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
shape_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
simd_return_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
simd_value_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
size_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
step(size_type dim, size_type n=1) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
step_back(size_type dim, size_type n=1) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
step_leading() (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
step_simd() (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
storage_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
store_simd(const V &vec) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
subiterator_traits typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
subiterator_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
to_begin() (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
to_end(layout_type l) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >inline
value_type typedef (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
xrepeat_stepper(S &&s, const shape_type &shape, const repeats_type &repeats, size_type axis) (defined in xt::xrepeat_stepper< S, R >)xt::xrepeat_stepper< S, R >
+
+ + + + diff --git a/classxt_1_1xrepeat__stepper.html b/classxt_1_1xrepeat__stepper.html new file mode 100644 index 000000000..47cc82bb3 --- /dev/null +++ b/classxt_1_1xrepeat__stepper.html @@ -0,0 +1,698 @@ + + + + + + + +xtensor: xt::xrepeat_stepper< S, R > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xrepeat_stepper< S, R > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using repeats_type = R
 
using storage_type = typename S::storage_type
 
using subiterator_type = typename S::subiterator_type
 
using subiterator_traits = typename S::subiterator_traits
 
using value_type = typename subiterator_traits::value_type
 
using reference = typename subiterator_traits::reference
 
using pointer = typename subiterator_traits::pointer
 
using difference_type = typename subiterator_traits::difference_type
 
using size_type = typename storage_type::size_type
 
using shape_type = typename storage_type::shape_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
+ + + + + + + +

+Public Member Functions

+template<class T >
simd_return_type< T > step_simd ()
 
+template<class V >
void store_simd (const V &vec)
 
+ + + + + + + + + + + + + + + + + + + +

Broadcasting

 xrepeat_stepper (S &&s, const shape_type &shape, const repeats_type &repeats, size_type axis)
 
reference operator* () const
 
void step (size_type dim, size_type n=1)
 
void step_back (size_type dim, size_type n=1)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
void step_leading ()
 
+

Detailed Description

+
template<class S, class R>
+class xt::xrepeat_stepper< S, R >
+

Definition at line 187 of file xrepeat.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::difference_type = typename subiterator_traits::difference_type
+
+ +

Definition at line 198 of file xrepeat.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::pointer = typename subiterator_traits::pointer
+
+ +

Definition at line 197 of file xrepeat.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::reference = typename subiterator_traits::reference
+
+ +

Definition at line 196 of file xrepeat.hpp.

+ +
+
+ +

◆ repeats_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::repeats_type = R
+
+ +

Definition at line 191 of file xrepeat.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::shape_type = typename storage_type::shape_type
+
+ +

Definition at line 200 of file xrepeat.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class S , class R >
+
+template<class requested_type >
+ + + + +
using xt::xrepeat_stepper< S, R >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 204 of file xrepeat.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 201 of file xrepeat.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::size_type = typename storage_type::size_type
+
+ +

Definition at line 199 of file xrepeat.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::storage_type = typename S::storage_type
+
+ +

Definition at line 192 of file xrepeat.hpp.

+ +
+
+ +

◆ subiterator_traits

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::subiterator_traits = typename S::subiterator_traits
+
+ +

Definition at line 194 of file xrepeat.hpp.

+ +
+
+ +

◆ subiterator_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::subiterator_type = typename S::subiterator_type
+
+ +

Definition at line 193 of file xrepeat.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class S , class R >
+ + + + +
using xt::xrepeat_stepper< S, R >::value_type = typename subiterator_traits::value_type
+
+ +

Definition at line 195 of file xrepeat.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xrepeat_stepper()

+ +
+
+
+template<class S , class R >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xrepeat_stepper< S, R >::xrepeat_stepper (S && s,
const shape_type & shape,
const repeats_type & repeats,
size_type axis 
)
+
+ +

Definition at line 473 of file xrepeat.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + +
auto xt::xrepeat_stepper< S, R >::operator* () const
+
+inline
+
+ +

Definition at line 485 of file xrepeat.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + + +
void xt::xrepeat_stepper< S, R >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 541 of file xrepeat.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + + +
void xt::xrepeat_stepper< S, R >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 553 of file xrepeat.hpp.

+ +
+
+ +

◆ step()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xrepeat_stepper< S, R >::step (size_type dim,
size_type n = 1 
)
+
+inline
+
+ +

Definition at line 491 of file xrepeat.hpp.

+ +
+
+ +

◆ step_back()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xrepeat_stepper< S, R >::step_back (size_type dim,
size_type n = 1 
)
+
+inline
+
+ +

Definition at line 516 of file xrepeat.hpp.

+ +
+
+ +

◆ step_leading()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + +
void xt::xrepeat_stepper< S, R >::step_leading ()
+
+inline
+
+ +

Definition at line 599 of file xrepeat.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + +
void xt::xrepeat_stepper< S, R >::to_begin ()
+
+inline
+
+ +

Definition at line 565 of file xrepeat.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class S , class R >
+ + + + + +
+ + + + + + + + +
void xt::xrepeat_stepper< S, R >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 574 of file xrepeat.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xscalar-members.html b/classxt_1_1xscalar-members.html new file mode 100644 index 000000000..194291b7c --- /dev/null +++ b/classxt_1_1xscalar-members.html @@ -0,0 +1,275 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xscalar< CT > Member List
+
+
+ +

This is the complete list of members for xt::xscalar< CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
at(Args... args) (defined in xt::xscalar< CT >)xt::xscalar< CT >
at(Args... args) -> referencext::xscalar< CT >inline
at(Args... args) const (defined in xt::xscalar< CT >)xt::xscalar< CT >
at(Args... args) const -> const_referencext::xscalar< CT >inline
back()xt::xscalar< CT >inline
back() constxt::xscalar< CT >inline
begin() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
begin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
begin(const S &shape) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
begin(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
begin() noexcept -> iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
begin() const noexcept -> const_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
bool_load_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
broadcast_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
broadcast_shape(S &shape, bool reuse_cache=false) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
cbegin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
cbegin(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
cbegin() const noexcept -> const_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
cend() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
cend(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
cend() const noexcept -> const_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
const_broadcast_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_dummy_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_layout_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_pointer typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_reference typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_reverse_broadcast_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_reverse_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_reverse_layout_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
const_stepper typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
contiguous_layout (defined in xt::xscalar< CT >)xt::xscalar< CT >static
crbegin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
crbegin(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
crbegin() const noexcept -> const_reverse_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
crend() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
crend(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
crend() const noexcept -> const_reverse_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
data_element(size_type i) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
data_element(size_type i) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
xsharable_expression< xscalar< CT > >::derived_cast() &noexceptxt::xexpression< D >inline
xsharable_expression< xscalar< CT > >::derived_cast() const &noexceptxt::xexpression< D >inline
xsharable_expression< xscalar< CT > >::derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
difference_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
dummy_begin() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
dummy_begin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
dummy_end() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
dummy_end() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
dummy_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
element(It, It) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
element(It, It) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
element(It, It) noexcept -> reference (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
element(It, It) const noexcept -> const_reference (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
end() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
end() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
end(const S &shape) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
end(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
end() noexcept -> iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
end() const noexcept -> const_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
expression() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
expression() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
expression_tag typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
extension_base typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
flat(size_type i) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
flat(size_type i) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
front()xt::xscalar< CT >inline
front() constxt::xscalar< CT >inline
has_linear_assign(const S &strides) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
inner_shape_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
inner_types typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
is_contiguous() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
iterable_base typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
layout() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
layout_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
linear_begin() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_begin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_cbegin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_cend() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_crbegin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_crend() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_end() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_end() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_rbegin() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_rbegin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_rend() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
linear_rend() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
load_simd(size_type i) const (defined in xt::xscalar< CT >)xt::xscalar< CT >
load_simd(size_type) const -> xt_simd::simd_return_type< value_type, requested_type > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
operator const value_type &() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
operator value_type &() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
operator()(Args...) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
operator()(Args...) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
operator()(Args...) noexcept -> reference (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
operator()(Args...) const noexcept -> const_reference (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
periodic(Args... args) (defined in xt::xscalar< CT >)xt::xscalar< CT >
periodic(Args... args) -> referencext::xscalar< CT >inline
periodic(Args... args) const (defined in xt::xscalar< CT >)xt::xscalar< CT >
periodic(Args... args) const -> const_referencext::xscalar< CT >inline
pointer typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
rbegin() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rbegin() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rbegin(const S &shape) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rbegin(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rbegin() noexcept -> reverse_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
rbegin() const noexcept -> const_reverse_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
reference typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
rend() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rend() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rend(const S &shape) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rend(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
rend() noexcept -> reverse_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
rend() const noexcept -> const_reverse_iterator (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L > (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
reverse_broadcast_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
reverse_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
reverse_layout_iterator typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
self_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
shape() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
shape(size_type i) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
shape_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
simd_value_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
size() const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
size_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
static_layout (defined in xt::xscalar< CT >)xt::xscalar< CT >static
stepper typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
stepper_begin(const S &shape) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
stepper_begin(const S &shape) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
stepper_begin(const S &) noexcept -> stepper (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
stepper_begin(const S &) const noexcept -> const_stepper (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
stepper_end(const S &, layout_type) noexcept -> stepper (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
stepper_end(const S &, layout_type) const noexcept -> const_stepper (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
store_simd(size_type i, const simd &e) (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
unchecked(Args...) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
unchecked(Args...) const noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >
unchecked(Args...) noexcept -> reference (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
unchecked(Args...) const noexcept -> const_reference (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
value_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
xaccessible< self_type > (defined in xt::xscalar< CT >)xt::xscalar< CT >friend
xconst_accessible< self_type > (defined in xt::xscalar< CT >)xt::xscalar< CT >friend
xconst_iterable< self_type > (defined in xt::xscalar< CT >)xt::xscalar< CT >friend
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression_type typedef (defined in xt::xscalar< CT >)xt::xscalar< CT >
xiterable< self_type > (defined in xt::xscalar< CT >)xt::xscalar< CT >friend
xscalar() noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
xscalar(CT value) noexcept (defined in xt::xscalar< CT >)xt::xscalar< CT >inline
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
+
+ + + + diff --git a/classxt_1_1xscalar.html b/classxt_1_1xscalar.html new file mode 100644 index 000000000..552d7b546 --- /dev/null +++ b/classxt_1_1xscalar.html @@ -0,0 +1,3925 @@ + + + + + + + +xtensor: xt::xscalar< CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xscalar< CT > Class Template Reference
+
+
+
+Inheritance diagram for xt::xscalar< CT >:
+
+
+ + +xt::xsharable_expression< xscalar< CT > > +xt::xiterable< xscalar< CT > > +xt::xaccessible< xscalar< CT > > +xt::xexpression< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xscalar< CT >
 
using xexpression_type = std::decay_t< CT >
 
using extension_base = extension::xscalar_base_t< CT >
 
using accessible_base = xaccessible< self_type >
 
using expression_tag = typename extension_base::expression_tag
 
using inner_types = xcontainer_inner_types< self_type >
 
using value_type = typename inner_types::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using size_type = typename inner_types::size_type
 
using difference_type = std::ptrdiff_t
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using iterable_base = xiterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = inner_shape_type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using iterator = value_type *
 
using const_iterator = const value_type *
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using dummy_iterator = xdummy_iterator< false, CT >
 
using const_dummy_iterator = xdummy_iterator< true, CT >
 
- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xscalar (CT value) noexcept
 
 operator value_type & () noexcept
 
 operator const value_type & () const noexcept
 
size_type size () const noexcept
 
const shape_type & shape () const noexcept
 
size_type shape (size_type i) const noexcept
 
layout_type layout () const noexcept
 
bool is_contiguous () const noexcept
 
+template<class... Args>
reference operator() (Args...) noexcept
 
+template<class... Args>
reference unchecked (Args...) noexcept
 
+template<class... Args>
const_reference operator() (Args...) const noexcept
 
+template<class... Args>
const_reference unchecked (Args...) const noexcept
 
+template<class It >
reference element (It, It) noexcept
 
+template<class It >
const_reference element (It, It) const noexcept
 
xexpression_type & expression () noexcept
 
const xexpression_type & expression () const noexcept
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const noexcept
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
iterator begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
iterator end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_iterator begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_iterator end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_iterator cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_iterator cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_iterator rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
reverse_iterator rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_iterator rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_iterator rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_iterator crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
const_reverse_iterator crend () const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<class S , layout_type L = ::xt::layout_type::row_major>
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
iterator linear_begin () noexcept
 
iterator linear_end () noexcept
 
const_iterator linear_begin () const noexcept
 
const_iterator linear_end () const noexcept
 
const_iterator linear_cbegin () const noexcept
 
const_iterator linear_cend () const noexcept
 
reverse_iterator linear_rbegin () noexcept
 
reverse_iterator linear_rend () noexcept
 
const_reverse_iterator linear_rbegin () const noexcept
 
const_reverse_iterator linear_rend () const noexcept
 
const_reverse_iterator linear_crbegin () const noexcept
 
const_reverse_iterator linear_crend () const noexcept
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
dummy_iterator dummy_begin () noexcept
 
dummy_iterator dummy_end () noexcept
 
const_dummy_iterator dummy_begin () const noexcept
 
const_dummy_iterator dummy_end () const noexcept
 
reference data_element (size_type i) noexcept
 
const_reference data_element (size_type i) const noexcept
 
reference flat (size_type i) noexcept
 
const_reference flat (size_type i) const noexcept
 
template<class align , class simd = simd_value_type>
void store_simd (size_type i, const simd &e)
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
xt_simd::simd_return_type< value_type, requested_type > load_simd (size_type i) const
 
template<class... Args>
auto operator() (Args...) noexcept -> reference
 
template<class... Args>
auto unchecked (Args...) noexcept -> reference
 
template<class... Args>
auto operator() (Args...) const noexcept -> const_reference
 
template<class... Args>
auto unchecked (Args...) const noexcept -> const_reference
 
template<class It >
auto element (It, It) noexcept -> reference
 
template<class It >
auto element (It, It) const noexcept -> const_reference
 
template<layout_type L>
auto begin () noexcept -> iterator
 
template<layout_type L>
auto end () noexcept -> iterator
 
template<layout_type L>
auto begin () const noexcept -> const_iterator
 
template<layout_type L>
auto end () const noexcept -> const_iterator
 
template<layout_type L>
auto cbegin () const noexcept -> const_iterator
 
template<layout_type L>
auto cend () const noexcept -> const_iterator
 
template<layout_type L>
auto rbegin () noexcept -> reverse_iterator
 
template<layout_type L>
auto rend () noexcept -> reverse_iterator
 
template<layout_type L>
auto rbegin () const noexcept -> const_reverse_iterator
 
template<layout_type L>
auto rend () const noexcept -> const_reverse_iterator
 
template<layout_type L>
auto crbegin () const noexcept -> const_reverse_iterator
 
template<layout_type L>
auto crend () const noexcept -> const_reverse_iterator
 
template<class S , layout_type L>
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 
template<class S >
auto stepper_begin (const S &) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &, layout_type) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &, layout_type) const noexcept -> const_stepper
 
template<class align , class requested_type , std::size_t N>
auto load_simd (size_type) const -> xt_simd::simd_return_type< value_type, requested_type >
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = layout_type::any
 
static constexpr bool contiguous_layout = true
 
+ + + + + + + + + +

+Friends

class xconst_iterable< self_type >
 
class xiterable< self_type >
 
class xaccessible< self_type >
 
class xconst_accessible< self_type >
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xsharable_expression< xscalar< CT > >
xsharable_expression (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
+

Detailed Description

+
template<class CT>
+class xt::xscalar< CT >
+

Definition at line 86 of file xscalar.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::accessible_base = xaccessible<self_type>
+
+ +

Definition at line 96 of file xscalar.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::bool_load_type = xt::bool_load_type<value_type>
+
+ +

Definition at line 108 of file xscalar.hpp.

+ +
+
+ +

◆ broadcast_iterator

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + +
using xt::xscalar< CT >::broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>
+
+ +

Definition at line 128 of file xscalar.hpp.

+ +
+
+ +

◆ const_broadcast_iterator

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + +
using xt::xscalar< CT >::const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>
+
+ +

Definition at line 130 of file xscalar.hpp.

+ +
+
+ +

◆ const_dummy_iterator

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::const_dummy_iterator = xdummy_iterator<true, CT>
+
+ +

Definition at line 143 of file xscalar.hpp.

+ +
+
+ +

◆ const_iterator

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::const_iterator = const value_type*
+
+ +

Definition at line 138 of file xscalar.hpp.

+ +
+
+ +

◆ const_layout_iterator

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + +
using xt::xscalar< CT >::const_layout_iterator = typename iterable_base::template const_layout_iterator<L>
+
+ +

Definition at line 120 of file xscalar.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::const_pointer = const value_type*
+
+ +

Definition at line 104 of file xscalar.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 102 of file xscalar.hpp.

+ +
+
+ +

◆ const_reverse_broadcast_iterator

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + +
using xt::xscalar< CT >::const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 135 of file xscalar.hpp.

+ +
+
+ +

◆ const_reverse_iterator

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::const_reverse_iterator = std::reverse_iterator<const_iterator>
+
+ +

Definition at line 140 of file xscalar.hpp.

+ +
+
+ +

◆ const_reverse_layout_iterator

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + +
using xt::xscalar< CT >::const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>
+
+ +

Definition at line 125 of file xscalar.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 115 of file xscalar.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::difference_type = std::ptrdiff_t
+
+ +

Definition at line 106 of file xscalar.hpp.

+ +
+
+ +

◆ dummy_iterator

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::dummy_iterator = xdummy_iterator<false, CT>
+
+ +

Definition at line 142 of file xscalar.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 97 of file xscalar.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::extension_base = extension::xscalar_base_t<CT>
+
+ +

Definition at line 95 of file xscalar.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 111 of file xscalar.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 98 of file xscalar.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::iterable_base = xiterable<self_type>
+
+ +

Definition at line 110 of file xscalar.hpp.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::iterator = value_type*
+
+ +

Definition at line 137 of file xscalar.hpp.

+ +
+
+ +

◆ layout_iterator

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + +
using xt::xscalar< CT >::layout_iterator = typename iterable_base::template layout_iterator<L>
+
+ +

Definition at line 118 of file xscalar.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::pointer = value_type*
+
+ +

Definition at line 103 of file xscalar.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::reference = typename inner_types::reference
+
+ +

Definition at line 101 of file xscalar.hpp.

+ +
+
+ +

◆ reverse_broadcast_iterator

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + +
using xt::xscalar< CT >::reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>
+
+ +

Definition at line 133 of file xscalar.hpp.

+ +
+
+ +

◆ reverse_iterator

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::reverse_iterator = std::reverse_iterator<iterator>
+
+ +

Definition at line 139 of file xscalar.hpp.

+ +
+
+ +

◆ reverse_layout_iterator

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + +
using xt::xscalar< CT >::reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>
+
+ +

Definition at line 123 of file xscalar.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::self_type = xscalar<CT>
+
+ +

Definition at line 93 of file xscalar.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::shape_type = inner_shape_type
+
+ +

Definition at line 112 of file xscalar.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 107 of file xscalar.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::size_type = typename inner_types::size_type
+
+ +

Definition at line 105 of file xscalar.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 114 of file xscalar.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::value_type = typename inner_types::value_type
+
+ +

Definition at line 100 of file xscalar.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT >
+ + + + +
using xt::xscalar< CT >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 94 of file xscalar.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xscalar() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
xt::xscalar< CT >::xscalar ()
+
+inlinenoexcept
+
+ +

Definition at line 496 of file xscalar.hpp.

+ +
+
+ +

◆ xscalar() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
xt::xscalar< CT >::xscalar (CT value)
+
+inlinenoexcept
+
+ +

Definition at line 502 of file xscalar.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::at (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 274 of file xaccessible.hpp.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::at (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be unsigned integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+
Exceptions
+ + +
std::out_of_rangeif the number of argument is greater than the number of dimensions or if indices are out of bounds.
+
+
+ +

Definition at line 111 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::back ()
+
+inline
+
+ +

Returns a reference to the last element of the expression.

+ +

Definition at line 109 of file xaccessible.hpp.

+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::back () const
+
+inline
+
+ +

Returns a constant reference to last the element of the expression.

+ +

Definition at line 113 of file xaccessible.hpp.

+ +
+
+ +

◆ begin() [1/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::begin () const -> const_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 636 of file xscalar.hpp.

+ +
+
+ +

◆ begin() [2/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::begin () -> iterator +
+
+inlinenoexcept
+
+ +

Definition at line 622 of file xscalar.hpp.

+ +
+
+ +

◆ begin() [3/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::begin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 724 of file xscalar.hpp.

+ +
+
+ +

◆ begin() [4/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::begin (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 710 of file xscalar.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xscalar< CT >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inlinenoexcept
+
+ +

Definition at line 608 of file xscalar.hpp.

+ +
+
+ +

◆ cbegin() [1/2]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::cbegin () const -> const_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 650 of file xscalar.hpp.

+ +
+
+ +

◆ cbegin() [2/2]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::cbegin (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 738 of file xscalar.hpp.

+ +
+
+ +

◆ cend() [1/2]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::cend () const -> const_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 657 of file xscalar.hpp.

+ +
+
+ +

◆ cend() [2/2]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::cend (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 745 of file xscalar.hpp.

+ +
+
+ +

◆ crbegin() [1/2]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::crbegin () const -> const_reverse_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 692 of file xscalar.hpp.

+ +
+
+ +

◆ crbegin() [2/2]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::crbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 780 of file xscalar.hpp.

+ +
+
+ +

◆ crend() [1/2]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::crend () const -> const_reverse_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 699 of file xscalar.hpp.

+ +
+
+ +

◆ crend() [2/2]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::crend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 787 of file xscalar.hpp.

+ +
+
+ +

◆ data_element() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::data_element (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 923 of file xscalar.hpp.

+ +
+
+ +

◆ data_element() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::data_element (size_type i)
+
+inlinenoexcept
+
+ +

Definition at line 917 of file xscalar.hpp.

+ +
+
+ +

◆ dummy_begin() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::dummy_begin () const
+
+inlinenoexcept
+
+ +

Definition at line 905 of file xscalar.hpp.

+ +
+
+ +

◆ dummy_begin() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::dummy_begin ()
+
+inlinenoexcept
+
+ +

Definition at line 893 of file xscalar.hpp.

+ +
+
+ +

◆ dummy_end() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::dummy_end () const
+
+inlinenoexcept
+
+ +

Definition at line 911 of file xscalar.hpp.

+ +
+
+ +

◆ dummy_end() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::dummy_end ()
+
+inlinenoexcept
+
+ +

Definition at line 899 of file xscalar.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class CT >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xscalar< CT >::element (It ,
It  
) const -> const_reference +
+
+inlinenoexcept
+
+ +

Definition at line 589 of file xscalar.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class CT >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xscalar< CT >::element (It ,
It  
) -> reference +
+
+inlinenoexcept
+
+ +

Definition at line 582 of file xscalar.hpp.

+ +
+
+ +

◆ end() [1/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::end () const -> const_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 643 of file xscalar.hpp.

+ +
+
+ +

◆ end() [2/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::end () -> iterator +
+
+inlinenoexcept
+
+ +

Definition at line 629 of file xscalar.hpp.

+ +
+
+ +

◆ end() [3/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::end (const S & shape) const -> const_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 731 of file xscalar.hpp.

+ +
+
+ +

◆ end() [4/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::end (const S & shape) -> broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 717 of file xscalar.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::expression () const
+
+inlinenoexcept
+
+ +

Definition at line 601 of file xscalar.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::expression ()
+
+inlinenoexcept
+
+ +

Definition at line 595 of file xscalar.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::flat (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 935 of file xscalar.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::flat (size_type i)
+
+inlinenoexcept
+
+ +

Definition at line 929 of file xscalar.hpp.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xaccessible< D >::front ()
+
+inline
+
+ +

Returns a reference to the first element of the expression.

+ +

Definition at line 108 of file xaccessible.hpp.

+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xconst_accessible< D >::front () const
+
+inline
+
+ +

Returns a constant reference to first the element of the expression.

+ +

Definition at line 114 of file xaccessible.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xscalar< CT >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Definition at line 615 of file xscalar.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
bool xt::xscalar< CT >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 545 of file xscalar.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
layout_type xt::xscalar< CT >::layout () const
+
+inlinenoexcept
+
+ +

Definition at line 539 of file xscalar.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_begin () const
+
+inlinenoexcept
+
+ +

Definition at line 805 of file xscalar.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_begin ()
+
+inlinenoexcept
+
+ +

Definition at line 793 of file xscalar.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 817 of file xscalar.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_cend () const
+
+inlinenoexcept
+
+ +

Definition at line 823 of file xscalar.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_crbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 853 of file xscalar.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_crend () const
+
+inlinenoexcept
+
+ +

Definition at line 859 of file xscalar.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_end () const
+
+inlinenoexcept
+
+ +

Definition at line 811 of file xscalar.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_end ()
+
+inlinenoexcept
+
+ +

Definition at line 799 of file xscalar.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_rbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 841 of file xscalar.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_rbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 829 of file xscalar.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_rend () const
+
+inlinenoexcept
+
+ +

Definition at line 847 of file xscalar.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::linear_rend ()
+
+inlinenoexcept
+
+ +

Definition at line 835 of file xscalar.hpp.

+ +
+
+ +

◆ load_simd()

+ +
+
+
+template<class CT >
+
+template<class align , class requested_type , std::size_t N>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::load_simd (size_type ) const -> xt_simd::simd_return_type<value_type, requested_type> +
+
+inline
+
+ +

Definition at line 949 of file xscalar.hpp.

+ +
+
+ +

◆ operator const value_type &()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
xt::xscalar< CT >::operator const value_type & () const
+
+inlinenoexcept
+
+ +

Definition at line 514 of file xscalar.hpp.

+ +
+
+ +

◆ operator value_type &()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
xt::xscalar< CT >::operator value_type & ()
+
+inlinenoexcept
+
+ +

Definition at line 508 of file xscalar.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::operator() (Args... ) const -> const_reference +
+
+inlinenoexcept
+
+ +

Definition at line 567 of file xscalar.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::operator() (Args... ) -> reference +
+
+inlinenoexcept
+
+ +

Definition at line 552 of file xscalar.hpp.

+ +
+
+ +

◆ periodic() [1/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xaccessible< D >::periodic (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 315 of file xaccessible.hpp.

+ +
+
+ +

◆ periodic() [2/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xconst_accessible< D >::periodic (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).

+
Parameters
+ + +
argsa list of indices specifying the position in the expression. Indices must be integers, the number of indices should be equal to the number of dimensions of the expression.
+
+
+ +

Definition at line 115 of file xaccessible.hpp.

+ +
+
+ +

◆ rbegin() [1/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::rbegin () const -> const_reverse_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 678 of file xscalar.hpp.

+ +
+
+ +

◆ rbegin() [2/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::rbegin () -> reverse_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 664 of file xscalar.hpp.

+ +
+
+ +

◆ rbegin() [3/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::rbegin (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 766 of file xscalar.hpp.

+ +
+
+ +

◆ rbegin() [4/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::rbegin (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 752 of file xscalar.hpp.

+ +
+
+ +

◆ rend() [1/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::rend () const -> const_reverse_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 685 of file xscalar.hpp.

+ +
+
+ +

◆ rend() [2/4]

+ +
+
+
+template<class CT >
+
+template<layout_type L>
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::rend () -> reverse_iterator +
+
+inlinenoexcept
+
+ +

Definition at line 671 of file xscalar.hpp.

+ +
+
+ +

◆ rend() [3/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::rend (const S & shape) const -> const_reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 773 of file xscalar.hpp.

+ +
+
+ +

◆ rend() [4/4]

+ +
+
+
+template<class CT >
+
+template<class S , layout_type L>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::rend (const S & shape) -> reverse_broadcast_iterator<S, L> +
+
+inlinenoexcept
+
+ +

Definition at line 759 of file xscalar.hpp.

+ +
+
+ +

◆ shape() [1/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::shape () const
+
+inlinenoexcept
+
+ +

Definition at line 526 of file xscalar.hpp.

+ +
+
+ +

◆ shape() [2/2]

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::shape (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 533 of file xscalar.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar< CT >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 520 of file xscalar.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CT >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::stepper_begin (const S & ) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 880 of file xscalar.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CT >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::stepper_begin (const S & ) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 866 of file xscalar.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CT >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xscalar< CT >::stepper_end (const S & ,
layout_type  
) const -> const_stepper +
+
+inlinenoexcept
+
+ +

Definition at line 887 of file xscalar.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CT >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xscalar< CT >::stepper_end (const S & ,
layout_type  
) -> stepper +
+
+inlinenoexcept
+
+ +

Definition at line 873 of file xscalar.hpp.

+ +
+
+ +

◆ store_simd()

+ +
+
+
+template<class CT >
+
+template<class align , class simd >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xscalar< CT >::store_simd (size_type i,
const simd & e 
)
+
+inline
+
+ +

Definition at line 942 of file xscalar.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::unchecked (Args... ) const -> const_reference +
+
+inlinenoexcept
+
+ +

Definition at line 575 of file xscalar.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class CT >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xscalar< CT >::unchecked (Args... ) -> reference +
+
+inlinenoexcept
+
+ +

Definition at line 560 of file xscalar.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< self_type >

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + +
friend class xaccessible< self_type >
+
+friend
+
+ +

Definition at line 296 of file xscalar.hpp.

+ +
+
+ +

◆ xconst_accessible< self_type >

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + +
friend class xconst_accessible< self_type >
+
+friend
+
+ +

Definition at line 296 of file xscalar.hpp.

+ +
+
+ +

◆ xconst_iterable< self_type >

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + +
friend class xconst_iterable< self_type >
+
+friend
+
+ +

Definition at line 296 of file xscalar.hpp.

+ +
+
+ +

◆ xiterable< self_type >

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + +
friend class xiterable< self_type >
+
+friend
+
+ +

Definition at line 296 of file xscalar.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + +
constexpr bool xt::xscalar< CT >::contiguous_layout = true
+
+staticconstexpr
+
+ +

Definition at line 146 of file xscalar.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT >
+ + + + + +
+ + + + +
constexpr layout_type xt::xscalar< CT >::static_layout = layout_type::any
+
+staticconstexpr
+
+ +

Definition at line 145 of file xscalar.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xexpression.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xscalar.js b/classxt_1_1xscalar.js new file mode 100644 index 000000000..86314118d --- /dev/null +++ b/classxt_1_1xscalar.js @@ -0,0 +1,11 @@ +var classxt_1_1xscalar = +[ + [ "at", "classxt_1_1xscalar.html#abd1a88f04c122d8d066a5b2abc7f2c8f", null ], + [ "at", "classxt_1_1xscalar.html#a340069d14699c36602889101dd1f932a", null ], + [ "back", "classxt_1_1xscalar.html#a905660a4d87f4d3e7b651bcf6bb690d0", null ], + [ "back", "classxt_1_1xscalar.html#ae8c11bf107fb871f054e2194163778fd", null ], + [ "front", "classxt_1_1xscalar.html#ad36ac2c194e7e6f470548dad89e88ca2", null ], + [ "front", "classxt_1_1xscalar.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8", null ], + [ "periodic", "classxt_1_1xscalar.html#a038772dfb1936fa221a220c5ded4ac05", null ], + [ "periodic", "classxt_1_1xscalar.html#a34d4a20e640737443fd0a7266b77b2b2", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xscalar.png b/classxt_1_1xscalar.png new file mode 100644 index 0000000000000000000000000000000000000000..5e316c5af173323bb74eeb782925bd6401b17e90 GIT binary patch literal 2601 zcmb_eXH-*Z8V-mvE@Py)2pc$n2(pL*I?|;{q)N{PlqO(-ptR6bs=A>#fe}|wnu1Eg z4MmU;I%pJBss>~s22O~82qA4bGf7XV3oGv-iin-+k`)mhXM@K2I`Too$hl zC`kkYfwZ?nyCV=1C}^FrYX@{sW+xax4@KA0m{UTb5L$kjUyaRqNi@>aid4w&{nFXl z3E>{ObQ1LKFEQ@U9th}NbQy{l4nbJGJ=zMBAjV-buDxumvw6=dv*_hp@SOF!a*whG z)%*N6?VVIK0`K{GP~%#d3pdjcVlS7dWN^c~?1x>_gEm75G4WfZ{n%85*fkhYMI+sI zNbDNKQBimhoJpvg%VFYcIzq3XAc5Czki^6#>Ur{5c>OS$mk=?E0nDsnA7hPG_zJ{8 z*s^a99W*OW+25aI8^*e_|1&KSiCLt3+Y|iq*DfYh=%d4ihtZjw_(;O!Q%XNZF9Y(OdJeb3Vx>2a@Q zuF}-c`RrI3=j>sDH(^})IHARg@9cw3aNR9Bev}W=M)bAjbxO++&6SeXFqHq! z58o0(@wE0?AcnVPDa(mG#(b*5du;Wu8ugkR`4>9y>KhHiHlwbeHwHnCJXUji_t61c zvN`dfW;awT$KPuOf{L5urAlz4W;=H{s&pA1F7TJDnJ5qx1js^#N;UX%Q})88+mD4U zQcIZORQ@?=frxmaEDjsP-7D&QmZJ!P((ukwL+ekX_Cii~d8-9MJw6G?mpCr!fvD-? z1tM>v{bEjNq_nD~2uMBnJun1V?%mD~4)7=wPH~qA7(~O~Zi#>pHTWm=zqs#Y)G|16 zDyL=dpy%US4(6eE)ASPc;s8L!(MJZp%SJuO2vq9k1!tn%W$e*IdfDtoHLTq!bs0CB zQ8qh^v|sKH8jWNdWowt=F=$yC{a@Hd)!r3>B=GF>tF>*oHY;ElSu(#FOl8eQj44Zj zVD)0np&#I|x# z4bNA%Hv9g{wWB{gT?>9SkkXj^IudQ1$uSgk{p~6SNpJpi@P^?MAdu9gcR9 z8neDo8{@5i#W~M*)Zlf8t2Hv#tlyRxk2CjQ=rzpGf4(rjN=9vjDE0@uzQ9NxF&_l! zQ(hmEQ~P*0EU7d(>-vY4c#lf3xi2_V0W@F}nXZ&q{EMHh^otHP5t_!+qb{@GO$m}s z$KFaiO$9VOD5QuR#gAfW4k}RL8AZd-LN+Jso8C8!CI%-xKecMs)2PT5F8!mSk73T) zpI@?L~kIr@W;Ki`of;>b~d5I&!)tKhKcggZ;x%N`hdH8 z@fH2dM6=nIbpMLd*tdD8g*@5-)_eH3k%=YuF(Aq$!t`Om9$@(Wc*sxK(N*2ZRR!`x za|_pz*>_%b--5uzYoq`<55Hb}$qb;gCyZu*Hr3if_~ih+&SV}fe=0&ZZz z=2Gdjyo)C8cJ+J>iREkz9mc5DYo)7fyk;jkn=BXnIDqjathP3_Qsps!HhfT1{#VW6 zXAi0blR2RqJzAasbGjDoTPVcJ#<%jQJ#QXkL-Ki5J5!okJ*`_-)|h9hzNA32m9K#& z9+yFu&e6lz`^T6`BlOt;>=((h6c^%)aygc}mNlTbrLgR{$vXNmz@9(t!Zi3uxy_y# zinMJAe>%%8hYOZ28x<=kyh|$8nN0e5=@zPe-yFT5t$LzgL0dm2siE1A6v&L>6pSiV zC64tS2x`R8X7BZCnNQ=+^v%c{sJO(Yw2!u@<7iFqKX5loJd3Zl)kjWO-8#y@SQb95l@5(Rdl=-tw)=Q3S%38X-Oo&D-ET7+H|aS3mT zyWa#oKtCdg=n?`gZfjK9skx&bSU__7U%%2f*Z5oJ^K1O1e{t9Nk%F5DF@fXK(UY(a zK!p4MrSI|dKn1+i4-mf-P^< z3@=6{TWu>p&k<`hdrpU2QJsFlkXevjun}+~^4N=rbyc|D4d155OqKSe8y + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xscalar_stepper< is_const, CT > Member List
+
+
+ +

This is the complete list of members for xt::xscalar_stepper< is_const, CT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
operator*() const noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
pointer typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
reference typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
reset(size_type dim) noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
reset_back(size_type dim) noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
self_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
shape_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
simd_return_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
size_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
step(size_type dim, size_type n=1) noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
step_back(size_type dim, size_type n=1) noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
step_leading() (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
step_simd() (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
step_simd() -> simd_return_type< T > (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
storage_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
to_begin() noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
to_end(layout_type l) noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
value_type typedef (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >
xscalar_stepper(storage_type *c) noexcept (defined in xt::xscalar_stepper< is_const, CT >)xt::xscalar_stepper< is_const, CT >inline
+
+ + + + diff --git a/classxt_1_1xscalar__stepper.html b/classxt_1_1xscalar__stepper.html new file mode 100644 index 000000000..422b4f84d --- /dev/null +++ b/classxt_1_1xscalar__stepper.html @@ -0,0 +1,654 @@ + + + + + + + +xtensor: xt::xscalar_stepper< is_const, CT > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xscalar_stepper< is_const, CT > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xscalar_stepper< is_const, CT >
 
using storage_type = std::conditional_t< is_const, const xscalar< CT >, xscalar< CT > >
 
using value_type = typename storage_type::value_type
 
using reference = std::conditional_t< is_const, typename storage_type::const_reference, typename storage_type::reference >
 
using pointer = std::conditional_t< is_const, typename storage_type::const_pointer, typename storage_type::pointer >
 
using size_type = typename storage_type::size_type
 
using difference_type = typename storage_type::difference_type
 
using shape_type = typename storage_type::shape_type
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xscalar_stepper (storage_type *c) noexcept
 
reference operator* () const noexcept
 
void step (size_type dim, size_type n=1) noexcept
 
void step_back (size_type dim, size_type n=1) noexcept
 
void reset (size_type dim) noexcept
 
void reset_back (size_type dim) noexcept
 
void to_begin () noexcept
 
void to_end (layout_type l) noexcept
 
+template<class T >
simd_return_type< T > step_simd ()
 
void step_leading ()
 
template<class T >
auto step_simd () -> simd_return_type< T >
 
+

Detailed Description

+
template<bool is_const, class CT>
+class xt::xscalar_stepper< is_const, CT >
+

Definition at line 351 of file xscalar.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::difference_type = typename storage_type::difference_type
+
+ +

Definition at line 363 of file xscalar.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::pointer = std::conditional_t<is_const, typename storage_type::const_pointer, typename storage_type::pointer>
+
+ +

Definition at line 361 of file xscalar.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::reference = std:: conditional_t<is_const, typename storage_type::const_reference, typename storage_type::reference>
+
+ +

Definition at line 359 of file xscalar.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::self_type = xscalar_stepper<is_const, CT>
+
+ +

Definition at line 355 of file xscalar.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::shape_type = typename storage_type::shape_type
+
+ +

Definition at line 364 of file xscalar.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<bool is_const, class CT >
+
+template<class requested_type >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 367 of file xscalar.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::size_type = typename storage_type::size_type
+
+ +

Definition at line 362 of file xscalar.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::storage_type = std::conditional_t<is_const, const xscalar<CT>, xscalar<CT> >
+
+ +

Definition at line 356 of file xscalar.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<bool is_const, class CT >
+ + + + +
using xt::xscalar_stepper< is_const, CT >::value_type = typename storage_type::value_type
+
+ +

Definition at line 358 of file xscalar.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xscalar_stepper()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
xt::xscalar_stepper< is_const, CT >::xscalar_stepper (storage_type * c)
+
+inlinenoexcept
+
+ +

Definition at line 972 of file xscalar.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + +
auto xt::xscalar_stepper< is_const, CT >::operator* () const
+
+inlinenoexcept
+
+ +

Definition at line 978 of file xscalar.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
void xt::xscalar_stepper< is_const, CT >::reset (size_type dim)
+
+inlinenoexcept
+
+ +

Definition at line 994 of file xscalar.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
void xt::xscalar_stepper< is_const, CT >::reset_back (size_type dim)
+
+inlinenoexcept
+
+ +

Definition at line 999 of file xscalar.hpp.

+ +
+
+ +

◆ step()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xscalar_stepper< is_const, CT >::step (size_type dim,
size_type n = 1 
)
+
+inlinenoexcept
+
+ +

Definition at line 984 of file xscalar.hpp.

+ +
+
+ +

◆ step_back()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xscalar_stepper< is_const, CT >::step_back (size_type dim,
size_type n = 1 
)
+
+inlinenoexcept
+
+ +

Definition at line 989 of file xscalar.hpp.

+ +
+
+ +

◆ step_leading()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + +
void xt::xscalar_stepper< is_const, CT >::step_leading ()
+
+inline
+
+ +

Definition at line 1021 of file xscalar.hpp.

+ +
+
+ +

◆ step_simd()

+ +
+
+
+template<bool is_const, class CT >
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xscalar_stepper< is_const, CT >::step_simd () -> simd_return_type<T> +
+
+inline
+
+ +

Definition at line 1015 of file xscalar.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + +
void xt::xscalar_stepper< is_const, CT >::to_begin ()
+
+inlinenoexcept
+
+ +

Definition at line 1004 of file xscalar.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<bool is_const, class CT >
+ + + + + +
+ + + + + + + + +
void xt::xscalar_stepper< is_const, CT >::to_end (layout_type l)
+
+inlinenoexcept
+
+ +

Definition at line 1009 of file xscalar.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xsemantic__base-members.html b/classxt_1_1xsemantic__base-members.html new file mode 100644 index 000000000..ee0e0b69b --- /dev/null +++ b/classxt_1_1xsemantic__base-members.html @@ -0,0 +1,168 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xsemantic_base< D > Member List
+
+
+ +

This is the complete list of members for xt::xsemantic_base< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
base_type typedef (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
derived_type typedef (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(const xexpression< E > &e) -> derived_type & (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >inline
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
temporary_type typedef (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xsemantic__base.html b/classxt_1_1xsemantic__base.html new file mode 100644 index 000000000..bc0b3064c --- /dev/null +++ b/classxt_1_1xsemantic__base.html @@ -0,0 +1,1532 @@ + + + + + + + +xtensor: xt::xsemantic_base< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xsemantic_base< D > Class Template Reference
+
+
+ +

Base interface for assignable xexpressions. + More...

+ +

#include <xsemantic.hpp>

+
+Inheritance diagram for xt::xsemantic_base< D >:
+
+
+ + +xt::xchunked_semantic< xchunked_array< chunk_storage > > +xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > > +xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > > +xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > > +xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > > +xt::xcontainer_semantic< xfunctor_adaptor< F, CT > > +xt::xcontainer_semantic< xoptional_assembly< VE, FE > > +xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > > +xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > > +xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > > +xt::xview_semantic< xfunctor_view< F, CT > > +xt::xview_semantic< xindex_view< CT, I > > +xt::xview_semantic< xmasked_view< CTD, CTM > > +xt::xview_semantic< xtensor_view< EC, N, L, Tag > > +xt::xview_semantic< xview< CT, S... > > +xt::xchunked_semantic< D > +xt::xcontainer_semantic< D > +xt::xview_semantic< D > + +
+ + + + + + + + +

+Public Types

using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
Computed assignement
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
Assign functions
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + + +

+Protected Member Functions

xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class D>
+class xt::xsemantic_base< D >

Base interface for assignable xexpressions.

+

The xsemantic_base class defines the interface for assignable xexpressions.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xsemantic_base provides the interface.
+
+
+ +

Definition at line 57 of file xsemantic.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xsemantic_base< D >::base_type = select_expression_base_t<D>
+
+ +

Definition at line 61 of file xsemantic.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xsemantic_base< D >::derived_type = typename base_type::derived_type
+
+ +

Definition at line 62 of file xsemantic.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xsemantic_base< D >::temporary_type = typename xcontainer_inner_types<D>::temporary_type
+
+ +

Definition at line 64 of file xsemantic.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Assigns the xexpression e to *this.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression to assign.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 488 of file xsemantic.hpp.

+ +
+
+ +

◆ bit_and_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::bit_and_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the bitwise and of e to *this.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 566 of file xsemantic.hpp.

+ +
+
+ +

◆ bit_or_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::bit_or_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the bitwise or of e to *this.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 579 of file xsemantic.hpp.

+ +
+
+ +

◆ bit_xor_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::bit_xor_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the bitwise xor of e to *this.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 592 of file xsemantic.hpp.

+ +
+
+ +

◆ divides_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::divides_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Divides *this by the xexpression e.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 540 of file xsemantic.hpp.

+ +
+
+ +

◆ minus_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::minus_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Subtracts the xexpression e to *this.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression to subtract.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 514 of file xsemantic.hpp.

+ +
+
+ +

◆ modulus_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::modulus_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the remainder of *this after division by the xexpression e.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 553 of file xsemantic.hpp.

+ +
+
+ +

◆ multiplies_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::multiplies_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Multiplies *this with the xexpression e.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 527 of file xsemantic.hpp.

+ +
+
+ +

◆ operator%=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator%= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Computes the remainder of *this after division by the scalar e.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 337 of file xsemantic.hpp.

+ +
+
+ +

◆ operator%=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator%= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the remainder of *this after division by the xexpression e.

+
Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 433 of file xsemantic.hpp.

+ +
+
+ +

◆ operator&=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator&= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Computes the bitwise and of *this and the scalar e and assigns it to *this.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 349 of file xsemantic.hpp.

+ +
+
+ +

◆ operator&=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator&= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the bitwise and of *this and the xexpression e and assigns it to *this.

+
Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 445 of file xsemantic.hpp.

+ +
+
+ +

◆ operator*=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator*= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Multiplies *this with the scalar e.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 313 of file xsemantic.hpp.

+ +
+
+ +

◆ operator*=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator*= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Multiplies *this with the xexpression e.

+
Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 409 of file xsemantic.hpp.

+ +
+
+ +

◆ operator+=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator+= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Adds the scalar e to *this.

+
Parameters
+ + +
ethe scalar to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 289 of file xsemantic.hpp.

+ +
+
+ +

◆ operator+=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator+= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Adds the xexpression e to *this.

+
Parameters
+ + +
ethe xexpression to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 385 of file xsemantic.hpp.

+ +
+
+ +

◆ operator-=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator-= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Subtracts the scalar e from *this.

+
Parameters
+ + +
ethe scalar to subtract.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 301 of file xsemantic.hpp.

+ +
+
+ +

◆ operator-=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator-= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Subtracts the xexpression e from *this.

+
Parameters
+ + +
ethe xexpression to subtract.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 397 of file xsemantic.hpp.

+ +
+
+ +

◆ operator/=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator/= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Divides *this by the scalar e.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 325 of file xsemantic.hpp.

+ +
+
+ +

◆ operator/=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator/= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Divides *this by the xexpression e.

+
Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 421 of file xsemantic.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 599 of file xsemantic.hpp.

+ +
+
+ +

◆ operator^=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator^= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Computes the bitwise xor of *this and the scalar e and assigns it to *this.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 373 of file xsemantic.hpp.

+ +
+
+ +

◆ operator^=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator^= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the bitwise xor of *this and the xexpression e and assigns it to *this.

+
Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 469 of file xsemantic.hpp.

+ +
+
+ +

◆ operator|=() [1/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator|= (const E & e) -> disable_xexpression<E, derived_type&> +
+
+inline
+
+ +

Computes the bitwise or of *this and the scalar e and assigns it to *this.

+
Parameters
+ + +
ethe scalar involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 361 of file xsemantic.hpp.

+ +
+
+ +

◆ operator|=() [2/2]

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::operator|= (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Computes the bitwise or of *this and the xexpression e and assigns it to *this.

+
Parameters
+ + +
ethe xexpression involved in the operation.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 457 of file xsemantic.hpp.

+ +
+
+ +

◆ plus_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xsemantic_base< D >::plus_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Adds the xexpression e to *this.

+

Ensures no temporary will be used to perform the assignment.

Parameters
+ + +
ethe xexpression to add.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 501 of file xsemantic.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xsemantic.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xsemantic__base.js b/classxt_1_1xsemantic__base.js new file mode 100644 index 000000000..e6b90270a --- /dev/null +++ b/classxt_1_1xsemantic__base.js @@ -0,0 +1,28 @@ +var classxt_1_1xsemantic__base = +[ + [ "assign", "classxt_1_1xsemantic__base.html#aa4abcce752e16fea81c590cfdb48d099", null ], + [ "bit_and_assign", "classxt_1_1xsemantic__base.html#a491f436cebf5ae09254782e8e39e07e4", null ], + [ "bit_or_assign", "classxt_1_1xsemantic__base.html#a8f36e2f2e9869cb21ccb197f234838ec", null ], + [ "bit_xor_assign", "classxt_1_1xsemantic__base.html#a2ecc711c54c031f9fae4f959ba54c756", null ], + [ "divides_assign", "classxt_1_1xsemantic__base.html#a8390681df5ceb96cc3fe307bcb6f5878", null ], + [ "minus_assign", "classxt_1_1xsemantic__base.html#a9ae9f40db494b08455a84b3ba24e87e2", null ], + [ "modulus_assign", "classxt_1_1xsemantic__base.html#a30eeb2e83b810139f5111c161055e041", null ], + [ "multiplies_assign", "classxt_1_1xsemantic__base.html#aafe434601607910fc1d8e95dde649bff", null ], + [ "operator%=", "classxt_1_1xsemantic__base.html#a097cecfc7ed32171204a465c057b21aa", null ], + [ "operator%=", "classxt_1_1xsemantic__base.html#afc0cf14e98f80e1a266aed5ab59d3a26", null ], + [ "operator&=", "classxt_1_1xsemantic__base.html#a9e53cf500ff97971980632a01242e40f", null ], + [ "operator&=", "classxt_1_1xsemantic__base.html#aa64e63246393baa97cda0409dfe880f9", null ], + [ "operator*=", "classxt_1_1xsemantic__base.html#abc6dededcc7548c86d0e680723332507", null ], + [ "operator*=", "classxt_1_1xsemantic__base.html#aaec30e9ec0a24602c707935671e72798", null ], + [ "operator+=", "classxt_1_1xsemantic__base.html#a8d5c560eb7c807fb0806864fb0b46c50", null ], + [ "operator+=", "classxt_1_1xsemantic__base.html#a9e31dbd09cdb7b7676d33243732f3ac7", null ], + [ "operator-=", "classxt_1_1xsemantic__base.html#afa46b608eb0ee224aa7592404ba01b20", null ], + [ "operator-=", "classxt_1_1xsemantic__base.html#aa9edf1d0dba25f33a6f1955dfe333d66", null ], + [ "operator/=", "classxt_1_1xsemantic__base.html#af008542eab3a41140cfe12dca74232ee", null ], + [ "operator/=", "classxt_1_1xsemantic__base.html#a2ff7796563ea73e3aff6ce17ff2c1f42", null ], + [ "operator^=", "classxt_1_1xsemantic__base.html#a7c74b14f291bccf501760aa166cd7bd6", null ], + [ "operator^=", "classxt_1_1xsemantic__base.html#a61d5bbbb065e48c74db69c4276673a34", null ], + [ "operator|=", "classxt_1_1xsemantic__base.html#a5fe0e38a7065e67565d46179727fe399", null ], + [ "operator|=", "classxt_1_1xsemantic__base.html#ab09ec4698094a4a1efbaa1ccbb609d42", null ], + [ "plus_assign", "classxt_1_1xsemantic__base.html#aabefbeb56a74c2098c0fe976227ebdc8", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xsemantic__base.png b/classxt_1_1xsemantic__base.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7f2ef667c4fc7e4aa501466598112393b4f843 GIT binary patch literal 15603 zcmeHu3sjR=+O-y2rX7X0wxXzHrq)ucfQsA$w9{5<6_^%ZZUV7ViGlOwn&OYde?!TkBuzpIPhcSu2a= z2VpaCjxP`@!YQm%)6*H+_Ex&%K!WX;{P}@Yptdo}=Afvs>q3J&c|+Er*64z z!vo2oo5wEpIbYoePrjnoSKQ^`riBucp$(+^(dKnxA^y7Yty8uXlMc#N1R^ zcZ|Y5$Zj$<#5XDx_L@z>O(dcZL%h3>Cj1IQNC}p=nH_d?BTYGxb3P`DBU{oh?R#&v z{pvgJjD@>I-X!wn887neZdsMi+*=nnub9qA=%D>AjLoJ=-b30u1x%_l_O=YkFMy@X zC13RITA%H2U5PLW?SyB@C&tfzfA9u!)?bu-F4b8(geZ0k51v$*Il&v>(p)Bo*sJb? z4bWk&rK|J6Ft>qkqDl{CAS_Y=SyAZHt1%e-`9TQq$6$y8%jzB=0?VF4hF92nD6|a> zi|d;%58_6$!Rx2ONAi2uGvGC{{Hw{K@l5|taKpXu+;b%9AD1jyf_zK!?z@*22??J% zf(M&y4~C^X0$+Z4=ItNPgXKf@0n|IhH`qlNeTRJ$BYbYs~y@L znR|_O4*sk`0cWt)eceUvyO(`%+8@{QJxlKje;NGJ2N<-oPzhrzJ0VGv138aJuDsE==p#9n|$uM#fukHc7W)bX`)hZgV1u^X?vi@ z+v4#ZIOK|d{Evj(KL$ME7U9@uEBCED_PyuKHij32#rivI;!y;$SdZebf;I6d`hGJJ z_?oDKm8_h3Fnw3k3_&5oA;E{Qq{TI}R-t48b z9tEUVq|^S)xO;c4-MCqun40SDne%1^d^*0#SXkUj<|gD9;PAD+Y_1?9&kgPG--=2{ zwa#w+E_*g~w~*GF_2m?bBfC;Gcu3?5j%d;b28AtqmEmHdQrzuI-luA+qVD*xkxbHB zeC>x`9a!G?5K^9t}&X7=A zVoKCZ`fx&##=f?aFucoyVKd=^7$4uQmFjYWW6fNFVfs85yah82wSYkuv@=nk86{<` zkBh=Yg91gakG&8cRf&oFlOja*AvSPfs{#2SXIK{v^{~OK{bw&q zs=Qg^7c>K}mymm!PmiAz{!upX$zr*{fv;CouyT@72}2N+m4_XJ7s+1J8cYsu1N&YV z&Nh8X%el|?8}0+w!j2lC!3KbH!)NK$m#=PKO3yFX{0N`X>i_tO{EzVX?N?%KV|=#q*vey{ zJy?n?L>HE`-eIv?Y{a9S#d>sTuvm}Ik>5@*1z7M@2XgH6O$hSgh0jd+O%Ge>1K~=x zFinqcUV7)$n(}!I>T9sJ!E3`Iaii&gU$v%+6yx;?B$VJTW9~bep9kxf<;v(;H-B;0 z7+Skv7ErWms$E}Q_T3CrEYlyA=p|l|&5iSTrp%u@an#DWoZ^D(czsJt{pdxxhxIA} z^F@a2^op#%LgF{U#!OEk%UM??vx0Wb!ktSQ`sHC)yUyUYiHEM}9v+P;kLY*ZH1|bz z|J7VxH?Oths3tDFnl%_b{c+!Z33b4f0M*+fXQVXp!98i{`yuITChetXcz&EPFFwYj zNmZq)nUh{KkfNNTcU?5u2@2=(33w~kp=+8(LfTkLGoeN`ZTK!25natb$d5i1M~^8# zhvGi(-L|K<#kV$QwsHf-y>_SwFSLA5z)OaZZ$xI@C=(TTYG=V9PIq!*ilx;fGY8wG zg+=gt>KDnr==oBWxspI`Cytc1&1`wsqwN`?-BD zG9;s5wGW2bQ6p-?c}v^M{6gz}7w*Q8o0-|lv&FG-2iACn<1J}KEFq;YMvH26PG8vD ztI9YkJ&k=R4EQ@M84j4NkqVZvv@Zk&pcZ~)O#tA~jjozg;SW9BeqgbV z$N8M1IT^0#__AKi&MH>U2LNn=!d~s=m&`IkCCh=RD?JU~O#~1oUcL$@RGQt8F6krW z4K9qdQa%33+~|2acyAb#@qUf)wgK#IS$g%xDuQ#kGvGd^qW=sH`oDwj88f@PL$T`E zXI}vb_FnEI^b=StutqQkp@O^r9Cjxj<1ovI0oKEHYzyU74Xb55??{^H6R2L2QCzN- zj5czu0X25s>jWFxbd7*$4moy#q~*rn9j54()Fr-~mDKETr_f}P!#gL?9CB%;c5Vqi zEm8-Q%E zWfzR$M5Q0Jwyh-Cp-3dSuyhW_oi6iNxWgYAqs1jmwi9Z~BcaqySwD@RQwa}|*evlz z09;ImXZ4M%jkMA1*97gPT0dNF5A5*fAj|`a8{8w`M?Z<6I z3~@r)GFT%rYV*acb8`iq*Tkhb)P^Dy)9c{`E zT|mYlJ-`qtw`+Xsk}XV!=&^9j@P`-XjvUD)Q+G|i#8 zrb*E161KQ-lKEO? ziVO19=^sIG=IRxG9>RmE4C>{FXA?HHQslu7yWV&0yFB`>D#GKa2RbamEi8y|1vQNx z_89wdg_FS$8s^#?QMElT=&ZJ7Xaaw~%u48lh9QUvOF9LJ56kpcp_NWAD6gAO`WR^XV3|;o({ez?|`x;r4=a zWks*L!Ev%vw#(C9yF4MJliO7WUt^`IpPaoxrt z-(aW)xj~bHFE7P8X`S~}kE&R*4o(cmNQgwcdqz79g|>loS83|n8sr=cX;a$9S?5sH z;QM!j5Z9E~N3!7&B+yj(7dxD7mur~kw}#cja!iM4!v{M(cQcBC}D-GJM$I$ zYSUkl+EJH}z!%m}cVQELlss>=ka7-ql-$csW!Sq@mD>*cjT&wX?+Q!%b{7;oMg%oc zp&$Czik8!@tL1Bk`!oAZ)asB!j&a*D_T8F8K9_WE5ES@mF9FY7k(x5s<##+F3=;Q7 z1y!&HVUVJV&_ot_|Kcbp@WJ$lZHK3rX=t7+1m(dmyQtj_nOnx}KY|lr9>`+W!1ux3 z^+2%k*I}iVCAqM}8Z8I$m=s<({FV)xA)2dGyaljlyKqRRp-u?A@aj&+s_$1dnCb z*<~bW5zmgQZ&diT%2})cct7~sGL{2Mh_DwZ6C++QzF7X5;tl_E6B)B34`ursBypSi z*h6<`|02MxnImq#n}oF2bIY&+g@v?O*6dINity>`qCk|Jp;X z+O19DN9r|Iy{1i!0H3Co8$EP%?t{bU&!)Ap#w4STgK{eMMP61N6xo3eX090=w?Kt6{3XIlIe+ zZQTQ_I`L?h{$h*~)!eRn&H4soVIR|${(M0CyQMmkM-C2TITffCdWv1&jqCpubn>S5 z@eZ-8wx8>FZ!0EXZ&0fA9^sEPV>PP@ zRu`Cv0jfYC^BI633VQ+b3E$?$c#NKa-%<9jQP$=HERc!i+Or|sqafMCpmv#Gm`{-T z;T7)UtX^L_pOs81wC{3kGl#t8GB28s0(+4sbd8Xi=FvcH$NC{k`4D9O3g-NOK`K6N z4nliuMEh^H_|mhE2;X10n7%25*eW};S`wj5sk-3Lmj(?xWnnYvoomnE06MBaL+E1HwsO45hfdA6_ z2}rrnUuN_F)Il^M`P>z6#^@@pFs>$jjcH`oNT1&`4p{rJ&xjxU&W0bfw`hz$ zVd!4}pk?%3c3I&QstRg5)w8@}g)5?**!R20~uRYRHU`tB;QUFQ*0f3jO}sl#LtkjJpQ#0S|<+(_JiGYU#IZ%0D) zIq?prZYC2vMFE85RqZ+)F*j&y-eFR3V7Brf43HgdZKj)dbvUPTlzM*5ZC81M91@S< z`~Xtkv#J9`6%#X$ky1TrL&_8))Qc@vjZ2H+TtJqIA=PfF#IRyIzG(|%zfS7fe z7=zge|20t)sf40CxPR)cxT42a#~J+rq&Bm_i$tHAS%Ke@+P4~bEMnDR)f5l&cM?#rI>g^Gh=(IHj>a4WSFp~wE&z0AEJ>AZVUs@#} zj_&aBK5`zcqEJ%pvZ68#yAUCs)x8Vsp3%y%dV-rH%Dt&gb6l~o&;Nvdi^N%!?bqWd z?`wLa3n8p0x-?ZKIXCTzmOK?(!?GUTeT^VvX0`>ZmDouN5JOk?w_N>T#ac3P?FU%% zcdQ8^oLz4M9+snqVj-Y>ypvIF*VC|g9?p}Akl7-1(-qrX`FU7Q+J~+d};+e8lNYcY}AUd?P zaV75B!|PM8K+tM<@e9F@w2f{oXk#T;QV5YDCFnR3Kkx@uGE5J;2;QQrLjJVrJ0zd! z!qn!E-$5R3_NWf0v+K@Hm@vkb2`I~f8AD4!A3KYvU2!3Tt#$~LC7?AvY)gl##~nQw zQfI#ZegASm=?1gIpyTXO%29>3?qH`|RQJT~^iUT7tk!=7mVaQN3mTgifqiOP9AD@94T#hxM!V% zEhl+&V&j)c>>pl2HtgJ&;4bxq5zRT`LP0k=vsDkr+}0cmV74%`okWI6Ipvg-aikZ! zj_F#U90g-xm*!CaEqtXf@g+6>{GL7U0#_yQA}Dkc=M#C$HnqulUz!~Fo9yy7t0n3;W zqlHzhiGm=yVUNVpe;p2qKFukLgc&zO>DJX(CS>K)%1KJ~{IC^NLg~if;cS<)^G;d3 zM?}5G3VSDNps{Q&TaG8lk?|l!PITwOF22nJn7#Q#ch!_hVP5deBzG+Y;))dVU#+uj z(r@NR&C;uzJ2o$UAAR>AG6g8iPe7&OacVa|DP6#(HSD4OY9jZ|-`F0xSmHs8Y)4j- zAD!>cp9+t48QkT`FictPPS_jt+Q&4|OhQ(oA}b~-yP;~+4J%9oxvNEEn%o$FEq1|V zQ3w|F!hZnd64X#nhAF4Fr_-G&T0T9Uh3m>#KzzByoX_myv}HihdH8*Psjm81vT)yJ ztD_`0cWbxu7;W5JASC^p?ih|asP!3Lvs>kb=)6(gLz)~I$}j^m6S~M_J#BS&j`wev z8aW%1$`DFlZGbI~0t{1~(L0rqu)m3W%`|YaSt}{r>@7%}LUK1Y+Hzd*DiN+H9xP4n=Aku!*#Qq4J=C>^6ibNd+7FN({2^FVWQ(fT7>n1Ppz~ zV?)2xgPdmi3@LO|_OFuYT8WW|@I|r~>o!Jqe@Q0DQtIys7hcbeaVpm!$fmluVr9N? zzu&UBu;!qra68Y9LFITU$Mz|vx|cJoKzknU0;Yyj&Gxv)=FT=>`OnGS6F);xA)NFu zARuHBR&u(2AFAoNMi=DVSUC-7<`ofnRhU+da- zwOkXYzW2v1uv-ky{oT0vSc|W35Q4V#4vZ_wZGfwh)@Qh)VluPa)c}nBIffoJ1f_s& z&hlhv5LukGO>^JlKIZz4eL^eOG<;#REIySgL3EMp`d7#IXIWZa=^C4_rla$|Y_Pc% z$48oLE~z*c;$B`CXuL39#uZ{lVmzu-kd+#3e4w+4zB)dBX1EtSkQY>d&Z|s)YEvka zkTm;AeC3@~C!@WA6u%Z}rd;s9lkMPLnJqo|mC{mJ<1sHIc<1iHyAa-K94WOdNK#Y} zc93#IrzP6QYD+t+E|hm@&#dOvC`Tg_IoQd5b2+Gt1)YT}V|gn?m-cy7-rHs=rUbiJ zCi=I<4N3Ba8zkikFQ9tMF2t4*GksJ$*<(X-lPVv7x^H-$bGmG1MZkSxsrc-;bvTC! z>Natj!`Nfc z{4Ts6Ii3Hs01c9T8H`0%0Ju*il6&G8Aip!xnP2!+$mvZjm%~ng-@-A(!LZTL+ z&B*q`oe6BtS&RkWT&#-Gr;Ts^x--AS&JC_k0t4!*WTH{_alB)Ihed1z-om*s?)FQT zy|^oLoDZw@n1g;e$Snb|B<%2ocu0qXPe-igR3(~Iix(0|oVc$-5X1iH#=R1WU)g8e zhiOB%w$^1Y=W(^B$RPM)p{6^0?w}V&QQA95BIKcLm1M&i0%rJD@`M1-kPDyM5W!BO zw+d80%iJGm__7m~8}M#x)X2(q)K}=-ovMn;WX;dLcBpURIBVz(;t&F?7YEikNUY_s zXE)W4Cl0$aavL+_twx6$@=Z*ZdBK)e1i-c%+wjAFq?%bpsqP<|zqhZQsVwD0?>aoB z8f_7#(6Q&(Euye%`gV__B9Fh3~pq}Q8g43Atk-FBp6Kvma>`P}nCAAuC`RK%DFNZO{F zl&}Mz7bzS2z@qcyC(*IpT*7d03}TO4yXNYL>y_E=0{4K9r26TRn8McA zMb)dDhk7&5jOx$lLl7VC1tR%_RZ(iyKkPuxAT$CE5qU3b&kjiJXdK2_@_>BEfsgX1 zjWaEBFzxKbij`J+A+l#wApS3+z z0gmz^1ljsv!Cl=GmiMbl&XZctwDec!_}q(lG?DZjFiZQ4l6kX&s>ub1C+(HsSxF>h zBZ(ex;~frlj>9{{iskjXuF2#2?K5Rkqam>mOl2gB(h|}B(Oo+y6oO0XryR$}&u8Zq zx}H+f1#CIRaW4DF(RyxRN?As>So?kF`e0r~sA~bHBoV*vRYxMAsNxA6%b!?Hl2-TW zYO!vWde{YvxlHAhJ2s$0*`4(ln(>-7L$@<#`w1(wsT&PRpTLK7A)&_6G$lQHs{fA* z^H=vMCrj?%jFGHO^}1O|C`oI`nxhj)n{B;8V#T%rgIpb?U7yx_ z(f87xIf0KCg;qR34EQQpr*!$;!n2+CM$N7Q;3F7aRf(057pWAq@0U2|_AaE*jDt@5OVj*85+;T?bN2$LRMxyA>63 zV+!!j;2gp%0=Zokv}Y26f*<(HSKeS1hL0@#WLcMqOU96av+Bv zy-$KR?Kc_Bf_#0NIBv%<%;zA;5&lZ-4o~+JJtY_8YYKcS?RD+P z8+!+;uZS;a-*0coP-03>(D|4z>ikG4${3kQGz#a1;1wcMEhFlFj=2z>8eB$IkCo|I z+%AqYe*(|xr>K*>R6M$JYbRP$rB(`_$?T|+fzQ+911hKPnn*kgp4M|SETi?Y$_{2s z$*R!6lT#T*y>__++1>?7^|LhvXif>W@?}g6 z^tM!y*5T7yQQ zfGTx4!Vwk-z_R*1nf#kRfoX}t4}zxFAgWn89mWC2T{Gif+wzD>I7WcPayT4=Pr?Wx zCG~1IX&a9!K*s^xF-r1aq%TWAjP!l;h#g_cfE`smWk(5H06Urt=6AhCp&>xWMj_yy z#?D8g+1#+_j_NaIY^1H;?my*x(@qjy#5*l)xPD&I*afcs!ge*G>-mO(PaFQ2t4V79 zniABC>&1l1o4fW+P7!jh!8y``Lu$7l{tX*SnYVaFCaOEJga^#Ar>OvS3SHcZn-V=A zx57X;gdIsf+3BapGs4-LYrUSjD5(An-F|St5@^iYJ9d#fXJ>_@dfnWmf>9D^jZvOX z=}sXP-ESvY;^8WZ-l!=vmc9||KB*7y7eop(Oouo+tZx(~;q1`lLeNInHJIKY9t?)*06Ig@e5M$hjjiBCoZG z_Xk3~5!^Y@ya7m+m=6mE@@i3Q^Q7F}=Nz;|n#k4hS)T_8iG+w@%XYBS@GmFKK8l6; z!7fia(fnZRUcby$A{HeTNoG84TDEvIbYZnp4~LPM6`T`j{=k|t2HoCLKMDSW;FO{5 zW1UETJX?QW98A8nQ4NX+Yr8lDc^7u-zkxj$+$$o#vm1WEzCs<%^UiBIxi@YYwEM3o z|DxUBEkPaP|2F)CECKV8Y=W7yUQSWA9(-7z3V446_@2Ltyr;7ApZ?SX7B}z}|I3U= za~>#{vckI)T~@_IxIW_&0k$lt4Wt%WdRyylb+xhGO2?K8Tg+`{q}L}P^wiFPwJXVG z!{jhN%3+saEMJ&+FmHlbDBi8i;>ITtv-0}%!O973>=xZQ%2o^&9TO+H!1CegbS-m)HXD01GHV(dXa@GVD-xX4|?g>P8$Bqr0%1XTy**8M=k! z1h-Zs*lWs;mcC(_PmOC-P=qI$Md82g#!aAegCilG5A26Kg1Xa577J86{PnMC%6tlo z8VXsgG`PtR4)R~Y`l)7z`_=y`@c);27ri6DOwB$Q%=0YP#9!fq#T9PPYoTEo!4EFM zy;`dEjPyUFvW^^#C!5ZC7imNKjGZSD;VVS}6cpd;J7byhe-HHAYVw#mu!nIzk0Q>H z>Lkj!(_CV+;972H_~ot@)l>r&4iicl;Gn~RgBGGSNnA@K?6=*#hF6YnfOkd}z{uwK z + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xsharable_expression< D > Member List
+
+
+ +

This is the complete list of members for xt::xsharable_expression< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
derived_cast() &noexceptxt::xexpression< D >inline
derived_cast() const &noexceptxt::xexpression< D >inline
derived_cast() &&noexceptxt::xexpression< D >inline
derived_type typedef (defined in xt::xexpression< D >)xt::xexpression< D >
operator=(const xsharable_expression &)=default (defined in xt::xsharable_expression< D >)xt::xsharable_expression< D >protected
operator=(xsharable_expression &&)=default (defined in xt::xsharable_expression< D >)xt::xsharable_expression< D >protected
operator=(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
operator=(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(const xexpression &)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xexpression(xexpression &&)=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
xsharable_expression() (defined in xt::xsharable_expression< D >)xt::xsharable_expression< D >inlineprotected
xsharable_expression(const xsharable_expression &)=default (defined in xt::xsharable_expression< D >)xt::xsharable_expression< D >protected
xsharable_expression(xsharable_expression &&)=default (defined in xt::xsharable_expression< D >)xt::xsharable_expression< D >protected
~xexpression()=default (defined in xt::xexpression< D >)xt::xexpression< D >protected
~xsharable_expression()=default (defined in xt::xsharable_expression< D >)xt::xsharable_expression< D >protected
+
+ + + + diff --git a/classxt_1_1xsharable__expression.html b/classxt_1_1xsharable__expression.html new file mode 100644 index 000000000..3a744acfc --- /dev/null +++ b/classxt_1_1xsharable__expression.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xsharable_expression< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xsharable_expression< D > Class Template Reference
+
+
+
+Inheritance diagram for xt::xsharable_expression< D >:
+
+
+ + +xt::xexpression< D > + +
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

xsharable_expression (const xsharable_expression &)=default
 
+xsharable_expressionoperator= (const xsharable_expression &)=default
 
xsharable_expression (xsharable_expression &&)=default
 
+xsharable_expressionoperator= (xsharable_expression &&)=default
 
Downcast functions
- Protected Member Functions inherited from xt::xexpression< D >
xexpression (const xexpression &)=default
 
+xexpressionoperator= (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (xexpression &&)=default
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from xt::xexpression< D >
using derived_type = D
 
- Public Member Functions inherited from xt::xexpression< D >
derived_type & derived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_type & derived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
+

Detailed Description

+
template<class D>
+class xt::xsharable_expression< D >
+

Definition at line 85 of file xexpression.hpp.

+

Constructor & Destructor Documentation

+ +

◆ xsharable_expression()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
xt::xsharable_expression< D >::xsharable_expression ()
+
+inlineprotected
+
+ +

Definition at line 147 of file xexpression.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xsharable__expression.png b/classxt_1_1xsharable__expression.png new file mode 100644 index 0000000000000000000000000000000000000000..659b6e0473d259201035d4742952dfa2e66604cc GIT binary patch literal 714 zcmV;*0yX`KP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~00072 zNklyGOn41|Y?RL%Q8@o7o8lPEoHy+ZPCW`ko4A710%*tTt3P}oRvIXO2; z+R3>|(oS!12a^0hU519&4@tfw8*Y+3Rb2Po#qV(M3+JSyed341c>d73W zJ}PJA zt{vIkyc)EzPHvFDS0@v*se-JI=x_2}Zd`93ANK@~brQ(>sk!_5E=l=beHXU4@pV7R zo#U*Z46WnW{hK7u^sC-Zl2bW1N!sa4+$3o#=O#%zIX6k#>B+rq+qRwn;8%J8z=B$o z`|(&4d{OQv_LAVMa(h1k082SH0NBa70l-eq4FGm>ZUC^8a|3{#oEre_!(a|r1W9yKl zUVqOmNvDb{&z4Wz`-FVBG(Xy5f4$uM=jf{& z$0m7PJjq$M>%*HkDYQ>LF&%5*u8vjeBp-e-D@Q%2#~8V*gtn@2nq^AVJm2L&m)zaP z>ED^h6?b!ik~MPIj_ht;ZM_Y3a=6DjX_7fjN1L}Uu)D95xQ^(ve3zTknb+Kx^_>ChUG|6zbp52<`rIbs_|1M&^`v<}8Cu8P{w+!0)=xJ0E_X~%pP&V} wC27#A+>-QlIkzO)$+;!TPEYO-LRe4#0Q@(YHnF_B9smFU07*qoM6N<$f(>O~sQ>@~ literal 0 HcmV?d00001 diff --git a/classxt_1_1xshared__expression-members.html b/classxt_1_1xshared__expression-members.html new file mode 100644 index 000000000..72c0b5d22 --- /dev/null +++ b/classxt_1_1xshared__expression-members.html @@ -0,0 +1,191 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xshared_expression< E > Member List
+
+
+ +

This is the complete list of members for xt::xshared_expression< E >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
backstrides() const (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
backstrides_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
base_class typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
begin(const S &shape) noexcept -> decltype(std::declval< E >().template begin< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
begin() noexcept -> decltype(std::declval< E >().template begin< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
begin() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template begin< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
begin(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template begin< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
bool_load_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
broadcast_shape(S &shape, bool reuse_cache=false) const (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
cbegin() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cbegin< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
cbegin(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cbegin< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
cend() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cend< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
cend(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cend< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
const_linear_iterator typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
const_pointer typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
const_reference typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
const_stepper typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
contiguous_layout (defined in xt::xshared_expression< E >)xt::xshared_expression< E >static
crbegin() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crbegin< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
crbegin(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crbegin< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
crend() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crend< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
crend(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crend< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
data() noexcept (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
data() const noexcept (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
data_offset() const noexcept (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
derived_cast() &noexceptxt::xexpression< xshared_expression< E > >inline
derived_cast() const &noexceptxt::xexpression< xshared_expression< E > >inline
derived_cast() &&noexceptxt::xexpression< xshared_expression< E > >inline
difference_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
dimension() const -> decltype(std::declval< xtl::constify_t< E > >(). dimension()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
element(It first, It last) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
element(It first, It last) const (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
end(const S &shape) noexcept -> decltype(std::declval< E >().template end< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
end() noexcept -> decltype(std::declval< E >().template end< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
end() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template end< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
end(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template end< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
has_linear_assign(const S &strides) const noexcept (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
inner_backstrides_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
inner_shape_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
inner_strides_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
is_contiguous() const -> decltype(std::declval< xtl::constify_t< E > >(). is_contiguous()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
layout() const -> decltype(std::declval< xtl::constify_t< E > >(). layout()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_begin() -> decltype(std::declval< E >(). linear_begin()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_begin() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_begin()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_cbegin() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_cbegin()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_cend() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_cend()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_crbegin() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_crbegin()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_crend() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_crend()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_end() -> decltype(std::declval< E >(). linear_end()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_end() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_end()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_iterator typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
linear_rbegin() -> decltype(std::declval< E >(). linear_rbegin()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_rbegin() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_rbegin()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_rend() -> decltype(std::declval< E >(). linear_rend()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
linear_rend() const -> decltype(std::declval< xtl::constify_t< E > >(). linear_rend()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
operator()(Args... args) -> decltype(std::declval< E >()(args...)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
pointer typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
rbegin(const S &shape) noexcept -> decltype(std::declval< E >().template rbegin< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
rbegin() noexcept -> decltype(std::declval< E >().template rbegin< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
rbegin() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rbegin< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
rbegin(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rbegin< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
reference typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
rend(const S &shape) noexcept -> decltype(std::declval< E >().template rend< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
rend() noexcept -> decltype(std::declval< E >().template rend< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
rend() const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rend< L >()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
rend(const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rend< L >(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
shape() const -> decltype(std::declval< xtl::constify_t< E > >(). shape()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
shape_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
size() const -> decltype(std::declval< xtl::constify_t< E > >(). size()) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
size_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
static_layout (defined in xt::xshared_expression< E >)xt::xshared_expression< E >static
stepper typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
stepper_begin(const S &shape) noexcept -> decltype(std::declval< E >().stepper_begin(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
stepper_begin(const S &shape) const noexcept -> decltype(std::declval< const E >().stepper_begin(shape)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
stepper_end(const S &shape, layout_type l) noexcept -> decltype(std::declval< E >().stepper_end(shape, l)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
stepper_end(const S &shape, layout_type l) const noexcept -> decltype(std::declval< const E >().stepper_end(shape, l)) (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
storage() noexcept (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
storage() const noexcept (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
storage_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
strides() const (defined in xt::xshared_expression< E >)xt::xshared_expression< E >inline
strides_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
use_count() const noexceptxt::xshared_expression< E >inline
value_type typedef (defined in xt::xshared_expression< E >)xt::xshared_expression< E >
xshared_expression(const std::shared_ptr< E > &ptr)xt::xshared_expression< E >inlineexplicit
+
+ + + + diff --git a/classxt_1_1xshared__expression.html b/classxt_1_1xshared__expression.html new file mode 100644 index 000000000..abfbfad95 --- /dev/null +++ b/classxt_1_1xshared__expression.html @@ -0,0 +1,2690 @@ + + + + + + + +xtensor: xt::xshared_expression< E > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xshared_expression< E > Class Template Reference
+
+
+ +

Shared xexpressions. + More...

+ +

#include <xexpression.hpp>

+
+Inheritance diagram for xt::xshared_expression< E >:
+
+
+ + +xt::xexpression< xshared_expression< E > > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using base_class = xexpression< xshared_expression< E > >
 
using value_type = typename E::value_type
 
using reference = typename E::reference
 
using const_reference = typename E::const_reference
 
using pointer = typename E::pointer
 
using const_pointer = typename E::const_pointer
 
using size_type = typename E::size_type
 
using difference_type = typename E::difference_type
 
using inner_shape_type = typename E::inner_shape_type
 
using shape_type = typename E::shape_type
 
using strides_type = xtl::mpl::eval_if_t< has_strides< E >, detail::expr_strides_type< E >, get_strides_type< shape_type > >
 
using backstrides_type = xtl::mpl::eval_if_t< has_strides< E >, detail::expr_backstrides_type< E >, get_strides_type< shape_type > >
 
using inner_strides_type = xtl::mpl::eval_if_t< has_strides< E >, detail::expr_inner_strides_type< E >, get_strides_type< shape_type > >
 
using inner_backstrides_type = xtl::mpl::eval_if_t< has_strides< E >, detail::expr_inner_backstrides_type< E >, get_strides_type< shape_type > >
 
using storage_type = xtl::mpl::eval_if_t< has_storage_type< E >, detail::expr_storage_type< E >, make_invalid_type<> >
 
using stepper = typename E::stepper
 
using const_stepper = typename E::const_stepper
 
using linear_iterator = typename E::linear_iterator
 
using const_linear_iterator = typename E::const_linear_iterator
 
using bool_load_type = typename E::bool_load_type
 
- Public Types inherited from xt::xexpression< xshared_expression< E > >
using derived_type = xshared_expression< E >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<class... Args>
auto operator() (Args... args) -> decltype(std::declval< E >()(args...))
 
auto shape () const -> decltype(std::declval< xtl::constify_t< E > >(). shape())
 
auto dimension () const -> decltype(std::declval< xtl::constify_t< E > >(). dimension())
 
auto size () const -> decltype(std::declval< xtl::constify_t< E > >(). size())
 
auto layout () const -> decltype(std::declval< xtl::constify_t< E > >(). layout())
 
auto is_contiguous () const -> decltype(std::declval< xtl::constify_t< E > >(). is_contiguous())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto begin (const S &shape) noexcept -> decltype(std::declval< E >().template begin< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto begin () noexcept -> decltype(std::declval< E >().template begin< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto end (const S &shape) noexcept -> decltype(std::declval< E >().template end< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto end () noexcept -> decltype(std::declval< E >().template end< L >())
 
template<layout_type L = ::xt::layout_type::row_major>
auto begin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template begin< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto begin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template begin< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto end () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template end< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto end (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template end< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto cbegin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cbegin< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto cbegin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cbegin< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto cend () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cend< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto cend (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cend< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto rbegin (const S &shape) noexcept -> decltype(std::declval< E >().template rbegin< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto rbegin () noexcept -> decltype(std::declval< E >().template rbegin< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto rend (const S &shape) noexcept -> decltype(std::declval< E >().template rend< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto rend () noexcept -> decltype(std::declval< E >().template rend< L >())
 
template<layout_type L = ::xt::layout_type::row_major>
auto rbegin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rbegin< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto rbegin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rbegin< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto rend () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rend< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto rend (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rend< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto crbegin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crbegin< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto crbegin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crbegin< L >(shape))
 
template<layout_type L = ::xt::layout_type::row_major>
auto crend () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crend< L >())
 
template<layout_type L = ::xt::layout_type::row_major, class S >
auto crend (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crend< L >(shape))
 
auto linear_begin () -> decltype(std::declval< E >(). linear_begin())
 
auto linear_end () -> decltype(std::declval< E >(). linear_end())
 
auto linear_begin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_begin())
 
auto linear_end () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_end())
 
auto linear_cbegin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_cbegin())
 
auto linear_cend () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_cend())
 
auto linear_rbegin () -> decltype(std::declval< E >(). linear_rbegin())
 
auto linear_rend () -> decltype(std::declval< E >(). linear_rend())
 
auto linear_rbegin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_rbegin())
 
auto linear_rend () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_rend())
 
auto linear_crbegin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_crbegin())
 
auto linear_crend () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_crend())
 
template<class T = E>
std::enable_if_t< has_strides< T >::value, const inner_strides_type & > strides () const
 
template<class T = E>
std::enable_if_t< has_strides< T >::value, const inner_strides_type & > backstrides () const
 
template<class T = E>
std::enable_if_t< has_data_interface< T >::value, pointer > data () noexcept
 
template<class T = E>
std::enable_if_t< has_data_interface< T >::value, pointer > data () const noexcept
 
template<class T = E>
std::enable_if_t< has_data_interface< T >::value, size_type > data_offset () const noexcept
 
template<class T = E>
std::enable_if_t< has_data_interface< T >::value, typename T::storage_type & > storage () noexcept
 
template<class T = E>
std::enable_if_t< has_data_interface< T >::value, const typename T::storage_type & > storage () const noexcept
 
template<class It >
reference element (It first, It last)
 
template<class It >
const_reference element (It first, It last) const
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> decltype(std::declval< E >().stepper_begin(shape))
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> decltype(std::declval< E >().stepper_end(shape, l))
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> decltype(std::declval< const E >().stepper_begin(shape))
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> decltype(std::declval< const E >().stepper_end(shape, l))
 
Downcast functions
 xshared_expression (const std::shared_ptr< E > &ptr)
 Constructor for xshared expression (note: usually the free function make_xshared is recommended).
 
long use_count () const noexcept
 Return the number of times this expression is referenced.
 
- Public Member Functions inherited from xt::xexpression< xshared_expression< E > >
derived_typederived_cast () &noexcept
 Returns a reference to the actual derived type of the xexpression.
 
const derived_typederived_cast () const &noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
derived_type derived_cast () &&noexcept
 Returns a constant reference to the actual derived type of the xexpression.
 
+ + + + + +

+Static Public Attributes

static constexpr layout_type static_layout = E::static_layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xexpression< xshared_expression< E > >
xexpression (const xexpression &)=default
 
xexpression (xexpression &&)=default
 
+xexpressionoperator= (const xexpression &)=default
 
+xexpressionoperator= (xexpression &&)=default
 
+

Detailed Description

+
template<class E>
+class xt::xshared_expression< E >

Shared xexpressions.

+

Due to C++ lifetime constraints it's sometimes necessary to create shared expressions (akin to a shared pointer).

+

For example, when a temporary expression needs to be used twice in another expression, shared expressions can come to the rescue:

+
template <class E>
+
auto cos_plus_sin(xexpression<E>&& expr)
+
{
+
// THIS IS WRONG: forwarding rvalue twice not permitted!
+
// return xt::sin(std::forward<E>(expr)) + xt::cos(std::forward<E>(expr));
+
// THIS IS WRONG TOO: because second `expr` is taken as reference (which will be invalid)
+
// return xt::sin(std::forward<E>(expr)) + xt::cos(expr)
+
auto shared_expr = xt::make_xshared(std::forward<E>(expr));
+
auto result = xt::sin(shared_expr) + xt::cos(shared_expr);
+
std::cout << shared_expr.use_count() << std::endl; // Will print 3 because used twice in expression
+
return result; // all valid because expr lifetime managed by xshared_expression / shared_ptr.
+
}
+
Base class for xexpressions.
+
auto cos(E &&e) noexcept -> detail::xfunction_type_t< math::cos_fun, E >
Cosine function.
Definition xmath.hpp:1309
+
auto sin(E &&e) noexcept -> detail::xfunction_type_t< math::sin_fun, E >
Sine function.
Definition xmath.hpp:1294
+
xshared_expression< E > make_xshared(xexpression< E > &&expr)
Helper function to create shared expression from any xexpression.
+
+

Definition at line 508 of file xexpression.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::backstrides_type = xtl::mpl:: eval_if_t<has_strides<E>, detail::expr_backstrides_type<E>, get_strides_type<shape_type> >
+
+ +

Definition at line 527 of file xexpression.hpp.

+ +
+
+ +

◆ base_class

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::base_class = xexpression<xshared_expression<E> >
+
+ +

Definition at line 512 of file xexpression.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::bool_load_type = typename E::bool_load_type
+
+ +

Definition at line 541 of file xexpression.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::const_linear_iterator = typename E::const_linear_iterator
+
+ +

Definition at line 539 of file xexpression.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::const_pointer = typename E::const_pointer
+
+ +

Definition at line 518 of file xexpression.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::const_reference = typename E::const_reference
+
+ +

Definition at line 516 of file xexpression.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::const_stepper = typename E::const_stepper
+
+ +

Definition at line 536 of file xexpression.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::difference_type = typename E::difference_type
+
+ +

Definition at line 520 of file xexpression.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::inner_backstrides_type = xtl::mpl:: eval_if_t<has_strides<E>, detail::expr_inner_backstrides_type<E>, get_strides_type<shape_type> >
+
+ +

Definition at line 531 of file xexpression.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::inner_shape_type = typename E::inner_shape_type
+
+ +

Definition at line 522 of file xexpression.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::inner_strides_type = xtl::mpl:: eval_if_t<has_strides<E>, detail::expr_inner_strides_type<E>, get_strides_type<shape_type> >
+
+ +

Definition at line 529 of file xexpression.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::linear_iterator = typename E::linear_iterator
+
+ +

Definition at line 538 of file xexpression.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::pointer = typename E::pointer
+
+ +

Definition at line 517 of file xexpression.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::reference = typename E::reference
+
+ +

Definition at line 515 of file xexpression.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::shape_type = typename E::shape_type
+
+ +

Definition at line 523 of file xexpression.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::size_type = typename E::size_type
+
+ +

Definition at line 519 of file xexpression.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::stepper = typename E::stepper
+
+ +

Definition at line 535 of file xexpression.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::storage_type = xtl::mpl::eval_if_t<has_storage_type<E>, detail::expr_storage_type<E>, make_invalid_type<> >
+
+ +

Definition at line 533 of file xexpression.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::strides_type = xtl::mpl:: eval_if_t<has_strides<E>, detail::expr_strides_type<E>, get_strides_type<shape_type> >
+
+ +

Definition at line 525 of file xexpression.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class E >
+ + + + +
using xt::xshared_expression< E >::value_type = typename E::value_type
+
+ +

Definition at line 514 of file xexpression.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xshared_expression()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xt::xshared_expression< E >::xshared_expression (const std::shared_ptr< E > & ptr)
+
+inlineexplicit
+
+ +

Constructor for xshared expression (note: usually the free function make_xshared is recommended).

+
Parameters
+ + +
ptrshared ptr that contains the expression
+
+
+
See also
make_xshared
+ +

Definition at line 695 of file xexpression.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ backstrides()

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_strides< T >::value, const inner_strides_type & > xt::xshared_expression< E >::backstrides () const
+
+inline
+
+ +

Definition at line 596 of file xexpression.hpp.

+ +
+
+ +

◆ begin() [1/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::begin () const -> decltype(std::declval<xtl::constify_t<E>>().template begin <L>())
+
+inlinenoexcept
+
+ +

Definition at line 563 of file xexpression.hpp.

+ +
+
+ +

◆ begin() [2/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::begin () -> decltype(std::declval<E>().template begin <L>())
+
+inlinenoexcept
+
+ +

Definition at line 561 of file xexpression.hpp.

+ +
+
+ +

◆ begin() [3/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::begin (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template begin <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 563 of file xexpression.hpp.

+ +
+
+ +

◆ begin() [4/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::begin (const S & shape) -> decltype(std::declval<E>().template begin <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 561 of file xexpression.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class E >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xshared_expression< E >::broadcast_shape (S & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Definition at line 644 of file xexpression.hpp.

+ +
+
+ +

◆ cbegin() [1/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::cbegin () const -> decltype(std::declval<xtl::constify_t<E>>().template cbegin <L>())
+
+inlinenoexcept
+
+ +

Definition at line 565 of file xexpression.hpp.

+ +
+
+ +

◆ cbegin() [2/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::cbegin (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template cbegin <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 565 of file xexpression.hpp.

+ +
+
+ +

◆ cend() [1/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::cend () const -> decltype(std::declval<xtl::constify_t<E>>().template cend <L>())
+
+inlinenoexcept
+
+ +

Definition at line 566 of file xexpression.hpp.

+ +
+
+ +

◆ cend() [2/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::cend (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template cend <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 566 of file xexpression.hpp.

+ +
+
+ +

◆ crbegin() [1/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::crbegin () const -> decltype(std::declval<xtl::constify_t<E>>().template crbegin <L>())
+
+inlinenoexcept
+
+ +

Definition at line 572 of file xexpression.hpp.

+ +
+
+ +

◆ crbegin() [2/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::crbegin (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template crbegin <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 572 of file xexpression.hpp.

+ +
+
+ +

◆ crend() [1/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::crend () const -> decltype(std::declval<xtl::constify_t<E>>().template crend <L>())
+
+inlinenoexcept
+
+ +

Definition at line 573 of file xexpression.hpp.

+ +
+
+ +

◆ crend() [2/2]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::crend (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template crend <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 573 of file xexpression.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_data_interface< T >::value, pointer > xt::xshared_expression< E >::data () const
+
+inlinenoexcept
+
+ +

Definition at line 608 of file xexpression.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_data_interface< T >::value, pointer > xt::xshared_expression< E >::data ()
+
+inlinenoexcept
+
+ +

Definition at line 602 of file xexpression.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_data_interface< T >::value, size_type > xt::xshared_expression< E >::data_offset () const
+
+inlinenoexcept
+
+ +

Definition at line 614 of file xexpression.hpp.

+ +
+
+ +

◆ dimension()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::dimension () const -> decltype(std::declval<xtl::constify_t<E>>(). dimension ())
+
+inline
+
+ +

Definition at line 556 of file xexpression.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class E >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
reference xt::xshared_expression< E >::element (It first,
It last 
)
+
+inline
+
+ +

Definition at line 632 of file xexpression.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class E >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const_reference xt::xshared_expression< E >::element (It first,
It last 
) const
+
+inline
+
+ +

Definition at line 638 of file xexpression.hpp.

+ +
+
+ +

◆ end() [1/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::end () const -> decltype(std::declval<xtl::constify_t<E>>().template end <L>())
+
+inlinenoexcept
+
+ +

Definition at line 564 of file xexpression.hpp.

+ +
+
+ +

◆ end() [2/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::end () -> decltype(std::declval<E>().template end <L>())
+
+inlinenoexcept
+
+ +

Definition at line 562 of file xexpression.hpp.

+ +
+
+ +

◆ end() [3/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::end (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template end <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 564 of file xexpression.hpp.

+ +
+
+ +

◆ end() [4/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::end (const S & shape) -> decltype(std::declval<E>().template end <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 562 of file xexpression.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class E >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
bool xt::xshared_expression< E >::has_linear_assign (const S & strides) const
+
+inlinenoexcept
+
+ +

Definition at line 650 of file xexpression.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::is_contiguous () const -> decltype(std::declval<xtl::constify_t<E>>(). is_contiguous ())
+
+inline
+
+ +

Definition at line 559 of file xexpression.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::layout () const -> decltype(std::declval<xtl::constify_t<E>>(). layout ())
+
+inline
+
+ +

Definition at line 558 of file xexpression.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_begin () -> decltype(std::declval<E>(). linear_begin ())
+
+inline
+
+ +

Definition at line 575 of file xexpression.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_begin () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_begin ())
+
+inline
+
+ +

Definition at line 577 of file xexpression.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_cbegin () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_cbegin ())
+
+inline
+
+ +

Definition at line 579 of file xexpression.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_cend () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_cend ())
+
+inline
+
+ +

Definition at line 580 of file xexpression.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_crbegin () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_crbegin ())
+
+inline
+
+ +

Definition at line 586 of file xexpression.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_crend () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_crend ())
+
+inline
+
+ +

Definition at line 587 of file xexpression.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_end () -> decltype(std::declval<E>(). linear_end ())
+
+inline
+
+ +

Definition at line 576 of file xexpression.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_end () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_end ())
+
+inline
+
+ +

Definition at line 578 of file xexpression.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_rbegin () -> decltype(std::declval<E>(). linear_rbegin ())
+
+inline
+
+ +

Definition at line 582 of file xexpression.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_rbegin () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_rbegin ())
+
+inline
+
+ +

Definition at line 584 of file xexpression.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_rend () -> decltype(std::declval<E>(). linear_rend ())
+
+inline
+
+ +

Definition at line 583 of file xexpression.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::linear_rend () const -> decltype(std::declval<xtl::constify_t<E>>(). linear_rend ())
+
+inline
+
+ +

Definition at line 585 of file xexpression.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class E >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::operator() (Args... args) -> decltype(std::declval<E>()(args...)) +
+
+inline
+
+ +

Definition at line 550 of file xexpression.hpp.

+ +
+
+ +

◆ rbegin() [1/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::rbegin () const -> decltype(std::declval<xtl::constify_t<E>>().template rbegin <L>())
+
+inlinenoexcept
+
+ +

Definition at line 570 of file xexpression.hpp.

+ +
+
+ +

◆ rbegin() [2/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::rbegin () -> decltype(std::declval<E>().template rbegin <L>())
+
+inlinenoexcept
+
+ +

Definition at line 568 of file xexpression.hpp.

+ +
+
+ +

◆ rbegin() [3/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::rbegin (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template rbegin <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 570 of file xexpression.hpp.

+ +
+
+ +

◆ rbegin() [4/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::rbegin (const S & shape) -> decltype(std::declval<E>().template rbegin <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 568 of file xexpression.hpp.

+ +
+
+ +

◆ rend() [1/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::rend () const -> decltype(std::declval<xtl::constify_t<E>>().template rend <L>())
+
+inlinenoexcept
+
+ +

Definition at line 571 of file xexpression.hpp.

+ +
+
+ +

◆ rend() [2/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major>
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::rend () -> decltype(std::declval<E>().template rend <L>())
+
+inlinenoexcept
+
+ +

Definition at line 569 of file xexpression.hpp.

+ +
+
+ +

◆ rend() [3/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::rend (const S & shape) const -> decltype(std::declval<xtl::constify_t<E>>().template rend <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 571 of file xexpression.hpp.

+ +
+
+ +

◆ rend() [4/4]

+ +
+
+
+template<class E >
+
+template<layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::rend (const S & shape) -> decltype(std::declval<E>().template rend <L>(shape))
+
+inlinenoexcept
+
+ +

Definition at line 569 of file xexpression.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::shape () const -> decltype(std::declval<xtl::constify_t<E>>(). shape ())
+
+inline
+
+ +

Definition at line 555 of file xexpression.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
auto xt::xshared_expression< E >::size () const -> decltype(std::declval<xtl::constify_t<E>>(). size ())
+
+inline
+
+ +

Definition at line 557 of file xexpression.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class E >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::stepper_begin (const S & shape) const -> decltype(std::declval<const E>().stepper_begin(shape)) +
+
+inlinenoexcept
+
+ +

Definition at line 669 of file xexpression.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class E >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
auto xt::xshared_expression< E >::stepper_begin (const S & shape) -> decltype(std::declval<E>().stepper_begin(shape)) +
+
+inlinenoexcept
+
+ +

Definition at line 656 of file xexpression.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class E >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xshared_expression< E >::stepper_end (const S & shape,
layout_type l 
) const -> decltype(std::declval<const E>().stepper_end(shape, l)) +
+
+inlinenoexcept
+
+ +

Definition at line 676 of file xexpression.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class E >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xshared_expression< E >::stepper_end (const S & shape,
layout_type l 
) -> decltype(std::declval<E>().stepper_end(shape, l)) +
+
+inlinenoexcept
+
+ +

Definition at line 662 of file xexpression.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_data_interface< T >::value, const typename T::storage_type & > xt::xshared_expression< E >::storage () const
+
+inlinenoexcept
+
+ +

Definition at line 626 of file xexpression.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_data_interface< T >::value, typename T::storage_type & > xt::xshared_expression< E >::storage ()
+
+inlinenoexcept
+
+ +

Definition at line 620 of file xexpression.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class E >
+
+template<class T = E>
+ + + + + +
+ + + + + + + +
std::enable_if_t< has_strides< T >::value, const inner_strides_type & > xt::xshared_expression< E >::strides () const
+
+inline
+
+ +

Definition at line 590 of file xexpression.hpp.

+ +
+
+ +

◆ use_count()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + +
long xt::xshared_expression< E >::use_count () const
+
+inlinenoexcept
+
+ +

Return the number of times this expression is referenced.

+

Internally calls the use_count() function of the std::shared_ptr.

+ +

Definition at line 705 of file xexpression.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class E >
+ + + + + +
+ + + + +
constexpr bool xt::xshared_expression< E >::contiguous_layout = static_layout != layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 544 of file xexpression.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class E >
+ + + + + +
+ + + + +
constexpr layout_type xt::xshared_expression< E >::static_layout = E::static_layout
+
+staticconstexpr
+
+ +

Definition at line 543 of file xexpression.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xshared__expression.js b/classxt_1_1xshared__expression.js new file mode 100644 index 000000000..b92fe9afb --- /dev/null +++ b/classxt_1_1xshared__expression.js @@ -0,0 +1,5 @@ +var classxt_1_1xshared__expression = +[ + [ "xshared_expression", "classxt_1_1xshared__expression.html#a0eee9f39b506cc2e83b9b4c6dda150cf", null ], + [ "use_count", "classxt_1_1xshared__expression.html#ade23a460bdd1eb6102372076493f719e", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xshared__expression.png b/classxt_1_1xshared__expression.png new file mode 100644 index 0000000000000000000000000000000000000000..a2983ce29ab742816cfc6b87535bc390078e0385 GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0y~yU}Oif12~w0q;jW29*~j_@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHvap1rKpm^}4%PW9#oFzei!3;n?7??B7zQVx3bkNhqF{Fa=?cCQzuN8P& zmVWg~zyH6}|24OQW6bfwSzk(`^K*EFKCuhc=gwN@IV*>$!Ct>mfW45RL8DNjsDQy@ z`Qc^1na{g!$bR}+p5e~5QW=H^6XqRcWXOBfak}@g&9E(thuk}_Y3?}om@X#a-*Nv$dgO zyM+fX#-8gwuD*Y@-IbSV@xPzD2ERG3YQ5gkO8?b^M}L1*7Jh%S(~iMmd6YauLb$)h zO~wZ^=Gp#~E{d3@zh0BUCh!)2c`-x7|FB02e2*9y0v`of_*^#eOiNpTt$pT96+Z1Y z{zidzv1W&k=2uH*MozHkXttO!)3vi1$e0;9g%s|U=z@as>38O+{NHoLQRYaa%Hksr z3;CQ+*Oot5yS+8)l&z=TqWFW2D*3OZrZ2ZRqgE<9?b-F&Klkm4tG1v0wKC7-b%alM zpv>OC=eX|OZ)Tpmef_5`ZSnKWgG~SAOmUxlFXrumW1$`YOPc1K>E7fMyZNPt&Z+5J z)p#|mW`^!%}GRLisSjleDc|^lYaxUqq6QjD_Crovutnc + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xslice< D > Member List
+
+
+ +

This is the complete list of members for xt::xslice< D >, including all inherited members.

+ + + + + + + + + + +
derived_cast() noexcept (defined in xt::xslice< D >)xt::xslice< D >inline
derived_cast() const noexcept (defined in xt::xslice< D >)xt::xslice< D >inline
derived_type typedef (defined in xt::xslice< D >)xt::xslice< D >
operator=(const xslice &)=default (defined in xt::xslice< D >)xt::xslice< D >protected
operator=(xslice &&)=default (defined in xt::xslice< D >)xt::xslice< D >protected
xslice()=default (defined in xt::xslice< D >)xt::xslice< D >protected
xslice(const xslice &)=default (defined in xt::xslice< D >)xt::xslice< D >protected
xslice(xslice &&)=default (defined in xt::xslice< D >)xt::xslice< D >protected
~xslice()=default (defined in xt::xslice< D >)xt::xslice< D >protected
+
+ + + + diff --git a/classxt_1_1xslice.html b/classxt_1_1xslice.html new file mode 100644 index 000000000..00ceaa2cf --- /dev/null +++ b/classxt_1_1xslice.html @@ -0,0 +1,223 @@ + + + + + + + +xtensor: xt::xslice< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xslice< D > Class Template Reference
+
+
+ + + + +

+Public Types

using derived_type = D
 
+ + + + + +

+Public Member Functions

derived_type & derived_cast () noexcept
 
const derived_type & derived_cast () const noexcept
 
+ + + + + + + + + +

+Protected Member Functions

xslice (const xslice &)=default
 
+xsliceoperator= (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class D>
+class xt::xslice< D >
+

Definition at line 42 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xslice< D >::derived_type = D
+
+ +

Definition at line 46 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ derived_cast() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xslice< D >::derived_cast () const
+
+inlinenoexcept
+
+ +

Definition at line 1050 of file xslice.hpp.

+ +
+
+ +

◆ derived_cast() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xslice< D >::derived_cast ()
+
+inlinenoexcept
+
+ +

Definition at line 1044 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xstepped__range-members.html b/classxt_1_1xstepped__range-members.html new file mode 100644 index 000000000..aea586709 --- /dev/null +++ b/classxt_1_1xstepped__range-members.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xstepped_range< T > Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + +
contains(size_type i) const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
convert() const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
operator xstepped_range< S >() const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
operator!=(const self_type &rhs) const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
operator()(size_type i) const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
operator==(const self_type &rhs) const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
revert_index(std::size_t i) const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
self_type typedef (defined in xt::xstepped_range< T >)xt::xstepped_range< T >
size() const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
size_type typedef (defined in xt::xstepped_range< T >)xt::xstepped_range< T >
step_size() const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
step_size(std::size_t i, std::size_t n=1) const noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
xstepped_range (defined in xt::xstepped_range< T >)xt::xstepped_range< T >friend
xstepped_range()=default (defined in xt::xstepped_range< T >)xt::xstepped_range< T >
xstepped_range(size_type start_val, size_type stop_val, size_type step) noexcept (defined in xt::xstepped_range< T >)xt::xstepped_range< T >inline
+
+ + + + diff --git a/classxt_1_1xstepped__range.html b/classxt_1_1xstepped__range.html new file mode 100644 index 000000000..27327869c --- /dev/null +++ b/classxt_1_1xstepped__range.html @@ -0,0 +1,608 @@ + + + + + + + +xtensor: xt::xstepped_range< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xstepped_range< T > Class Template Reference
+
+
+
+Inheritance diagram for xt::xstepped_range< T >:
+
+
+ + +xt::xslice< xstepped_range< T > > + +
+ + + + + + + + + +

+Public Types

using size_type = T
 
using self_type = xstepped_range< T >
 
- Public Types inherited from xt::xslice< xstepped_range< T > >
using derived_type = xstepped_range< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xstepped_range (size_type start_val, size_type stop_val, size_type step) noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
 operator xstepped_range< S > () const noexcept
 
template<class S , typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
xstepped_range< S > convert () const noexcept
 
size_type operator() (size_type i) const noexcept
 
size_type size () const noexcept
 
size_type step_size () const noexcept
 
size_type step_size (std::size_t i, std::size_t n=1) const noexcept
 
size_type revert_index (std::size_t i) const noexcept
 
bool contains (size_type i) const noexcept
 
bool operator== (const self_type &rhs) const noexcept
 
bool operator!= (const self_type &rhs) const noexcept
 
- Public Member Functions inherited from xt::xslice< xstepped_range< T > >
derived_typederived_cast () noexcept
 
const derived_typederived_cast () const noexcept
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xslice< xstepped_range< T > >
xslice (const xslice &)=default
 
xslice (xslice &&)=default
 
+xsliceoperator= (const xslice &)=default
 
+xsliceoperator= (xslice &&)=default
 
+

Detailed Description

+
template<class T>
+class xt::xstepped_range< T >
+

Definition at line 149 of file xslice.hpp.

+

Member Typedef Documentation

+ +

◆ self_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xstepped_range< T >::self_type = xstepped_range<T>
+
+ +

Definition at line 154 of file xslice.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T >
+ + + + +
using xt::xstepped_range< T >::size_type = T
+
+ +

Definition at line 153 of file xslice.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xstepped_range()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xstepped_range< T >::xstepped_range (size_type start_val,
size_type stop_val,
size_type step 
)
+
+inlinenoexcept
+
+ +

Definition at line 1136 of file xslice.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ contains()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xstepped_range< T >::contains (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1194 of file xslice.hpp.

+ +
+
+ +

◆ convert()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xstepped_range< S > xt::xstepped_range< T >::convert () const
+
+inlinenoexcept
+
+ +

Definition at line 1158 of file xslice.hpp.

+ +
+
+ +

◆ operator xstepped_range< S >()

+ +
+
+
+template<class T >
+
+template<class S , typename >
+ + + + + +
+ + + + + + + +
xt::xstepped_range< T >::operator xstepped_range< S > () const
+
+inlinenoexcept
+
+ +

Definition at line 1147 of file xslice.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xstepped_range< T >::operator!= (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1206 of file xslice.hpp.

+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xstepped_range< T >::operator() (size_type i) const
+
+inlinenoexcept
+
+ +

Definition at line 1164 of file xslice.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool xt::xstepped_range< T >::operator== (const self_typerhs) const
+
+inlinenoexcept
+
+ +

Definition at line 1200 of file xslice.hpp.

+ +
+
+ +

◆ revert_index()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xstepped_range< T >::revert_index (std::size_t i) const
+
+inlinenoexcept
+
+ +

Definition at line 1188 of file xslice.hpp.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xstepped_range< T >::size () const
+
+inlinenoexcept
+
+ +

Definition at line 1170 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xstepped_range< T >::step_size () const
+
+inlinenoexcept
+
+ +

Definition at line 1176 of file xslice.hpp.

+ +
+
+ +

◆ step_size() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstepped_range< T >::step_size (std::size_t i,
std::size_t n = 1 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1182 of file xslice.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xstepped_range

+ +
+
+
+template<class T >
+
+template<class S >
+ + + + + +
+ + + + +
friend class xstepped_range
+
+friend
+
+ +

Definition at line 186 of file xslice.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xstepped__range.png b/classxt_1_1xstepped__range.png new file mode 100644 index 0000000000000000000000000000000000000000..888aa726b7e791afdf86e08557a3e7e2ca683ad5 GIT binary patch literal 750 zcmeAS@N?(olHy`uVBq!ia0vp^XMi|>gBeIBMP&T|QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nr;JzX3_Dj46+eYx(n0#8eO zXUN&#_8)zPgT4t*x_#71rj+lf;adAWU-YM?M!E@#O_FgIZd1|CIy7O4YpOw?O7Yrb ztLCZ{ms*t7i=F&X^jqH3>?)`8q}X2)KIacIrxo+O`28)DbLL0>?$@2Q+uL`yTl1+O zzxMy)$K1&~P0Aecu_Czi&m{yr*2(*ptTgx#PF-^f{Zy}O*_%CU;*;p9Q&m07UVY=g=%4WKhw1rQT`Ip*^^AEvCfQtlp5XE6^eh9F z%s_A`v_?)#m2_eFz-r5oAkxe7xq`>VSm?|tBfhf%2F0@&8+?5w7&ffnWM&XEO=LK* zNR5Xf;z|o6L-#BLhJ-+2HU^!nLktbB7>Z&h7oY1@vhb907IvEiRO2zpHMU`;RoR?< z<Q9^c1%F8ET@7C3M z7{L>~OWo~#(1DU^(eX2X?p~8KdB<#Txwy;vomQ3iMW5x)n10bbODr~NjY!T}+ir{7 zrC$y&HS&IEx_NrIY)@guSspRLdKKe+j~7c>M*S>0ea`E8(a!$1SQ(fy89ZJ6T-G@yGywovB3FI@ literal 0 HcmV?d00001 diff --git a/classxt_1_1xstepper-members.html b/classxt_1_1xstepper-members.html new file mode 100644 index 000000000..249b32603 --- /dev/null +++ b/classxt_1_1xstepper-members.html @@ -0,0 +1,131 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xstepper< C > Member List
+
+
+ +

This is the complete list of members for xt::xstepper< C >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
operator*() const (defined in xt::xstepper< C >)xt::xstepper< C >inline
pointer typedef (defined in xt::xstepper< C >)xt::xstepper< C >
reference typedef (defined in xt::xstepper< C >)xt::xstepper< C >
reset(size_type dim) (defined in xt::xstepper< C >)xt::xstepper< C >inline
reset_back(size_type dim) (defined in xt::xstepper< C >)xt::xstepper< C >inline
shape_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
simd_return_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
simd_value_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
size_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
step(size_type dim, size_type n=1) (defined in xt::xstepper< C >)xt::xstepper< C >inline
step_back(size_type dim, size_type n=1) (defined in xt::xstepper< C >)xt::xstepper< C >inline
step_leading() (defined in xt::xstepper< C >)xt::xstepper< C >
step_simd() (defined in xt::xstepper< C >)xt::xstepper< C >
step_simd() -> simd_return_type< T > (defined in xt::xstepper< C >)xt::xstepper< C >inline
storage_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
store_simd(const R &vec) (defined in xt::xstepper< C >)xt::xstepper< C >inline
subiterator_traits typedef (defined in xt::xstepper< C >)xt::xstepper< C >
subiterator_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
to_begin() (defined in xt::xstepper< C >)xt::xstepper< C >inline
to_end(layout_type l) (defined in xt::xstepper< C >)xt::xstepper< C >inline
value_type typedef (defined in xt::xstepper< C >)xt::xstepper< C >
xstepper()=default (defined in xt::xstepper< C >)xt::xstepper< C >
xstepper(storage_type *c, subiterator_type it, size_type offset) noexcept (defined in xt::xstepper< C >)xt::xstepper< C >inline
+
+ + + + diff --git a/classxt_1_1xstepper.html b/classxt_1_1xstepper.html new file mode 100644 index 000000000..679ebd22e --- /dev/null +++ b/classxt_1_1xstepper.html @@ -0,0 +1,736 @@ + + + + + + + +xtensor: xt::xstepper< C > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xstepper< C > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using storage_type = C
 
using subiterator_type = get_stepper_iterator< C >
 
using subiterator_traits = std::iterator_traits< subiterator_type >
 
using value_type = typename subiterator_traits::value_type
 
using reference = typename subiterator_traits::reference
 
using pointer = typename subiterator_traits::pointer
 
using difference_type = typename subiterator_traits::difference_type
 
using size_type = typename storage_type::size_type
 
using shape_type = typename storage_type::shape_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 xstepper (storage_type *c, subiterator_type it, size_type offset) noexcept
 
reference operator* () const
 
void step (size_type dim, size_type n=1)
 
void step_back (size_type dim, size_type n=1)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
+template<class T >
simd_return_type< T > step_simd ()
 
void step_leading ()
 
template<class R >
void store_simd (const R &vec)
 
template<class T >
auto step_simd () -> simd_return_type< T >
 
+

Detailed Description

+
template<class C>
+class xt::xstepper< C >
+

Definition at line 106 of file xiterator.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::difference_type = typename subiterator_traits::difference_type
+
+ +

Definition at line 116 of file xiterator.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::pointer = typename subiterator_traits::pointer
+
+ +

Definition at line 115 of file xiterator.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::reference = typename subiterator_traits::reference
+
+ +

Definition at line 114 of file xiterator.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::shape_type = typename storage_type::shape_type
+
+ +

Definition at line 118 of file xiterator.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class C >
+
+template<class requested_type >
+ + + + +
using xt::xstepper< C >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 122 of file xiterator.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 119 of file xiterator.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::size_type = typename storage_type::size_type
+
+ +

Definition at line 117 of file xiterator.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::storage_type = C
+
+ +

Definition at line 110 of file xiterator.hpp.

+ +
+
+ +

◆ subiterator_traits

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::subiterator_traits = std::iterator_traits<subiterator_type>
+
+ +

Definition at line 112 of file xiterator.hpp.

+ +
+
+ +

◆ subiterator_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::subiterator_type = get_stepper_iterator<C>
+
+ +

Definition at line 111 of file xiterator.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class C >
+ + + + +
using xt::xstepper< C >::value_type = typename subiterator_traits::value_type
+
+ +

Definition at line 113 of file xiterator.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xstepper()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xstepper< C >::xstepper (storage_type * c,
subiterator_type it,
size_type offset 
)
+
+inlinenoexcept
+
+ +

Definition at line 489 of file xiterator.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + +
auto xt::xstepper< C >::operator* () const
+
+inline
+
+ +

Definition at line 497 of file xiterator.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + + +
void xt::xstepper< C >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 523 of file xiterator.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + + +
void xt::xstepper< C >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 532 of file xiterator.hpp.

+ +
+
+ +

◆ step()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xstepper< C >::step (size_type dim,
size_type n = 1 
)
+
+inline
+
+ +

Definition at line 503 of file xiterator.hpp.

+ +
+
+ +

◆ step_back()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xstepper< C >::step_back (size_type dim,
size_type n = 1 
)
+
+inline
+
+ +

Definition at line 513 of file xiterator.hpp.

+ +
+
+ +

◆ step_leading()

+ +
+
+
+template<class C >
+ + + + + + + +
void xt::xstepper< C >::step_leading ()
+
+ +

Definition at line 597 of file xiterator.hpp.

+ +
+
+ +

◆ step_simd()

+ +
+
+
+template<class C >
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xstepper< C >::step_simd () -> simd_return_type<T> +
+
+inline
+
+ +

Definition at line 579 of file xiterator.hpp.

+ +
+
+ +

◆ store_simd()

+ +
+
+
+template<class C >
+
+template<class R >
+ + + + + +
+ + + + + + + + +
void xt::xstepper< C >::store_simd (const R & vec)
+
+inline
+
+ +

Definition at line 589 of file xiterator.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + +
void xt::xstepper< C >::to_begin ()
+
+inline
+
+ +

Definition at line 541 of file xiterator.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<class C >
+ + + + + +
+ + + + + + + + +
void xt::xstepper< C >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 547 of file xiterator.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xstrided__container-members.html b/classxt_1_1xstrided__container-members.html new file mode 100644 index 000000000..7abb1c01d --- /dev/null +++ b/classxt_1_1xstrided__container-members.html @@ -0,0 +1,313 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xstrided_container< D > Member List
+
+
+ +

This is the complete list of members for xt::xstrided_container< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_impl() noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
backstrides_impl() const noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
backstrides_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
base_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_pointer typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
const_reference typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_backstrides_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
inner_shape_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
inner_strides_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
is_contiguous() const noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inline
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexceptxt::xstrided_container< D >inline
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
mutable_layout() noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator=(const xstrided_container &)=default (defined in xt::xstrided_container< D >)xt::xstrided_container< D >protected
operator=(xstrided_container &&)=default (defined in xt::xstrided_container< D >)xt::xstrided_container< D >protected
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
pointer typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reference typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) &xt::xstrided_container< D >inline
reshape(std::initializer_list< T > shape, layout_type layout=base_type::static_layout) & (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inline
reshape_impl(S &&shape, std::true_type, layout_type layout=base_type::static_layout) (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
reshape_impl(S &&shape, std::false_type, layout_type layout=base_type::static_layout) (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
resize(S &&shape, bool force=false)xt::xstrided_container< D >inline
resize(S &&shape, layout_type l)xt::xstrided_container< D >inline
resize(S &&shape, const strides_type &strides)xt::xstrided_container< D >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
shape() const noexceptxt::xcontainer< D >
shape_impl() noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
shape_impl() const noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
shape_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
size_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_impl() noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
strides_impl() const noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
strides_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
value_type typedef (defined in xt::xstrided_container< D >)xt::xstrided_container< D >
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xstrided_container() noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineprotected
xstrided_container(const xstrided_container &)=default (defined in xt::xstrided_container< D >)xt::xstrided_container< D >protected
xstrided_container(xstrided_container &&)=default (defined in xt::xstrided_container< D >)xt::xstrided_container< D >protected
xstrided_container(inner_shape_type &&, inner_strides_type &&) noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineexplicitprotected
xstrided_container(inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept (defined in xt::xstrided_container< D >)xt::xstrided_container< D >inlineexplicitprotected
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
~xstrided_container()=default (defined in xt::xstrided_container< D >)xt::xstrided_container< D >protected
+
+ + + + diff --git a/classxt_1_1xstrided__container.html b/classxt_1_1xstrided__container.html new file mode 100644 index 000000000..b01e74b5d --- /dev/null +++ b/classxt_1_1xstrided__container.html @@ -0,0 +1,1780 @@ + + + + + + + +xtensor: xt::xstrided_container< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xstrided_container< D > Class Template Reference
+
+
+ +

Partial implementation of xcontainer that embeds the strides and the shape. + More...

+ +

#include <xcontainer.hpp>

+
+Inheritance diagram for xt::xstrided_container< D >:
+
+
+ + +xt::xcontainer< D > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using base_type = xcontainer< D >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
- Public Types inherited from xt::xcontainer< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

xstrided_container (const xstrided_container &)=default
 
+xstrided_containeroperator= (const xstrided_container &)=default
 
xstrided_container (xstrided_container &&)=default
 
+xstrided_containeroperator= (xstrided_container &&)=default
 
- Protected Member Functions inherited from xt::xcontainer< D >
xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class S = shape_type>
void resize (S &&shape, bool force=false)
 Resizes the container.
 
template<class S = shape_type>
void resize (S &&shape, layout_type l)
 Resizes the container.
 
template<class S = shape_type>
void resize (S &&shape, const strides_type &strides)
 Resizes the container.
 
template<class S = shape_type>
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 Reshapes the container and keeps old elements.
 
template<class T >
auto & reshape (std::initializer_list< T > shape, layout_type layout=base_type::static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&) noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept
 
inner_shape_type & shape_impl () noexcept
 
const inner_shape_type & shape_impl () const noexcept
 
inner_strides_type & strides_impl () noexcept
 
const inner_strides_type & strides_impl () const noexcept
 
inner_backstrides_type & backstrides_impl () noexcept
 
const inner_backstrides_type & backstrides_impl () const noexcept
 
template<class S = shape_type>
void reshape_impl (S &&shape, std::true_type, layout_type layout=base_type::static_layout)
 
template<class S = shape_type>
void reshape_impl (S &&shape, std::false_type, layout_type layout=base_type::static_layout)
 
layout_typemutable_layout () noexcept
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from xt::xcontainer< D >
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Static Public Attributes inherited from xt::xcontainer< D >
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+

Detailed Description

+
template<class D>
+class xt::xstrided_container< D >

Partial implementation of xcontainer that embeds the strides and the shape.

+

The xstrided_container class is a partial implementation of the xcontainer interface that embed the strides and the shape of the multidimensional container. It does not embed the data container, this responsibility is delegated to the inheriting classes.

+
Template Parameters
+ + +
DThe derived type, i.e. the inheriting class for which xstrided_container provides the partial imlpementation of xcontainer.
+
+
+ +

Definition at line 260 of file xcontainer.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::base_type = xcontainer<D>
+
+ +

Definition at line 264 of file xcontainer.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 270 of file xcontainer.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 268 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 276 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 274 of file xcontainer.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 275 of file xcontainer.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::pointer = typename base_type::pointer
+
+ +

Definition at line 269 of file xcontainer.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::reference = typename base_type::reference
+
+ +

Definition at line 267 of file xcontainer.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 272 of file xcontainer.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::size_type = typename base_type::size_type
+
+ +

Definition at line 271 of file xcontainer.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 265 of file xcontainer.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 273 of file xcontainer.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_container< D >::value_type = typename base_type::value_type
+
+ +

Definition at line 266 of file xcontainer.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xstrided_container() [1/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
xt::xstrided_container< D >::xstrided_container ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 851 of file xcontainer.hpp.

+ +
+
+ +

◆ xstrided_container() [2/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xstrided_container< D >::xstrided_container (inner_shape_type && shape,
inner_strides_type && strides 
)
+
+inlineexplicitprotectednoexcept
+
+ +

Definition at line 860 of file xcontainer.hpp.

+ +
+
+ +

◆ xstrided_container() [3/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xstrided_container< D >::xstrided_container (inner_shape_type && shape,
inner_strides_type && strides,
inner_backstrides_type && backstrides,
layout_type && layout 
)
+
+inlineexplicitprotectednoexcept
+
+ +

Definition at line 870 of file xcontainer.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ backstrides_impl() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::backstrides_impl () const
+
+inlineprotectednoexcept
+
+ +

Definition at line 915 of file xcontainer.hpp.

+ +
+
+ +

◆ backstrides_impl() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::backstrides_impl ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 909 of file xcontainer.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
bool xt::xstrided_container< D >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 931 of file xcontainer.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
layout_type xt::xstrided_container< D >::layout () const
+
+inlinenoexcept
+
+ +

Return the layout_type of the container.

+
Returns
layout_type of the container
+ +

Definition at line 925 of file xcontainer.hpp.

+ +
+
+ +

◆ mutable_layout()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::mutable_layout ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 1186 of file xcontainer.hpp.

+ +
+
+ +

◆ reshape() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto & xt::xstrided_container< D >::reshape (S && shape,
layout_type layout = base_type::static_layout 
) &
+
+inline
+
+ +

Reshapes the container and keeps old elements.

+

The shape argument can have one of its value equal to -1, in this case the value is inferred from the number of elements in the container and the remaining values in the shape.

xt::xarray<int> a = { 1, 2, 3, 4, 5, 6, 7, 8 };
+
a.reshape({-1, 4});
+
//a.shape() is {2, 4}
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
auto & reshape(S &&shape, layout_type layout=base_type::static_layout) &
Reshapes the container and keeps old elements.
+
Parameters
+ + + +
shapethe new shape (has to have same number of elements as the original container)
layoutthe layout to compute the strides (defaults to static layout of the container, or for a container with dynamic layout to XTENSOR_DEFAULT_LAYOUT)
+
+
+ +

Definition at line 1094 of file xcontainer.hpp.

+ +
+
+ +

◆ reshape() [2/2]

+ +
+
+
+template<class D >
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto & xt::xstrided_container< D >::reshape (std::initializer_list< T > shape,
layout_type layout = base_type::static_layout 
) &
+
+inline
+
+ +

Definition at line 1106 of file xcontainer.hpp.

+ +
+
+ +

◆ reshape_impl() [1/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::xstrided_container< D >::reshape_impl (S && shape,
std::false_type ,
layout_type layout = base_type::static_layout 
)
+
+inlineprotected
+
+ +

Definition at line 1118 of file xcontainer.hpp.

+ +
+
+ +

◆ reshape_impl() [2/2]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void xt::xstrided_container< D >::reshape_impl (S && shape,
std::true_type ,
layout_type layout = base_type::static_layout 
)
+
+inlineprotected
+
+ +

Definition at line 1145 of file xcontainer.hpp.

+ +
+
+ +

◆ resize() [1/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xstrided_container< D >::resize (S && shape,
bool force = false 
)
+
+inline
+
+ +

Resizes the container.

+
Warning
Contrary to STL containers like std::vector, resize does NOT preserve the container elements.
+
Parameters
+ + + +
shapethe new shape
forceforce reshaping, even if the shape stays the same (default: false)
+
+
+ +

Definition at line 1000 of file xcontainer.hpp.

+ +
+
+ +

◆ resize() [2/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xstrided_container< D >::resize (S && shape,
const strides_type & strides 
)
+
+inline
+
+ +

Resizes the container.

+
Warning
Contrary to STL containers like std::vector, resize does NOT preserve the container elements.
+
Parameters
+ + + +
shapethe new shape
stridesthe new strides
+
+
+ +

Definition at line 1058 of file xcontainer.hpp.

+ +
+
+ +

◆ resize() [3/3]

+ +
+
+
+template<class D >
+
+template<class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xstrided_container< D >::resize (S && shape,
layout_type l 
)
+
+inline
+
+ +

Resizes the container.

+
Warning
Contrary to STL containers like std::vector, resize does NOT preserve the container elements.
+
Parameters
+ + + +
shapethe new shape
lthe new layout_type
+
+
+ +

Definition at line 1032 of file xcontainer.hpp.

+ +
+
+ +

◆ shape_impl() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::shape_impl () const
+
+inlineprotectednoexcept
+
+ +

Definition at line 891 of file xcontainer.hpp.

+ +
+
+ +

◆ shape_impl() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::shape_impl ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 885 of file xcontainer.hpp.

+ +
+
+ +

◆ strides_impl() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::strides_impl () const
+
+inlineprotectednoexcept
+
+ +

Definition at line 903 of file xcontainer.hpp.

+ +
+
+ +

◆ strides_impl() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_container< D >::strides_impl ()
+
+inlineprotectednoexcept
+
+ +

Definition at line 897 of file xcontainer.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xstrided__container.js b/classxt_1_1xstrided__container.js new file mode 100644 index 000000000..d04c8971a --- /dev/null +++ b/classxt_1_1xstrided__container.js @@ -0,0 +1,8 @@ +var classxt_1_1xstrided__container = +[ + [ "layout", "classxt_1_1xstrided__container.html#a475028ed0b0719aebc55afe8fc00728e", null ], + [ "reshape", "classxt_1_1xstrided__container.html#ade4f89e605eb5ade6b47507eb411702b", null ], + [ "resize", "classxt_1_1xstrided__container.html#af38c6e8082f27cfbaa445767c14c0110", null ], + [ "resize", "classxt_1_1xstrided__container.html#a9853404ceb5a3d42430c43508abb671b", null ], + [ "resize", "classxt_1_1xstrided__container.html#ac157fa05a058950206b21ed403d969fe", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xstrided__container.png b/classxt_1_1xstrided__container.png new file mode 100644 index 0000000000000000000000000000000000000000..a856627faacb8a30f8a59259affc10397948c5bc GIT binary patch literal 1796 zcmb`IX;f236vtnPiliV$p+yw*AQEvo;DTrrf;AMv5+LvbK{iE2P+}CqCQBNrvWP%X za77P>@3tBdat0S-z(Z_Zc5S1c{;@B z^C7=GqrDg!(+DTv-2uq{^jNB069T}ZbR2fCM-)tULl%*bUb-OFq$Q|(Ho5$M(Spjr zSj#)#j3grL7aKY38_(g&r?Q!xA5Flb)q=SwG#A;?kmdA1BKw*)g zvZqg(Zfr0Z24ZTadLJo$66jL5HbPof*|a>eO*kXTy})yEx<9GAr{>M686+sdxzymK zr}h|pi)!JXmF^?`wgOgpF<7z*6l-w(lPHj^#vTzbLcE3!wA2dr)UvS&yz!P6|; zZfVqM0k|1wRuQk<@ywZa_qym^-Y)h!-Ol$Bg8jvY`wkjx)4XC7s5xBrWEaJFc+JgB z5o1DpI|S#@%vxu0V`tTURl_v5w$X! zB~`xg->r#S0RSiQm_8ryQTMcOt4BV48d?1%&I--u18+nFHcx zaBjjG_PcvUtRJSbZeWZ^dNqXo<4Hk9~{#pV0fJLq4s9hxDcIqi1`&eO0$_~ zR!w^{CT4drAVB1!HBwdTTHMOBhcR`dj0yPa;)XFiPEbCc%vv{W_J#S+hkz0yihH9( z<+)0faS291{7)?|r;M|# zNzRQd7z3h(39(`ik&;1Y>#tepX<>ulgwS*#q)fZWwVgPaIUYrGDussFP#6maQA^YL zFJ|%3G#9fRKo#UL$G^&b6v^6+Q~gMN+Lqr40fkNkSL?Z_S-n@iX4#<}HCj{V*=Zl^ z+M+0fTl%$hxQV|jpQqymZ!*n^98_N|^}N$3g>4lF=htuHlCC)@9t_p6{Ifzu{p9nR zc|Br#)6fxkpYE%h%hsd~;HmG5&&PUJ8(Rg8yKTHW{V@JkL#);gHYhjt9AKhXUA z1w_uia7{Q{ejt>Zx%);2Gp9a==qSK^x@kVE{?%6gEQ1;!cozXT2Y6{9{1Bz_p9eQ1 z(H71OfJF6z1coX^hlKxsOpSr%xSd>S)K99aqjQN4^-y^02&S1_ea5noo``^mMbb9w30@?g_Q$TFD;_&<`Zx zdrOWCulhkpj5lz9gRZC#(f0K(WHlzCI)_55d48@a>`4wcw!OA1OcDypEBnx}tvTJ? z`r_z{PP=F;rq9Fqx>#10m&M4svfp3aU{>O{NbGsSFNH`G7QyfiyKNp1a1fEzD!R18 zZ7S|V6{|b8sAB-HV3THisJ9)c#PZZQQE9FOA2V2F=s%%y-*NaJGr#VUfW&#Gr}v~1 z^t8j)KWkowe9?m@86d}80!4vatT(nKC1Gfw9TpNAi8S@1VzCIK0Wy>R#dY1ADyB-3 dfe#iR;Vrxw)sk~dJE8v-fV0J8Io}7+{{V~oW77Zt literal 0 HcmV?d00001 diff --git a/classxt_1_1xstrided__view-members.html b/classxt_1_1xstrided__view-members.html new file mode 100644 index 000000000..35c3a08f0 --- /dev/null +++ b/classxt_1_1xstrided__view-members.html @@ -0,0 +1,297 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xstrided_view< CT, S, L, FST > Member List
+
+
+ +

This is the complete list of members for xt::xstrided_view< CT, S, L, FST >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< D >inline
assign_xexpression(const xexpression< E > &e) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
assign_xexpression(const xexpression< E > &e) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
backstrides() const noexceptxt::xstrided_view< CT, S, L, FST >inline
backstrides_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
base_index_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
base_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
broadcast_shape(O &shape, bool reuse_cache=false) constxt::xstrided_view< CT, S, L, FST >inline
build_view(E &&e) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
build_view(E &&e) const -> rebind_t< E > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
computed_assign(const xexpression< E > &e) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
computed_assign(const xexpression< E > &e) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
const_container_iterator typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
const_linear_iterator typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
const_pointer typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
const_reference typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
const_reverse_linear_iterator typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
const_stepper typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
container_iterator typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
contiguous_layout (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >static
data() noexcept (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
data() const noexcept (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
data() noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >xt::xstrided_view< CT, S, L, FST >inline
data() const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >xt::xstrided_view< CT, S, L, FST >inline
data_alignment typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
data_element(size_type i) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
data_element(size_type i) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
data_offset() const noexceptxt::xstrided_view< CT, S, L, FST >inline
derived_type typedef (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
derived_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >private
difference_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
element(It first, It last) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
element(It first, It last) -> referencext::xstrided_view< CT, S, L, FST >inline
element(It first, It last) const -> const_referencext::xstrided_view< CT, S, L, FST >inline
enable_simd_interface typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
expression() noexceptxt::xstrided_view< CT, S, L, FST >inline
expression() const noexceptxt::xstrided_view< CT, S, L, FST >inline
expression_tag typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
extension_base typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
fill(const T &value)xt::xstrided_view< CT, S, L, FST >inline
flat(size_type i) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
flat(size_type i) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
has_linear_assign(const O &strides) const noexceptxt::xstrided_view< CT, S, L, FST >inline
inner_backstrides_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
inner_shape_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
inner_storage_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
inner_strides_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
is_const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >static
is_contiguous() const noexcept (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
iterable_base typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
layout() const noexceptxt::xstrided_view< CT, S, L, FST >inline
linear_begin() (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_begin() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_cbegin() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_cend() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_crbegin() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_crend() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_end() (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_end() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_iterator typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
linear_rbegin() (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_rbegin() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_rend() (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
linear_rend() const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
load_simd(size_type i) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
load_simd(size_type i) const -> enable_simd_interface< T, simd_return_type< requested_type > > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const self_type &) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
operator=(const xexpression< E > &e) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
operator=(const E &e) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
operator=(const xexpression< E > &e) -> self_type &xt::xstrided_view< CT, S, L, FST >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
operator=(const xview_semantic &)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(xview_semantic &&)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >private
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >private
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >private
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
rebind_t typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
reference typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
reverse_linear_iterator typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
scalar_computed_assign(const E &e, F &&f) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
scalar_computed_assign(const E &e, F &&f) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
self_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
semantic_base typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
shape() const noexceptxt::xstrided_view< CT, S, L, FST >inline
xt::xaccessible::shape(size_type index) constxt::xconst_accessible< D >inlineprivate
shape_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
simd_return_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
simd_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
simd_value_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
size_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
static_layout (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >static
stepper typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_begin(const ST &shape) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_begin(const ST &shape) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_begin(const ST &shape) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_begin(const ST &shape) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_begin(const ST &shape) -> disable_indexed_stepper_t< STEP > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
stepper_begin(const ST &shape) const -> disable_indexed_stepper_t< STEP > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
stepper_end(const ST &shape, layout_type l) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_end(const ST &shape, layout_type l) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_end(const ST &shape, layout_type l) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_end(const ST &shape, layout_type l) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
stepper_end(const ST &shape, layout_type l) -> disable_indexed_stepper_t< STEP > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
stepper_end(const ST &shape, layout_type l) const -> disable_indexed_stepper_t< STEP > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
storage() noexceptxt::xstrided_view< CT, S, L, FST >inline
storage() const noexceptxt::xstrided_view< CT, S, L, FST >inline
storage_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
store_simd(size_type i, const simd &e) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
store_simd(size_type i, const simd &e) -> enable_simd_interface< T, void > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >inline
strides() const noexceptxt::xstrided_view< CT, S, L, FST >inline
strides_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
temporary_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
unchecked(Args... args) (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
unchecked(Args... args) const (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
unchecked(Args... args) -> referencext::xstrided_view< CT, S, L, FST >inline
unchecked(Args... args) const -> const_referencext::xstrided_view< CT, S, L, FST >inline
value_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
xaccessible< self_type > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >friend
xaxis_iterator (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >friend
xaxis_slice_iterator (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >friend
xconst_accessible< self_type > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >friend
xexpression_type typedef (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xstepper (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >friend
xstrided_view(CTA &&e, SA &&shape, strides_type &&strides, std::size_t offset, layout_type layout) noexceptxt::xstrided_view< CT, S, L, FST >inline
xstrided_view(const xstrided_view &rhs)=default (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >
xview_semantic()=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic(const xview_semantic &)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic(xview_semantic &&)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic< self_type > (defined in xt::xstrided_view< CT, S, L, FST >)xt::xstrided_view< CT, S, L, FST >friend
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xview_semantic()=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
+
+ + + + diff --git a/classxt_1_1xstrided__view.html b/classxt_1_1xstrided__view.html new file mode 100644 index 000000000..5df9dbf18 --- /dev/null +++ b/classxt_1_1xstrided__view.html @@ -0,0 +1,3318 @@ + + + + + + + +xtensor: xt::xstrided_view< CT, S, L, FST > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xstrided_view< CT, S, L, FST > Class Template Reference
+
+
+ +

View of an xexpression using strides. + More...

+ +

#include <xstrided_view.hpp>

+
+Inheritance diagram for xt::xstrided_view< CT, S, L, FST >:
+
+
+ + +xt::xview_semantic< D > +xt::xstrided_view_base< D > +xt::xsemantic_base< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xstrided_view< CT, S, L, FST >
 
using base_type = xstrided_view_base< self_type >
 
using semantic_base = xview_semantic< self_type >
 
using extension_base = extension::xstrided_view_base_t< CT, S, L, FST >
 
using expression_tag = typename extension_base::expression_tag
 
using xexpression_type = typename base_type::xexpression_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using difference_type = typename base_type::difference_type
 
using inner_storage_type = typename base_type::inner_storage_type
 
using storage_type = typename base_type::storage_type
 
using linear_iterator = typename storage_type::iterator
 
using const_linear_iterator = typename storage_type::const_iterator
 
using reverse_linear_iterator = std::reverse_iterator< linear_iterator >
 
using const_reverse_linear_iterator = std::reverse_iterator< const_linear_iterator >
 
using iterable_base = select_iterable_base_t< L, xexpression_type::static_layout, self_type >
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using temporary_type = typename xcontainer_inner_types< self_type >::temporary_type
 
using base_index_type = xindex_type_t< shape_type >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = typename base_type::bool_load_type
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
template<class T , class R >
using enable_simd_interface = std::enable_if_t< has_simd_interface< T >::value &&L !=layout_type::dynamic, R >
 
using container_iterator = std::conditional_t< is_const, typename storage_type::const_iterator, typename storage_type::iterator >
 
using const_container_iterator = typename storage_type::const_iterator
 
template<class E >
using rebind_t = xstrided_view< E, S, L, typename FST::template rebind_t< E > >
 
- Public Types inherited from xt::xview_semantic< D >
using base_type = xsemantic_base< D >
 
using derived_type = D
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xstrided_view (const xstrided_view &rhs)=default
 
+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
+template<class ST , class STEP = stepper>
disable_indexed_stepper_t< STEP > stepper_begin (const ST &shape)
 
+template<class ST , class STEP = stepper>
disable_indexed_stepper_t< STEP > stepper_end (const ST &shape, layout_type l)
 
+template<class ST , class STEP = stepper>
enable_indexed_stepper_t< STEP > stepper_begin (const ST &shape)
 
+template<class ST , class STEP = stepper>
enable_indexed_stepper_t< STEP > stepper_end (const ST &shape, layout_type l)
 
+template<class ST , class STEP = const_stepper>
disable_indexed_stepper_t< STEP > stepper_begin (const ST &shape) const
 
+template<class ST , class STEP = const_stepper>
disable_indexed_stepper_t< STEP > stepper_end (const ST &shape, layout_type l) const
 
+template<class ST , class STEP = const_stepper>
enable_indexed_stepper_t< STEP > stepper_begin (const ST &shape) const
 
+template<class ST , class STEP = const_stepper>
enable_indexed_stepper_t< STEP > stepper_end (const ST &shape, layout_type l) const
 
+template<class align , class simd , class T = xexpression_type>
enable_simd_interface< T, void > store_simd (size_type i, const simd &e)
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size, class T = xexpression_type>
enable_simd_interface< T, simd_return_type< requested_type > > load_simd (size_type i) const
 
+template<class E >
rebind_t< E > build_view (E &&e) const
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the xtrided_view_base.
 
bool is_contiguous () const noexcept
 
layout_type layout () const noexcept
 Returns the layout of the xtrided_view_base.
 
const inner_shape_type & shape () const noexcept
 Returns the shape of the xtrided_view_base.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the xtrided_view_base.
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
+template<class E = xexpression_type, class ST = storage_type>
std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer > data () noexcept
 
+template<class E = xexpression_type, class ST = storage_type>
std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer > data () const noexcept
 
template<class E , class ST >
auto data () noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >
 Returns a pointer to the underlying array serving as element storage.
 
template<class E , class ST >
auto data () const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >
 Returns a constant pointer to the underlying array serving as element storage.
 
size_type data_offset () const noexcept
 Returns the offset to the first element in the view.
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the view.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the view.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the view.
 
template<class O >
bool broadcast_shape (O &shape, bool reuse_cache=false) const
 Broadcast the shape of the view to the specified parameter.
 
template<class O >
bool has_linear_assign (const O &strides) const noexcept
 Checks whether the xstrided_view_base can be linearly assigned to an expression with the specified strides.
 
Constructor
template<class CTA , class SA >
 xstrided_view (CTA &&e, SA &&shape, strides_type &&strides, std::size_t offset, layout_type layout) noexcept
 Constructs an xstrided_view.
 
self_typeoperator= (const self_type &)
 
- Public Member Functions inherited from xt::xview_semantic< D >
+template<class E >
derived_type & assign_xexpression (const xexpression< E > &e)
 
+template<class E >
derived_type & computed_assign (const xexpression< E > &e)
 
+template<class E , class F >
derived_type & scalar_computed_assign (const E &e, F &&f)
 
derived_type & assign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
template<class E >
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
template<class E >
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
template<class E , class F >
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
template<class E >
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + +

+Static Public Attributes

static constexpr bool is_const
 
static constexpr bool contiguous_layout
 
static constexpr layout_type static_layout
 
+ + + + + + + + + + + + + + + + +

+Friends

template<class C >
class xstepper
 
class xview_semantic< self_type >
 
class xaccessible< self_type >
 
class xconst_accessible< self_type >
 
template<class D >
class xaxis_iterator
 
template<class D >
class xaxis_slice_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

template<class T >
void fill (const T &value)
 Fills the view with the given value.
 
linear_iterator linear_begin ()
 
linear_iterator linear_end ()
 
const_linear_iterator linear_begin () const
 
const_linear_iterator linear_end () const
 
const_linear_iterator linear_cbegin () const
 
const_linear_iterator linear_cend () const
 
reverse_linear_iterator linear_rbegin ()
 
reverse_linear_iterator linear_rend ()
 
const_reverse_linear_iterator linear_rbegin () const
 
const_reverse_linear_iterator linear_rend () const
 
const_reverse_linear_iterator linear_crbegin () const
 
const_reverse_linear_iterator linear_crend () const
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 
const_reference flat (size_type i) const
 
template<class ST , class STEP >
auto stepper_begin (const ST &shape) -> disable_indexed_stepper_t< STEP >
 
template<class ST , class STEP >
auto stepper_end (const ST &shape, layout_type l) -> disable_indexed_stepper_t< STEP >
 
template<class ST , class STEP >
auto stepper_begin (const ST &shape) const -> disable_indexed_stepper_t< STEP >
 
template<class ST , class STEP >
auto stepper_end (const ST &shape, layout_type l) const -> disable_indexed_stepper_t< STEP >
 
template<class alignment , class simd , class T >
auto store_simd (size_type i, const simd &e) -> enable_simd_interface< T, void >
 
template<class alignment , class requested_type , std::size_t N, class T >
auto load_simd (size_type i) const -> enable_simd_interface< T, simd_return_type< requested_type > >
 
template<class E >
auto build_view (E &&e) const -> rebind_t< E >
 
+ + + + + + + + +

Extended copy semantic

template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xview_semantic< D >
xview_semantic (const xview_semantic &)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class CT, class S, layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+class xt::xstrided_view< CT, S, L, FST >

View of an xexpression using strides.

+

The xstrided_view class implements a view utilizing an initial offset and strides.

+
Template Parameters
+ + + + + +
CTthe closure type of the xexpression type underlying this view
Lthe layout of the strided view
Sthe strides type of the strided view
FSTthe flat storage type used for the strided view
+
+
+
See also
strided_view, transpose
+ +

Definition at line 129 of file xstrided_view.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 167 of file xstrided_view.hpp.

+ +
+
+ +

◆ base_index_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::base_index_type = xindex_type_t<shape_type>
+
+ +

Definition at line 176 of file xstrided_view.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::base_type = xstrided_view_base<self_type>
+
+ +

Definition at line 138 of file xstrided_view.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::bool_load_type = typename base_type::bool_load_type
+
+ +

Definition at line 181 of file xstrided_view.hpp.

+ +
+
+ +

◆ const_container_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::const_container_iterator = typename storage_type::const_iterator
+
+ +

Definition at line 277 of file xstrided_view.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::const_linear_iterator = typename storage_type::const_iterator
+
+ +

Definition at line 157 of file xstrided_view.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 150 of file xstrided_view.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 148 of file xstrided_view.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::const_reverse_linear_iterator = std::reverse_iterator<const_linear_iterator>
+
+ +

Definition at line 159 of file xstrided_view.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 170 of file xstrided_view.hpp.

+ +
+
+ +

◆ container_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::container_iterator = std:: conditional_t<is_const, typename storage_type::const_iterator, typename storage_type::iterator>
+
+ +

Definition at line 275 of file xstrided_view.hpp.

+ +
+
+ +

◆ data_alignment

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::data_alignment = xt_simd::container_alignment_t<storage_type>
+
+ +

Definition at line 178 of file xstrided_view.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::difference_type = typename base_type::difference_type
+
+ +

Definition at line 152 of file xstrided_view.hpp.

+ +
+
+ +

◆ enable_simd_interface

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class T , class R >
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::enable_simd_interface = std::enable_if_t<has_simd_interface<T>::value && L != layout_type::dynamic, R>
+
+ +

Definition at line 258 of file xstrided_view.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 141 of file xstrided_view.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::extension_base = extension::xstrided_view_base_t<CT, S, L, FST>
+
+ +

Definition at line 140 of file xstrided_view.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 164 of file xstrided_view.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 162 of file xstrided_view.hpp.

+ +
+
+ +

◆ inner_storage_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::inner_storage_type = typename base_type::inner_storage_type
+
+ +

Definition at line 154 of file xstrided_view.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 163 of file xstrided_view.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::iterable_base = select_iterable_base_t<L, xexpression_type::static_layout, self_type>
+
+ +

Definition at line 161 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::linear_iterator = typename storage_type::iterator
+
+ +

Definition at line 156 of file xstrided_view.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::pointer = typename base_type::pointer
+
+ +

Definition at line 149 of file xstrided_view.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::rebind_t = xstrided_view<E, S, L, typename FST::template rebind_t<E> >
+
+ +

Definition at line 280 of file xstrided_view.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::reference = typename base_type::reference
+
+ +

Definition at line 147 of file xstrided_view.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::reverse_linear_iterator = std::reverse_iterator<linear_iterator>
+
+ +

Definition at line 158 of file xstrided_view.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::self_type = xstrided_view<CT, S, L, FST>
+
+ +

Definition at line 137 of file xstrided_view.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::semantic_base = xview_semantic<self_type>
+
+ +

Definition at line 139 of file xstrided_view.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 165 of file xstrided_view.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class requested_type >
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 255 of file xstrided_view.hpp.

+ +
+
+ +

◆ simd_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::simd_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 179 of file xstrided_view.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 180 of file xstrided_view.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::size_type = typename base_type::size_type
+
+ +

Definition at line 151 of file xstrided_view.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 169 of file xstrided_view.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 155 of file xstrided_view.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 166 of file xstrided_view.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::temporary_type = typename xcontainer_inner_types<self_type>::temporary_type
+
+ +

Definition at line 175 of file xstrided_view.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::value_type = typename base_type::value_type
+
+ +

Definition at line 146 of file xstrided_view.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + +
using xt::xstrided_view< CT, S, L, FST >::xexpression_type = typename base_type::xexpression_type
+
+ +

Definition at line 143 of file xstrided_view.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xstrided_view()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class CTA , class SA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xstrided_view< CT, S, L, FST >::xstrided_view (CTA && e,
SA && shape,
strides_type && strides,
std::size_t offset,
layout_type layout 
)
+
+inlinenoexcept
+
+ +

Constructs an xstrided_view.

+
Parameters
+ + + + + + +
ethe underlying xexpression for this view
shapethe shape of the view
stridesthe strides of the view
offsetthe offset of the first element in the underlying container
layoutthe layout of the view
+
+
+ +

Definition at line 370 of file xstrided_view.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ backstrides()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::backstrides () const
+
+inlinenoexcept
+
+ +

Returns the backstrides of the xtrided_view_base.

+ +

Definition at line 145 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xstrided_view_base< D >::broadcast_shape (O & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the view to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 184 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ build_view()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::build_view (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 694 of file xstrided_view.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E , class ST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::data () const -> std::enable_if_t<detail::provides_data_interface<E, ST>::value, const_pointer> +
+
+inlinenoexcept
+
+ +

Returns a constant pointer to the underlying array serving as element storage.

+

The first element of the view is at data() + data_offset().

+ +

Definition at line 594 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E , class ST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::data () -> std::enable_if_t<detail::provides_data_interface<E, ST>::value, pointer> +
+
+inlinenoexcept
+
+ +

Returns a pointer to the underlying array serving as element storage.

+

The first element of the view is at data() + data_offset().

+ +

Definition at line 582 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ data_element() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::data_element (size_type i)
+
+inline
+
+ +

Definition at line 464 of file xstrided_view.hpp.

+ +
+
+ +

◆ data_element() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::data_element (size_type i) const
+
+inline
+
+ +

Definition at line 470 of file xstrided_view.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::data_offset () const
+
+inlinenoexcept
+
+ +

Returns the offset to the first element in the view.

+ +

Definition at line 178 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view_base< D >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the the number of dimensions of the view..
+
+
+ +

Definition at line 537 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view_base< D >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the the number of dimensions of the view..
+
+
+ +

Definition at line 552 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the view.

+ +

Definition at line 181 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::expression ()
+
+inlinenoexcept
+
+ +

Returns a reference to the underlying expression of the view.

+ +

Definition at line 180 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xstrided_view< CT, S, L, FST >::fill (const T & value)
+
+inline
+
+ +

Fills the view with the given value.

+
Parameters
+ + +
valuethe value to fill the view with.
+
+
+ +

Definition at line 449 of file xstrided_view.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::flat (size_type i)
+
+inline
+
+ +

Definition at line 476 of file xstrided_view.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::flat (size_type i) const
+
+inline
+
+ +

Definition at line 482 of file xstrided_view.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class O >
+ + + + + +
+ + + + + + + + +
bool xt::xstrided_view_base< D >::has_linear_assign (const O & str) const
+
+inlinenoexcept
+
+ +

Checks whether the xstrided_view_base can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 187 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
bool xt::xstrided_view_base< D >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 147 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout of the xtrided_view_base.

+ +

Definition at line 146 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_begin ()
+
+inline
+
+ +

Definition at line 488 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_begin () const
+
+inline
+
+ +

Definition at line 500 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_cbegin () const
+
+inline
+
+ +

Definition at line 512 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_cend () const
+
+inline
+
+ +

Definition at line 518 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_crbegin () const
+
+inline
+
+ +

Definition at line 548 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_crend () const
+
+inline
+
+ +

Definition at line 554 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_end ()
+
+inline
+
+ +

Definition at line 494 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_end () const
+
+inline
+
+ +

Definition at line 506 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_rbegin ()
+
+inline
+
+ +

Definition at line 524 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_rbegin () const
+
+inline
+
+ +

Definition at line 536 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_rend ()
+
+inline
+
+ +

Definition at line 530 of file xstrided_view.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::linear_rend () const
+
+inline
+
+ +

Definition at line 542 of file xstrided_view.hpp.

+ +
+
+ +

◆ load_simd()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class alignment , class requested_type , std::size_t N, class T >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::load_simd (size_type i) const -> enable_simd_interface<T, simd_return_type<requested_type>> +
+
+inline
+
+ +

Definition at line 685 of file xstrided_view.hpp.

+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 408 of file xstrided_view.hpp.

+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::operator= (const self_typerhs)
+
+inline
+
+ +

Definition at line 384 of file xstrided_view.hpp.

+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 399 of file xstrided_view.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the xtrided_view_base.

+ +

Definition at line 143 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class ST , class STEP >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::stepper_begin (const ST & shape) -> disable_indexed_stepper_t<STEP> +
+
+inline
+
+ +

Definition at line 565 of file xstrided_view.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class ST , class STEP >
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::stepper_begin (const ST & shape) const -> disable_indexed_stepper_t<STEP> +
+
+inline
+
+ +

Definition at line 599 of file xstrided_view.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class ST , class STEP >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::stepper_end (const ST & shape,
layout_type l 
) -> disable_indexed_stepper_t<STEP> +
+
+inline
+
+ +

Definition at line 573 of file xstrided_view.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L, class FST >
+
+template<class ST , class STEP >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::stepper_end (const ST & shape,
layout_type l 
) const -> disable_indexed_stepper_t<STEP> +
+
+inline
+
+ +

Definition at line 608 of file xstrided_view.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::storage () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the buffer containing the elements of the view.

+ +

Definition at line 172 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::storage ()
+
+inlinenoexcept
+
+ +

Returns a reference to the buffer containing the elements of the view.

+ +

Definition at line 171 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ store_simd()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class alignment , class simd , class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view< CT, S, L, FST >::store_simd (size_type i,
const simd & e 
) -> enable_simd_interface<T, void> +
+
+inline
+
+ +

Definition at line 676 of file xstrided_view.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::strides () const
+
+inlinenoexcept
+
+ +

Returns the strides of the xtrided_view_base.

+ +

Definition at line 144 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 495 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
+ +

Definition at line 522 of file xstrided_view_base.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xaccessible< self_type >

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
friend class xaccessible< self_type >
+
+friend
+
+ +

Definition at line 303 of file xstrided_view.hpp.

+ +
+
+ +

◆ xaxis_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class D >
+ + + + + +
+ + + + +
friend class xaxis_iterator
+
+friend
+
+ +

Definition at line 308 of file xstrided_view.hpp.

+ +
+
+ +

◆ xaxis_slice_iterator

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class D >
+ + + + + +
+ + + + +
friend class xaxis_slice_iterator
+
+friend
+
+ +

Definition at line 310 of file xstrided_view.hpp.

+ +
+
+ +

◆ xconst_accessible< self_type >

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
friend class xconst_accessible< self_type >
+
+friend
+
+ +

Definition at line 303 of file xstrided_view.hpp.

+ +
+
+ +

◆ xstepper

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+
+template<class C >
+ + + + + +
+ + + + +
friend class xstepper
+
+friend
+
+ +

Definition at line 303 of file xstrided_view.hpp.

+ +
+
+ +

◆ xview_semantic< self_type >

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
friend class xview_semantic< self_type >
+
+friend
+
+ +

Definition at line 303 of file xstrided_view.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
constexpr bool xt::xstrided_view_base< D >::contiguous_layout
+
+staticconstexpr
+
+ +

Definition at line 133 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ is_const

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
constexpr bool xt::xstrided_view_base< D >::is_const
+
+staticconstexpr
+
+ +

Definition at line 104 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT , class S , layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, ::xt::layout_type::row_major >>
+ + + + + +
+ + + + +
constexpr layout_type xt::xstrided_view_base< D >::static_layout
+
+staticconstexpr
+
+ +

Definition at line 132 of file xstrided_view_base.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xmime.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xstrided_view.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xstrided__view.js b/classxt_1_1xstrided__view.js new file mode 100644 index 000000000..5dbd19bd8 --- /dev/null +++ b/classxt_1_1xstrided__view.js @@ -0,0 +1,23 @@ +var classxt_1_1xstrided__view = +[ + [ "xstrided_view", "classxt_1_1xstrided__view.html#aeaca42937cad665d96b797421f114cca", null ], + [ "backstrides", "classxt_1_1xstrided__view.html#a736dcfe2b1e0a157f89a7a4c6445edd9", null ], + [ "broadcast_shape", "classxt_1_1xstrided__view.html#a6a79ebace6f36cfb560248f093b7dfa2", null ], + [ "data", "classxt_1_1xstrided__view.html#a61c10852dc6045824b3ce20e7516a73f", null ], + [ "data", "classxt_1_1xstrided__view.html#ad19027df5f748eba80386ae9330fca79", null ], + [ "data_offset", "classxt_1_1xstrided__view.html#ab4fb45717672e9ff1681c360d8199ed5", null ], + [ "element", "classxt_1_1xstrided__view.html#a76377f2b31c5086bd56c169f39ab8e6b", null ], + [ "element", "classxt_1_1xstrided__view.html#a0410b18c9448ceb36193b2b740d0419a", null ], + [ "expression", "classxt_1_1xstrided__view.html#a94e4948a88657428eb50b1a92c4c2a43", null ], + [ "expression", "classxt_1_1xstrided__view.html#af4ec4a5c434d543b6c664f4572c849d4", null ], + [ "fill", "classxt_1_1xstrided__view.html#a2e8596cc0e323e5d8e884c5f88b00b8b", null ], + [ "has_linear_assign", "classxt_1_1xstrided__view.html#a5264e47f30486f83a313b654d3dd7199", null ], + [ "layout", "classxt_1_1xstrided__view.html#a10da93fc02c2c53dde8d9f171ce053a6", null ], + [ "operator=", "classxt_1_1xstrided__view.html#a48ae99185454667efcd738a48ddc43bf", null ], + [ "shape", "classxt_1_1xstrided__view.html#a7f03137aa8b79f042dd1eb5b769f5256", null ], + [ "storage", "classxt_1_1xstrided__view.html#a8b2e5b2c411cc06b834960f23dea39e7", null ], + [ "storage", "classxt_1_1xstrided__view.html#aeec822654cdb1a74d861e819b1c98730", null ], + [ "strides", "classxt_1_1xstrided__view.html#a60cc5bdc36e03dd0b339e89e16d4080c", null ], + [ "unchecked", "classxt_1_1xstrided__view.html#a4a944cdaddacef0710cc4e601d95a1c8", null ], + [ "unchecked", "classxt_1_1xstrided__view.html#a4ed93202e4e30f980c2967c00e6044c4", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xstrided__view.png b/classxt_1_1xstrided__view.png new file mode 100644 index 0000000000000000000000000000000000000000..77cee4b8ab7ed3047309663d13f961c9cfe334a1 GIT binary patch literal 9961 zcmeG?2~<T{gM;s@fjQ%%#NH|~0Zn*9*QZMbt$-0><|3l!GCl#+mi=xv^2nnO?X!nX zm?Rp{x?a?G?RD)w!#%6W6_od>_V$*ZlJ`i$- zf^JlMR%}d(JcJs3D6MMs9r9cY^!x8Iv$w^`9BXRTpC7~58Og7lhOqB0Ue6(nCE zLc^XECmW=V=qB zup_hm?|(VdKSAWD^bFT(PyN5m2RE+VVpoGcvtP@n^^COdX8b?!LzeQVS0yQaMfNLw8O#!YvE!HuN{P*IcH$Q>p(k*$iEnYcF0dU3;O+pwK;&O?vBV z_8Xrg;u`f7m3nou@r(QRB`vMb`OIm60O+-q_G(d|6KMrF^i3|6%2Suz3n|NKJ3}h7 zVo)rd4Md4Im1^e0&gHbRmm7AGtO#jZJl?S@Bi-k%m|z0?Gy+O8PM_Lu(#xN>oM@X! zJlQT+we!o$HX*|3{y0mdbuD2@vmh&US`DQPGa!BGa7z2t7V{9NJoyf7DF_YGM?wAJ zbn80fXI;pu+|d{Dsxi|bn+F%MjC&>?KAw;?Rki;Bx`WV{TECP1D*6c99_I?{eW>%O^pT8IGZH_f&h zfJl*j$+SsfYT?czFMxR1q%<$$e=xUAN@HeQ*Z;m+OsnCPQqI)IH{TpT7iuTEw(iLG zKfn4Uw8Y6?Q?32&ryo6k!(Iuk{jlD#ikWuj(@*PBKAfaKLGk!Alvx1(`_&ZTX5-4g z3UNl9H@8$YRCok?Oh4A7M}#!4TxVDNuC^ppc(g2SsqiSDexyE*^c+4~yz?6TuHV?$O*6TCJeULN#o0NzU zn+X8+kx5-Y-;%I(+W!HLq{LM-$Ct~JXF5TiwC0)CE;S-#*R+!a9Gth@o;lvjp6Mwy z#(GCgTT)=R%8LM|oJptyR4V?rJ<#+RO9E85gpfcG*9V={Ns~{Ihv3yA8)12pq=y z^h(x*0i3S-lI}X}AnAs=l24kvdJTO(+AAy;qst^sF-H2p%{L>4m4UtF&AB#CnU=Cz zj7@g{%nQh?b@{!{t6uDjCM>CFFEHdd7&I5CRD?n^x>YN@09n<*$mPqsZ@*U*oY1UKaAVQn4v`Q7}{p8ncwM zT@%#Q``R%^kmg{|i+Gt{uwf8gq6~E<|ICBrA$iv!%OEr?a-Qn#a_UeXuiy@qn%M!c z7L`B=(7JT1tB3(^YNV;`jGM#iQWL15gblskYS3qB#e+!|~acJ$Uy9 zOJI`IxL8clOBWfHO8610q~tU2PE;lz84P$GPJkhBM|<5P0^RXvrNz9cakZ?g9`+db zE~d<~KQ+3?l;m`evS`p3{I(BET{SOc+lk~R zb{F?6lfE}Hi2S7}11;gHHsvi1KxL$lICTXK0nd&qtH}DVt1*kOKTbZi%P+W6t&*d ze5?v=Td|QjG-49)KXf7I2XBLSVzHg%`8B7c#J93&shYo1AkA&4fO=>4_Llxc93y3d ziVjrKNaYi^7*~$-D#>*}@=g#-{E4F_aihjJn6C1yP=rM)HAS&l%t^g-5kni;pfOr2 z7OrJ}ro&h7zMP(+JbKSBC*!r}mNL0uht^Gi_c$cjg4uTjCyQJ9gov3yC#)qH}Gg3avQK=^6p*j6oZ5ON3VNoS9_AxtJ6EAw6eZL ztRb~pfj!5eEIyWh+OV;%xj(p@phfLF9-lz}AsfAa8;ZG+4en_tX?NY=4_jHpZ11R3 z{1%E;wNxRTQcV0Jh~B3aSQj2&CLRX!FC(vn%oh{{viwl?UR z=&EdJZxlj!y95HBt1~=ZD>iia7BFL;yU1~Aa4l$FhVC1LliH*lMoU{>JV1OMeIsxg_w7-wdKLC06diV~>`2%x@|V>gd^I(YibWA5obtMtqq3;Tn9`{RR3-u zoKfNAFWRZ6wLn(%x-Qgmen0r*-q#@C5>z|UXp1MXWouY$`V-pS13PcRFl9RuR0AA8 zutWJby@>N=dY0GUp|{cd#@x;WF-EW|!Y0kpV-Pk447=Nwt{6L6|%UZ&g92#1iUzrKj zz}kxPv|ORMZ}KS8#LT^*n`_J-bw9kV9Nm0Ie3z9=)-5vnnD-$!?8E;q=e^k>{}uAi zb#f91W870Ep$%22wgZdz&(A7ix2JFlZnUk`ZBX_ti=I0n^U5?WHr@AtK{?^5l1uWi zAvK`*^Q!E=5CV|3MwUqASkQg87XVX+9L!`G;KDB_VS zIaeCj+%h4mqMahUA&wjqzSx!_2@MQp(0;Fl{GGO46!L(1mAlqBut&9iF!^NB9C32Y zhH$WEo0_S1%Lux$LQYvGQ4AaRBj9c3MR;?$F}|{fQ*OGS!7bBxN%2u=B8`gAxs%0$ z1taqSW@I=>q8~F`Gb`W!s;2WYqMsPuO2wg4$7gQh+&Ofz3Q16R&eXE1{3Af;k z#pe+3SWJGozs8eTx45UMnXS~i(;*w#qK=8OF78FsD&w%TJ}f>3+c%Kkxm_VdO|8)7 z32-*l?r#R-$US~ehzcD>!HF;sK5Ec?phE2ZaKvdGod=MeY$bb$#0f(Vrsc@5i-K*EBcY=ltvDwd^p&&60vklpCw7m{`HoB{`G6< z{Ic-(37|(vbtZZNUu-_w`Q2C!3mSlMC zY#MlWsf65~rk>Lt^AyK`2R17&&(F+3bNkyWv-Md-CAT73m(Mq2<}oB)ME((?(wTzC zgd-0}<1JHr{)6b9t^H}N5ouf}l&y4o=DtEXxA*d8SCwA=GpBZJhl63uUHP_z#~S=2 z6Kssm;(ntDJuao(3iC6_S9KYFz$YwE{90V2zQK%<;y38>fX($OK%+QL^8l->^0Hdp=AawwD-GC&!W9$D?x!$O=_nE$K04CLZ>l0b zt38!N)JlfvIkEeCOv7&PsTK{!98ht}EOa^{s%DWkDoreRCxz#y7+PhYA$~|JKA~uc z+9~UQAz#z=xHcjAT&LVm#udEID^kn(boqW^EYB-P&gkolnW&A33K!=k=tOm3;Isfo zrbzfpOw|~kOxX0G>4f|*h8n}3XBsI~NL)brf$zZEoZ{T5Iw5c{!=68^uayK1Bn4Rl z2a*p)ua;bC9NOdA#?{>LO!wauew&^DG04@h-i1*-w!PLhU$6hjKYzTxF#8M5(E8+C zX1zmo4h)@2t}ujETr5|-8wi}DqF^COx&sRN6Hh_iwMx@1w6rxOzCE2~sE`)iYe0ofE&v{kuve6)b*rQfks^W9ztrP%vDk4SePi_IR#|M;GJ{;GXS-N<-;evP;ZKw| zSA@{l1KI?bmoA(CCtO!^lFAv@`w6&toScGjB#vCA5g;}>2n;%DXq78em|o93_59F2obwud_D3y%kYypkSiYTIR)8rS}cZ-$C+Nb zkeH9bzg3e`Axo~$f25Ya+40B!L80(*aNKn&;H&}EB0wHl9ZYNxaNGcV6|&V=adJjR zLWR6uh+K6=0^4E8W%$D^Wz@R#cIf8gNn6M!x#|Y zbOsdo*e9H1vA8Kay64lAN~N+9 zyIh=}6!1-^CnY;>wRyCf2JWJ}>)tvD)#%KX=aEAS?=dF_tQDO_{{S6J-#Qvq53=&d zvE&=H?$N~7T5ewTx*igsX~3as+oT`NYiPfzh4totM|8@=KHv}l$4h2x@YoN<^{2$u zQHLyddf5RZrzSM_CBfNyN8p)kLi#*Hc)jUY@KZ6ap5jesVH0&n&^p1yNx-=@-$T=g zQ(*w1O6}xe@adV5LE@moCrW^|6t$DpaXQyj@ErJ236Nj9ECcWy%11nouwEXJt` zE>8tYe>6tys5oW)1bo!nHr0e|GF`??#dO#*Z9jQ@VEZ;A#F}@*nzJTfGYVnbtZ{H3 zx8OGcl(NJ2J57bf$HBIAUH8>jKC~qjcp0|*-ldA4Y-^naYE6j{9=&DFt>oSNz_!qQ z;Tym&uFTas>3E_o*XQGY`u{no(2_?R|C@i$Z~hUSt|zqFh+v;&DsKAsD=R(lm+WqV z05?Kjy$Esv#ka4oUd-4cE3~h#-Uf-```TCHD*NQXNOxl)%D%e1dL_hHcE+x5fAt;; zioXiQpE#}H-XWe=@kCp}-dy85jTD7KCBG@u7#0_8>PkFh!+=m?)&1$>h-meVZ}pXd zstwB-o`^7up2OQ;W9+EKm-G|W*u_($-ZN7^xi(ykxiGkNys|6|PG`e#zW50prbi*; z+=^^Q6}A5=b6*j@R=h@1sE8W(k!pQxOZKYk&BH(;qj>q}Fgvx1NSUWHIfgIE88%2VFv1H3g1wda)G)4E*>UA;a%?89LW&Ae_}d{I`NE0o0EY=TXJZ?{`^l<)^?sC1?f}7@tg + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xstrided_view_base< D > Member List
+
+
+ +

This is the complete list of members for xt::xstrided_view_base< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(Args... args) (defined in xt::xaccessible< D >)xt::xaccessible< D >
at(Args... args) -> referencext::xaccessible< D >inline
at(Args... args) const (defined in xt::xaccessible< D >)xt::xaccessible< D >
at(Args... args) const -> const_referencext::xaccessible< D >inline
back()xt::xaccessible< D >inline
back() constxt::xaccessible< D >inline
backstrides() const noexceptxt::xstrided_view_base< D >inline
backstrides_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
base_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
bool_load_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
broadcast_shape(O &shape, bool reuse_cache=false) constxt::xstrided_view_base< D >inline
compute_element_index(It first, It last) const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >protected
compute_element_index(It first, It last) const -> offset_type (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
compute_index(Args... args) const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >protected
compute_index(Args... args) const -> offset_type (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
compute_unchecked_index(Args... args) const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >protected
compute_unchecked_index(Args... args) const -> offset_type (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
const_pointer typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
const_reference typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
contiguous_layout (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >static
data() noexcept (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
data() const noexcept (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
data() noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >xt::xstrided_view_base< D >inline
data() const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >xt::xstrided_view_base< D >inline
data_offset() const noexceptxt::xstrided_view_base< D >inline
derived_type typedef (defined in xt::xaccessible< D >)xt::xaccessible< D >
difference_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
dimension() const noexceptxt::xconst_accessible< D >inline
element(It first, It last) (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
element(It first, It last) const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
element(It first, It last) -> referencext::xstrided_view_base< D >inline
element(It first, It last) const -> const_referencext::xstrided_view_base< D >inline
expression() noexceptxt::xstrided_view_base< D >inline
expression() const noexceptxt::xstrided_view_base< D >inline
front()xt::xaccessible< D >inline
front() constxt::xaccessible< D >inline
has_linear_assign(const O &strides) const noexceptxt::xstrided_view_base< D >inline
in_bounds(Args... args) constxt::xconst_accessible< D >inline
inner_backstrides_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
inner_shape_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
inner_storage_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
inner_strides_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
inner_types typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
is_const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >static
is_contiguous() const noexcept (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
layout() const noexceptxt::xstrided_view_base< D >inline
offset_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >protected
operator()() (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
operator()() const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
operator()(Args... args) (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
operator()(Args... args) const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
operator()(Args... args) -> referencext::xstrided_view_base< D >inline
operator()(Args... args) const -> const_referencext::xstrided_view_base< D >inline
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator[](const S &index) (defined in xt::xaccessible< D >)xt::xaccessible< D >
operator[](std::initializer_list< I > index) (defined in xt::xaccessible< D >)xt::xaccessible< D >
operator[](size_type i) (defined in xt::xaccessible< D >)xt::xaccessible< D >inline
operator[](const S &index) -> disable_integral_t< S, reference >xt::xaccessible< D >inline
operator[](std::initializer_list< I > index) -> reference (defined in xt::xaccessible< D >)xt::xaccessible< D >inline
operator[](const S &index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](std::initializer_list< I > index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](size_type i) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
periodic(Args... args) (defined in xt::xaccessible< D >)xt::xaccessible< D >
periodic(Args... args) -> referencext::xaccessible< D >inline
periodic(Args... args) const (defined in xt::xaccessible< D >)xt::xaccessible< D >
periodic(Args... args) const -> const_referencext::xaccessible< D >inline
pointer typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
reference typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
set_offset(size_type offset) (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >protected
shape() const noexceptxt::xstrided_view_base< D >inline
xt::xaccessible::shape(size_type index) constxt::xconst_accessible< D >inline
shape_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
simd_value_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
size() const noexceptxt::xconst_accessible< D >inline
size_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
static_layout (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >static
storage() noexceptxt::xstrided_view_base< D >inline
storage() const noexceptxt::xstrided_view_base< D >inline
storage_getter typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
storage_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
strides() const noexceptxt::xstrided_view_base< D >inline
strides_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
unchecked(Args... args) (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
unchecked(Args... args) const (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
unchecked(Args... args) -> referencext::xstrided_view_base< D >inline
unchecked(Args... args) const -> const_referencext::xstrided_view_base< D >inline
undecay_expression typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
undecay_shape typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
value_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
xaccessible()=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
xaccessible(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
xaccessible(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xexpression_type typedef (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >
xstrided_view_base(CTA &&e, SA &&shape, strides_type &&strides, size_type offset, layout_type layout) noexceptxt::xstrided_view_base< D >inline
xstrided_view_base(xstrided_view_base &&rhs) (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
xstrided_view_base(const xstrided_view_base &rhs) (defined in xt::xstrided_view_base< D >)xt::xstrided_view_base< D >inline
~xaccessible()=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
~xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
+
+ + + + diff --git a/classxt_1_1xstrided__view__base.html b/classxt_1_1xstrided__view__base.html new file mode 100644 index 000000000..88817b15e --- /dev/null +++ b/classxt_1_1xstrided__view__base.html @@ -0,0 +1,2106 @@ + + + + + + + +xtensor: xt::xstrided_view_base< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xstrided_view_base< D > Class Template Reference
+
+
+
+Inheritance diagram for xt::xstrided_view_base< D >:
+
+
+ + +xt::xaccessible< D > +xt::xconst_accessible< D > +xt::xstrided_view< CT, shape_type > +xt::xdynamic_view< CT, S, L, FST > +xt::xstrided_view< CT, S, L, FST > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using base_type = xaccessible< D >
 
using inner_types = xcontainer_inner_types< D >
 
using xexpression_type = typename inner_types::xexpression_type
 
using undecay_expression = typename inner_types::undecay_expression
 
using value_type = typename xexpression_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = std::conditional_t< is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer >
 
using const_pointer = typename xexpression_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using storage_getter = typename inner_types::storage_getter
 
using inner_storage_type = typename inner_types::inner_storage_type
 
using storage_type = std::remove_reference_t< inner_storage_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = get_strides_t< shape_type >
 
using backstrides_type = strides_type
 
using inner_shape_type = shape_type
 
using inner_strides_type = strides_type
 
using inner_backstrides_type = backstrides_type
 
using undecay_shape = typename inner_types::undecay_shape
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = typename xexpression_type::bool_load_type
 
- Public Types inherited from xt::xaccessible< D >
using base_type = xconst_accessible< D >
 
using derived_type = typename base_type::derived_type
 
using reference = typename base_type::reference
 
using size_type = typename base_type::size_type
 
- Public Types inherited from xt::xconst_accessible< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class E = xexpression_type, class ST = storage_type>
std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer > data () noexcept
 
+template<class E = xexpression_type, class ST = storage_type>
std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer > data () const noexcept
 
Constructor
template<class CTA , class SA >
 xstrided_view_base (CTA &&e, SA &&shape, strides_type &&strides, size_type offset, layout_type layout) noexcept
 Constructs an xstrided_view_base.
 
 xstrided_view_base (xstrided_view_base &&rhs)
 
 xstrided_view_base (const xstrided_view_base &rhs)
 
Size and shape
const inner_shape_type & shape () const noexcept
 Returns the shape of the xtrided_view_base.
 
const inner_strides_type & strides () const noexcept
 Returns the strides of the xtrided_view_base.
 
const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the xtrided_view_base.
 
layout_type layout () const noexcept
 Returns the layout of the xtrided_view_base.
 
bool is_contiguous () const noexcept
 
Data
reference operator() ()
 
const_reference operator() () const
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the view.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the view.
 
size_type data_offset () const noexcept
 Returns the offset to the first element in the view.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a constant reference to the underlying expression of the view.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
template<class E , class ST >
auto data () noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >
 Returns a pointer to the underlying array serving as element storage.
 
template<class E , class ST >
auto data () const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >
 Returns a constant pointer to the underlying array serving as element storage.
 
- Public Member Functions inherited from xt::xaccessible< D >
+template<class... Args>
reference at (Args... args)
 
+template<class S >
disable_integral_t< S, reference > operator[] (const S &index)
 
+template<class I >
reference operator[] (std::initializer_list< I > index)
 
reference operator[] (size_type i)
 
+template<class... Args>
reference periodic (Args... args)
 
reference front ()
 Returns a reference to the first element of the expression.
 
reference back ()
 Returns a reference to the last element of the expression.
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) -> reference
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
- Public Member Functions inherited from xt::xconst_accessible< D >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+ + + + + + + +

+Static Public Attributes

static constexpr bool is_const = std::is_const<std::remove_reference_t<undecay_expression>>::value
 
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout
 
+ + + +

+Protected Types

using offset_type = typename strides_type::value_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+template<class... Args>
offset_type compute_index (Args... args) const
 
+template<class... Args>
offset_type compute_unchecked_index (Args... args) const
 
+template<class It >
offset_type compute_element_index (It first, It last) const
 
- Protected Member Functions inherited from xt::xaccessible< D >
xaccessible (const xaccessible &)=default
 
+xaccessibleoperator= (const xaccessible &)=default
 
xaccessible (xaccessible &&)=default
 
+xaccessibleoperator= (xaccessible &&)=default
 
- Protected Member Functions inherited from xt::xconst_accessible< D >
xconst_accessible (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+ + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class O >
bool broadcast_shape (O &shape, bool reuse_cache=false) const
 Broadcast the shape of the view to the specified parameter.
 
template<class O >
bool has_linear_assign (const O &strides) const noexcept
 Checks whether the xstrided_view_base can be linearly assigned to an expression with the specified strides.
 
template<class... Args>
auto compute_index (Args... args) const -> offset_type
 
template<class... Args>
auto compute_unchecked_index (Args... args) const -> offset_type
 
template<class It >
auto compute_element_index (It first, It last) const -> offset_type
 
void set_offset (size_type offset)
 
+

Detailed Description

+
template<class D>
+class xt::xstrided_view_base< D >
+

Definition at line 96 of file xstrided_view_base.hpp.

+

Member Typedef Documentation

+ +

◆ backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::backstrides_type = strides_type
+
+ +

Definition at line 121 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::base_type = xaccessible<D>
+
+ +

Definition at line 100 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::bool_load_type = typename xexpression_type::bool_load_type
+
+ +

Definition at line 130 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::const_pointer = typename xexpression_type::const_pointer
+
+ +

Definition at line 111 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 108 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 113 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::inner_backstrides_type = backstrides_type
+
+ +

Definition at line 125 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::inner_shape_type = shape_type
+
+ +

Definition at line 123 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ inner_storage_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::inner_storage_type = typename inner_types::inner_storage_type
+
+ +

Definition at line 116 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::inner_strides_type = strides_type
+
+ +

Definition at line 124 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::inner_types = xcontainer_inner_types<D>
+
+ +

Definition at line 101 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ offset_type

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
using xt::xstrided_view_base< D >::offset_type = typename strides_type::value_type
+
+protected
+
+ +

Definition at line 191 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::pointer = std:: conditional_t<is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer>
+
+ +

Definition at line 109 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::reference = typename inner_types::reference
+
+ +

Definition at line 107 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::shape_type = typename inner_types::shape_type
+
+ +

Definition at line 119 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 129 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::size_type = typename inner_types::size_type
+
+ +

Definition at line 112 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ storage_getter

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::storage_getter = typename inner_types::storage_getter
+
+ +

Definition at line 115 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::storage_type = std::remove_reference_t<inner_storage_type>
+
+ +

Definition at line 117 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::strides_type = get_strides_t<shape_type>
+
+ +

Definition at line 120 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ undecay_expression

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::undecay_expression = typename inner_types::undecay_expression
+
+ +

Definition at line 103 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ undecay_shape

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::undecay_shape = typename inner_types::undecay_shape
+
+ +

Definition at line 127 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::value_type = typename xexpression_type::value_type
+
+ +

Definition at line 106 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xstrided_view_base< D >::xexpression_type = typename inner_types::xexpression_type
+
+ +

Definition at line 102 of file xstrided_view_base.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xstrided_view_base() [1/3]

+ +
+
+
+template<class D >
+
+template<class CTA , class SA >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xstrided_view_base< D >::xstrided_view_base (CTA && e,
SA && shape,
strides_type && strides,
size_type offset,
layout_type layout 
)
+
+inlinenoexcept
+
+ +

Constructs an xstrided_view_base.

+
Parameters
+ + + + + + +
ethe underlying xexpression for this view
shapethe shape of the view
stridesthe strides of the view
offsetthe offset of the first element in the underlying container
layoutthe layout of the view
+
+
+ +

Definition at line 313 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ xstrided_view_base() [2/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
xt::xstrided_view_base< D >::xstrided_view_base (xstrided_view_base< D > && rhs)
+
+inline
+
+ +

Definition at line 351 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ xstrided_view_base() [3/3]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
xt::xstrided_view_base< D >::xstrided_view_base (const xstrided_view_base< D > & rhs)
+
+inline
+
+ +

Definition at line 364 of file xstrided_view_base.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ backstrides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::backstrides () const
+
+inlinenoexcept
+
+ +

Returns the backstrides of the xtrided_view_base.

+ +

Definition at line 404 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class D >
+
+template<class O >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xstrided_view_base< D >::broadcast_shape (O & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the view to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 641 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ compute_element_index()

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view_base< D >::compute_element_index (It first,
It last 
) const -> offset_type +
+
+inline
+
+ +

Definition at line 679 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ compute_index()

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::compute_index (Args... args) const -> offset_type +
+
+inline
+
+ +

Definition at line 663 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ compute_unchecked_index()

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::compute_unchecked_index (Args... args) const -> offset_type +
+
+inline
+
+ +

Definition at line 671 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class D >
+
+template<class E , class ST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::data () const -> std::enable_if_t<detail::provides_data_interface<E, ST>::value, const_pointer> +
+
+inlinenoexcept
+
+ +

Returns a constant pointer to the underlying array serving as element storage.

+

The first element of the view is at data() + data_offset().

+ +

Definition at line 594 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class D >
+
+template<class E , class ST >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::data () -> std::enable_if_t<detail::provides_data_interface<E, ST>::value, pointer> +
+
+inlinenoexcept
+
+ +

Returns a pointer to the underlying array serving as element storage.

+

The first element of the view is at data() + data_offset().

+ +

Definition at line 582 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::data_offset () const
+
+inlinenoexcept
+
+ +

Returns the offset to the first element in the view.

+ +

Definition at line 604 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view_base< D >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the the number of dimensions of the view..
+
+
+ +

Definition at line 537 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class D >
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xstrided_view_base< D >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + + +
firstiterator starting the sequence of indices
lastiterator ending the sequence of indices The number of indices in the sequence should be equal to or greater than the the number of dimensions of the view..
+
+
+ +

Definition at line 552 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::expression () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the underlying expression of the view.

+ +

Definition at line 622 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::expression ()
+
+inlinenoexcept
+
+ +

Returns a reference to the underlying expression of the view.

+ +

Definition at line 613 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class D >
+
+template<class O >
+ + + + + +
+ + + + + + + + +
bool xt::xstrided_view_base< D >::has_linear_assign (const O & str) const
+
+inlinenoexcept
+
+ +

Checks whether the xstrided_view_base can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 653 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
bool xt::xstrided_view_base< D >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 419 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::layout () const
+
+inlinenoexcept
+
+ +

Returns the layout of the xtrided_view_base.

+ +

Definition at line 413 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ operator()() [1/4]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::operator() ()
+
+inline
+
+ +

Definition at line 431 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ operator()() [2/4]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::operator() () const
+
+inline
+
+ +

Definition at line 437 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ operator()() [3/4]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the view.
+
+
+ +

Definition at line 450 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ operator()() [4/4]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the view.
+
+
+ +

Definition at line 466 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ set_offset()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
void xt::xstrided_view_base< D >::set_offset (size_type offset)
+
+protected
+
+ +

Definition at line 685 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the xtrided_view_base.

+ +

Definition at line 386 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::storage () const
+
+inlinenoexcept
+
+ +

Returns a constant reference to the buffer containing the elements of the view.

+ +

Definition at line 571 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::storage ()
+
+inlinenoexcept
+
+ +

Returns a reference to the buffer containing the elements of the view.

+ +

Definition at line 562 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + +
auto xt::xstrided_view_base< D >::strides () const
+
+inlinenoexcept
+
+ +

Returns the strides of the xtrided_view_base.

+ +

Definition at line 395 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 495 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class D >
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xstrided_view_base< D >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.uncheked(0, 1);
+
+ +

Definition at line 522 of file xstrided_view_base.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr bool xt::xstrided_view_base< D >::contiguous_layout
+
+staticconstexpr
+
+Initial value:
= static_layout != layout_type::dynamic
+
&& xexpression_type::contiguous_layout
+ +
+

Definition at line 133 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ is_const

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr bool xt::xstrided_view_base< D >::is_const = std::is_const<std::remove_reference_t<undecay_expression>>::value
+
+staticconstexpr
+
+ +

Definition at line 104 of file xstrided_view_base.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class D >
+ + + + + +
+ + + + +
constexpr layout_type xt::xstrided_view_base< D >::static_layout = inner_types::layout
+
+staticconstexpr
+
+ +

Definition at line 132 of file xstrided_view_base.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xstrided__view__base.js b/classxt_1_1xstrided__view__base.js new file mode 100644 index 000000000..3a93e8914 --- /dev/null +++ b/classxt_1_1xstrided__view__base.js @@ -0,0 +1,23 @@ +var classxt_1_1xstrided__view__base = +[ + [ "xstrided_view_base", "classxt_1_1xstrided__view__base.html#a395bfaa7afcaf17190eaccebd998e1c4", null ], + [ "backstrides", "classxt_1_1xstrided__view__base.html#a736dcfe2b1e0a157f89a7a4c6445edd9", null ], + [ "broadcast_shape", "classxt_1_1xstrided__view__base.html#a6a79ebace6f36cfb560248f093b7dfa2", null ], + [ "data", "classxt_1_1xstrided__view__base.html#a61c10852dc6045824b3ce20e7516a73f", null ], + [ "data", "classxt_1_1xstrided__view__base.html#ad19027df5f748eba80386ae9330fca79", null ], + [ "data_offset", "classxt_1_1xstrided__view__base.html#ab4fb45717672e9ff1681c360d8199ed5", null ], + [ "element", "classxt_1_1xstrided__view__base.html#a76377f2b31c5086bd56c169f39ab8e6b", null ], + [ "element", "classxt_1_1xstrided__view__base.html#a0410b18c9448ceb36193b2b740d0419a", null ], + [ "expression", "classxt_1_1xstrided__view__base.html#a94e4948a88657428eb50b1a92c4c2a43", null ], + [ "expression", "classxt_1_1xstrided__view__base.html#af4ec4a5c434d543b6c664f4572c849d4", null ], + [ "has_linear_assign", "classxt_1_1xstrided__view__base.html#a5264e47f30486f83a313b654d3dd7199", null ], + [ "layout", "classxt_1_1xstrided__view__base.html#a10da93fc02c2c53dde8d9f171ce053a6", null ], + [ "operator()", "classxt_1_1xstrided__view__base.html#a567f05613c6dfb65b68289e994d09183", null ], + [ "operator()", "classxt_1_1xstrided__view__base.html#a986bbe34c4e1ffb0948b9d9a2238c7ce", null ], + [ "shape", "classxt_1_1xstrided__view__base.html#a7f03137aa8b79f042dd1eb5b769f5256", null ], + [ "storage", "classxt_1_1xstrided__view__base.html#a8b2e5b2c411cc06b834960f23dea39e7", null ], + [ "storage", "classxt_1_1xstrided__view__base.html#aeec822654cdb1a74d861e819b1c98730", null ], + [ "strides", "classxt_1_1xstrided__view__base.html#a60cc5bdc36e03dd0b339e89e16d4080c", null ], + [ "unchecked", "classxt_1_1xstrided__view__base.html#a4a944cdaddacef0710cc4e601d95a1c8", null ], + [ "unchecked", "classxt_1_1xstrided__view__base.html#a4ed93202e4e30f980c2967c00e6044c4", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xstrided__view__base.png b/classxt_1_1xstrided__view__base.png new file mode 100644 index 0000000000000000000000000000000000000000..8512ef399336340bc7e47f887fa326d40228f058 GIT binary patch literal 2510 zcmb`Jd0Z3M7RN(G;ROYXAtJI=r6ny(uu?%;v_Pa01p^ES6)2)c78eM}mVovZks$KK zr>Fs^mGOjyF&h(Q8j--3|N(2wu)UTgcu`@H#M?##L8-Z}UDzUO=< z>8P{gCX_Y`fk12`eCyzfKp>gWbDi=!=srT3Du;$`M-RK><#IV}8Jmkpt$$)^_QeIQ z^p=sjx;n`2me%nUn)_S0tFs#ddSAONko4D(&5PjhjeC^Bc%S4p(^~!D5a)!zctTFA z4aDya5)Da`T7<2b&1nbj9^w0S+4yuuEGr@@mOcPqFNv9_#KbC|`6m{op#2%m?$W^| zruuzi$(J!t!JZfMHy&;r2Yz?G)&x2ACb=e4XMG{?4lH zNdsf1JfivnAwJT%v)v6-O`#i`VHUn|e25*pJW)9EAZSjDp$dos9tpz6WN9a33(LxkuVfilg@zq;ukf3Xi0Jt`E6vQ*_h7dZzCAP9ZvUGO zwq&zP`sn$8nA7U@qV99q<|JCb>8u-z^wy+cq^15Oagns-!6O%JYuS3Q0~N0s0`P;AB)W8(Ox}YDzAm6KtlgF-b|e<RE7qrY z&85wA3AH#YZOGO77G4ctajH8W1X;elnG4BIt$6DQC9qvn7OasG{o2VQXSlOXB6jGt zz1!cybU6gCsv`2p?-*aiNROjs+Zk~_jALcSvo3_SDUT6xE8lqE?(;YBB+Tc@c2NW# z`Jm3M_B}T@@mH#xve3}5lHTAS4idYR*w~n#3q0qJ7vY|elNcF~6IQ3k!>F!;bSeO- z!KzvVBP`I{5JKtdU+D>FCRX*-Rl8Ho7)DNLb_LalYM~y^v+THOKRfP$NJYfR-A7B^B({Ddra|pCp^c~ z&|WEE3+>#~CAgj~VyR*N2EE^AdC@W$=dk;N4sY0qdl5DMF7M?{om7s<1V+&it-FtO zE^eh&Q&&TLAsXP#@Z-ka0!|DSaN~CdLeS;qb8#KLF__HsseGpWa<7F;VMj5HL;e1y zzD!$j%kw+IU_@94o<_ArT?3r@aY$w-PNTih$8(E*P_npFNN7V)bKJ_R&2Zg zUG3|8vO7+&WZKy{6{Vvq?uob7OWg){NWGqUD4FlkaA0yLo|~XDeW6D80yK?NhZr(Q z{?Io+sPG@HR5h`||2JyZ|C<_#=SQgd6h@1nnt)J1Ds~+zz$z-Me_H2}2I+PQp-_@$ zjDqaSdAFeUc06un$E2i_v~Ky0-z&4EPaylGZJPh!3;_eJj!QeKwMbc8$1vEs!Ip87 zsH{F{NVsyj-Ovk-R9qzdxho?jABNnZ5$a#P_>UCogR7Dltwo;$-u zycy@P)+;{r6|AtoikB8CB`@qU_46#5@VLeb)&);<#sdA6FXnGfw$VBDd?>wJBS0l~ zDR*)Yc3<}k!o|Cf{0zmN?F|EOkE5hI71toGOmPcVpLY!Nk2 z>%EqrR84V|`cWHgd)^ZN0|LTynVHz;GkNOm|c*{8fX zv7t_>V8m|#4wzV^zlUCN_?UR9L-0$}X|`lGSK?Cq%;;fkj^=}A_ScoxFuzw zm=hc4mu#xG1niDox;^QkIc{HWJNW9yWKF8>nCEvYl9=dXXWX z7#kg)(DZ4vT*+=+(4QEaHDzzGYN;qPWcQ@3hfdH7%(A7!-__GGG7zk-A175to*m}r zfKB>y8z1+F^w>-JZoZK}7kqMw1IR?;^5;~XBfCUz#P ztLCgi)!r`8(#byB9*pl!uOe_1Q))N5Jn++q%Ns5TF8q89lLN+Boi&0WHJ3Ne;~}cl zKBIX6R9hnC9FW9>kamKRroc#Zrc<#!5k93(2Zf#Ru$rJHUw2+TKv`8s#}fMULJ;uI K4!L&U|L`llKe@F4 literal 0 HcmV?d00001 diff --git a/classxt_1_1xtensor__adaptor-members.html b/classxt_1_1xtensor__adaptor-members.html new file mode 100644 index 000000000..c56e8e609 --- /dev/null +++ b/classxt_1_1xtensor__adaptor-members.html @@ -0,0 +1,363 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xtensor_adaptor< EC, N, L, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xtensor_adaptor< EC, N, L, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >inline
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
base_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_closure_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
extension_base typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexceptxt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >inline
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xtensor_adaptor &) (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >inline
operator=(xtensor_adaptor &&) (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >inline
operator=(temporary_type &&) (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >inline
operator=(const xexpression< E > &e) (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
operator=(const xexpression< E > &e) -> self_type &xt::xtensor_adaptor< EC, N, L, Tag >inline
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
rank (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >static
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reset_buffer(P &&pointer, S &&size) (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) &xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >inline
resize(S &&shape, bool force=false)xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >inline
resize(S &&shape, layout_type l)xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >inline
resize(S &&shape, const strides_type &strides)xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
semantic_base typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
shape() const noexceptxt::xcontainer< D >
shape_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
temporary_type typedef (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer< xtensor_adaptor< EC, N, L, Tag > > (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xtensor_adaptor(storage_type &&storage)xt::xtensor_adaptor< EC, N, L, Tag >inline
xtensor_adaptor(const storage_type &storage)xt::xtensor_adaptor< EC, N, L, Tag >inline
xtensor_adaptor(D &&storage, const shape_type &shape, layout_type l=L)xt::xtensor_adaptor< EC, N, L, Tag >inline
xtensor_adaptor(D &&storage, const shape_type &shape, const strides_type &strides)xt::xtensor_adaptor< EC, N, L, Tag >inline
xtensor_adaptor(const xtensor_adaptor &)=default (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
xtensor_adaptor(xtensor_adaptor &&)=default (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xtensor_adaptor()=default (defined in xt::xtensor_adaptor< EC, N, L, Tag >)xt::xtensor_adaptor< EC, N, L, Tag >
+
+ + + + diff --git a/classxt_1_1xtensor__adaptor.html b/classxt_1_1xtensor__adaptor.html new file mode 100644 index 000000000..cdb4126a7 --- /dev/null +++ b/classxt_1_1xtensor__adaptor.html @@ -0,0 +1,1789 @@ + + + + + + + +xtensor: xt::xtensor_adaptor< EC, N, L, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xtensor_adaptor< EC, N, L, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container adaptor with tensor semantics and fixed dimension. + More...

+ +

#include <xtensor.hpp>

+
+Inheritance diagram for xt::xtensor_adaptor< EC, N, L, Tag >:
+
+
+ + +xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > > +xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > > +xt::xcontainer< D > +xt::xsemantic_base< D > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using container_closure_type = EC
 
using self_type = xtensor_adaptor< EC, N, L, Tag >
 
using base_type = xstrided_container< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using extension_base = extension::xtensor_adaptor_base_t< EC, N, L, Tag >
 
using storage_type = typename base_type::storage_type
 
using allocator_type = typename base_type::allocator_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >
using base_type = xcontainer< xtensor_adaptor< EC, N, L, Tag > >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
- Public Types inherited from xt::xcontainer< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >
using base_type = xsemantic_base< xtensor_adaptor< EC, N, L, Tag > >
 
using derived_type = xtensor_adaptor< EC, N, L, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xtensor_adaptor (const xtensor_adaptor &)=default
 
xtensor_adaptor (xtensor_adaptor &&)=default
 
+template<class E >
xtensor_adaptoroperator= (const xexpression< E > &e)
 
Constructors
 xtensor_adaptor (storage_type &&storage)
 Constructs an xtensor_adaptor of the given stl-like container.
 
 xtensor_adaptor (const storage_type &storage)
 Constructs an xtensor_adaptor of the given stl-like container.
 
template<class D >
 xtensor_adaptor (D &&storage, const shape_type &shape, layout_type l=L)
 Constructs an xtensor_adaptor of the given stl-like container, with the specified shape and layout_type.
 
template<class D >
 xtensor_adaptor (D &&storage, const shape_type &shape, const strides_type &strides)
 Constructs an xtensor_adaptor of the given stl-like container, with the specified shape and strides.
 
xtensor_adaptoroperator= (const xtensor_adaptor &)
 
xtensor_adaptoroperator= (xtensor_adaptor &&)
 
xtensor_adaptoroperator= (temporary_type &&)
 
- Public Member Functions inherited from xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >
void resize (S &&shape, bool force=false)
 Resizes the container.
 
void resize (S &&shape, layout_type l)
 Resizes the container.
 
void resize (S &&shape, const strides_type &strides)
 Resizes the container.
 
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 Reshapes the container and keeps old elements.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=base_type::static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
- Public Member Functions inherited from xt::xcontainer< D >
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + +

+Static Public Attributes

static constexpr std::size_t rank = N
 
- Static Public Attributes inherited from xt::xcontainer< D >
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + +

+Friends

class xcontainer< xtensor_adaptor< EC, N, L, Tag > >
 
+ + + + + + + + +

Extended copy semantic

template<class P , class S >
void reset_buffer (P &&pointer, S &&size)
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >
xstrided_container (const xstrided_container &)=default
 
xstrided_container (xstrided_container &&)=default
 
+xstrided_containeroperator= (const xstrided_container &)=default
 
+xstrided_containeroperator= (xstrided_container &&)=default
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&) noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept
 
inner_shape_type & shape_impl () noexcept
 
const inner_shape_type & shape_impl () const noexcept
 
inner_strides_type & strides_impl () noexcept
 
const inner_strides_type & strides_impl () const noexcept
 
inner_backstrides_type & backstrides_impl () noexcept
 
const inner_backstrides_type & backstrides_impl () const noexcept
 
void reshape_impl (S &&shape, std::true_type, layout_type layout=base_type::static_layout)
 
void reshape_impl (S &&shape, std::false_type, layout_type layout=base_type::static_layout)
 
layout_typemutable_layout () noexcept
 
- Protected Member Functions inherited from xt::xcontainer< D >
xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class EC, std::size_t N, layout_type L, class Tag>
+class xt::xtensor_adaptor< EC, N, L, Tag >

Dense multidimensional container adaptor with tensor semantics and fixed dimension.

+

The xtensor_adaptor class implements a dense multidimensional container adaptor with tensor semantics and fixed dimension. It is used to provide a multidimensional container semantic and a tensor semantic to stl-like containers.

+
Template Parameters
+ + + + + +
ECThe closure for the container type to adapt.
NThe dimension of the adaptor.
LThe layout_type of the adaptor.
TagThe expression tag.
+
+
+
See also
xstrided_container, xcontainer
+ +

Definition at line 209 of file xtensor.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::allocator_type = typename base_type::allocator_type
+
+ +

Definition at line 222 of file xtensor.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 225 of file xtensor.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::base_type = xstrided_container<self_type>
+
+ +

Definition at line 218 of file xtensor.hpp.

+ +
+
+ +

◆ container_closure_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::container_closure_type = EC
+
+ +

Definition at line 215 of file xtensor.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::expression_tag = Tag
+
+ +

Definition at line 227 of file xtensor.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::extension_base = extension::xtensor_adaptor_base_t<EC, N, L, Tag>
+
+ +

Definition at line 220 of file xtensor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::self_type = xtensor_adaptor<EC, N, L, Tag>
+
+ +

Definition at line 217 of file xtensor.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 219 of file xtensor.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 223 of file xtensor.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 221 of file xtensor.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 224 of file xtensor.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_adaptor< EC, N, L, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 226 of file xtensor.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xtensor_adaptor() [1/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xtensor_adaptor< EC, N, L, Tag >::xtensor_adaptor (storage_type && storage)
+
+inline
+
+ +

Constructs an xtensor_adaptor of the given stl-like container.

+
Parameters
+ + +
storagethe container to adapt
+
+
+ +

Definition at line 612 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_adaptor() [2/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xtensor_adaptor< EC, N, L, Tag >::xtensor_adaptor (const storage_type & storage)
+
+inline
+
+ +

Constructs an xtensor_adaptor of the given stl-like container.

+
Parameters
+ + +
storagethe container to adapt
+
+
+ +

Definition at line 623 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_adaptor() [3/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_adaptor< EC, N, L, Tag >::xtensor_adaptor (D && storage,
const shape_type & shape,
layout_type l = L 
)
+
+inline
+
+ +

Constructs an xtensor_adaptor of the given stl-like container, with the specified shape and layout_type.

+
Parameters
+ + + + +
storagethe container to adapt
shapethe shape of the xtensor_adaptor
lthe layout_type of the xtensor_adaptor
+
+
+ +

Definition at line 638 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_adaptor() [4/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_adaptor< EC, N, L, Tag >::xtensor_adaptor (D && storage,
const shape_type & shape,
const strides_type & strides 
)
+
+inline
+
+ +

Constructs an xtensor_adaptor of the given stl-like container, with the specified shape and strides.

+
Parameters
+ + + + +
storagethe container to adapt
shapethe shape of the xtensor_adaptor
stridesthe strides of the xtensor_adaptor
+
+
+ +

Definition at line 654 of file xtensor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator=() [1/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_adaptor< EC, N, L, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 702 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_adaptor< EC, N, L, Tag >::operator= (const xtensor_adaptor< EC, N, L, Tag > & rhs)
+
+inline
+
+ +

Definition at line 668 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_adaptor< EC, N, L, Tag >::operator= (temporary_type && rhs)
+
+inline
+
+ +

Definition at line 684 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_adaptor< EC, N, L, Tag >::operator= (xtensor_adaptor< EC, N, L, Tag > && rhs)
+
+inline
+
+ +

Definition at line 676 of file xtensor.hpp.

+ +
+
+ +

◆ reset_buffer()

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class P , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xtensor_adaptor< EC, N, L, Tag >::reset_buffer (P && pointer,
S && size 
)
+
+inline
+
+ +

Definition at line 723 of file xtensor.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xtensor_adaptor< EC, N, L, Tag > >

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xtensor_adaptor< EC, N, L, Tag > >
+
+friend
+
+ +

Definition at line 259 of file xtensor.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ rank

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xtensor_adaptor< EC, N, L, Tag >::rank = N
+
+staticconstexpr
+
+ +

Definition at line 228 of file xtensor.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xtensor__adaptor.js b/classxt_1_1xtensor__adaptor.js new file mode 100644 index 000000000..e74cc87de --- /dev/null +++ b/classxt_1_1xtensor__adaptor.js @@ -0,0 +1,8 @@ +var classxt_1_1xtensor__adaptor = +[ + [ "xtensor_adaptor", "classxt_1_1xtensor__adaptor.html#aecf238db1fe9fda0797db5c10ced651b", null ], + [ "xtensor_adaptor", "classxt_1_1xtensor__adaptor.html#ada04f10997a9bf3cb9d41ad0a57a071b", null ], + [ "xtensor_adaptor", "classxt_1_1xtensor__adaptor.html#a08d8af6b5afb2cf0fdd0fa05ac254066", null ], + [ "xtensor_adaptor", "classxt_1_1xtensor__adaptor.html#adf38d3f009485bbd13e05a33f3e126ed", null ], + [ "operator=", "classxt_1_1xtensor__adaptor.html#af034feb75cd6690b25a4c6b7b4a20bc5", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xtensor__adaptor.png b/classxt_1_1xtensor__adaptor.png new file mode 100644 index 0000000000000000000000000000000000000000..4e606c5d897162e1a216d82efc9223b4064bffb0 GIT binary patch literal 6147 zcmd5=X;_ojwicv{RgpRoWwfHGC?SdrGQ^R=0jwHP5D>6X2vZot6sWdxfIx~;K^bxs z0S!WwL52i^1`;&_MH<44`hk%lh7gcIVsdu^)_YISk8_^h`<%OfBzu3~+WXsU?X};v z)|-6N(Qf6}8^2z(Xwgas`@^ReE&7T9`XbfE;8)<)JOTbRPaZ#WL?)Ag?)&lS2*T51 zbK~tHu&kHw8yg$J^V8Ql?typ9!cRG#UIfO9W~Q9;`=Uh}=?;evoWUyb`p07K99947 zw<8(w7BN!bKs~&Fg`=%SQ#WI;e{a9>$*NB!e6h`31E08388oSj2WlM()%GhaDKRmT zX^(eC1?nNxl$4YR889-bXTO&gkkZ+Va7R`B*krDvqGDz1MJ4$!PR6LJs$%ih%~)qt z0hh__eilBE21n|mP?p!{*XqLH2OUS*@ThEPLD;QHgor`vT-TS1#99_B6L2>5GRa#L z9=c^GG?Vp33L7!qFI?N@!FLL_^Uz_g_mb=wE+I)Z7M6(z%LKtQVx{Kk0*ANoOA;?U z-{9FANL^ih0wyL1+L*H}NIaW${cb)}O5dau8W{02(8%iEe9FTp+^cfdRCmS*-=G+Qng%&YvO%uBMizW|1;(HC;X^g-u) z9>Y`2XSi}p#oDW?Q-Q5wA{O@7ghjEJte)RavVcTdsjv75Vl{+9Y1-ot?cd+%tR%MUpe1CvUIK6szrT3>JL6p(Q`SM2~M3J5r)G+oc#Vfo^)Q zqvnP7D_Wy>{ek(O{I~H6_5b&%5qW>XTX%7&d@;^73q26wrs2kkXj`JBIa)%xLmI7R z0OyqZ@ZNMmr%P(5OKe$_dBCoWQ*w_5NAY+yR9f}8^e;XOq}Y#;NN3|-*8290PIbJW z_w}3}XS{4emQedTwyqL|N|k28X!~BZsl}t&b3qjwl44)EpnL7{^v*~PaQF$Y4G>Zd zi?gWdJ@9WJF;zYT7lyCy?74;{2$;k}=+gdcu%yyJ_3g|7DfYPQCzFu45gT^`e-%*; z&J?il!eT*d62H~bEz&y3%q3p?uxnC_qn9K<2Qxi6&3{ui{^8YG)UKYL42t(z9d|X` z#lP2&+s#g;+39q~IIi+I97;&v=E}Wy6HKv4^6q zy{YYS5INDK=Yy6JH=^S~ZOR=I$)L*t@9fNKLu*y(HO%Zs;|6(@SeEgA5vz;JXcXW9fB zb>s~zY_o&mR4bV^zdFXDL|@inXn4g*nmL?7hUijBN0JclaH`E)^87%){20F3o)yv{ z6)_Pu$$x*&@Hl|%4bm}irUYCwiA@&dm_hp(WOA1cJP^gc)8ZvD4C3;A5H|S;!sPk) zWlf^*Cqk(L{Lk9essKd-g0I+HREC;4^mZ@{AJ|wMz$>2oY=5ivrB(=$Ttf5S&}N{nY=v%1PYzKDj9J?~~Ng}-T&>2St* zpN;WGBuGHoOJVRJ0B%qk(1It!XOc*+ zk!zO#Zw@v97jL?)YbV1M&2!@M@h)f{c?-i69gELwQ`D2uAY1K#0YUp9r;iC#X zMWK3oBIK84x!jjlZ&!dRm|!TE@BORKKtwFyi>2M6E#d}#_1+Xg*;w8Cy0X~as;V_S zZDmv85~Uo6yhDx4k4Do0qC719-9m+$KQr^YS-=QymxY?^(LcQ;j5@~CuiBilvQX3f z)7!gi%~Yu6@F zrrLFUR7=_YV@n3!kpeXz0a%<})eC7szb@w)MYGi^&~ZeJqbgZJ}* z@4gvCPdV~~AR9t3@mX+>?@(1nAo|VNd!LmjF^Zrt_OFUiG%HF-E|{BPZR5zB&ZsOd z`%ZA=h#Emi89M^q?lxr>BKOfrq?;N9f$oJO!j^2u@8_)dnb`mF>0P@{FHx8&SIU4q{c;*xZD|Lw9>{Iz=hc3$WDXwA!6^W~S2 zg1}PbvWD1vqh3UF1BIQHYEgPefKMo%SH;pxat_^b)-oZtaQ4CTt-H$4J>ei#p+Igu zf;SgUf$J1mS_Or72S{uU+;wLS4oJ%p(i71a3I$Kya@;9ny%ZP=?qLN|p&BOLTT(L7 z=FR*O>MeA$E1hINIF@HlG@UcyH9hxiUYAb@oPSOjCX)HJRRdlVGRE|2 z7AK?j#<)l31z~oK|9pg*=EN05WJ5jevuD_%Swx&g$8-GY-FQ34)3*1^LlkE?4WsQK zI7H-*y}6)OVQJCBD-U_hLZars5ChPU$9D3Xj%h*7fGBtf8KTLLr6dRD~0C#e*6BQxgqjQr$4$YpXnGH;6S-*a0fsSV8h9 z%Tv(5bWQ$r+1`sA2n~F(@0G!_FLi}`yQPXsoZ&y*ZUu&2nB)42Vi35ty&_?( z2de75_Z9v}Z0W68Km1^}gr|d?%d2szq_XA)DmE|;BXCjH7^}*fDK0HWb`lTAQ7yq% zJ_sZ?a;Y~>UQgSj*i8gSz6SwRRJ6&79lc>KR_5}|qbR;vG}NMBNw#xA2fpQQknTg^ zb}|UeN*5$jcL{|)==oX{>SAovPJTkixA$~3`i<|#xC|DYh5^Lg&Pgru#XvPedR)AV ze|1N4+2f(NG8)OhdwH{{<>2gWJ#kmPmUlV(-ncu}N2cT!~BVQ)L z9iq`Ke&b;wG56>*LTx(=-uXf#bpT6+Q0nj_Q?m)>>!FT{fYK@o6(mB=gVuxyoWn=f zsu1yi;`|u4~-k^(m1*VO`fSH zt^FFuPHOYaV>^SkJrh|!0~zkC4K@qnwuoZE`3Yf2Tekl0Hu!Qngr(HK+hI=rm~A%| z*F61uA&fXAuDuq@T@$<8swYEWP$eww{K^!U8(Mf z*MV5*GOswBz^M^2jF=0J(4!gpo^AZB&2!$9+H%b)S0pH}xV~*!MpP0{;2gyey`liC zZ)od@sQfggU!)x_oR1%Y&qp409+Xsh#XUNSi{$%8Nl8m?cuR)S@0`3OW5cV9u3P0@ z8rSdZ?Cet=c7>N18tMA%VceH;5IFJDlB&+2*bEpF)nnpGMvH|OrDDJP2^|}qJ>nw< z?k%RJ*LFQMa}AAitUeo;H)8%{(FwEQ0ZW(3@-d!z!hI0Yw;}6hI&?3W`Aewh7sK86 zB*36ztR;14;aDi1Tvn_7f_NV*o#Lg;J|PPuZk0pCY`>GbOQqWwa7tN{h}A5*zoqr( zsBLB6Jt1z5qvo=rP9+yV!Ff zegkE6WR4Knl4mH?V9XN`nlg!l;_g?%A>oVeU1cPea0~j~Dlf_A0>^IAhUZBW8@VIH zbgXDXf@|>$*jT80h>5l0V?~zaT6fG`Xyrt?!0V|Fd2+TNTYY+f0ODR*!WxEew+lKd zTFxcKEQ@OPN2L)t=(3&~P(9MtgJ4AV@!cylkZ16+0$<|bv{abU>-!6kuIm+;O&OG) zL`^Rq)R|by6+r0{Ek}S@pPGsyggO2`9td1rDDdt;jHq{ARI7-!RyP0sl%_OS>*;Nh zKT1wiRY#uPBTfOZNAauXMzs+R&x7BGYYT`-+a|}5Epk2vWRyjKFaUU2dQ4ttfHYqo zEhA3PPwCtOBm-ULjLtn$-S$87O9i>`Phhr_oGt*75d_GD-6G!S`ob2mKwvm6QR>A4 z&L+6f<)UltJN1y$DJt@8e153hU z<3NF_V7E3Zcr;bfUImAyK7m&7XL_$eB?-8*{f+X&W2EoQ z$3mBIZ$n+!_8+pIr(on^1CuljBkDxMuD*GrFv0|kfG-V#1zE3x_Z#Dh#SioKM@Lwi zsSLx0^)`BpV!QkxH-6qRK(sSwyljzW_Gi-Wde<=NOLDDZDYQTTr}2QE_Z=n-gJrQenpS(i8-UWu)1N6+!EblxQhG<29nZFGDZXuW zqCW?IeOB z!eL&;&NIuy%MiGf4=m;?XobzzAxywVN^v2xis{5$X-m0qM8KSw&FRKNV5hP|U*vGa@o?F}i + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xtensor_container< EC, N, L, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xtensor_container< EC, N, L, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > >inline
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
base_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_pointer typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
const_reference typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
extension_base typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
from_shape(S &&s) (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >static
from_shape(S &&s) (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_backstrides_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
inner_shape_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
inner_strides_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexceptxt::xstrided_container< xtensor_container< EC, N, L, Tag > >inline
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xtensor_container &)=default (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
operator=(xtensor_container &&)=default (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
operator=(xarray_container< EC, L, SC, Tag > &&) (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
operator=(const xexpression< E > &e) (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
operator=(xarray_container< EC, L, SC, Tag > &&rhs) (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >inline
operator=(const xexpression< E > &e) -> self_type &xt::xtensor_container< EC, N, L, Tag >inline
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
rank (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >static
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reference typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) &xt::xstrided_container< xtensor_container< EC, N, L, Tag > >inline
resize(S &&shape, bool force=false)xt::xstrided_container< xtensor_container< EC, N, L, Tag > >inline
resize(S &&shape, layout_type l)xt::xstrided_container< xtensor_container< EC, N, L, Tag > >inline
resize(S &&shape, const strides_type &strides)xt::xstrided_container< xtensor_container< EC, N, L, Tag > >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
semantic_base typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
shape() const noexceptxt::xcontainer< D >
shape_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
temporary_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
value_type typedef (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer< xtensor_container< EC, N, L, Tag > > (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xtensor_container()xt::xtensor_container< EC, N, L, Tag >inline
xtensor_container(nested_initializer_list_t< value_type, N > t)xt::xtensor_container< EC, N, L, Tag >inline
xtensor_container(const shape_type &shape, layout_type l=L)xt::xtensor_container< EC, N, L, Tag >inlineexplicit
xtensor_container(const shape_type &shape, const_reference value, layout_type l=L)xt::xtensor_container< EC, N, L, Tag >inlineexplicit
xtensor_container(const shape_type &shape, const strides_type &strides)xt::xtensor_container< EC, N, L, Tag >inlineexplicit
xtensor_container(const shape_type &shape, const strides_type &strides, const_reference value)xt::xtensor_container< EC, N, L, Tag >inlineexplicit
xtensor_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)xt::xtensor_container< EC, N, L, Tag >inlineexplicit
xtensor_container(const xtensor_container &)=default (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
xtensor_container(xtensor_container &&)=default (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
xtensor_container(xarray_container< EC, L, SC, Tag > &&) (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >inlineexplicit
xtensor_container(const xexpression< E > &e)xt::xtensor_container< EC, N, L, Tag >inline
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xtensor_container()=default (defined in xt::xtensor_container< EC, N, L, Tag >)xt::xtensor_container< EC, N, L, Tag >
+
+ + + + diff --git a/classxt_1_1xtensor__container.html b/classxt_1_1xtensor__container.html new file mode 100644 index 000000000..9ffcdd6e3 --- /dev/null +++ b/classxt_1_1xtensor__container.html @@ -0,0 +1,2094 @@ + + + + + + + +xtensor: xt::xtensor_container< EC, N, L, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xtensor_container< EC, N, L, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container with tensor semantic and fixed dimension. + More...

+ +

#include <xtensor.hpp>

+
+Inheritance diagram for xt::xtensor_container< EC, N, L, Tag >:
+
+
+ + +xt::xstrided_container< xtensor_container< EC, N, L, Tag > > +xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > > +xt::xcontainer< D > +xt::xsemantic_base< D > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xtensor_container< EC, N, L, Tag >
 
using base_type = xstrided_container< self_type >
 
using semantic_base = xcontainer_semantic< self_type >
 
using extension_base = extension::xtensor_container_base_t< EC, N, L, Tag >
 
using storage_type = typename base_type::storage_type
 
using allocator_type = typename base_type::allocator_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using shape_type = typename base_type::shape_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xstrided_container< xtensor_container< EC, N, L, Tag > >
using base_type = xcontainer< xtensor_container< EC, N, L, Tag > >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
- Public Types inherited from xt::xcontainer< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > >
using base_type = xsemantic_base< xtensor_container< EC, N, L, Tag > >
 
using derived_type = xtensor_container< EC, N, L, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xtensor_container (const xtensor_container &)=default
 
+xtensor_containeroperator= (const xtensor_container &)=default
 
xtensor_container (xtensor_container &&)=default
 
+xtensor_containeroperator= (xtensor_container &&)=default
 
+template<class SC >
xtensor_containeroperator= (xarray_container< EC, L, SC, Tag > &&)
 
+template<class E >
xtensor_containeroperator= (const xexpression< E > &e)
 
Constructors
 xtensor_container ()
 Allocates an uninitialized xtensor_container that holds 0 elements.
 
 xtensor_container (nested_initializer_list_t< value_type, N > t)
 Allocates an xtensor_container with nested initializer lists.
 
 xtensor_container (const shape_type &shape, layout_type l=L)
 Allocates an uninitialized xtensor_container with the specified shape and layout_type.
 
 xtensor_container (const shape_type &shape, const_reference value, layout_type l=L)
 Allocates an xtensor_container with the specified shape and layout_type.
 
 xtensor_container (const shape_type &shape, const strides_type &strides)
 Allocates an uninitialized xtensor_container with the specified shape and strides.
 
 xtensor_container (const shape_type &shape, const strides_type &strides, const_reference value)
 Allocates an uninitialized xtensor_container with the specified shape and strides.
 
 xtensor_container (storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)
 Allocates an xtensor_container by moving specified data, shape and strides.
 
template<class SC >
 xtensor_container (xarray_container< EC, L, SC, Tag > &&)
 
template<class SC >
xtensor_container< EC, N, L, Tag > & operator= (xarray_container< EC, L, SC, Tag > &&rhs)
 
template<class S >
xtensor_container< EC, N, L, Tag > from_shape (S &&s)
 
- Public Member Functions inherited from xt::xstrided_container< xtensor_container< EC, N, L, Tag > >
void resize (S &&shape, bool force=false)
 Resizes the container.
 
void resize (S &&shape, layout_type l)
 Resizes the container.
 
void resize (S &&shape, const strides_type &strides)
 Resizes the container.
 
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 Reshapes the container and keeps old elements.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=base_type::static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
- Public Member Functions inherited from xt::xcontainer< D >
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + +

+Static Public Member Functions

+template<class S = shape_type>
static xtensor_container from_shape (S &&s)
 
+ + + + + + + + + + + +

+Static Public Attributes

static constexpr std::size_t rank = N
 
- Static Public Attributes inherited from xt::xcontainer< D >
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
+ + + +

+Friends

class xcontainer< xtensor_container< EC, N, L, Tag > >
 
+ + + + + + + + + +

Extended copy semantic

template<class E >
 xtensor_container (const xexpression< E > &e)
 The extended copy constructor.
 
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xstrided_container< xtensor_container< EC, N, L, Tag > >
xstrided_container (const xstrided_container &)=default
 
xstrided_container (xstrided_container &&)=default
 
+xstrided_containeroperator= (const xstrided_container &)=default
 
+xstrided_containeroperator= (xstrided_container &&)=default
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&) noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept
 
inner_shape_type & shape_impl () noexcept
 
const inner_shape_type & shape_impl () const noexcept
 
inner_strides_type & strides_impl () noexcept
 
const inner_strides_type & strides_impl () const noexcept
 
inner_backstrides_type & backstrides_impl () noexcept
 
const inner_backstrides_type & backstrides_impl () const noexcept
 
void reshape_impl (S &&shape, std::true_type, layout_type layout=base_type::static_layout)
 
void reshape_impl (S &&shape, std::false_type, layout_type layout=base_type::static_layout)
 
layout_typemutable_layout () noexcept
 
- Protected Member Functions inherited from xt::xcontainer< D >
xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > >
xcontainer_semantic (const xcontainer_semantic &)=default
 
xcontainer_semantic (xcontainer_semantic &&)=default
 
+xcontainer_semanticoperator= (const xcontainer_semantic &)=default
 
+xcontainer_semanticoperator= (xcontainer_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class EC, std::size_t N, layout_type L, class Tag>
+class xt::xtensor_container< EC, N, L, Tag >

Dense multidimensional container with tensor semantic and fixed dimension.

+

The xtensor_container class implements a dense multidimensional container with tensor semantics and fixed dimension

+
Template Parameters
+ + + + + +
ECThe type of the container holding the elements.
NThe dimension of the container.
LThe layout_type of the tensor.
TagThe expression tag.
+
+
+
See also
xtensor, xstrided_container, xcontainer
+ +

Definition at line 83 of file xtensor.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::allocator_type = typename base_type::allocator_type
+
+ +

Definition at line 94 of file xtensor.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 103 of file xtensor.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::base_type = xstrided_container<self_type>
+
+ +

Definition at line 90 of file xtensor.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::const_pointer = typename base_type::const_pointer
+
+ +

Definition at line 99 of file xtensor.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::const_reference = typename base_type::const_reference
+
+ +

Definition at line 97 of file xtensor.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::expression_tag = Tag
+
+ +

Definition at line 107 of file xtensor.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::extension_base = extension::xtensor_container_base_t<EC, N, L, Tag>
+
+ +

Definition at line 92 of file xtensor.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::inner_backstrides_type = typename base_type::inner_backstrides_type
+
+ +

Definition at line 104 of file xtensor.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::inner_shape_type = typename base_type::inner_shape_type
+
+ +

Definition at line 101 of file xtensor.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::inner_strides_type = typename base_type::inner_strides_type
+
+ +

Definition at line 105 of file xtensor.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::pointer = typename base_type::pointer
+
+ +

Definition at line 98 of file xtensor.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::reference = typename base_type::reference
+
+ +

Definition at line 96 of file xtensor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::self_type = xtensor_container<EC, N, L, Tag>
+
+ +

Definition at line 89 of file xtensor.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::semantic_base = xcontainer_semantic<self_type>
+
+ +

Definition at line 91 of file xtensor.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 100 of file xtensor.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 93 of file xtensor.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 102 of file xtensor.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 106 of file xtensor.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_container< EC, N, L, Tag >::value_type = typename base_type::value_type
+
+ +

Definition at line 95 of file xtensor.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xtensor_container() [1/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container ()
+
+inline
+
+ +

Allocates an uninitialized xtensor_container that holds 0 elements.

+ +

Definition at line 416 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [2/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (nested_initializer_list_t< value_type, N > t)
+
+inline
+
+ +

Allocates an xtensor_container with nested initializer lists.

+ +

Definition at line 426 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [3/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (const shape_type & shape,
layout_type l = L 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xtensor_container with the specified shape and layout_type.

+
Parameters
+ + + +
shapethe shape of the xtensor_container
lthe layout_type of the xtensor_container
+
+
+ +

Definition at line 441 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [4/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (const shape_type & shape,
const_reference value,
layout_type l = L 
)
+
+inlineexplicit
+
+ +

Allocates an xtensor_container with the specified shape and layout_type.

+

Elements are initialized to the specified value.

Parameters
+ + + + +
shapethe shape of the xtensor_container
valuethe value of the elements
lthe layout_type of the xtensor_container
+
+
+ +

Definition at line 455 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [5/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (const shape_type & shape,
const strides_type & strides 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xtensor_container with the specified shape and strides.

+
Parameters
+ + + +
shapethe shape of the xtensor_container
stridesthe strides of the xtensor_container
+
+
+ +

Definition at line 472 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [6/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (const shape_type & shape,
const strides_type & strides,
const_reference value 
)
+
+inlineexplicit
+
+ +

Allocates an uninitialized xtensor_container with the specified shape and strides.

+

Elements are initialized to the specified value.

Parameters
+ + + + +
shapethe shape of the xtensor_container
stridesthe strides of the xtensor_container
valuethe value of the elements
+
+
+ +

Definition at line 486 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [7/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (storage_type && storage,
inner_shape_type && shape,
inner_strides_type && strides 
)
+
+inlineexplicit
+
+ +

Allocates an xtensor_container by moving specified data, shape and strides.

+
Parameters
+ + + + +
storagethe data for the xtensor_container
shapethe shape of the xtensor_container
stridesthe strides of the xtensor_container
+
+
+ +

Definition at line 505 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [8/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class SC >
+ + + + + +
+ + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (xarray_container< EC, L, SC, Tag > && rhs)
+
+inlineexplicit
+
+ +

Definition at line 517 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_container() [9/9]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
xt::xtensor_container< EC, N, L, Tag >::xtensor_container (const xexpression< E > & e)
+
+inline
+
+ +

The extended copy constructor.

+ +

Definition at line 562 of file xtensor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ from_shape()

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class S >
+ + + + + +
+ + + + + + + + +
xtensor_container< EC, N, L, Tag > xt::xtensor_container< EC, N, L, Tag >::from_shape (S && s)
+
+inline
+
+ +

Definition at line 544 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_container< EC, N, L, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 580 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class SC >
+ + + + + +
+ + + + + + + + +
xtensor_container< EC, N, L, Tag > & xt::xtensor_container< EC, N, L, Tag >::operator= (xarray_container< EC, L, SC, Tag > && rhs)
+
+inline
+
+ +

Definition at line 531 of file xtensor.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xtensor_container< EC, N, L, Tag > >

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xtensor_container< EC, N, L, Tag > >
+
+friend
+
+ +

Definition at line 145 of file xtensor.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ rank

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + +
constexpr std::size_t xt::xtensor_container< EC, N, L, Tag >::rank = N
+
+staticconstexpr
+
+ +

Definition at line 108 of file xtensor.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xmime.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xtensor__container.js b/classxt_1_1xtensor__container.js new file mode 100644 index 000000000..49399280c --- /dev/null +++ b/classxt_1_1xtensor__container.js @@ -0,0 +1,12 @@ +var classxt_1_1xtensor__container = +[ + [ "xtensor_container", "classxt_1_1xtensor__container.html#aa3a7016797e330568a8b4e5efb6f1c4b", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#a5d15ba6d111b6a3aa8403f69d4810c21", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#aed68730c6dae5a8155b2c67140a63368", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#a56f009f40f5acb09f157345a1a174508", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#a27c45be9ad2e0da1a8ad0576c756f39e", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#ad411469d4cd09d58528f489dd380de9e", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#ad82e5654ec5c9f23d5801aa5e84d4ddc", null ], + [ "xtensor_container", "classxt_1_1xtensor__container.html#a76f048f11c76d405e2e93007e74e2c41", null ], + [ "operator=", "classxt_1_1xtensor__container.html#a1b82b2aea047cca3d11106062721c34c", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xtensor__container.png b/classxt_1_1xtensor__container.png new file mode 100644 index 0000000000000000000000000000000000000000..8da221f2057fd16b282a609ac7bcc92f540083a8 GIT binary patch literal 6088 zcmd^DYgCiRx|Yi>wrWE~MO274M6H4f7F0-jM2e_{D*cEC0jUad6Qcq_NCLLX5|Fe~ zRIaH~jRr|n2!w0U0I7;bL_i=wAS(BS1V}=zXOf`Z=d?f0K6|gT_FCurk-Xo`H#6_d zyz@NIyqCU3dCvQ6$!D`>&6?-6d)I+kv;HOowtTh;_$?m1_!|5z{dV7X9$Kvyn1iEJ zF{H;7mrd(VExy(?SXWmE%6+f2+yQl;o;`r_odw?YkF#+uXlv=~wd+5=!x@cr_no7< zEcn~Yh8sa_B~n}peYv*mmDISf3w!zcnn!a6A~nOxT2ie@IrTMo>X2<{$OCG{%$J#) zo8P}!kB3^R|A5`yfJZ}xvaa^DpNFcK5)+9KG`7Fr#@N`n?Y@l3${+02VCnH>W=c|0 z($-NsA?ypaG-tK6izr&f>63{#0vU1{1y8HMEgE$aSr~j!*W+WRT9u1O$s7*584f$@ zh$T)r-Jy1(W;!lpBI_mFa(sd~SY-T`Cf7M30zzo=%pfYCevLXtA?TA!NSV7>>B@k= z5&md*QP$et%wH#=V2SyI*RZU@`#wB(ungO!7BcuHp7#~?_*C9lCX?(sCu5rM07nWo zbQ?43AS8W(OjW`LOo>R1T;!;tOH@(ELahw-Sz~s>B5J`-!$?0d=~N8#ueD#w@Nj&u zY$O@1WKxoq1K2Ke^YPvKy)qv^5g2$yw|eH|M?RGFyh6mojKD*(#p?fcwvmxiYHTp{ zzdNS>-QU_3wW30ilHgXM0Mqy17Nn+)R1Q|s{9&e%H|f+=DwUBgsHLu_QrossZ5+>JYCWDpkovKpUY+4^ z8fv|##q-MBI`iIPwKCQXMqBMK%#^Wv3tduP5EHzA;JciX5B4Bn9C$AR@ws5YiV`iz zM`~g_hpI<{tD1*Lu6M3Zl`fFUcvp)^TrH7D#s|KoQV)$Z;^TgQO(MYxlLcaIkFstB zu~(yX-R>Y)Y2$NS>V40Ve7;hjMsOenJy&)q;mwQi3xY$}G9(+b~MA`Lg@@Q^o^@U7qXQ6z5ibTdQI&lw~$&hdzp& zU!3Dnm8$IM+ESTR;v6=qt^M1v?n+r<@iRQ9_IWCo6lrIzWurb`&n4gQN zA;n8%92J3Ry;D9hxFrnP7}`%zrErl%D_Lf7Mi9zz%_V}BEW#83M_CDmpXaVpjPx_f zrmv3)xMq(VVy^|CVLUsxt+a^Aiub1pG>XnKxo-C{&O+qTY02P9A;-~vm3Czw>ymPU zKbY1@T~re@#%ezVA*-4jxk$IEY3 zR-O}0>U-QObZCiR^5oinwOBnS*e?-I*!e!(+$J2YwXo(KWEueedt}PnP{xw6SWyx5osW4QMa^#MoFU{mf`7E;(u5 zZ_*WfuixGVe+j(a6Am{nV2?zE+mwkVSE^H@{#@zbKzSc*5gkUZPVxRz?Khv<7#Dc! zI@z_yrc7dNv~>5FdtK)4C+>A6UIvTp7r6Y0$zA+x-28R%vvFU|SZ|)rF^yc#fEoF$ zw1pXQ*UVV{@qc)@g5U9RKnL^t$*&Qnu9w=ugTv$T-KL;98g6VXwYQ#Qly(cZeEAX4 zs|V)y52l*^+Z6J%C-J?Wy)yMV{)!J4@H5*0_>!+d5I3vuiITi@DrrX+$A_6IeBLR)>mQ~hQHIi}!#MAOIH5)51j1#$(JGXRQ*8y=r zr6#BjrTIblu`|LO-gee{D=_r~yV@G1wO){&`d86_rmRN#WBNMttpLRgj z=3liDHNCx>!Ez1VXe(U7H>)Knhr=~)n(J0bl69B-;9JM4z$om4!Pl!;Zhg`IXV1}w zq?Q~Aa&|q-L!*OgNbSO(utD9^6ASZu1mg72dxn`vniTpexy7g@vgdULX%r{N?PDTb#_7-V)5H`dwr(!WK`a!<=lXjiTW+$p^{r06?TzbbiYpzAZ@(3+nf4)0)9g)5nyE#An3BGa z`}t>GxWilZ%e~y%A7W5}f``6?HeS^Q*=~*>RJ`7BM$+^V^6J41TmsGi{iTH2^5nCT zGpM>BVjR@%+Ml}_oVhU6xqq;LVlKg5NJ_Fj;0kUHaYF}ZAKcJjVq~;KrpUQ^A?d=O ziremo9h!Y`jqaO-YZ(`k8uVWfhtM+(|E}=xKI7&etbwB5m;lRw_Lz}m zZOMN_Ju41AqSylnOk2Yi%XB=b-&lj-)qgJh0}+cEWm$&s=>GC!Q20kg0fDRo#7Z>hq&4R?jl)9 zkSN0dne-XR46-Yhd($3+#dd ztETISOaR{}ul8h%k6Rz-H#{94Ru!;#B+Sld0*(2x%&*<>O>;?Xku>MoK{uNh&uc%^ zR4_8{qJ3!vFcE#}e!^zLDj`KXsWj1w1sYdev-!Xh)+!;=&Ib+ue1Pz{L3$0@&qc|z zEg{Gvr9(D3%*&Fm94EU9SxiUE9qFMcKR%icctqNb+YEnld!SPHR63-y{qjc^?}0{-!x?&-Vx+`Oc45>(v9CZCE=mw|V{8 zNqqVH9wvE5WqM!H1nKtWkn|R9JC>;Yq8$@a?sk9&pA(H~ZAnGqb7R@1l4z&*kz9hb z^UeT*yRECsu||<=f!Z0~dHGrZ-jiMsS7R+DS<0M8-h0M{DC!2OjiOvzv6F4-CLyU$ zCf;n>IDyrUT zc|yr5EW#gF0Y8=td*_c{&l5GPzlai)x)H5l#A;UHnPs`3jL97+#Tm~y+{@XFl!?6C zD4)%_^(iCx?MpoTB-OEtFZPjvgajgIi3W*9&Sj4?xD_eClYg6b z#%h)D?Q_|u$UyR&n%?V!xeLwjM$?PvDG!9dR8m;WLh^}^!cI6PJWMQQw{~KWa6P60 z(FimX&Z;W8A=kJ>v*mSVFmp;HAG{c>LM*wRJ2f`Db;)#Ai%&MmjjnVb$c*#4~QQ&s;YT*iSJ(^ckuikb6 znJ!QiFtvvf-J(-27H=l@_jE6m0nP1WjMOItBjhd1lud7k+QTw@Ua1NI_HB1qY%7M> zt0&)TSB@I8u^GsH503_-*z%RP>_|!30I-zXg`N?}7M$wW>`xT$e(1|!B1MYw4|!76 z4@~4Ys_Btj>`u63V$)ai-id=yj}i_e2q&A0-RxbXH)mtz%aDO6Uv9#(fn`L^^nQUu#d<@yvOeXwd@WGF%*MI!w + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xtensor_view< EC, N, L, Tag > Member List
+
+
+ +

This is the complete list of members for xt::xtensor_view< EC, N, L, Tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessible_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
allocator_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< xtensor_view< EC, N, L, Tag > >inline
at(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) -> referencext::xcontainer< D >inline
at(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
at(Args... args) const -> const_referencext::xcontainer< D >inline
back()xt::xcontainer< D >inline
back() constxt::xcontainer< D >inline
backstrides() const noexceptxt::xcontainer< D >
backstrides_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
base_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
begin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
begin() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
begin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
broadcast_shape(S &shape, bool reuse_cache=false) constxt::xcontainer< D >inline
cbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cbegin() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
cend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
cend() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
const_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
const_reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
const_stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
container_closure_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
container_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
contiguous_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
crbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
crend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
crend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
data() noexceptxt::xcontainer< D >inline
data() const noexceptxt::xcontainer< D >inline
data_alignment typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
data_element(size_type i) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_element(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
data_offset() const noexceptxt::xcontainer< D >inline
data_xbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() const &noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_cast() &&noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inlineprotected
derived_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
difference_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
dimension() const noexceptxt::xcontainer< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
element(It first, It last) -> referencext::xcontainer< D >inline
element(It first, It last) const -> const_referencext::xcontainer< D >inline
end() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
end() noexcept -> select_iterator< L >xt::xcontiguous_iterable< D >inline
end() const noexcept -> select_const_iterator< L >xt::xcontiguous_iterable< D >inline
end(const S &shape) noexcept -> broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
expression_tag typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
extension_base typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
fill(const T &value)xt::xcontainer< D >inline
flat(size_type i)xt::xcontainer< D >inline
flat(size_type i) constxt::xcontainer< D >inline
front()xt::xcontainer< D >inline
front() constxt::xcontainer< D >inline
has_linear_assign(const S &strides) const noexceptxt::xcontainer< D >inline
inner_types typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterable_base typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
layout() const noexceptxt::xstrided_container< xtensor_view< EC, N, L, Tag > >inline
layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
linear_begin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_begin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_cend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_crend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_end() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
linear_rbegin() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rbegin() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_rend() const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
linear_traits typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
load_simd(size_type i) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
load_simd(size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type > (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
operator()(Args... args) -> referencext::xcontainer< D >inline
operator()(Args... args) const -> const_referencext::xcontainer< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xtensor_view &) (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >inline
operator=(xtensor_view &&) (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >inline
operator=(const xexpression< E > &e) (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
operator=(const E &e) (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
operator=(const xexpression< E > &e) -> self_type &xt::xtensor_view< EC, N, L, Tag >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >inline
operator=(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
operator=(const xaccessible &)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(xaccessible &&)=default (defined in xt::xaccessible< D >)xt::xaccessible< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) -> referencext::xcontainer< D >inline
periodic(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
periodic(Args... args) const -> const_referencext::xcontainer< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
rbegin() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rbegin() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend() noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend(const S &shape) const noexcept (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
rend() noexcept -> select_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend() const noexcept -> select_const_reverse_iterator< L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >xt::xcontiguous_iterable< D >inline
reshape(S &&shape, layout_type layout=base_type::static_layout) &xt::xstrided_container< xtensor_view< EC, N, L, Tag > >inline
resize(S &&shape, bool force=false)xt::xstrided_container< xtensor_view< EC, N, L, Tag > >inline
resize(S &&shape, layout_type l)xt::xstrided_container< xtensor_view< EC, N, L, Tag > >inline
resize(S &&shape, const strides_type &strides)xt::xstrided_container< xtensor_view< EC, N, L, Tag > >inline
reverse_broadcast_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_layout_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
reverse_linear_iterator typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
select_const_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_const_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_iterator_impl typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
select_reverse_iterator typedef (defined in xt::xcontiguous_iterable< D >)xt::xcontiguous_iterable< D >
self_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
semantic_base typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
shape() const noexceptxt::xcontainer< D >
shape_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
simd_return_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
simd_value_type typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
size() const noexceptxt::xcontainer< D >inline
static_layout (defined in xt::xcontainer< D >)xt::xcontainer< D >static
stepper typedef (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_begin(const S &shape) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_begin(const S &shape) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) const noexcept (defined in xt::xcontainer< D >)xt::xcontainer< D >
stepper_end(const S &shape, layout_type l) noexcept -> stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
stepper_end(const S &shape, layout_type l) const noexcept -> const_stepper (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
storage() noexceptxt::xcontainer< D >inline
storage() const noexceptxt::xcontainer< D >inline
storage_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
store_simd(size_type i, const simd &e) (defined in xt::xcontainer< D >)xt::xcontainer< D >inline
strides() const noexceptxt::xcontainer< D >
strides_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
temporary_type typedef (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
unchecked(Args... args) (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) const (defined in xt::xcontainer< D >)xt::xcontainer< D >
unchecked(Args... args) -> referencext::xcontainer< D >inline
unchecked(Args... args) const -> const_referencext::xcontainer< D >inline
xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(const xcontainer &)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer(xcontainer &&)=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
xcontainer< xtensor_view< EC, N, L, Tag > > (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >friend
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xtensor_view(storage_type &&storage)xt::xtensor_view< EC, N, L, Tag >inline
xtensor_view(const storage_type &storage)xt::xtensor_view< EC, N, L, Tag >inline
xtensor_view(D &&storage, const shape_type &shape, layout_type l=L)xt::xtensor_view< EC, N, L, Tag >inline
xtensor_view(D &&storage, const shape_type &shape, const strides_type &strides)xt::xtensor_view< EC, N, L, Tag >inline
xtensor_view(const xtensor_view &)=default (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
xtensor_view(xtensor_view &&)=default (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
xview_semantic< xtensor_view< EC, N, L, Tag > > (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >friend
~xcontainer()=default (defined in xt::xcontainer< D >)xt::xcontainer< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xtensor_view()=default (defined in xt::xtensor_view< EC, N, L, Tag >)xt::xtensor_view< EC, N, L, Tag >
+
+ + + + diff --git a/classxt_1_1xtensor__view.html b/classxt_1_1xtensor__view.html new file mode 100644 index 000000000..b2d23e74c --- /dev/null +++ b/classxt_1_1xtensor__view.html @@ -0,0 +1,1747 @@ + + + + + + + +xtensor: xt::xtensor_view< EC, N, L, Tag > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xtensor_view< EC, N, L, Tag > Class Template Reference
+
+
+ +

Dense multidimensional container adaptor with view semantics and fixed dimension. + More...

+ +

#include <xtensor.hpp>

+
+Inheritance diagram for xt::xtensor_view< EC, N, L, Tag >:
+
+
+ + +xt::xstrided_container< xtensor_view< EC, N, L, Tag > > +xt::xview_semantic< xtensor_view< EC, N, L, Tag > > +xt::xcontainer< D > +xt::xsemantic_base< D > +xt::xcontiguous_iterable< D > +xt::xaccessible< D > +xt::xiterable< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using container_closure_type = EC
 
using self_type = xtensor_view< EC, N, L, Tag >
 
using base_type = xstrided_container< self_type >
 
using semantic_base = xview_semantic< self_type >
 
using extension_base = extension::xtensor_adaptor_base_t< EC, N, L, Tag >
 
using storage_type = typename base_type::storage_type
 
using allocator_type = typename base_type::allocator_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using backstrides_type = typename base_type::backstrides_type
 
using temporary_type = typename semantic_base::temporary_type
 
using expression_tag = Tag
 
- Public Types inherited from xt::xstrided_container< xtensor_view< EC, N, L, Tag > >
using base_type = xcontainer< xtensor_view< EC, N, L, Tag > >
 
using storage_type = typename base_type::storage_type
 
using value_type = typename base_type::value_type
 
using reference = typename base_type::reference
 
using const_reference = typename base_type::const_reference
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using size_type = typename base_type::size_type
 
using shape_type = typename base_type::shape_type
 
using strides_type = typename base_type::strides_type
 
using inner_shape_type = typename base_type::inner_shape_type
 
using inner_strides_type = typename base_type::inner_strides_type
 
using inner_backstrides_type = typename base_type::inner_backstrides_type
 
- Public Types inherited from xt::xcontainer< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using storage_type = typename inner_types::storage_type
 
using allocator_type = allocator_type_t< std::decay_t< storage_type > >
 
using value_type = typename storage_type::value_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = typename storage_type::pointer
 
using const_pointer = typename storage_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename storage_type::difference_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = xt::bool_load_type< value_type >
 
using shape_type = typename inner_types::shape_type
 
using strides_type = typename inner_types::strides_type
 
using backstrides_type = typename inner_types::backstrides_type
 
using inner_shape_type = typename inner_types::inner_shape_type
 
using inner_strides_type = typename inner_types::inner_strides_type
 
using inner_backstrides_type = typename inner_types::inner_backstrides_type
 
using iterable_base = xcontiguous_iterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using accessible_base = xaccessible< D >
 
using data_alignment = xt_simd::container_alignment_t< storage_type >
 
using simd_type = xt_simd::simd_type< value_type >
 
using linear_iterator = typename iterable_base::linear_iterator
 
using const_linear_iterator = typename iterable_base::const_linear_iterator
 
using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
using container_iterator = linear_iterator
 
using const_container_iterator = const_linear_iterator
 
- Public Types inherited from xt::xcontiguous_iterable< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using iterable_base = xiterable< D >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
template<layout_type L>
using layout_iterator = typename iterable_base::template layout_iterator< L >
 
template<layout_type L>
using const_layout_iterator = typename iterable_base::template const_layout_iterator< L >
 
template<layout_type L>
using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator< L >
 
template<layout_type L>
using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator< L >
 
template<class S , layout_type L>
using broadcast_iterator = typename iterable_base::template broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator< S, L >
 
template<class S , layout_type L>
using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator< S, L >
 
using linear_traits = detail::linear_iterator_traits< D >
 
using linear_iterator = typename linear_traits::linear_iterator
 
using const_linear_iterator = typename linear_traits::const_linear_iterator
 
using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator
 
using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator
 
template<layout_type L, class It1 , class It2 >
using select_iterator_impl = std::conditional_t< L==static_layout, It1, It2 >
 
template<layout_type L>
using select_iterator = select_iterator_impl< L, linear_iterator, layout_iterator< L > >
 
template<layout_type L>
using select_const_iterator = select_iterator_impl< L, const_linear_iterator, const_layout_iterator< L > >
 
template<layout_type L>
using select_reverse_iterator = select_iterator_impl< L, reverse_linear_iterator, reverse_layout_iterator< L > >
 
template<layout_type L>
using select_const_reverse_iterator = select_iterator_impl< L, const_reverse_linear_iterator, const_reverse_layout_iterator< L > >
 
using iterator = select_iterator< ::xt::layout_type::row_major >
 
using const_iterator = select_const_iterator< ::xt::layout_type::row_major >
 
using reverse_iterator = select_reverse_iterator< ::xt::layout_type::row_major >
 
using const_reverse_iterator = select_const_reverse_iterator< ::xt::layout_type::row_major >
 
- Public Types inherited from xt::xview_semantic< xtensor_view< EC, N, L, Tag > >
using base_type = xsemantic_base< xtensor_view< EC, N, L, Tag > >
 
using derived_type = xtensor_view< EC, N, L, Tag >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xtensor_view (const xtensor_view &)=default
 
xtensor_view (xtensor_view &&)=default
 
+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
Constructors
 xtensor_view (storage_type &&storage)
 Constructs an xtensor_view of the given stl-like container.
 
 xtensor_view (const storage_type &storage)
 Constructs an xtensor_view of the given stl-like container.
 
template<class D >
 xtensor_view (D &&storage, const shape_type &shape, layout_type l=L)
 Constructs an xtensor_view of the given stl-like container, with the specified shape and layout_type.
 
template<class D >
 xtensor_view (D &&storage, const shape_type &shape, const strides_type &strides)
 Constructs an xtensor_view of the given stl-like container, with the specified shape and strides.
 
xtensor_viewoperator= (const xtensor_view &)
 
xtensor_viewoperator= (xtensor_view &&)
 
- Public Member Functions inherited from xt::xstrided_container< xtensor_view< EC, N, L, Tag > >
void resize (S &&shape, bool force=false)
 Resizes the container.
 
void resize (S &&shape, layout_type l)
 Resizes the container.
 
void resize (S &&shape, const strides_type &strides)
 Resizes the container.
 
auto & reshape (S &&shape, layout_type layout=base_type::static_layout) &
 Reshapes the container and keeps old elements.
 
auto & reshape (std::initializer_list< T > shape, layout_type layout=base_type::static_layout) &
 
layout_type layout () const noexcept
 Return the layout_type of the container.
 
bool is_contiguous () const noexcept
 
- Public Member Functions inherited from xt::xcontainer< D >
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
reference element (It first, It last)
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class S >
stepper stepper_begin (const S &shape) noexcept
 
+template<class S >
stepper stepper_end (const S &shape, layout_type l) noexcept
 
+template<class S >
const_stepper stepper_begin (const S &shape) const noexcept
 
+template<class S >
const_stepper stepper_end (const S &shape, layout_type l) const noexcept
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
container_simd_return_type_t< storage_type, value_type, requested_type > load_simd (size_type i) const
 
+template<class... Args>
reference at (Args... args)
 
template<class... Args>
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+template<class... Args>
const_reference at (Args... args) const
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
+template<class... Args>
reference periodic (Args... args)
 
template<class... Args>
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
size_type size () const noexcept
 Returns the number of element in the container.
 
constexpr size_type dimension () const noexcept
 Returns the number of dimensions of the container.
 
constexpr const inner_shape_type & shape () const noexcept
 Returns the shape of the container.
 
constexpr const inner_strides_type & strides () const noexcept
 Returns the strides of the container.
 
constexpr const inner_backstrides_type & backstrides () const noexcept
 Returns the backstrides of the container.
 
template<class T >
void fill (const T &value)
 Fills the container with the given value.
 
storage_type & storage () noexcept
 Returns a reference to the buffer containing the elements of the container.
 
const storage_type & storage () const noexcept
 Returns a constant reference to the buffer containing the elements of the container.
 
pointer data () noexcept
 Returns a pointer to the underlying array serving as element storage.
 
const_pointer data () const noexcept
 Returns a constant pointer to the underlying array serving as element storage.
 
const size_type data_offset () const noexcept
 Returns the offset to the first element in the container.
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) -> reference
 Returns a reference to the element at the specified position in the container.
 
template<class It >
auto element (It first, It last) const -> const_reference
 Returns a reference to the element at the specified position in the container.
 
template<class S >
bool broadcast_shape (S &shape, bool reuse_cache=false) const
 Broadcast the shape of the container to the specified parameter.
 
template<class S >
bool has_linear_assign (const S &strides) const noexcept
 Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
 
reference data_element (size_type i)
 
const_reference data_element (size_type i) const
 
reference flat (size_type i)
 Returns a reference to the element at the specified position in the container storage (as if it was one dimensional).
 
const_reference flat (size_type i) const
 Returns a constant reference to the element at the specified position in the container storage (as if it was one dimensional).
 
template<class align , class simd >
void store_simd (size_type i, const simd &e)
 
linear_iterator linear_begin () noexcept
 
linear_iterator linear_end () noexcept
 
const_linear_iterator linear_begin () const noexcept
 
const_linear_iterator linear_end () const noexcept
 
const_linear_iterator linear_cbegin () const noexcept
 
const_linear_iterator linear_cend () const noexcept
 
reverse_linear_iterator linear_rbegin () noexcept
 
reverse_linear_iterator linear_rend () noexcept
 
const_reverse_linear_iterator linear_rbegin () const noexcept
 
const_reverse_linear_iterator linear_rend () const noexcept
 
const_reverse_linear_iterator linear_crbegin () const noexcept
 
const_reverse_linear_iterator linear_crend () const noexcept
 
template<class S >
auto stepper_begin (const S &shape) noexcept -> stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) noexcept -> stepper
 
template<class S >
auto stepper_begin (const S &shape) const noexcept -> const_stepper
 
template<class S >
auto stepper_end (const S &shape, layout_type l) const noexcept -> const_stepper
 
template<class alignment , class requested_type , std::size_t N>
auto load_simd (size_type i) const -> container_simd_return_type_t< storage_type, value_type, requested_type >
 
- Public Member Functions inherited from xt::xcontiguous_iterable< D >
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > begin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_iterator< L > end () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > begin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > end () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_iterator< L > cend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rbegin () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_reverse_iterator< L > rend () noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > rend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crbegin () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major>
select_const_reverse_iterator< L > crend () const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > begin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
broadcast_iterator< S, L > end (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > begin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > end (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_broadcast_iterator< S, L > cend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rbegin (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
reverse_broadcast_iterator< S, L > rend (const S &shape) noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > rend (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crbegin (const S &shape) const noexcept
 
+template<layout_type L = ::xt::layout_type::row_major, class S >
const_reverse_broadcast_iterator< S, L > crend (const S &shape) const noexcept
 
template<layout_type L>
auto begin () noexcept -> select_iterator< L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L>
auto end () noexcept -> select_iterator< L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L>
auto begin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto end () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto cbegin () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L>
auto cend () const noexcept -> select_const_iterator< L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L>
auto rbegin () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () noexcept -> select_reverse_iterator< L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto rbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto rend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L>
auto crbegin () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L>
auto crend () const noexcept -> select_const_reverse_iterator< L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto begin (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) noexcept -> broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto begin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto end (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto cbegin (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the expression.
 
template<layout_type L, class S >
auto cend (const S &shape) const noexcept -> const_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) noexcept -> reverse_broadcast_iterator< S, L >
 Returns an iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto rbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto rend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
template<layout_type L, class S >
auto crbegin (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the first element of the reversed expression.
 
template<layout_type L, class S >
auto crend (const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >
 Returns a constant iterator to the element following the last element of the reversed expression.
 
- Public Member Functions inherited from xt::xview_semantic< xtensor_view< EC, N, L, Tag > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + +

+Friends

class xcontainer< xtensor_view< EC, N, L, Tag > >
 
class xview_semantic< xtensor_view< EC, N, L, Tag > >
 
+ + + + + + + + +

Extended copy semantic

template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from xt::xcontainer< D >
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
- Static Public Attributes inherited from xt::xcontiguous_iterable< D >
static constexpr layout_type static_layout = inner_types::layout
 
- Protected Member Functions inherited from xt::xstrided_container< xtensor_view< EC, N, L, Tag > >
xstrided_container (const xstrided_container &)=default
 
xstrided_container (xstrided_container &&)=default
 
+xstrided_containeroperator= (const xstrided_container &)=default
 
+xstrided_containeroperator= (xstrided_container &&)=default
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&) noexcept
 
 xstrided_container (inner_shape_type &&, inner_strides_type &&, inner_backstrides_type &&, layout_type &&) noexcept
 
inner_shape_type & shape_impl () noexcept
 
const inner_shape_type & shape_impl () const noexcept
 
inner_strides_type & strides_impl () noexcept
 
const inner_strides_type & strides_impl () const noexcept
 
inner_backstrides_type & backstrides_impl () noexcept
 
const inner_backstrides_type & backstrides_impl () const noexcept
 
void reshape_impl (S &&shape, std::true_type, layout_type layout=base_type::static_layout)
 
void reshape_impl (S &&shape, std::false_type, layout_type layout=base_type::static_layout)
 
layout_typemutable_layout () noexcept
 
- Protected Member Functions inherited from xt::xcontainer< D >
xcontainer (const xcontainer &)=default
 
+xcontaineroperator= (const xcontainer &)=default
 
xcontainer (xcontainer &&)=default
 
+xcontaineroperator= (xcontainer &&)=default
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
derived_type & derived_cast () &noexcept
 
const derived_type & derived_cast () const &noexcept
 
derived_type derived_cast () &&noexcept
 
- Protected Member Functions inherited from xt::xview_semantic< xtensor_view< EC, N, L, Tag > >
xview_semantic (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class EC, std::size_t N, layout_type L, class Tag>
+class xt::xtensor_view< EC, N, L, Tag >

Dense multidimensional container adaptor with view semantics and fixed dimension.

+

The xtensor_view class implements a dense multidimensional container adaptor with viewsemantics and fixed dimension. It is used to provide a multidimensional container semantic and a view semantic to stl-like containers.

+
Template Parameters
+ + + + + +
ECThe closure for the container type to adapt.
NThe dimension of the view.
LThe layout_type of the view.
TagThe expression tag.
+
+
+
See also
xstrided_container, xcontainer
+ +

Definition at line 326 of file xtensor.hpp.

+

Member Typedef Documentation

+ +

◆ allocator_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::allocator_type = typename base_type::allocator_type
+
+ +

Definition at line 339 of file xtensor.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::backstrides_type = typename base_type::backstrides_type
+
+ +

Definition at line 342 of file xtensor.hpp.

+ +
+
+ +

◆ base_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::base_type = xstrided_container<self_type>
+
+ +

Definition at line 335 of file xtensor.hpp.

+ +
+
+ +

◆ container_closure_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::container_closure_type = EC
+
+ +

Definition at line 332 of file xtensor.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::expression_tag = Tag
+
+ +

Definition at line 344 of file xtensor.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::extension_base = extension::xtensor_adaptor_base_t<EC, N, L, Tag>
+
+ +

Definition at line 337 of file xtensor.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::self_type = xtensor_view<EC, N, L, Tag>
+
+ +

Definition at line 334 of file xtensor.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::semantic_base = xview_semantic<self_type>
+
+ +

Definition at line 336 of file xtensor.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::shape_type = typename base_type::shape_type
+
+ +

Definition at line 340 of file xtensor.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::storage_type = typename base_type::storage_type
+
+ +

Definition at line 338 of file xtensor.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::strides_type = typename base_type::strides_type
+
+ +

Definition at line 341 of file xtensor.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + +
using xt::xtensor_view< EC, N, L, Tag >::temporary_type = typename semantic_base::temporary_type
+
+ +

Definition at line 343 of file xtensor.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xtensor_view() [1/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xtensor_view< EC, N, L, Tag >::xtensor_view (storage_type && storage)
+
+inline
+
+ +

Constructs an xtensor_view of the given stl-like container.

+
Parameters
+ + +
storagethe container to adapt
+
+
+ +

Definition at line 741 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_view() [2/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
xt::xtensor_view< EC, N, L, Tag >::xtensor_view (const storage_type & storage)
+
+inline
+
+ +

Constructs an xtensor_view of the given stl-like container.

+
Parameters
+ + +
storagethe container to adapt
+
+
+ +

Definition at line 752 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_view() [3/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_view< EC, N, L, Tag >::xtensor_view (D && storage,
const shape_type & shape,
layout_type l = L 
)
+
+inline
+
+ +

Constructs an xtensor_view of the given stl-like container, with the specified shape and layout_type.

+
Parameters
+ + + + +
storagethe container to adapt
shapethe shape of the xtensor_view
lthe layout_type of the xtensor_view
+
+
+ +

Definition at line 767 of file xtensor.hpp.

+ +
+
+ +

◆ xtensor_view() [4/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class D >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xtensor_view< EC, N, L, Tag >::xtensor_view (D && storage,
const shape_type & shape,
const strides_type & strides 
)
+
+inline
+
+ +

Constructs an xtensor_view of the given stl-like container, with the specified shape and strides.

+
Parameters
+ + + + +
storagethe container to adapt
shapethe shape of the xtensor_view
stridesthe strides of the xtensor_view
+
+
+ +

Definition at line 783 of file xtensor.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator=() [1/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_view< EC, N, L, Tag >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 826 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [2/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_view< EC, N, L, Tag >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 817 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [3/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_view< EC, N, L, Tag >::operator= (const xtensor_view< EC, N, L, Tag > & rhs)
+
+inline
+
+ +

Definition at line 793 of file xtensor.hpp.

+ +
+
+ +

◆ operator=() [4/4]

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + + + + + +
auto xt::xtensor_view< EC, N, L, Tag >::operator= (xtensor_view< EC, N, L, Tag > && rhs)
+
+inline
+
+ +

Definition at line 801 of file xtensor.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xcontainer< xtensor_view< EC, N, L, Tag > >

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + +
friend class xcontainer< xtensor_view< EC, N, L, Tag > >
+
+friend
+
+ +

Definition at line 376 of file xtensor.hpp.

+ +
+
+ +

◆ xview_semantic< xtensor_view< EC, N, L, Tag > >

+ +
+
+
+template<class EC , std::size_t N, layout_type L, class Tag >
+ + + + + +
+ + + + +
friend class xview_semantic< xtensor_view< EC, N, L, Tag > >
+
+friend
+
+ +

Definition at line 376 of file xtensor.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xtensor__view.js b/classxt_1_1xtensor__view.js new file mode 100644 index 000000000..b8262b032 --- /dev/null +++ b/classxt_1_1xtensor__view.js @@ -0,0 +1,8 @@ +var classxt_1_1xtensor__view = +[ + [ "xtensor_view", "classxt_1_1xtensor__view.html#a3245a15af4f5a46b7315d4f14a1657d8", null ], + [ "xtensor_view", "classxt_1_1xtensor__view.html#ad26a102ac5d777f6d1b3dfad5a0ef1fa", null ], + [ "xtensor_view", "classxt_1_1xtensor__view.html#a70a1388809ad0d8d2869c56f2957fb73", null ], + [ "xtensor_view", "classxt_1_1xtensor__view.html#afd854308ee21d8738686c64a14363481", null ], + [ "operator=", "classxt_1_1xtensor__view.html#a595e97c93a52f5f196d00396435ec76b", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xtensor__view.png b/classxt_1_1xtensor__view.png new file mode 100644 index 0000000000000000000000000000000000000000..1866914eef7bb4892f3d60f5889e4e383a24a193 GIT binary patch literal 5882 zcmds5c~n!^x(CHpaljcTpjw9q3OFH@Fj#RYMxg~y2xAnS06|a@2t#TsAVp2BN)&-e z7148mm@ zjYC#YUiDT~RDgchUz#3+u{jr9oLsfQyQW#rxc5#=Yk8dG-mi~DXb9 zseKCjk?)Gf_Hc4;eVNjC@=WW`@hQ0$%D@%zYvYftkZNgbYa6VB;a_3l#YAZK>|V&X z01nvn_ef4dtuO;VNuxAzo}X*S7%^2xAZ1atiH^>gFvC}({4_aMmGGQ1)sf&USrKP$ zpL9HWLS}t#RjjSO0V_5ndkjswII=lBAFnJvdN_N} z?%lLl6P)wf$S~{GHV68*<7hX}8zA<}U=2T>UX9Rm)L{7>qD|WN3yYAXSGL`~!jDFJ zQ)li^@RKaf%)`g**wEcS(#FC*_v!Abd+vPFALaNl3y4ZMgYuCu<%B=wdkCvsX6Gpg~Lmx7EY}u zNpygwr<)qtgl;g^#tF7x@BY12sD*Q8{Lxfy&YG>J_G1x$`2LTk<}5*ZPqj(fe}k1_ z0^k2MF9SA#;b2QL2ZkTRC43v4XP~J^-~h1I zqJ(@B#Bo9eufS#(a$8l4kq|w9H4LY%$04wkf)C0mP;S6=8opI&bc2Hi%;~Kjfnau} z?L#F3U;G811Gf@<3ktYkc3f1^DTNUX+l_1&5FW)?D|gE46KM7j6fSL|%U^edw!WkC znJ|1l$fmX=@9OP6@TUN1K$k zL}vPPy3XYxG>0zLvtd8F+B>dzl!|$)dm5f(B>|)%jCq+9pGL?35tAmMu6CYggIjB!`sm_H%FhTGsrzB z_`-_7col~839DwN+|>dl@PKG^G27(Cp{3i-3p=j8G^h5()L89J@`&_w%ih1)zXI6INE zJbor{7lR~KJDedvoJXa#LhGHUB8kfo_8Ck*7uPc<;&we^!F9_%>6Iy3NAU~{vP93$ zCUf@bQy;NZsctrg4arff@%bui{lVMw$jgx??yEv|S$Nh;H|H*aM&3$a$*r3-d-l`P zH91QLf}+2~35>k#R9kWS*fgj59m`)7U+3_Dw4m$CLa0(|<*0nDj$U#lsiu)%lf9kk-}B)uaIy1_iVZ5W*H(oGET=UTjO~dxjy8lF%WcbP#@`E z>b1YadT~cRp*{D3q_I_4un1XAD7^bhaH)yM-+W{V5@Hm7jl-z73sZOw8Is%EA6Z3X zJj&BHrhl$axAyESd*8;YgWayFw~w+eKO?h+wed7rOkuG=P3BEbPAf3IQrIoS9QfpW zG(AypC+0A(>7jqmiL{#S{f(*ISno5j6DQ9x2ciOV_*m35)j`0EWRs`6a1eixjYc`W zQa{wi+-xgt^SQ0BQBNbkQPFP5k7YBJopv_F(T%9j$a4EM{B&msN_IgmTtK5$I zX4>OyzERl69>+m38|fZU0gIXhT%vSzwye=3(DI)>vg5~^fWRE(oc|3U2VwQfu@&*Q z#|a4_`&lM&syaiifTvkoXRL4KjEf*lmL4qMQ!x{Jw-N-Dr>u9Ib!>74f_KKEfj;A6 z-6-r|1}P?o(<7I(SKNI7=|2%nnoYMB|id+}k!r=;+M+=8nKlEAq;Zo+IV*!m+Y(c{ZaEeUK?Cc-Fo#iXGG=B9 zK?OHKxP>|vBaNl`N2W7D47yO2k+}eZsCRlM>qN9y3f|lWXYB-5NE6;J6!Z&UsCj2hf@Aw8EUa19UxoC zE6BI@`Yt2NzRS*4HBzx7J42!|Ww(3VMj}7#+;!Ls*L#LDv6$k)D(U@AI1%-Te$A{| zNS26X#NN?+F?m_4J=sh}qkcnl3ghvmx*aJ4%8yU#omD3t*W)t6jWn^>g4DKxTI&=? zGHJX9(US4r`JxQ0v$OX$f`n`6q57=uo{xbWw%Chz3)<)M7 zwj=`S3|8T7lVAVlSf7Pl@GfBgYOpJ5#QMIVuD&js?;yT8QC_YpYcfJc!ilF-%2a9U zZFu$G?AYN(nv|r}0zd9skpq*Pu+qU7%EusxE3%01S^$^unAJDLlaDx&0#Go>{5cy(5s)s z3BJrS&Xd}csj+vRm*m63mxP}EMqD z6MlKrL%gNAP-X1Ut(t)`$Hvq%&e=-evSu%=>4bXwRNq#1Wq->JpRxr4xG~GwZ&eW`eti zu3R&0@GxU~%^zKVZu9@P>%d0yY3NJ%vR9=`y8j6gPI5U*|YLoYu(UF=lFBWDS>1 zJv2F5Mq>WRpo-r};=~yo7dDo4&Vgi%V~~c-?bG2DA9FWSeg!R7YFRDBi0#TI>uxAj zv#90;DWUK0fko95jXjwi6H#I}zcBF_6`WZ}c+X`(5SAjjK2Xq`>g>_qA1;=m1B#0@ zV0|(rtsz#89ymNkkOGc1EWvxP*|KMh_^^PxoEa%#ZNs^d-Zt!$5mmb)A{4S+AT)Y! zrIpuxXuH}{kael4d1t75QJ&`=^HBdwNRk=iGZ=b~zs55tFJ0*q7^EtJpg__(93!w( z%=fWX`Dg6=>eWlZSzCp9t+1{{fVVbeZg|_d<`Da)WO(U`A@B36q6|_AA@bZhN_yJH zE#_&|L$Z=ZS3PeO<0pQ^r!hrFep1U?&3%$?{ODnt*_|*>_FH}ZEgKs=KX@^kX4Gw7 z0Eu~%zjo{Utcnaso`4yJ+*%r@A+BYFdWB>CPTH^J`*?-5KK5G}Gqy#|%~N}1JGqBP zmX{lNc$T-Xj8#{;ejiNYY#D!q_cmkTPu;z&s1b_l%#fH=8f!a_JZn4B<~~3;)$=jP zox*d?^$5LAFt|cm#fdjOYIy5O3zbvg;hVhG`F5(+ba}98Szensr&T^& z9;gCLaR7fGzu_-nTCcfnW(OM_)_)anjt@7D*4=A9odd%B#V}7sK6lhj{+O=X zpB>DrRFsyN3=7?Z*+N2;lyH?(*S7A{qdRxwd41v*3!`e`1-k|&V(xx<@I>wC53Bto zN|t_3L1DLLt?W=U zJns?zz{5zeB^T&(z+*gwK{*!vIEB?7lT7MwA=%=bC&bdit9SRE%Y7?o3e5GDEIuyQ zJGI28NmL%z(-PrW9$86S5}kIPS}V*K9>|cF`bmzoQc`Ty6Rf3!BY9QyRHsvv#hCf^ z=f_|7=hv)rJHaf9>t3AomS1w(WU{X+ER7Ytli%!{=z6N*fRk%7X>&d6nUI$QdnjD# zC2*W`c$8$kL2q($>=Y)#;{&jDT8$8UCAG5OVqM4E6N`vV&(4ewNJcEO=mYpPk`td#pdkEn#J0_m{zYNE!q}(OHK^ON zy5yGLWkX7f7H$(3sPq|tbby;pX+6fWQv##nb6oqT@> zrd6S9Vq@AHY-_=^4%v{qYAbq|)*B-1!Jtg(U^$A#fR0!wNkQ-B0F6!E%OS}7AjpUS z$W7h9aZs2sx{6T^fIhgD12Xd;HXtlVrlH}?@tEI>A$fS)H474~z+Pea|P_ z%>?PPl3NG#0I01{{YGniAQ0F@^|}XWNhvXLX5DWbI$UNxWr;SA^>)7yv^cP*-YyuE z4be=dJVD5CjT}a?vB+GZ>;3XU0yFcoqofwMUKc~#F;fdIMICbwWwbW~WXOMIm1#rl z_52H?f7}`yIri_iek&G>&)eAB+p~WshIBy1g?K}nfL2$|0t5@HF%^srI88~XZMy6e zgchto(Wh{_=mS6jTBl(GY>ZZQIzZJRzNs@DjcfHH1eY$-2E#3Nh*Z8G6BKx%W!=6oaVnXRkcBt1> z-Ap>?o*!I3>6K>4ULg2@A)QMtc>aR-LZIg?K>ovq8nmy6D2<{MRf8=Qa+lTMm*|I= zw;Fpb=o)YD9~jtrT@31m`Zp}qA&U@7B&J#@0y$=YLYt~A`rI8|?v$6BIvOb1mBcym z$@F}L^<8thT8XX}>1!4NE=Nw@*Z1wv(~Z z%aJ-o%UAd%pcvPPr1?sIxr{V5Jzwf4zRJJK0fBB;ov_U>Olpd-w7aaXGY)F1gHp#^ zuE$N!4Gmma>F4?`*H5yTDAsFO6tygia@lJ^v@tFVlIc#>90NP>w)^@n$bA>x%9<>F zS>xV&*eG{sp! + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xvectorizer< F, R > Member List
+
+
+ +

This is the complete list of members for xt::xvectorizer< F, R >, including all inherited members.

+ + + + + +
operator()(E &&... e) const (defined in xt::xvectorizer< F, R >)xt::xvectorizer< F, R >
operator()(E &&... e) const -> xfunction_type< E... > (defined in xt::xvectorizer< F, R >)xt::xvectorizer< F, R >inline
xfunction_type typedef (defined in xt::xvectorizer< F, R >)xt::xvectorizer< F, R >
xvectorizer(Func &&f) (defined in xt::xvectorizer< F, R >)xt::xvectorizer< F, R >inline
+
+ + + + diff --git a/classxt_1_1xvectorizer.html b/classxt_1_1xvectorizer.html new file mode 100644 index 000000000..fb820ed06 --- /dev/null +++ b/classxt_1_1xvectorizer.html @@ -0,0 +1,224 @@ + + + + + + + +xtensor: xt::xvectorizer< F, R > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xvectorizer< F, R > Class Template Reference
+
+
+ + + + + +

+Public Types

template<class... E>
using xfunction_type = xfunction< F, xclosure_t< E >... >
 
+ + + + + + + + + + +

+Public Member Functions

template<class Func , class = std::enable_if_t<!std::is_same<std::decay_t<Func>, xvectorizer>::value>>
 xvectorizer (Func &&f)
 
+template<class... E>
xfunction_type< E... > operator() (E &&... e) const
 
template<class... E>
auto operator() (E &&... e) const -> xfunction_type< E... >
 
+

Detailed Description

+
template<class F, class R>
+class xt::xvectorizer< F, R >
+

Definition at line 27 of file xvectorize.hpp.

+

Member Typedef Documentation

+ +

◆ xfunction_type

+ +
+
+
+template<class F , class R >
+
+template<class... E>
+ + + + +
using xt::xvectorizer< F, R >::xfunction_type = xfunction<F, xclosure_t<E>...>
+
+ +

Definition at line 32 of file xvectorize.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xvectorizer()

+ +
+
+
+template<class F , class R >
+
+template<class Func , class >
+ + + + + +
+ + + + + + + + +
xt::xvectorizer< F, R >::xvectorizer (Func && f)
+
+inline
+
+ +

Definition at line 72 of file xvectorize.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator()()

+ +
+
+
+template<class F , class R >
+
+template<class... E>
+ + + + + +
+ + + + + + + + +
auto xt::xvectorizer< F, R >::operator() (E &&... e) const -> xfunction_type<E...> +
+
+inline
+
+ +

Definition at line 79 of file xvectorize.hpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classxt_1_1xview-members.html b/classxt_1_1xview-members.html new file mode 100644 index 000000000..96adb3dd9 --- /dev/null +++ b/classxt_1_1xview-members.html @@ -0,0 +1,350 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xview< CT, S > Member List
+
+
+ +

This is the complete list of members for xt::xview< CT, S >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
access(Arg arg, Args... args) -> reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
access(Arg arg, Args... args) const -> const_reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
access_impl(std::index_sequence< I... >, Args... args) -> reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
access_impl(std::index_sequence< I... >, Args... args) const -> const_reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
accessible_base typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< xview< CT, S... > >inline
assign_to(xexpression< E > &e, bool force_resize) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
at(Args... args) -> referencext::xaccessible< xview< CT, S... > >inline
at(Args... args) const -> const_referencext::xaccessible< xview< CT, S... > >inline
back()xt::xaccessible< xview< CT, S... > >inline
back() constxt::xaccessible< xview< CT, S... > >inline
backstrides() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
backstrides() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const inner_strides_type & > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
backstrides_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bool_load_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
broadcast_shape(ST &shape, bool reuse_cache=false) constxt::xview< CT, S >inline
build_view(E &&e) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
build_view(E &&e) const -> rebind_t< E > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
build_view_impl(E &&e, std::index_sequence< I... >) const -> rebind_t< E > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
const_container_iterator typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
const_linear_iterator typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
const_pointer typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
const_reference typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
const_reverse_linear_iterator typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
const_stepper typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
container_iterator typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
contiguous_layout (defined in xt::xview< CT, S >)xt::xview< CT, S >static
data() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
data() (defined in xt::xview< CT, S >)xt::xview< CT, S >
data() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_pointer >xt::xview< CT, S >inline
data() -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, pointer > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_element(size_type i) (defined in xt::xview< CT, S >)xt::xview< CT, S >
data_element(size_type i) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
data_element(size_type i) -> enable_simd_interface< T, reference > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_element(size_type i) const -> enable_simd_interface< T, const_reference > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_offset() const noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >
data_offset() const noexcept -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, std::size_t >xt::xview< CT, S >inline
data_xbegin() noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_xbegin() const noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_xbegin_impl(It begin) const noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_xend(layout_type l, size_type offset) noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_xend(layout_type l, size_type offset) const noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
data_xend_impl(It begin, layout_type l, size_type offset) const noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
difference_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
dimension() const noexceptxt::xconst_accessible< D >inline
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
element(It first, It last) (defined in xt::xview< CT, S >)xt::xview< CT, S >
element(It first, It last) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
element(It first, It last) -> reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
element(It first, It last) const -> const_reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
enable_simd_interface typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
expression() noexceptxt::xview< CT, S >inline
expression() const noexceptxt::xview< CT, S >inline
expression_tag typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
extension_base typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
fill(const T &value)xt::xview< CT, S >inline
flat(size_type i) (defined in xt::xview< CT, S >)xt::xview< CT, S >
flat(size_type i) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
flat(size_type i) -> enable_simd_interface< T, reference > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
flat(size_type i) const -> enable_simd_interface< T, const_reference > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
front()xt::xaccessible< xview< CT, S... > >inline
front() constxt::xaccessible< xview< CT, S... > >inline
has_linear_assign(const ST &strides) constxt::xview< CT, S >inline
has_trivial_strides (defined in xt::xview< CT, S >)xt::xview< CT, S >static
in_bounds(Args... args) constxt::xconst_accessible< D >inline
index(Args... args) const -> std::enable_if_t< lesser_condition< I >::value, size_type > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
inner_backstrides_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
inner_shape_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
inner_strides_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
inner_types typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
is_const (defined in xt::xview< CT, S >)xt::xview< CT, S >static
is_contiguous() const noexcept (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
is_contiguous_view (defined in xt::xview< CT, S >)xt::xview< CT, S >static
is_strided_view (defined in xt::xview< CT, S >)xt::xview< CT, S >static
iterable_base typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
layout() const noexceptxt::xview< CT, S >inline
linear_begin() (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_begin() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_begin() -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_begin() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_cbegin() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_cbegin() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_cend() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_cend() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_crbegin() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_crbegin() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_crend() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_crend() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_end() (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_end() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_end() -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_end() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_iterator typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rbegin() (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rbegin() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rbegin() -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, reverse_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rbegin() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rend() (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rend() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rend() -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, reverse_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
linear_rend() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > (defined in xt::xview< CT, S >)xt::xview< CT, S >
load_simd(size_type i) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
load_simd(size_type i) const -> enable_simd_interface< T, simd_return_type< requested_type > > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
make_index(It first, It last) const -> base_index_type (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator const_reference() const (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator reference() (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&() & (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator&() const & (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator&() && (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator()(Args... args) (defined in xt::xview< CT, S >)xt::xview< CT, S >
operator()(Args... args) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
operator()(Args... args) -> referencext::xview< CT, S >inline
operator()(Args... args) const -> const_referencext::xview< CT, S >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xview &rhs) (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator=(const xexpression< E > &e) (defined in xt::xview< CT, S >)xt::xview< CT, S >
operator=(const E &e) (defined in xt::xview< CT, S >)xt::xview< CT, S >
operator=(const xexpression< E > &e) -> self_type &xt::xview< CT, S >inline
operator=(const E &e) -> disable_xexpression< E, self_type > & (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator=(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
operator[](const S &index) -> disable_integral_t< S, reference >xt::xaccessible< xview< CT, S... > >inline
operator[](const S &index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](std::initializer_list< I > index) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >
operator[](size_type i) const (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >inline
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
periodic(Args... args) -> referencext::xaccessible< xview< CT, S... > >inline
periodic(Args... args) const -> const_referencext::xaccessible< xview< CT, S... > >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
pointer typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
rank (defined in xt::xview< CT, S >)xt::xview< CT, S >static
rebind_t typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
reference typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
reverse_linear_iterator typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
self_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
semantic_base typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
shape() const noexceptxt::xview< CT, S >inline
xaccessible< xview< CT, S... > >::shape(size_type index) constxt::xconst_accessible< D >inline
shape_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
simd_return_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
simd_value_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
size() const noexceptxt::xconst_accessible< D >inline
size_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
slice_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
sliced_access(const xslice< T > &slice) const -> size_type (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
sliced_access(const xslice< T > &slice, Arg arg, Args... args) const -> size_type (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
sliced_access(const T &squeeze, Args...) const -> disable_xslice< T, size_type > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
slices() const noexceptxt::xview< CT, S >inline
static_layout (defined in xt::xview< CT, S >)xt::xview< CT, S >static
stepper typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_begin(const ST &shape) (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_begin(const ST &shape) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_begin(const ST &shape) (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_begin(const ST &shape) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_begin(const ST &shape) -> std::enable_if_t<!Enable, stepper > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
stepper_begin(const ST &shape) const -> std::enable_if_t<!Enable, const_stepper > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
stepper_end(const ST &shape, layout_type l) (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_end(const ST &shape, layout_type l) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_end(const ST &shape, layout_type l) (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_end(const ST &shape, layout_type l) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
stepper_end(const ST &shape, layout_type l) -> std::enable_if_t<!Enable, stepper > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
stepper_end(const ST &shape, layout_type l) const -> std::enable_if_t<!Enable, const_stepper > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
storage() (defined in xt::xview< CT, S >)xt::xview< CT, S >
storage() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
storage() -> std::enable_if_t< has_data_interface< T >::value, storage_type & >xt::xview< CT, S >inline
storage() const -> std::enable_if_t< has_data_interface< T >::value, const storage_type & > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
storage_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
store_simd(size_type i, const simd &e) (defined in xt::xview< CT, S >)xt::xview< CT, S >
store_simd(size_type i, const simd &e) -> enable_simd_interface< T, void > (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
strides() const (defined in xt::xview< CT, S >)xt::xview< CT, S >
strides() const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const inner_strides_type & >xt::xview< CT, S >inline
strides_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
temporary_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
unchecked(Args... args) (defined in xt::xview< CT, S >)xt::xview< CT, S >
unchecked(Args... args) const (defined in xt::xview< CT, S >)xt::xview< CT, S >
unchecked(Args... args) -> referencext::xview< CT, S >inline
unchecked(Args... args) const -> const_referencext::xview< CT, S >inline
unchecked_impl(std::index_sequence< I... >, Args... args) -> reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
unchecked_impl(std::index_sequence< I... >, Args... args) const -> const_reference (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
underlying_size(size_type dim) const (defined in xt::xview< CT, S >)xt::xview< CT, S >inline
value_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(const xconst_accessible &)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xconst_accessible(xconst_accessible &&)=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
xexpression_inner_backstrides_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
xexpression_inner_strides_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
xexpression_type typedef (defined in xt::xview< CT, S >)xt::xview< CT, S >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xview(CTA &&e, FSL &&first_slice, SL &&... slices) noexceptxt::xview< CT, S >explicit
xview(const xview &)=default (defined in xt::xview< CT, S >)xt::xview< CT, S >
xview_semantic< xview< CT, S... > > (defined in xt::xview< CT, S >)xt::xview< CT, S >friend
~xconst_accessible()=default (defined in xt::xconst_accessible< D >)xt::xconst_accessible< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
+
+ + + + diff --git a/classxt_1_1xview.html b/classxt_1_1xview.html new file mode 100644 index 000000000..6ca2b5380 --- /dev/null +++ b/classxt_1_1xview.html @@ -0,0 +1,4588 @@ + + + + + + + +xtensor: xt::xview< CT, S > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xview< CT, S > Class Template Reference
+
+
+ +

Multidimensional view with tensor semantic. + More...

+ +

#include <xview.hpp>

+
+Inheritance diagram for xt::xview< CT, S >:
+
+
+ + +xt::xview_semantic< xview< CT, S... > > +xt::xaccessible< xview< CT, S... > > +xt::xsemantic_base< D > +xt::xconst_accessible< D > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using self_type = xview< CT, S... >
 
using inner_types = xcontainer_inner_types< self_type >
 
using xexpression_type = std::decay_t< CT >
 
using semantic_base = xview_semantic< self_type >
 
using temporary_type = typename xcontainer_inner_types< self_type >::temporary_type
 
using accessible_base = xaccessible< self_type >
 
using extension_base = extension::xview_base_t< CT, S... >
 
using expression_tag = typename extension_base::expression_tag
 
using value_type = typename xexpression_type::value_type
 
using simd_value_type = xt_simd::simd_type< value_type >
 
using bool_load_type = typename xexpression_type::bool_load_type
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using pointer = std::conditional_t< is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer >
 
using const_pointer = typename xexpression_type::const_pointer
 
using size_type = typename inner_types::size_type
 
using difference_type = typename xexpression_type::difference_type
 
using iterable_base = xiterable< self_type >
 
using inner_shape_type = typename iterable_base::inner_shape_type
 
using shape_type = typename xview_shape_type< typename xexpression_type::shape_type, S... >::type
 
using xexpression_inner_strides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_strides_type< xexpression_type >, get_strides_type< shape_type > >
 
using xexpression_inner_backstrides_type = xtl::mpl::eval_if_t< has_strides< xexpression_type >, detail::expr_inner_backstrides_type< xexpression_type >, get_strides_type< shape_type > >
 
using storage_type = typename inner_types::storage_type
 
using inner_strides_type = std::conditional_t< has_trivial_strides, typename detail::unwrap_offset_container< xexpression_type::static_layout, xexpression_inner_strides_type, integral_count< S... >()>::type, get_strides_t< shape_type > >
 
using inner_backstrides_type = std::conditional_t< has_trivial_strides, typename detail::unwrap_offset_container< xexpression_type::static_layout, xexpression_inner_backstrides_type, integral_count< S... >()>::type, get_strides_t< shape_type > >
 
using strides_type = get_strides_t< shape_type >
 
using backstrides_type = strides_type
 
using slice_type = std::tuple< S... >
 
using stepper = typename iterable_base::stepper
 
using const_stepper = typename iterable_base::const_stepper
 
using linear_iterator = std::conditional_t< has_data_interface< xexpression_type >::value &&is_strided_view, std::conditional_t< is_const, typename xexpression_type::const_linear_iterator, typename xexpression_type::linear_iterator >, typename iterable_base::linear_iterator >
 
using const_linear_iterator = std::conditional_t< has_data_interface< xexpression_type >::value &&is_strided_view, typename xexpression_type::const_linear_iterator, typename iterable_base::const_linear_iterator >
 
using reverse_linear_iterator = std::reverse_iterator< linear_iterator >
 
using const_reverse_linear_iterator = std::reverse_iterator< const_linear_iterator >
 
using container_iterator = pointer
 
using const_container_iterator = const_pointer
 
template<class E >
using rebind_t = xview< E, S... >
 
template<class requested_type >
using simd_return_type = xt_simd::simd_return_type< value_type, requested_type >
 
template<class T , class R >
using enable_simd_interface = std::enable_if_t< has_simd_interface< T >::value &&is_strided_view, R >
 
- Public Types inherited from xt::xview_semantic< xview< CT, S... > >
using base_type = xsemantic_base< xview< CT, S... > >
 
using derived_type = xview< CT, S... >
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
- Public Types inherited from xt::xaccessible< xview< CT, S... > >
using base_type = xconst_accessible< xview< CT, S... > >
 
using derived_type = typename base_type::derived_type
 
using reference = typename base_type::reference
 
using size_type = typename base_type::size_type
 
- Public Types inherited from xt::xconst_accessible< D >
using derived_type = D
 
using inner_types = xcontainer_inner_types< D >
 
using reference = typename inner_types::reference
 
using const_reference = typename inner_types::const_reference
 
using size_type = typename inner_types::size_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

xview (const xview &)=default
 
+template<class E >
self_typeoperator= (const xexpression< E > &e)
 
+template<class E >
disable_xexpression< E, self_type > & operator= (const E &e)
 
+template<class... Args>
reference operator() (Args... args)
 
+template<class... Args>
reference unchecked (Args... args)
 
+template<class It >
reference element (It first, It last)
 
+template<class... Args>
const_reference operator() (Args... args) const
 
+template<class... Args>
const_reference unchecked (Args... args) const
 
+template<class It >
const_reference element (It first, It last) const
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t<!Enable, stepper > stepper_begin (const ST &shape)
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t<!Enable, stepper > stepper_end (const ST &shape, layout_type l)
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t<!Enable, const_stepper > stepper_begin (const ST &shape) const
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t<!Enable, const_stepper > stepper_end (const ST &shape, layout_type l) const
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t< Enable, stepper > stepper_begin (const ST &shape)
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t< Enable, stepper > stepper_end (const ST &shape, layout_type l)
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t< Enable, const_stepper > stepper_begin (const ST &shape) const
 
+template<class ST , bool Enable = is_strided_view>
std::enable_if_t< Enable, const_stepper > stepper_end (const ST &shape, layout_type l) const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value, storage_type & > storage ()
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value, const storage_type & > storage () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, linear_iterator > linear_begin ()
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, linear_iterator > linear_end ()
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > linear_begin () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > linear_end () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > linear_cbegin () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator > linear_cend () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, reverse_linear_iterator > linear_rbegin ()
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, reverse_linear_iterator > linear_rend ()
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > linear_rbegin () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > linear_rend () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > linear_crbegin () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator > linear_crend () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const inner_strides_type & > strides () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const inner_strides_type & > backstrides () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_pointer > data () const
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, pointer > data ()
 
+template<class T = xexpression_type>
std::enable_if_t< has_data_interface< T >::value &&is_strided_view, std::size_t > data_offset () const noexcept
 
template<class ST = self_type, class = std::enable_if_t<is_xscalar<std::decay_t<ST>>::value, int>>
 operator reference ()
 
template<class ST = self_type, class = std::enable_if_t<is_xscalar<std::decay_t<ST>>::value, int>>
 operator const_reference () const
 
+template<class E >
rebind_t< E > build_view (E &&e) const
 
+template<class align , class simd , class T = xexpression_type>
enable_simd_interface< T, void > store_simd (size_type i, const simd &e)
 
+template<class align , class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size, class T = xexpression_type>
enable_simd_interface< T, simd_return_type< requested_type > > load_simd (size_type i) const
 
+template<class T = xexpression_type>
enable_simd_interface< T, reference > data_element (size_type i)
 
+template<class T = xexpression_type>
enable_simd_interface< T, const_reference > data_element (size_type i) const
 
+template<class T = xexpression_type>
enable_simd_interface< T, reference > flat (size_type i)
 
+template<class T = xexpression_type>
enable_simd_interface< T, const_reference > flat (size_type i) const
 
Size and shape
const inner_shape_type & shape () const noexcept
 Returns the shape of the view.
 
const slice_type & slices () const noexcept
 Returns the slices of the view.
 
layout_type layout () const noexcept
 Returns the slices of the view.
 
bool is_contiguous () const noexcept
 
Extended copy semantic
template<class E >
auto operator= (const xexpression< E > &e) -> self_type &
 The extended assignment operator.
 
template<class E >
auto operator= (const E &e) -> disable_xexpression< E, self_type > &
 
- Public Member Functions inherited from xt::xview_semantic< xview< CT, S... > >
+derived_typeassign_xexpression (const xexpression< E > &e)
 
+derived_typecomputed_assign (const xexpression< E > &e)
 
+derived_typescalar_computed_assign (const E &e, F &&f)
 
derived_typeassign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
- Public Member Functions inherited from xt::xaccessible< xview< CT, S... > >
+reference at (Args... args)
 
auto at (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+const_reference at (Args... args) const
 
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
+disable_integral_t< S, reference > operator[] (const S &index)
 
+reference operator[] (std::initializer_list< I > index)
 
reference operator[] (size_type i)
 
auto operator[] (const S &index) -> disable_integral_t< S, reference >
 Returns a reference to the element at the specified position in the expression.
 
auto operator[] (std::initializer_list< I > index) -> reference
 
+reference periodic (Args... args)
 
auto periodic (Args... args) -> reference
 Returns a reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+const_reference periodic (Args... args) const
 
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
reference front ()
 Returns a reference to the first element of the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
reference back ()
 Returns a reference to the last element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
- Public Member Functions inherited from xt::xconst_accessible< D >
size_type size () const noexcept
 Returns the size of the expression.
 
size_type dimension () const noexcept
 Returns the number of dimensions of the expression.
 
size_type shape (size_type index) const
 Returns the i-th dimension of the expression.
 
+template<class... Args>
const_reference at (Args... args) const
 
+template<class S >
disable_integral_t< S, const_reference > operator[] (const S &index) const
 
+template<class I >
const_reference operator[] (std::initializer_list< I > index) const
 
const_reference operator[] (size_type i) const
 
+template<class... Args>
const_reference periodic (Args... args) const
 
template<class... Args>
bool in_bounds (Args... args) const
 Returns true only if the the specified position is a valid entry in the expression.
 
const_reference front () const
 Returns a constant reference to first the element of the expression.
 
const_reference back () const
 Returns a constant reference to last the element of the expression.
 
template<class... Args>
auto at (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after dimension and bounds checking.
 
template<class S >
auto operator[] (const S &index) const -> disable_integral_t< S, const_reference >
 Returns a constant reference to the element at the specified position in the expression.
 
template<class I >
auto operator[] (std::initializer_list< I > index) const -> const_reference
 
template<class... Args>
auto periodic (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the expression, after applying periodicity to the indices (negative and 'overflowing' indices are changed).
 
+ + + + + + + + + + + + + + + +

+Static Public Attributes

static constexpr bool is_const = std::is_const<std::remove_reference_t<CT>>::value
 
static constexpr layout_type static_layout = inner_types::layout
 
static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
 
static constexpr bool is_strided_view = detail::is_strided_view<xexpression_type, S...>::value
 
static constexpr bool is_contiguous_view = contiguous_layout
 
static constexpr bool has_trivial_strides
 
static constexpr std::size_t rank = SIZE_MAX
 
+ + + +

+Friends

class xview_semantic< xview< CT, S... > >
 
+ + + + + + + +

Constructor

template<class CTA , class FSL , class... SL>
 xview (CTA &&e, FSL &&first_slice, SL &&... slices) noexcept
 Constructs a view on the specified xexpression.
 
self_typeoperator= (const xview &rhs)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data

template<class T >
void fill (const T &value)
 Fills the view with the given value.
 
xexpression_type & expression () noexcept
 Returns a reference to the underlying expression of the view.
 
const xexpression_type & expression () const noexcept
 Returns a const reference to the underlying expression of the view.
 
size_type underlying_size (size_type dim) const
 
xtl::xclosure_pointer< self_type & > operator& () &
 
xtl::xclosure_pointer< const self_type & > operator& () const &
 
xtl::xclosure_pointer< self_typeoperator& () &&
 
template<class... Args>
auto operator() (Args... args) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class... Args>
auto unchecked (Args... args) -> reference
 Returns a reference to the element at the specified position in the view.
 
template<class It >
auto element (It first, It last) -> reference
 
template<class... Args>
auto operator() (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
template<class... Args>
auto unchecked (Args... args) const -> const_reference
 Returns a constant reference to the element at the specified position in the view.
 
template<class It >
auto element (It first, It last) const -> const_reference
 
template<class T >
auto storage () -> std::enable_if_t< has_data_interface< T >::value, storage_type & >
 Returns the data holder of the underlying container (only if the view is on a realized container).
 
template<class T >
auto storage () const -> std::enable_if_t< has_data_interface< T >::value, const storage_type & >
 
template<class T >
auto linear_begin () -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, linear_iterator >
 
template<class T >
auto linear_end () -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, linear_iterator >
 
template<class T >
auto linear_begin () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator >
 
template<class T >
auto linear_end () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator >
 
template<class T >
auto linear_cbegin () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator >
 
template<class T >
auto linear_cend () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_linear_iterator >
 
template<class T >
auto linear_rbegin () -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, reverse_linear_iterator >
 
template<class T >
auto linear_rend () -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, reverse_linear_iterator >
 
template<class T >
auto linear_rbegin () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator >
 
template<class T >
auto linear_rend () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator >
 
template<class T >
auto linear_crbegin () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator >
 
template<class T >
auto linear_crend () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_reverse_linear_iterator >
 
template<class T >
auto strides () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const inner_strides_type & >
 Return the strides for the underlying container of the view.
 
template<class T >
auto backstrides () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const inner_strides_type & >
 
template<class T >
auto data () const -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, const_pointer >
 Return the pointer to the underlying buffer.
 
template<class T >
auto data () -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, pointer >
 
template<class T >
auto data_offset () const noexcept -> std::enable_if_t< has_data_interface< T >::value &&is_strided_view, std::size_t >
 Return the offset to the first element of the view in the underlying container.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Broadcasting

template<class ST >
bool broadcast_shape (ST &shape, bool reuse_cache=false) const
 Broadcast the shape of the view to the specified parameter.
 
template<class ST >
bool has_linear_assign (const ST &strides) const
 Checks whether the xview can be linearly assigned to an expression with the specified strides.
 
template<class It >
It data_xbegin_impl (It begin) const noexcept
 
template<class It >
It data_xend_impl (It begin, layout_type l, size_type offset) const noexcept
 
container_iterator data_xbegin () noexcept
 
const_container_iterator data_xbegin () const noexcept
 
container_iterator data_xend (layout_type l, size_type offset) noexcept
 
const_container_iterator data_xend (layout_type l, size_type offset) const noexcept
 
template<class E , class T = xexpression_type, class = std::enable_if_t<has_data_interface<T>::value && is_contiguous_view, int>>
void assign_to (xexpression< E > &e, bool force_resize) const
 
template<class E , std::size_t... I>
auto build_view_impl (E &&e, std::index_sequence< I... >) const -> rebind_t< E >
 
template<class E >
auto build_view (E &&e) const -> rebind_t< E >
 
template<class align , class simd , class T >
auto store_simd (size_type i, const simd &e) -> enable_simd_interface< T, void >
 
template<class align , class requested_type , std::size_t N, class T >
auto load_simd (size_type i) const -> enable_simd_interface< T, simd_return_type< requested_type > >
 
template<class T >
auto data_element (size_type i) -> enable_simd_interface< T, reference >
 
template<class T >
auto data_element (size_type i) const -> enable_simd_interface< T, const_reference >
 
template<class T >
auto flat (size_type i) -> enable_simd_interface< T, reference >
 
template<class T >
auto flat (size_type i) const -> enable_simd_interface< T, const_reference >
 
template<class Arg , class... Args>
auto access (Arg arg, Args... args) -> reference
 
template<class Arg , class... Args>
auto access (Arg arg, Args... args) const -> const_reference
 
template<typename std::decay_t< CT >::size_type... I, class... Args>
auto unchecked_impl (std::index_sequence< I... >, Args... args) -> reference
 
template<typename std::decay_t< CT >::size_type... I, class... Args>
auto unchecked_impl (std::index_sequence< I... >, Args... args) const -> const_reference
 
template<typename std::decay_t< CT >::size_type... I, class... Args>
auto access_impl (std::index_sequence< I... >, Args... args) -> reference
 
template<typename std::decay_t< CT >::size_type... I, class... Args>
auto access_impl (std::index_sequence< I... >, Args... args) const -> const_reference
 
template<typename std::decay_t< CT >::size_type I, class... Args>
auto index (Args... args) const -> std::enable_if_t< lesser_condition< I >::value, size_type >
 
template<typename std::decay_t< CT >::size_type I, class T >
auto sliced_access (const xslice< T > &slice) const -> size_type
 
template<typename std::decay_t< CT >::size_type I, class T , class Arg , class... Args>
auto sliced_access (const xslice< T > &slice, Arg arg, Args... args) const -> size_type
 
template<typename std::decay_t< CT >::size_type I, class T , class... Args>
auto sliced_access (const T &squeeze, Args...) const -> disable_xslice< T, size_type >
 
template<class It >
auto make_index (It first, It last) const -> base_index_type
 
template<class ST , bool Enable>
auto stepper_begin (const ST &shape) -> std::enable_if_t<!Enable, stepper >
 
template<class ST , bool Enable>
auto stepper_end (const ST &shape, layout_type l) -> std::enable_if_t<!Enable, stepper >
 
template<class ST , bool Enable>
auto stepper_begin (const ST &shape) const -> std::enable_if_t<!Enable, const_stepper >
 
template<class ST , bool Enable>
auto stepper_end (const ST &shape, layout_type l) const -> std::enable_if_t<!Enable, const_stepper >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from xt::xview_semantic< xview< CT, S... > >
xview_semantic (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+derived_typeoperator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xaccessible< xview< CT, S... > >
xaccessible (const xaccessible &)=default
 
xaccessible (xaccessible &&)=default
 
+xaccessibleoperator= (const xaccessible &)=default
 
+xaccessibleoperator= (xaccessible &&)=default
 
- Protected Member Functions inherited from xt::xconst_accessible< D >
xconst_accessible (const xconst_accessible &)=default
 
+xconst_accessibleoperator= (const xconst_accessible &)=default
 
xconst_accessible (xconst_accessible &&)=default
 
+xconst_accessibleoperator= (xconst_accessible &&)=default
 
+

Detailed Description

+
template<class CT, class... S>
+class xt::xview< CT, S >

Multidimensional view with tensor semantic.

+

The xview class implements a multidimensional view with tensor semantic. It is used to adapt the shape of an xexpression without changing it. xview is not meant to be used directly, but only with the view helper functions.

+
Template Parameters
+ + + +
CTthe closure type of the xexpression to adapt
Sthe slices type describing the shape adaptation
+
+
+
See also
view, range, all, newaxis, keep, drop
+ +

Definition at line 353 of file xview.hpp.

+

Member Typedef Documentation

+ +

◆ accessible_base

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::accessible_base = xaccessible<self_type>
+
+ +

Definition at line 369 of file xview.hpp.

+ +
+
+ +

◆ backstrides_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::backstrides_type = strides_type
+
+ +

Definition at line 426 of file xview.hpp.

+ +
+
+ +

◆ bool_load_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::bool_load_type = typename xexpression_type::bool_load_type
+
+ +

Definition at line 376 of file xview.hpp.

+ +
+
+ +

◆ const_container_iterator

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::const_container_iterator = const_pointer
+
+ +

Definition at line 447 of file xview.hpp.

+ +
+
+ +

◆ const_linear_iterator

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::const_linear_iterator = std::conditional_t< has_data_interface<xexpression_type>::value && is_strided_view, typename xexpression_type::const_linear_iterator, typename iterable_base::const_linear_iterator>
+
+ +

Definition at line 438 of file xview.hpp.

+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::const_pointer = typename xexpression_type::const_pointer
+
+ +

Definition at line 381 of file xview.hpp.

+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::const_reference = typename inner_types::const_reference
+
+ +

Definition at line 378 of file xview.hpp.

+ +
+
+ +

◆ const_reverse_linear_iterator

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::const_reverse_linear_iterator = std::reverse_iterator<const_linear_iterator>
+
+ +

Definition at line 444 of file xview.hpp.

+ +
+
+ +

◆ const_stepper

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::const_stepper = typename iterable_base::const_stepper
+
+ +

Definition at line 432 of file xview.hpp.

+ +
+
+ +

◆ container_iterator

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::container_iterator = pointer
+
+ +

Definition at line 446 of file xview.hpp.

+ +
+
+ +

◆ difference_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::difference_type = typename xexpression_type::difference_type
+
+ +

Definition at line 383 of file xview.hpp.

+ +
+
+ +

◆ enable_simd_interface

+ +
+
+
+template<class CT , class... S>
+
+template<class T , class R >
+ + + + +
using xt::xview< CT, S >::enable_simd_interface = std::enable_if_t<has_simd_interface<T>::value && is_strided_view, R>
+
+ +

Definition at line 636 of file xview.hpp.

+ +
+
+ +

◆ expression_tag

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::expression_tag = typename extension_base::expression_tag
+
+ +

Definition at line 371 of file xview.hpp.

+ +
+
+ +

◆ extension_base

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::extension_base = extension::xview_base_t<CT, S...>
+
+ +

Definition at line 370 of file xview.hpp.

+ +
+
+ +

◆ inner_backstrides_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::inner_backstrides_type = std::conditional_t< has_trivial_strides, typename detail::unwrap_offset_container< xexpression_type::static_layout, xexpression_inner_backstrides_type, integral_count<S...>()>::type, get_strides_t<shape_type> >
+
+ +

Definition at line 417 of file xview.hpp.

+ +
+
+ +

◆ inner_shape_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::inner_shape_type = typename iterable_base::inner_shape_type
+
+ +

Definition at line 392 of file xview.hpp.

+ +
+
+ +

◆ inner_strides_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::inner_strides_type = std::conditional_t< has_trivial_strides, typename detail::unwrap_offset_container< xexpression_type::static_layout, xexpression_inner_strides_type, integral_count<S...>()>::type, get_strides_t<shape_type> >
+
+ +

Definition at line 409 of file xview.hpp.

+ +
+
+ +

◆ inner_types

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::inner_types = xcontainer_inner_types<self_type>
+
+ +

Definition at line 364 of file xview.hpp.

+ +
+
+ +

◆ iterable_base

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::iterable_base = xiterable<self_type>
+
+ +

Definition at line 391 of file xview.hpp.

+ +
+
+ +

◆ linear_iterator

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::linear_iterator = std::conditional_t< has_data_interface<xexpression_type>::value && is_strided_view, std::conditional_t<is_const, typename xexpression_type::const_linear_iterator, typename xexpression_type::linear_iterator>, typename iterable_base::linear_iterator>
+
+ +

Definition at line 434 of file xview.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::pointer = std:: conditional_t<is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer>
+
+ +

Definition at line 379 of file xview.hpp.

+ +
+
+ +

◆ rebind_t

+ +
+
+
+template<class CT , class... S>
+
+template<class E >
+ + + + +
using xt::xview< CT, S >::rebind_t = xview<E, S...>
+
+ +

Definition at line 623 of file xview.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::reference = typename inner_types::reference
+
+ +

Definition at line 377 of file xview.hpp.

+ +
+
+ +

◆ reverse_linear_iterator

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::reverse_linear_iterator = std::reverse_iterator<linear_iterator>
+
+ +

Definition at line 443 of file xview.hpp.

+ +
+
+ +

◆ self_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::self_type = xview<CT, S...>
+
+ +

Definition at line 363 of file xview.hpp.

+ +
+
+ +

◆ semantic_base

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::semantic_base = xview_semantic<self_type>
+
+ +

Definition at line 366 of file xview.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::shape_type = typename xview_shape_type<typename xexpression_type::shape_type, S...>::type
+
+ +

Definition at line 393 of file xview.hpp.

+ +
+
+ +

◆ simd_return_type

+ +
+
+
+template<class CT , class... S>
+
+template<class requested_type >
+ + + + +
using xt::xview< CT, S >::simd_return_type = xt_simd::simd_return_type<value_type, requested_type>
+
+ +

Definition at line 633 of file xview.hpp.

+ +
+
+ +

◆ simd_value_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::simd_value_type = xt_simd::simd_type<value_type>
+
+ +

Definition at line 375 of file xview.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::size_type = typename inner_types::size_type
+
+ +

Definition at line 382 of file xview.hpp.

+ +
+
+ +

◆ slice_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::slice_type = std::tuple<S...>
+
+ +

Definition at line 429 of file xview.hpp.

+ +
+
+ +

◆ stepper

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::stepper = typename iterable_base::stepper
+
+ +

Definition at line 431 of file xview.hpp.

+ +
+
+ +

◆ storage_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::storage_type = typename inner_types::storage_type
+
+ +

Definition at line 405 of file xview.hpp.

+ +
+
+ +

◆ strides_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::strides_type = get_strides_t<shape_type>
+
+ +

Definition at line 425 of file xview.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::temporary_type = typename xcontainer_inner_types<self_type>::temporary_type
+
+ +

Definition at line 367 of file xview.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::value_type = typename xexpression_type::value_type
+
+ +

Definition at line 374 of file xview.hpp.

+ +
+
+ +

◆ xexpression_inner_backstrides_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::xexpression_inner_backstrides_type = xtl::mpl::eval_if_t< has_strides<xexpression_type>, detail::expr_inner_backstrides_type<xexpression_type>, get_strides_type<shape_type> >
+
+ +

Definition at line 400 of file xview.hpp.

+ +
+
+ +

◆ xexpression_inner_strides_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::xexpression_inner_strides_type = xtl::mpl::eval_if_t< has_strides<xexpression_type>, detail::expr_inner_strides_type<xexpression_type>, get_strides_type<shape_type> >
+
+ +

Definition at line 395 of file xview.hpp.

+ +
+
+ +

◆ xexpression_type

+ +
+
+
+template<class CT , class... S>
+ + + + +
using xt::xview< CT, S >::xexpression_type = std::decay_t<CT>
+
+ +

Definition at line 365 of file xview.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xview()

+ +
+
+
+template<class CT , class... S>
+
+template<class CTA , class FSL , class... SL>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xt::xview< CT, S >::xview (CTA && e,
FSL && first_slice,
SL &&... slices 
)
+
+explicitnoexcept
+
+ +

Constructs a view on the specified xexpression.

+

Users should not call directly this constructor but use the view function instead.

Parameters
+ + + + +
ethe xexpression to adapt
first_slicethe first slice describing the view
slicesthe slices list describing the view
+
+
+
See also
view
+ +

Definition at line 881 of file xview.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ access() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class Arg , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::access (Arg arg,
Args... args 
) -> reference +
+
+inline
+
+ +

Definition at line 1597 of file xview.hpp.

+ +
+
+ +

◆ access() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class Arg , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::access (Arg arg,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 1614 of file xview.hpp.

+ +
+
+ +

◆ access_impl() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type... I, class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::access_impl (std::index_sequence< I... > ,
Args... args 
) -> reference +
+
+inline
+
+ +

Definition at line 1640 of file xview.hpp.

+ +
+
+ +

◆ access_impl() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type... I, class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::access_impl (std::index_sequence< I... > ,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 1647 of file xview.hpp.

+ +
+
+ +

◆ assign_to()

+ +
+
+
+template<class CT , class... S>
+
+template<class E , class T , class >
+ + + + + + + + + + + + + + + + + + +
void xt::xview< CT, S >::assign_to (xexpression< E > & e,
bool force_resize 
) const
+
+ +

Definition at line 1470 of file xview.hpp.

+ +
+
+ +

◆ backstrides()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::backstrides () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const inner_strides_type&> +
+
+inline
+
+ +

Definition at line 1293 of file xview.hpp.

+ +
+
+ +

◆ broadcast_shape()

+ +
+
+
+template<class CT , class... S>
+
+template<class ST >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::xview< CT, S >::broadcast_shape (ST & shape,
bool reuse_cache = false 
) const
+
+inline
+
+ +

Broadcast the shape of the view to the specified parameter.

+
Parameters
+ + + +
shapethe result shape
reuse_cacheparameter for internal optimization
+
+
+
Returns
a boolean indicating whether the broadcasting is trivial
+ +

Definition at line 1398 of file xview.hpp.

+ +
+
+ +

◆ build_view()

+ +
+
+
+template<class CT , class... S>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::build_view (E && e) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 1486 of file xview.hpp.

+ +
+
+ +

◆ build_view_impl()

+ +
+
+
+template<class CT , class... S>
+
+template<class E , std::size_t... I>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::build_view_impl (E && e,
std::index_sequence< I... >  
) const -> rebind_t<E> +
+
+inline
+
+ +

Definition at line 1479 of file xview.hpp.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::data () -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, pointer> +
+
+inline
+
+ +

Definition at line 1317 of file xview.hpp.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::data () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_pointer> +
+
+inline
+
+ +

Return the pointer to the underlying buffer.

+ +

Definition at line 1309 of file xview.hpp.

+ +
+
+ +

◆ data_element() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::data_element (size_type i) -> enable_simd_interface<T, reference> +
+
+inline
+
+ +

Definition at line 1508 of file xview.hpp.

+ +
+
+ +

◆ data_element() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::data_element (size_type i) const -> enable_simd_interface<T, const_reference> +
+
+inline
+
+ +

Definition at line 1515 of file xview.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::data_offset () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, std::size_t> +
+
+inlinenoexcept
+
+ +

Return the offset to the first element of the view in the underlying container.

+ +

Definition at line 1349 of file xview.hpp.

+ +
+
+ +

◆ data_xbegin() [1/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::data_xbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 1449 of file xview.hpp.

+ +
+
+ +

◆ data_xbegin() [2/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::data_xbegin ()
+
+inlinenoexcept
+
+ +

Definition at line 1443 of file xview.hpp.

+ +
+
+ +

◆ data_xbegin_impl()

+ +
+
+
+template<class CT , class... S>
+
+template<class It >
+ + + + + +
+ + + + + + + + +
It xt::xview< CT, S >::data_xbegin_impl (It begin) const
+
+inlinenoexcept
+
+ +

Definition at line 1430 of file xview.hpp.

+ +
+
+ +

◆ data_xend() [1/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::data_xend (layout_type l,
size_type offset 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1461 of file xview.hpp.

+ +
+
+ +

◆ data_xend() [2/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::data_xend (layout_type l,
size_type offset 
)
+
+inlinenoexcept
+
+ +

Definition at line 1455 of file xview.hpp.

+ +
+
+ +

◆ data_xend_impl()

+ +
+
+
+template<class CT , class... S>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
It xt::xview< CT, S >::data_xend_impl (It begin,
layout_type l,
size_type offset 
) const
+
+inlinenoexcept
+
+ +

Definition at line 1437 of file xview.hpp.

+ +
+
+ +

◆ element() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::element (It first,
It last 
) -> reference +
+
+inline
+
+ +

Definition at line 1081 of file xview.hpp.

+ +
+
+ +

◆ element() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::element (It first,
It last 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 1134 of file xview.hpp.

+ +
+
+ +

◆ expression() [1/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::expression () const
+
+inlinenoexcept
+
+ +

Returns a const reference to the underlying expression of the view.

+ +

Definition at line 1154 of file xview.hpp.

+ +
+
+ +

◆ expression() [2/2]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::expression ()
+
+inlinenoexcept
+
+ +

Returns a reference to the underlying expression of the view.

+ +

Definition at line 1145 of file xview.hpp.

+ +
+
+ +

◆ fill()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void xt::xview< CT, S >::fill (const T & value)
+
+inline
+
+ +

Fills the view with the given value.

+
Parameters
+ + +
valuethe value to fill the view with.
+
+
+ +

Definition at line 1021 of file xview.hpp.

+ +
+
+ +

◆ flat() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::flat (size_type i) -> enable_simd_interface<T, reference> +
+
+inline
+
+ +

Definition at line 1522 of file xview.hpp.

+ +
+
+ +

◆ flat() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::flat (size_type i) const -> enable_simd_interface<T, const_reference> +
+
+inline
+
+ +

Definition at line 1530 of file xview.hpp.

+ +
+
+ +

◆ has_linear_assign()

+ +
+
+
+template<class CT , class... S>
+
+template<class ST >
+ + + + + +
+ + + + + + + + +
bool xt::xview< CT, S >::has_linear_assign (const ST & str) const
+
+inline
+
+ +

Checks whether the xview can be linearly assigned to an expression with the specified strides.

+
Returns
a boolean indicating whether a linear assign is possible
+ +

Definition at line 1410 of file xview.hpp.

+ +
+
+ +

◆ index()

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type I, class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::index (Args... args) const -> std::enable_if_t<lesser_condition<I>::value, size_type> +
+
+inline
+
+ +

Definition at line 1654 of file xview.hpp.

+ +
+
+ +

◆ is_contiguous()

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
bool xt::xview< CT, S >::is_contiguous () const
+
+inlinenoexcept
+
+ +

Definition at line 1003 of file xview.hpp.

+ +
+
+ +

◆ layout()

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
layout_type xt::xview< CT, S >::layout () const
+
+inlinenoexcept
+
+ +

Returns the slices of the view.

+ +

Definition at line 974 of file xview.hpp.

+ +
+
+ +

◆ linear_begin() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_begin () -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, linear_iterator> +
+
+ +

Definition at line 1181 of file xview.hpp.

+ +
+
+ +

◆ linear_begin() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_begin () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator> +
+
+ +

Definition at line 1197 of file xview.hpp.

+ +
+
+ +

◆ linear_cbegin()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_cbegin () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator> +
+
+ +

Definition at line 1213 of file xview.hpp.

+ +
+
+ +

◆ linear_cend()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_cend () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator> +
+
+ +

Definition at line 1221 of file xview.hpp.

+ +
+
+ +

◆ linear_crbegin()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_crbegin () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator> +
+
+ +

Definition at line 1261 of file xview.hpp.

+ +
+
+ +

◆ linear_crend()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_crend () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator> +
+
+ +

Definition at line 1269 of file xview.hpp.

+ +
+
+ +

◆ linear_end() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_end () -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, linear_iterator> +
+
+ +

Definition at line 1189 of file xview.hpp.

+ +
+
+ +

◆ linear_end() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_end () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator> +
+
+ +

Definition at line 1205 of file xview.hpp.

+ +
+
+ +

◆ linear_rbegin() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_rbegin () -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, reverse_linear_iterator> +
+
+ +

Definition at line 1229 of file xview.hpp.

+ +
+
+ +

◆ linear_rbegin() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_rbegin () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator> +
+
+ +

Definition at line 1245 of file xview.hpp.

+ +
+
+ +

◆ linear_rend() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_rend () -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, reverse_linear_iterator> +
+
+ +

Definition at line 1237 of file xview.hpp.

+ +
+
+ +

◆ linear_rend() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + + + +
auto xt::xview< CT, S >::linear_rend () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator> +
+
+ +

Definition at line 1253 of file xview.hpp.

+ +
+
+ +

◆ load_simd()

+ +
+
+
+template<class CT , class... S>
+
+template<class align , class requested_type , std::size_t N, class T >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::load_simd (size_type i) const -> enable_simd_interface<T, simd_return_type<requested_type>> +
+
+inline
+
+ +

Definition at line 1500 of file xview.hpp.

+ +
+
+ +

◆ make_index()

+ +
+
+
+template<class CT , class... S>
+
+template<class It >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::make_index (It first,
It last 
) const -> base_index_type +
+
+inline
+
+ +

Definition at line 1697 of file xview.hpp.

+ +
+
+ +

◆ operator const_reference()

+ +
+
+
+template<class CT , class... S>
+
+template<class ST = self_type, class = std::enable_if_t<is_xscalar<std::decay_t<ST>>::value, int>>
+ + + + + +
+ + + + + + + +
xt::xview< CT, S >::operator const_reference () const
+
+inline
+
+ +

Definition at line 605 of file xview.hpp.

+ +
+
+ +

◆ operator reference()

+ +
+
+
+template<class CT , class... S>
+
+template<class ST = self_type, class = std::enable_if_t<is_xscalar<std::decay_t<ST>>::value, int>>
+ + + + + +
+ + + + + + + +
xt::xview< CT, S >::operator reference ()
+
+inline
+
+ +

Definition at line 599 of file xview.hpp.

+ +
+
+ +

◆ operator&() [1/3]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::operator& () &
+
+inline
+
+ +

Definition at line 1369 of file xview.hpp.

+ +
+
+ +

◆ operator&() [2/3]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::operator& () &&
+
+inline
+
+ +

Definition at line 1381 of file xview.hpp.

+ +
+
+ +

◆ operator&() [3/3]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::operator& () const &
+
+inline
+
+ +

Definition at line 1375 of file xview.hpp.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::operator() (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the view.
+
+
+ +

Definition at line 1044 of file xview.hpp.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::operator() (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices should be equal or greater than the number of dimensions of the view.
+
+
+ +

Definition at line 1097 of file xview.hpp.

+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class CT , class... S>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::operator= (const E & e) -> disable_xexpression<E, self_type>& +
+
+inline
+
+ +

Definition at line 942 of file xview.hpp.

+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class CT , class... S>
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::operator= (const xexpression< E > & e) -> self_type& +
+
+inline
+
+ +

The extended assignment operator.

+ +

Definition at line 933 of file xview.hpp.

+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::operator= (const xview< CT, S > & rhs)
+
+inline
+
+ +

Definition at line 918 of file xview.hpp.

+ +
+
+ +

◆ shape()

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::shape () const
+
+inlinenoexcept
+
+ +

Returns the shape of the view.

+ +

Definition at line 956 of file xview.hpp.

+ +
+
+ +

◆ sliced_access() [1/3]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type I, class T , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::sliced_access (const T & squeeze,
Args...  
) const -> disable_xslice<T, size_type> +
+
+inline
+
+ +

Definition at line 1690 of file xview.hpp.

+ +
+
+ +

◆ sliced_access() [2/3]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type I, class T >
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::sliced_access (const xslice< T > & slice) const -> size_type +
+
+inline
+
+ +

Definition at line 1673 of file xview.hpp.

+ +
+
+ +

◆ sliced_access() [3/3]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type I, class T , class Arg , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::sliced_access (const xslice< T > & slice,
Arg arg,
Args... args 
) const -> size_type +
+
+inline
+
+ +

Definition at line 1680 of file xview.hpp.

+ +
+
+ +

◆ slices()

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::slices () const
+
+inlinenoexcept
+
+ +

Returns the slices of the view.

+ +

Definition at line 965 of file xview.hpp.

+ +
+
+ +

◆ stepper_begin() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class ST , bool Enable>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::stepper_begin (const ST & shape) -> std::enable_if_t<!Enable, stepper> +
+
+inline
+
+ +

Definition at line 1948 of file xview.hpp.

+ +
+
+ +

◆ stepper_begin() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class ST , bool Enable>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::stepper_begin (const ST & shape) const -> std::enable_if_t<!Enable, const_stepper> +
+
+inline
+
+ +

Definition at line 1965 of file xview.hpp.

+ +
+
+ +

◆ stepper_end() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class ST , bool Enable>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::stepper_end (const ST & shape,
layout_type l 
) -> std::enable_if_t<!Enable, stepper> +
+
+inline
+
+ +

Definition at line 1956 of file xview.hpp.

+ +
+
+ +

◆ stepper_end() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class ST , bool Enable>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::stepper_end (const ST & shape,
layout_type l 
) const -> std::enable_if_t<!Enable, const_stepper> +
+
+inline
+
+ +

Definition at line 1975 of file xview.hpp.

+ +
+
+ +

◆ storage() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::storage () -> std::enable_if_t<has_data_interface<T>::value, storage_type&> +
+
+inline
+
+ +

Returns the data holder of the underlying container (only if the view is on a realized container).

+

xt::eval will make sure that the underlying xexpression is on a realized container.

+ +

Definition at line 1166 of file xview.hpp.

+ +
+
+ +

◆ storage() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::storage () const -> std::enable_if_t<has_data_interface<T>::value, const storage_type&> +
+
+inline
+
+ +

Definition at line 1173 of file xview.hpp.

+ +
+
+ +

◆ store_simd()

+ +
+
+
+template<class CT , class... S>
+
+template<class align , class simd , class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::store_simd (size_type i,
const simd & e 
) -> enable_simd_interface<T, void> +
+
+inline
+
+ +

Definition at line 1493 of file xview.hpp.

+ +
+
+ +

◆ strides()

+ +
+
+
+template<class CT , class... S>
+
+template<class T >
+ + + + + +
+ + + + + + + +
auto xt::xview< CT, S >::strides () const -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const inner_strides_type&> +
+
+inline
+
+ +

Return the strides for the underlying container of the view.

+ +

Definition at line 1280 of file xview.hpp.

+ +
+
+ +

◆ unchecked() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::unchecked (Args... args) -> reference +
+
+inline
+
+ +

Returns a reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.unchecked(0, 1);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
+ +

Definition at line 1074 of file xview.hpp.

+ +
+
+ +

◆ unchecked() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<class... Args>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::unchecked (Args... args) const -> const_reference +
+
+inline
+
+ +

Returns a constant reference to the element at the specified position in the view.

+
Parameters
+ + +
argsa list of indices specifying the position in the view. Indices must be unsigned integers, the number of indices must be equal to the number of dimensions of the view, else the behavior is undefined.
+
+
+
Warning
This method is meant for performance, for expressions with a dynamic number of dimensions (i.e. not known at compile time). Since it may have undefined behavior (see parameters), operator() should be preferred whenever it is possible.
+
+This method is NOT compatible with broadcasting, meaning the following code has undefined behavior:
xt::xarray<double> a = {{0, 1}, {2, 3}};
+
xt::xarray<double> b = {0, 1};
+
auto fd = a + b;
+
double res = fd.unchecked(0, 1);
+
+ +

Definition at line 1127 of file xview.hpp.

+ +
+
+ +

◆ unchecked_impl() [1/2]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type... I, class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::unchecked_impl (std::index_sequence< I... > ,
Args... args 
) -> reference +
+
+inline
+
+ +

Definition at line 1625 of file xview.hpp.

+ +
+
+ +

◆ unchecked_impl() [2/2]

+ +
+
+
+template<class CT , class... S>
+
+template<typename std::decay_t< CT >::size_type... I, class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview< CT, S >::unchecked_impl (std::index_sequence< I... > ,
Args... args 
) const -> const_reference +
+
+inline
+
+ +

Definition at line 1632 of file xview.hpp.

+ +
+
+ +

◆ underlying_size()

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + + + + + +
auto xt::xview< CT, S >::underlying_size (size_type dim) const
+
+inline
+
+ +

Definition at line 1363 of file xview.hpp.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ xview_semantic< xview< CT, S... > >

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
friend class xview_semantic< xview< CT, S... > >
+
+friend
+
+ +

Definition at line 743 of file xview.hpp.

+ +
+
+

Member Data Documentation

+ +

◆ contiguous_layout

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr bool xt::xview< CT, S >::contiguous_layout = static_layout != layout_type::dynamic
+
+staticconstexpr
+
+ +

Definition at line 386 of file xview.hpp.

+ +
+
+ +

◆ has_trivial_strides

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr bool xt::xview< CT, S >::has_trivial_strides
+
+staticconstexpr
+
+Initial value:
= is_contiguous_view
+
&& !xtl::disjunction<detail::is_xrange<S>...>::value
+
+

Definition at line 407 of file xview.hpp.

+ +
+
+ +

◆ is_const

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr bool xt::xview< CT, S >::is_const = std::is_const<std::remove_reference_t<CT>>::value
+
+staticconstexpr
+
+ +

Definition at line 373 of file xview.hpp.

+ +
+
+ +

◆ is_contiguous_view

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr bool xt::xview< CT, S >::is_contiguous_view = contiguous_layout
+
+staticconstexpr
+
+ +

Definition at line 389 of file xview.hpp.

+ +
+
+ +

◆ is_strided_view

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr bool xt::xview< CT, S >::is_strided_view = detail::is_strided_view<xexpression_type, S...>::value
+
+staticconstexpr
+
+ +

Definition at line 388 of file xview.hpp.

+ +
+
+ +

◆ rank

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr std::size_t xt::xview< CT, S >::rank = SIZE_MAX
+
+staticconstexpr
+
+ +

Definition at line 448 of file xview.hpp.

+ +
+
+ +

◆ static_layout

+ +
+
+
+template<class CT , class... S>
+ + + + + +
+ + + + +
constexpr layout_type xt::xview< CT, S >::static_layout = inner_types::layout
+
+staticconstexpr
+
+ +

Definition at line 385 of file xview.hpp.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xmime.hpp
  • +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xview.js b/classxt_1_1xview.js new file mode 100644 index 000000000..68988a61b --- /dev/null +++ b/classxt_1_1xview.js @@ -0,0 +1,21 @@ +var classxt_1_1xview = +[ + [ "xview", "classxt_1_1xview.html#a05ff5fb7b81610a17123a91729525c5c", null ], + [ "broadcast_shape", "classxt_1_1xview.html#a4fb1f607e8b93152ef8426c5ef524c3e", null ], + [ "data", "classxt_1_1xview.html#a22a0d9389c703c1e7e1c38f682b272b7", null ], + [ "data_offset", "classxt_1_1xview.html#a7108799d49ca9fce6494af0e97a10b29", null ], + [ "expression", "classxt_1_1xview.html#a9c5da820e15f25932c740862e0f3150f", null ], + [ "expression", "classxt_1_1xview.html#a5ecd9f1273f10421fdd4c5d64c262585", null ], + [ "fill", "classxt_1_1xview.html#a76141e6f7f637ae7e070d860a08fc678", null ], + [ "has_linear_assign", "classxt_1_1xview.html#a1249c703f1c218ce7998627aa91c10a6", null ], + [ "layout", "classxt_1_1xview.html#aface2a61c07630c793d71241d13de29d", null ], + [ "operator()", "classxt_1_1xview.html#a16ffe8d0c8b973c2fa28e75c2f353437", null ], + [ "operator()", "classxt_1_1xview.html#a9bfc52bb7a7844eb976a096875d6a5a6", null ], + [ "operator=", "classxt_1_1xview.html#af7f042302a75ce76b1ce094b38529188", null ], + [ "shape", "classxt_1_1xview.html#a4f26067384dd1d379fcd476127386966", null ], + [ "slices", "classxt_1_1xview.html#a10687f1d5229c3d4f0b0af8766d9d64b", null ], + [ "storage", "classxt_1_1xview.html#a2f5a08aebb5d391e488dcd60f2c90f67", null ], + [ "strides", "classxt_1_1xview.html#aec0c5b2cd004781631cabe77e7f00d63", null ], + [ "unchecked", "classxt_1_1xview.html#afc28e491c5db09bcfe54e5eea176a5ec", null ], + [ "unchecked", "classxt_1_1xview.html#a8860cdb3a358dfee3af68fafdb5c7010", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xview.png b/classxt_1_1xview.png new file mode 100644 index 0000000000000000000000000000000000000000..c0986148f12a864e2211ac246618f8afde7453b3 GIT binary patch literal 7653 zcmeG>X;@R&wrK6u)>i9K8APap@YG5wY8hnE${=Ei3ISyZT0kro0x~2Jl31}t%aE(s zMrCTHHjp3@szeA$P|8$<6cK}l5Sa`lBoSf=A=5o4VU)i2z5cqd@4Nfk*=L`9PS#m_ zt+m&9>9CLI`|p~(YhYmTzSjY_qXq^mT!4A)vbTWIVRX4Ma9Mx&ke|C&s|BV*BeF#N zL!$jBTVjm}kA`Y%Yk_s&D;>qavv(4X`uG|E_qt}cIQNNx!G>5bw|#!7MIx>+iBr1n z?LV5I8uip@*Axbu1~GnaW#?SD3(x*#^Txfl@0Kzfj4Y;mzjEK+=~la`h_af}&b=ZT>C(&Mv6{rjtjv77*>@i_je#vE=4TquGfTWJ8jl){CZ zA)q%1`4Vdiha*l%3@B??cjttg-D(L5X;8x-Hhhvbm=6h@8s^xS}79l!x!4tj5fip!?Rh(wu)`!9x?ijoZ9 zZaj!qZZ+H;vn_aSfrLtlBQ{c{sz`v1ISUDP78<6m=9&l?!}z zj~$H^M?$(dhd6(T1UW@8`Cz8qY0`-R#SZR)t{H&`ugwds_kJL}#b@@nGad{pyIXU^ z3~9N}$VvnQcTMd~IS2~DpOK7p)$j>dO<6w!`hzLhgAGC=4avc!?n5ev#L{u4iB7bl z7t${B_vHeyhP{9tI`New7lPK|F8TDMnRepxl;nak5xqbr{>tIl;gLDj8{}zor1+e6 z$Y2in7cIgM%)ehb5NkjCWnfm@Z*RI{mMp;R)h8=h=CiB^W~jC4{FO6D4V*Y-zcv5< z%75OAnPDr!u-cnzK%S8CL@`_#(2aGCCugQ#o~!ECmF`I~oQ%0{ajgWZczR z0Q1udw2&;x!%qBf9c`REtvG2-d7_4xpe~XkS9m>0Demb|flr-sWX|eI66LhyQSSMeZ7F)$0 z*k&uZ#gek~_5Zb*_uq|D&$xuIUcYnX2k^feuU!7%gFEn>ZXD-}W?|6`IlL z{h(gqokbW6dsafl)V1W~?m~-%-OZya_-pR+uHR0=I!)$4?d8VSc-65>Io4eFTe;j} z?cQ#!(>$N8Hs=wjwKzDV-3v0?vVt6s{!UL-)yq+qZdoPJp5sp?`XZK?0V#{ z;y!`HFJ-&&K{EIjl zIf)fbbbH+dxEuP<%nRqv$yR5>r-U=tQg^_C2EqWOSshB^$A9cZY8>6Jt2 z`zrvF0?jN4+&(z*1BnbyLZ(+bd~L1PZv>6`i=Q?FS_Pc!14R#`+-&s5%EEX4 zvoe=r|JSMU0uR{CDX9W39Qhtr(~gFV(|rQl+%#)cJFi?0%Uq@FJdfk#^cx(*wJb^g$8j)3%+qb53W49tQf}Wx#F# zM!A?2XwlxK4~Xc`?O9ErTJQrvcdl-3nhK#hJpdb~LnSK9EleM8$)oz6EOG#osk8oo znVdo|VEv4}-@Q6(D%K+ZPY5#}7L%&un0HA6i-JJhk7+#rH_Wrdy?=B-9;fi@znh5U z*%Npragsg;Wo5k#64S#~XXBGFzVa}6b%{&`)l90-{=voc8xpE%5=C05rqFYQD=^nU z6qxVj-||;}J3zq-h^L(}ptTPbu1w?SU3>>{P;k%C#?L@1g!bi^Ynry9m~E0Eoc(<* zem4W8nD)^DK;>b+p)}>PhNZU%vkrg`yCSj(BFKkuOJ29tYb!s-^=`r|-?NpEiXqg;GWbU(`4;uGWYOY)n}NXPgS@{&dDw)20y6z1TPf>M^)f#Nyqc6bj+4XvG2F7|=* zb{7AJo!p2Uz$we1;p2$3TpPrs{i#1(zOX3}Yw)W2&#{UyL_B|MiFj@B4?N6=l5Q;( zB4%cFxqQbP7WXLCD~r@VA8St?5I;5MDn$^KfIF%`HJt&*FeEiplAJinU`)Vs zb6-u?J0~Ubpv?o}z*(fWqk>&11g=n~?%9-jyheD6Jt27g1+sjcSE;QJ>qh^=X_JKe z;aw1HC=zERPD0y#6H`s|`YE?qvDb?Go>@nz5eOJsCj@mhm=x z+Y*VrouckW;zqb@t1sP<-{c36$`lYu3bvRN`U;2dDxWOZw&aEe*Tie_S>u$?CN1`# zRewt{A3>l5{nLyhRGAZq-FrfvetBNfuw^apym&C>JRn=<3D){O`sS|_a`Nc^#mITY zJWi!7R$W`tXa+ei?U>@)E*;mZd`9oOayNGcjS6|6*JaqmSd4W`ZA!6dd`q?5V$|p^ z493=}nW30n1?+C$XQMB~lbG^@Jg&%uS31BifK+pM;}xy+#)-~Win7c7kpl2d%LUAx z?-{aES9!6I$IHSbZf&ja^Spn?)OSdEnlU9_tIh5j^scH=$m)gu=Ices{gXxe&uZ({ z?of=Q8Q=Ii=zwoU_K!I>mh}l_L)B5>)(R8t^jlk#UnhX0xXWuWw%QafgODaaFU^_S zmYZ%{CD|wAf3KiYsA<%G-)HKsnoI4%ijWhS0W*H=9%AoOU(lS$ZcQC7K`JfQ{7i7^ zI1;HGlt1BD$v&5o52Fw==IJ}=Ysi9Erv`D$FNdrMapH1M-XBp{TN_u1vX7ag=UF!Z-G?X*i5TO-VOU%cpMHnQ?#mQ2h&PSxo9x_9KcXm~BAA1*s zPH*#~rf|U|M|qlBUZ&a_3R+Tuu=`R2VNeor9TW60bUB>e!X_hpcEb(T zLNeq+qk6X$g4F1kQBuRGosDs7XA0m`p5v}Eq=^vpGMlqiK6Ws(%_k|{@ ztHP!*rXVtu?;{o+9laWhs6)#R6I{pEc#Pbuch@59T;(a!B+6TALJ`K<$$Y~Vu?vF0 zR3VZD;vU5G(HzLXpV~_I%?=Uy@F>wfUw?lBV7Dh%Z>u%Ikd~JK6#{EmWLfW+$dB)2JnAkuq`H^g_fM2>p?Uz74t%fnS0l!_xx?{9)V2H?*TvP@!1kYd+Mc z=%Z{?Y4JcFkwGZazOX4&9x#_gt1kj3T;?ecHXA7%Gnm@cO6v!J5{ysv)U%R3fw_wL zWMs_z4=%k6G`l)K=l1AI_x`0%HDWPDD$n8xRtW*GXNE3%FGRIpZ^VI*5={Q8AM&?y zoZd*qP%|2){Yk*FoJisuSIs1Ez#I+_V(idhv_sd)`)Wf+z@*;t2r%%Ax(;S30#5O}f3mATO z+JbqM%ZI?_?Qbq$KeYePmj9c#|F+9@y|EYnm%n36bipGqXl$nfP+iOkM4guZukR-i z)72lK3^cz06xQZ2)906f8uH?2I(B{$$bp|Z-Bt6;K=EzH(_JyY5cD!{=X96OF9khv zh`d~PiJEF(7k=Ijex7T~oK(BJ z9%s!mh$PGjGfsritRXbMccYZuLWoAJK(y(Qkn)XYlk0byuEnpT*>j2o8G2Hyj0@mR!b(@n z*rYnC7j$W`X*6WAA~3WqNjCPFpC`38UbrRm-a$+zo2z)8`YI`PEBbkUPjAV1i8@i? zF4HkEIA*r$P`gPl2)GLb`Hq*U=kRev1V4@Ft*mh1C!?z;0`F^k2>M;IY{B%3zMZ%X zumI@Vf|_mzzH0rv@|2#nuGW&IHV5sy3u&PjmcJ$`fUtn_GQYH==b(O^U)<4Sryu8+ ncV^@sn7kqS3(BRn=1TJ?PskZ&Vn48;YvASX<5u?BiSz#gH$`|% literal 0 HcmV?d00001 diff --git a/classxt_1_1xview__semantic-members.html b/classxt_1_1xview__semantic-members.html new file mode 100644 index 000000000..cdfc41afa --- /dev/null +++ b/classxt_1_1xview__semantic-members.html @@ -0,0 +1,181 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xview_semantic< D > Member List
+
+
+ +

This is the complete list of members for xt::xview_semantic< D >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
assign_temporary(temporary_type &&)xt::xview_semantic< D >inline
assign_xexpression(const xexpression< E > &e) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
assign_xexpression(const xexpression< E > &e) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
base_type typedef (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
bit_and_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_and_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_or_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_or_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
bit_xor_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
bit_xor_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
computed_assign(const xexpression< E > &e) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
computed_assign(const xexpression< E > &e) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
derived_type typedef (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
divides_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
divides_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
minus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
minus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
modulus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
modulus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
multiplies_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
multiplies_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator%=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator%=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator%=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator&=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator&=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator&=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator*=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator*=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator*=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator+=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator+=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator+=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator-=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator-=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator-=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator/=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator/=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator/=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator=(const xview_semantic &)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(xview_semantic &&)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(const xexpression< E > &) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
operator=(const xexpression< E > &rhs) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
operator=(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator=(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
operator^=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator^=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator^=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
operator|=(const E &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
operator|=(const E &e) -> disable_xexpression< E, derived_type & >xt::xsemantic_base< D >inline
operator|=(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
plus_assign(const xexpression< E > &) (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >
plus_assign(const xexpression< E > &e) -> derived_type &xt::xsemantic_base< D >inline
scalar_computed_assign(const E &e, F &&f) (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
scalar_computed_assign(const E &e, F &&f) -> derived_type & (defined in xt::xview_semantic< D >)xt::xview_semantic< D >inline
temporary_type typedef (defined in xt::xview_semantic< D >)xt::xview_semantic< D >
xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(const xsemantic_base &)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xsemantic_base(xsemantic_base &&)=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
xview_semantic()=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic(const xview_semantic &)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
xview_semantic(xview_semantic &&)=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
~xsemantic_base()=default (defined in xt::xsemantic_base< D >)xt::xsemantic_base< D >protected
~xview_semantic()=default (defined in xt::xview_semantic< D >)xt::xview_semantic< D >protected
+
+ + + + diff --git a/classxt_1_1xview__semantic.html b/classxt_1_1xview__semantic.html new file mode 100644 index 000000000..0437ff14d --- /dev/null +++ b/classxt_1_1xview__semantic.html @@ -0,0 +1,667 @@ + + + + + + + +xtensor: xt::xview_semantic< D > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xview_semantic< D > Class Template Reference
+
+
+ +

Implementation of the xsemantic_base interface for multidimensional views. + More...

+ +

#include <xsemantic.hpp>

+
+Inheritance diagram for xt::xview_semantic< D >:
+
+
+ + +xt::xsemantic_base< D > +xt::xstrided_view< CT, shape_type > +xt::xdynamic_view< CT, S, L, FST > +xt::xstrided_view< CT, S, L, FST > + +
+ + + + + + + + + + + + + + + +

+Public Types

using base_type = xsemantic_base< D >
 
using derived_type = D
 
using temporary_type = typename base_type::temporary_type
 
- Public Types inherited from xt::xsemantic_base< D >
using base_type = select_expression_base_t< D >
 
using derived_type = typename base_type::derived_type
 
using temporary_type = typename xcontainer_inner_types< D >::temporary_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<class E >
derived_type & assign_xexpression (const xexpression< E > &e)
 
+template<class E >
derived_type & computed_assign (const xexpression< E > &e)
 
+template<class E , class F >
derived_type & scalar_computed_assign (const E &e, F &&f)
 
Assign functions
derived_type & assign_temporary (temporary_type &&)
 Assigns the temporary tmp to *this.
 
template<class E >
auto assign_xexpression (const xexpression< E > &e) -> derived_type &
 
template<class E >
auto computed_assign (const xexpression< E > &e) -> derived_type &
 
template<class E , class F >
auto scalar_computed_assign (const E &e, F &&f) -> derived_type &
 
template<class E >
auto operator= (const xexpression< E > &rhs) -> derived_type &
 
- Public Member Functions inherited from xt::xsemantic_base< D >
+template<class E >
disable_xexpression< E, derived_type & > operator+= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator-= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator*= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator/= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator%= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator&= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator|= (const E &)
 
+template<class E >
disable_xexpression< E, derived_type & > operator^= (const E &)
 
+template<class E >
derived_type & operator+= (const xexpression< E > &)
 
+template<class E >
derived_type & operator-= (const xexpression< E > &)
 
+template<class E >
derived_type & operator*= (const xexpression< E > &)
 
+template<class E >
derived_type & operator/= (const xexpression< E > &)
 
+template<class E >
derived_type & operator%= (const xexpression< E > &)
 
+template<class E >
derived_type & operator&= (const xexpression< E > &)
 
+template<class E >
derived_type & operator|= (const xexpression< E > &)
 
+template<class E >
derived_type & operator^= (const xexpression< E > &)
 
+template<class E >
derived_type & assign (const xexpression< E > &)
 
+template<class E >
derived_type & plus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & minus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & multiplies_assign (const xexpression< E > &)
 
+template<class E >
derived_type & divides_assign (const xexpression< E > &)
 
+template<class E >
derived_type & modulus_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_and_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_or_assign (const xexpression< E > &)
 
+template<class E >
derived_type & bit_xor_assign (const xexpression< E > &)
 
template<class E >
auto operator+= (const E &e) -> disable_xexpression< E, derived_type & >
 Adds the scalar e to *this.
 
template<class E >
auto operator-= (const E &e) -> disable_xexpression< E, derived_type & >
 Subtracts the scalar e from *this.
 
template<class E >
auto operator*= (const E &e) -> disable_xexpression< E, derived_type & >
 Multiplies *this with the scalar e.
 
template<class E >
auto operator/= (const E &e) -> disable_xexpression< E, derived_type & >
 Divides *this by the scalar e.
 
template<class E >
auto operator%= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the remainder of *this after division by the scalar e.
 
template<class E >
auto operator&= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise and of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator|= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise or of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator^= (const E &e) -> disable_xexpression< E, derived_type & >
 Computes the bitwise xor of *this and the scalar e and assigns it to *this.
 
template<class E >
auto operator+= (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto operator-= (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e from *this.
 
template<class E >
auto operator*= (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto operator/= (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto operator%= (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto operator&= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator|= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto operator^= (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of *this and the xexpression e and assigns it to *this.
 
template<class E >
auto assign (const xexpression< E > &e) -> derived_type &
 Assigns the xexpression e to *this.
 
template<class E >
auto plus_assign (const xexpression< E > &e) -> derived_type &
 Adds the xexpression e to *this.
 
template<class E >
auto minus_assign (const xexpression< E > &e) -> derived_type &
 Subtracts the xexpression e to *this.
 
template<class E >
auto multiplies_assign (const xexpression< E > &e) -> derived_type &
 Multiplies *this with the xexpression e.
 
template<class E >
auto divides_assign (const xexpression< E > &e) -> derived_type &
 Divides *this by the xexpression e.
 
template<class E >
auto modulus_assign (const xexpression< E > &e) -> derived_type &
 Computes the remainder of *this after division by the xexpression e.
 
template<class E >
auto bit_and_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise and of e to *this.
 
template<class E >
auto bit_or_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise or of e to *this.
 
template<class E >
auto bit_xor_assign (const xexpression< E > &e) -> derived_type &
 Computes the bitwise xor of e to *this.
 
template<class E >
auto operator= (const xexpression< E > &e) -> derived_type &
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

xview_semantic (const xview_semantic &)=default
 
+xview_semanticoperator= (const xview_semantic &)=default
 
xview_semantic (xview_semantic &&)=default
 
+xview_semanticoperator= (xview_semantic &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
- Protected Member Functions inherited from xt::xsemantic_base< D >
xsemantic_base (const xsemantic_base &)=default
 
+xsemantic_baseoperator= (const xsemantic_base &)=default
 
xsemantic_base (xsemantic_base &&)=default
 
+xsemantic_baseoperator= (xsemantic_base &&)=default
 
+template<class E >
derived_type & operator= (const xexpression< E > &)
 
+

Detailed Description

+
template<class D>
+class xt::xview_semantic< D >

Implementation of the xsemantic_base interface for multidimensional views.

+

The xview_semantic is an implementation of the xsemantic_base interface for multidimensional views.

+
Template Parameters
+ + +
Dthe derived type
+
+
+ +

Definition at line 231 of file xsemantic.hpp.

+

Member Typedef Documentation

+ +

◆ base_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xview_semantic< D >::base_type = xsemantic_base<D>
+
+ +

Definition at line 235 of file xsemantic.hpp.

+ +
+
+ +

◆ derived_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xview_semantic< D >::derived_type = D
+
+ +

Definition at line 236 of file xsemantic.hpp.

+ +
+
+ +

◆ temporary_type

+ +
+
+
+template<class D >
+ + + + +
using xt::xview_semantic< D >::temporary_type = typename base_type::temporary_type
+
+ +

Definition at line 237 of file xsemantic.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ assign_temporary()

+ +
+
+
+template<class D >
+ + + + + +
+ + + + + + + + +
auto xt::xview_semantic< D >::assign_temporary (temporary_type && tmp)
+
+inline
+
+ +

Assigns the temporary tmp to *this.

+
Parameters
+ + +
tmpthe temporary to assign.
+
+
+
Returns
a reference to *this.
+ +

Definition at line 661 of file xsemantic.hpp.

+ +
+
+ +

◆ assign_xexpression()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xview_semantic< D >::assign_xexpression (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 689 of file xsemantic.hpp.

+ +
+
+ +

◆ computed_assign()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xview_semantic< D >::computed_assign (const xexpression< E > & e) -> derived_type& +
+
+inline
+
+ +

Definition at line 698 of file xsemantic.hpp.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class D >
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::xview_semantic< D >::operator= (const xexpression< E > & rhs) -> derived_type& +
+
+inline
+
+ +

Definition at line 738 of file xsemantic.hpp.

+ +
+
+ +

◆ scalar_computed_assign()

+ +
+
+
+template<class D >
+
+template<class E , class F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::xview_semantic< D >::scalar_computed_assign (const E & e,
F && f 
) -> derived_type& +
+
+inline
+
+ +

Definition at line 722 of file xsemantic.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xsemantic.hpp
  • +
+
+
+ + + + diff --git a/classxt_1_1xview__semantic.js b/classxt_1_1xview__semantic.js new file mode 100644 index 000000000..51e5ada08 --- /dev/null +++ b/classxt_1_1xview__semantic.js @@ -0,0 +1,4 @@ +var classxt_1_1xview__semantic = +[ + [ "assign_temporary", "classxt_1_1xview__semantic.html#abaa88fce8540e36bf148047aa3110af9", null ] +]; \ No newline at end of file diff --git a/classxt_1_1xview__semantic.png b/classxt_1_1xview__semantic.png new file mode 100644 index 0000000000000000000000000000000000000000..184f685efd3346153ab6aa026362bcc5c29d884b GIT binary patch literal 2616 zcmc&$X;>3k77fb`7>35y0E!qyWD#tTMo3r!E<^_rFhHPD0)h&3WK)cQ5>SvvP|N@d z3JMsdqXh(PNV6w=Y#G)VS;Asi43a>=i0la=Q|bBUNB7L%nW-Q3s?NLb)xGzedtarW zbw8yJ)qz4F5OtToI(tGOie&J)Syc(V3lbLVz+unXGu~*KOeRO>R|upQ3i9y5=v{d| zg68IC5ckUNe+|xUyYA`k1p(iGyAX;610dGw;(W|IPGNyNd*h?scJvgh{hXyp)`r-Y za!Pf3WX-%|dTjC~b#r{fvi1!R4uR`<2eOAEl+Y&(FtF95uvAFq4z&K!m(Cc~cP1E^ z;*l;^hWW|Hkd<;j52vGREB$N4q#_gOtx3|s(KRBYV=2QCsiqkIY{kE*Yv9c}qSf3k zPNf&K^C@dWNC|3L5mokFo@}pO4C(KvWVQ_J?ad@ts`z*jzkWV6G~NGc;zBo}t$j!+ zql>gSag$$c%6gtGT)P_kLeOjFl+gmOEfM%PXBDWSPhGy&HT-kxY?bwlRfvIBN1tip z#G3T3+>^dzviO#O(;rs)KRjGwb61E?K?%H@5-K^Tq%X7kUV3VGN+R~X+;YaYt}H@` zy&iz)c+Bc)?zKykdZMR__(R8>Eb)GSV%~gi`l-gWJB2QkEYiq=u8`8)K)b#%uJ)0P z7RTC{cS+A{S`RwRJ$bh58*0v944a-W*0ZQZb}&8@zq2W%9Zy z3gb1NppzBpV8{VGgbjb|bsfnuE2py8q|s6bGH9VC&pBYC9QLTAZB9Z@()iCDocAz*C6fG%MXIfETLDVeFA6}CF)APon9bOT_| z@#Ew?Jke0EL(RIxRjh>ah zWGa5}3e0u02!@JHl%C0$D#78@IT>Wi9Uj(5%UnauG?WXq&`FTj9_6WF9O>iRO7p(% zdC#|R$s4oIiT7rE_3Ap*+xYr7mIwxDV+K^C!r1s@?@XYQNk25}T)=dl?%K`~`WVHM zqMt`+<6GNCOmo~AtStcG%LM^<6qEwLI>S;?UqUsd=JzeMI{+X}KI8ej`ujry(^{u0 zJ@y^F&0N0?Q5ZDJvOvo74U_*LDv;}L@@hR*xVlYw7|C6X zbNCE;b8FwfOY)N+n!}X2FSAAvxl*w$oW#_=2Sz{sQUETZ_w`ycq8e*2%JWkRF~(7` z3*jsdBj(#pIw6wOXy=CPmB5`Mk_ZV~b>`6y@HF8-VlP`>n{Ju@OMS69S+61|7zc6fIMYK6nZfmfUk6qsF^3r7fPN1ososf~3 zn^73r8x=6d{EYOEQOi@2^0L9YR1@h}rd%=!(!B?pGCy^7jDG&?h0tfx7-L`h94Lb2j^ zqk}>l@y%e&Hg57@lMae;kU;Z0Oy1(UD;f02`(K^-4@&s0y8b(jp(SKveSKY354`rM ztadWa2JJ8i&wZuws|PH#H+xr5)d6B9k!%v4+ooDzIGeJt6AeNqhYz{vg@b29fuUtf zh>Q4w1ndEa(!aHFeXlZRoB=`)D*dt@haE968`t2wvDc8g-y}UCwN6E^dmZSI4}t4d zmT&-A{X3F~#on5pxMw+A3XGayssVhJGaCTF@00>IuCQ`o^pG5s^uQJXV8-8$C8J!_ zvhvA$@|X2ZTd8#GEcT_4IijInS3rNf;p7y99fVq_*prC#cZ3#hl#ohJvdW8sihe}< z7LcG;&kt|D0Tu^eld;%}XtQB7XMdUo@qC4uST^$&H{}LHsW;>&JSF&S3YR#dSf<}r z|6TU`2`N8`a!{#M!(LYJo?>BUah{_cJ&cc+xQip1NQZ@B8Ag|fOWZwATEY7)6nZX; z`0~w4!+Z&RyLN=L-I*WMg!x?kGGXnlAobF~q5NtirKk^Z6zh8;Zct3P(pgcBJA!j) zi%Q<>#OLZ#%L#}MqiY+~FCi+@y6_(Ss36{$Hgl(}m;Q)3-pJ05U9FSs$|IT0HfZwZ z&fx~<^HB>H$+%0wS*;jNUHa2g!QuLOBB)3KZS3;QJI`f<;mG{BDi9PDo-@`{Td0jcV|^EItHqkOu`M5BGw zdgJY0_}mLP0gO0e{U5NjKItF;B(j1@=RcJIa|(r-Z-Kd_ zY3@{$D_exPM0<$EO53>c{l8d`@+k;W>M}~JxgbRv0i7rhyEtX-2?{dus@ba;nZ2fT zr*$ + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt::xview_stepper< is_const, CT, S > Member List
+
+
+ +

This is the complete list of members for xt::xview_stepper< is_const, CT, S >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
operator*() const (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
pointer typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
reference typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
reset(size_type dim) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
reset_back(size_type dim) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
shape_type typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
size_type typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
step(size_type dim) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
step(size_type dim, size_type n) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
step_back(size_type dim) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
step_back(size_type dim, size_type n) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
substepper_type typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
to_begin() (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
to_end(layout_type l) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
value_type typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
view_type typedef (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
xview_stepper()=default (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >
xview_stepper(view_type *view, substepper_type it, size_type offset, bool end=false, layout_type l=::xt::layout_type::row_major) (defined in xt::xview_stepper< is_const, CT, S >)xt::xview_stepper< is_const, CT, S >inline
+
+ + + + diff --git a/classxt_1_1xview__stepper.html b/classxt_1_1xview__stepper.html new file mode 100644 index 000000000..bde68ceab --- /dev/null +++ b/classxt_1_1xview__stepper.html @@ -0,0 +1,650 @@ + + + + + + + +xtensor: xt::xview_stepper< is_const, CT, S > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
xt::xview_stepper< is_const, CT, S > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Public Types

using view_type = std::conditional_t< is_const, const xview< CT, S... >, xview< CT, S... > >
 
using substepper_type = get_stepper< view_type >
 
using value_type = typename substepper_type::value_type
 
using reference = typename substepper_type::reference
 
using pointer = typename substepper_type::pointer
 
using difference_type = typename substepper_type::difference_type
 
using size_type = typename view_type::size_type
 
using shape_type = typename substepper_type::shape_type
 
+ + + + + + + + + + + + + + + + + + + + + +

Broadcasting

 xview_stepper (view_type *view, substepper_type it, size_type offset, bool end=false, layout_type l=::xt::layout_type::row_major)
 
reference operator* () const
 
void step (size_type dim)
 
void step_back (size_type dim)
 
void step (size_type dim, size_type n)
 
void step_back (size_type dim, size_type n)
 
void reset (size_type dim)
 
void reset_back (size_type dim)
 
void to_begin ()
 
void to_end (layout_type l)
 
+

Detailed Description

+
template<bool is_const, class CT, class... S>
+class xt::xview_stepper< is_const, CT, S >
+

Definition at line 782 of file xview.hpp.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::difference_type = typename substepper_type::difference_type
+
+ +

Definition at line 792 of file xview.hpp.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::pointer = typename substepper_type::pointer
+
+ +

Definition at line 791 of file xview.hpp.

+ +
+
+ +

◆ reference

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::reference = typename substepper_type::reference
+
+ +

Definition at line 790 of file xview.hpp.

+ +
+
+ +

◆ shape_type

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::shape_type = typename substepper_type::shape_type
+
+ +

Definition at line 795 of file xview.hpp.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::size_type = typename view_type::size_type
+
+ +

Definition at line 793 of file xview.hpp.

+ +
+
+ +

◆ substepper_type

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::substepper_type = get_stepper<view_type>
+
+ +

Definition at line 787 of file xview.hpp.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::value_type = typename substepper_type::value_type
+
+ +

Definition at line 789 of file xview.hpp.

+ +
+
+ +

◆ view_type

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + +
using xt::xview_stepper< is_const, CT, S >::view_type = std::conditional_t<is_const, const xview<CT, S...>, xview<CT, S...> >
+
+ +

Definition at line 786 of file xview.hpp.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ xview_stepper()

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xt::xview_stepper< is_const, CT, S >::xview_stepper (view_type * view,
substepper_type it,
size_type offset,
bool end = false,
layout_type l = ::xt::layout_type::row_major 
)
+
+inline
+
+ +

Definition at line 2023 of file xview.hpp.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + +
auto xt::xview_stepper< is_const, CT, S >::operator* () const
+
+inline
+
+ +

Definition at line 2058 of file xview.hpp.

+ +
+
+ +

◆ reset()

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::reset (size_type dim)
+
+inline
+
+ +

Definition at line 2104 of file xview.hpp.

+ +
+
+ +

◆ reset_back()

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::reset_back (size_type dim)
+
+inline
+
+ +

Definition at line 2114 of file xview.hpp.

+ +
+
+ +

◆ step() [1/2]

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::step (size_type dim)
+
+inline
+
+ +

Definition at line 2064 of file xview.hpp.

+ +
+
+ +

◆ step() [2/2]

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::step (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 2084 of file xview.hpp.

+ +
+
+ +

◆ step_back() [1/2]

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::step_back (size_type dim)
+
+inline
+
+ +

Definition at line 2074 of file xview.hpp.

+ +
+
+ +

◆ step_back() [2/2]

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::step_back (size_type dim,
size_type n 
)
+
+inline
+
+ +

Definition at line 2094 of file xview.hpp.

+ +
+
+ +

◆ to_begin()

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + +
void xt::xview_stepper< is_const, CT, S >::to_begin ()
+
+inline
+
+ +

Definition at line 2124 of file xview.hpp.

+ +
+
+ +

◆ to_end()

+ +
+
+
+template<bool is_const, class CT , class... S>
+ + + + + +
+ + + + + + + + +
void xt::xview_stepper< is_const, CT, S >::to_end (layout_type l)
+
+inline
+
+ +

Definition at line 2131 of file xview.hpp.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
  • +
+
+
+ + + + diff --git a/classxt__simd_1_1aligned__allocator.html b/classxt__simd_1_1aligned__allocator.html new file mode 100644 index 000000000..f8aabf8b8 --- /dev/null +++ b/classxt__simd_1_1aligned__allocator.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt_simd::aligned_allocator< T, A > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xt_simd::aligned_allocator< T, A > Class Template Reference
+
+
+

Detailed Description

+
template<class T, std::size_t A>
+class xt_simd::aligned_allocator< T, A >
+

Definition at line 91 of file xtensor_simd.hpp.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%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/deprecated.html b/deprecated.html new file mode 100644 index 000000000..83fa5790e --- /dev/null +++ b/deprecated.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Deprecated List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Deprecated List
+
+
+
+
Member xt::reshape_view (E &&e, S &&shape, layout_type)
+
+
+
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 000000000..9d97e2c86 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Directories

 xtensor
 
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 000000000..1ec67b6c4 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "xtensor", "dir_ea185b87f60949e3b1bf14314f33a519.html", "dir_ea185b87f60949e3b1bf14314f33a519" ] +]; \ No newline at end of file diff --git a/dir_ea185b87f60949e3b1bf14314f33a519.html b/dir_ea185b87f60949e3b1bf14314f33a519.html new file mode 100644 index 000000000..4a9c990ef --- /dev/null +++ b/dir_ea185b87f60949e3b1bf14314f33a519.html @@ -0,0 +1,253 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xtensor Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 xaccessible.hpp
 
 xaccumulator.hpp
 
 xadapt.hpp
 
 xarray.hpp
 
 xassign.hpp
 
 xaxis_iterator.hpp
 
 xaxis_slice_iterator.hpp
 
 xblockwise_reducer.hpp
 
 xblockwise_reducer_functors.hpp
 
 xbroadcast.hpp
 
 xbuffer_adaptor.hpp
 
 xbuilder.hpp
 
 xchunked_array.hpp
 
 xchunked_assign.hpp
 
 xchunked_view.hpp
 
 xcomplex.hpp
 
 xcontainer.hpp
 
 xcsv.hpp
 
 xdynamic_view.hpp
 
 xeval.hpp
 
 xexception.hpp
 
 xexpression.hpp
 
 xexpression_holder.hpp
 
 xexpression_traits.hpp
 
 xfixed.hpp
 
 xfunction.hpp
 
 xfunctor_view.hpp
 
 xgenerator.hpp
 
 xhistogram.hpp
 
 xindex_view.hpp
 
 xinfo.hpp
 
 xio.hpp
 
 xiterable.hpp
 
 xiterator.hpp
 
 xjson.hpp
 
 xlayout.hpp
 
 xmanipulation.hpp
 
 xmasked_view.hpp
 
 xmath.hpp
 
 xmime.hpp
 
 xmultiindex_iterator.hpp
 
 xnoalias.hpp
 
 xnorm.hpp
 
 xnpy.hpp
 
 xoffset_view.hpp
 
 xoperation.hpp
 
 xoptional.hpp
 
 xoptional_assembly.hpp
 
 xoptional_assembly_base.hpp
 
 xoptional_assembly_storage.hpp
 
 xpad.hpp
 
 xrandom.hpp
 
 xreducer.hpp
 
 xrepeat.hpp
 
 xscalar.hpp
 
 xsemantic.hpp
 
 xset_operation.hpp
 
 xshape.hpp
 
 xslice.hpp
 
 xsort.hpp
 
 xstorage.hpp
 
 xstrided_view.hpp
 
 xstrided_view_base.hpp
 
 xstrides.hpp
 
 xtensor.hpp
 
 xtensor_config.hpp
 
 xtensor_forward.hpp
 
 xtensor_simd.hpp
 
 xutils.hpp
 
 xvectorize.hpp
 
 xview.hpp
 
 xview_utils.hpp
 
+
+
+ + + + diff --git a/dir_ea185b87f60949e3b1bf14314f33a519.js b/dir_ea185b87f60949e3b1bf14314f33a519.js new file mode 100644 index 000000000..3c1928638 --- /dev/null +++ b/dir_ea185b87f60949e3b1bf14314f33a519.js @@ -0,0 +1,75 @@ +var dir_ea185b87f60949e3b1bf14314f33a519 = +[ + [ "xaccessible.hpp", "xaccessible_8hpp_source.html", null ], + [ "xaccumulator.hpp", "xaccumulator_8hpp_source.html", null ], + [ "xadapt.hpp", "xadapt_8hpp_source.html", null ], + [ "xarray.hpp", "xarray_8hpp_source.html", null ], + [ "xassign.hpp", "xassign_8hpp_source.html", null ], + [ "xaxis_iterator.hpp", "xaxis__iterator_8hpp_source.html", null ], + [ "xaxis_slice_iterator.hpp", "xaxis__slice__iterator_8hpp_source.html", null ], + [ "xblockwise_reducer.hpp", "xblockwise__reducer_8hpp_source.html", null ], + [ "xblockwise_reducer_functors.hpp", "xblockwise__reducer__functors_8hpp_source.html", null ], + [ "xbroadcast.hpp", "xbroadcast_8hpp_source.html", null ], + [ "xbuffer_adaptor.hpp", "xbuffer__adaptor_8hpp_source.html", null ], + [ "xbuilder.hpp", "xbuilder_8hpp_source.html", null ], + [ "xchunked_array.hpp", "xchunked__array_8hpp_source.html", null ], + [ "xchunked_assign.hpp", "xchunked__assign_8hpp_source.html", null ], + [ "xchunked_view.hpp", "xchunked__view_8hpp_source.html", null ], + [ "xcomplex.hpp", "xcomplex_8hpp_source.html", null ], + [ "xcontainer.hpp", "xcontainer_8hpp_source.html", null ], + [ "xcsv.hpp", "xcsv_8hpp_source.html", null ], + [ "xdynamic_view.hpp", "xdynamic__view_8hpp_source.html", null ], + [ "xeval.hpp", "xeval_8hpp_source.html", null ], + [ "xexception.hpp", "xexception_8hpp_source.html", null ], + [ "xexpression.hpp", "xexpression_8hpp_source.html", null ], + [ "xexpression_holder.hpp", "xexpression__holder_8hpp_source.html", null ], + [ "xexpression_traits.hpp", "xexpression__traits_8hpp_source.html", null ], + [ "xfixed.hpp", "xfixed_8hpp_source.html", null ], + [ "xfunction.hpp", "xfunction_8hpp_source.html", null ], + [ "xfunctor_view.hpp", "xfunctor__view_8hpp_source.html", null ], + [ "xgenerator.hpp", "xgenerator_8hpp_source.html", null ], + [ "xhistogram.hpp", "xhistogram_8hpp_source.html", null ], + [ "xindex_view.hpp", "xindex__view_8hpp_source.html", null ], + [ "xinfo.hpp", "xinfo_8hpp_source.html", null ], + [ "xio.hpp", "xio_8hpp_source.html", null ], + [ "xiterable.hpp", "xiterable_8hpp_source.html", null ], + [ "xiterator.hpp", "xiterator_8hpp_source.html", null ], + [ "xjson.hpp", "xjson_8hpp_source.html", null ], + [ "xlayout.hpp", "xlayout_8hpp_source.html", null ], + [ "xmanipulation.hpp", "xmanipulation_8hpp_source.html", null ], + [ "xmasked_view.hpp", "xmasked__view_8hpp_source.html", null ], + [ "xmath.hpp", "xmath_8hpp_source.html", null ], + [ "xmime.hpp", "xmime_8hpp_source.html", null ], + [ "xmultiindex_iterator.hpp", "xmultiindex__iterator_8hpp_source.html", null ], + [ "xnoalias.hpp", "xnoalias_8hpp_source.html", null ], + [ "xnorm.hpp", "xnorm_8hpp_source.html", null ], + [ "xnpy.hpp", "xnpy_8hpp_source.html", null ], + [ "xoffset_view.hpp", "xoffset__view_8hpp_source.html", null ], + [ "xoperation.hpp", "xoperation_8hpp_source.html", null ], + [ "xoptional.hpp", "xoptional_8hpp_source.html", null ], + [ "xoptional_assembly.hpp", "xoptional__assembly_8hpp_source.html", null ], + [ "xoptional_assembly_base.hpp", "xoptional__assembly__base_8hpp_source.html", null ], + [ "xoptional_assembly_storage.hpp", "xoptional__assembly__storage_8hpp_source.html", null ], + [ "xpad.hpp", "xpad_8hpp_source.html", null ], + [ "xrandom.hpp", "xrandom_8hpp_source.html", null ], + [ "xreducer.hpp", "xreducer_8hpp_source.html", null ], + [ "xrepeat.hpp", "xrepeat_8hpp_source.html", null ], + [ "xscalar.hpp", "xscalar_8hpp_source.html", null ], + [ "xsemantic.hpp", "xsemantic_8hpp_source.html", null ], + [ "xset_operation.hpp", "xset__operation_8hpp_source.html", null ], + [ "xshape.hpp", "xshape_8hpp_source.html", null ], + [ "xslice.hpp", "xslice_8hpp_source.html", null ], + [ "xsort.hpp", "xsort_8hpp_source.html", null ], + [ "xstorage.hpp", "xstorage_8hpp_source.html", null ], + [ "xstrided_view.hpp", "xstrided__view_8hpp_source.html", null ], + [ "xstrided_view_base.hpp", "xstrided__view__base_8hpp_source.html", null ], + [ "xstrides.hpp", "xstrides_8hpp_source.html", null ], + [ "xtensor.hpp", "xtensor_8hpp_source.html", null ], + [ "xtensor_config.hpp", "xtensor__config_8hpp_source.html", null ], + [ "xtensor_forward.hpp", "xtensor__forward_8hpp_source.html", null ], + [ "xtensor_simd.hpp", "xtensor__simd_8hpp_source.html", null ], + [ "xutils.hpp", "xutils_8hpp_source.html", null ], + [ "xvectorize.hpp", "xvectorize_8hpp_source.html", null ], + [ "xview.hpp", "xview_8hpp_source.html", null ], + [ "xview_utils.hpp", "xview__utils_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/doc.svg b/doc.svg new file mode 100644 index 000000000..0b928a531 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 000000000..ac18b2755 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..009a9b554 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + 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 var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + 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: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.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.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 { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + 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; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +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: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.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 var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* 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: var(--memdef-param-name-color); + 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, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-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: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + 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 var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + 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.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.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: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -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: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + 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:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @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: var(--footer-foreground-color); +} + +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 var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + 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 var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.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: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.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: var(--footer-foreground-color); + 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: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +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; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + 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: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + 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;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#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: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + 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: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + 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: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + 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 var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + 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 +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..9b281563f --- /dev/null +++ b/dynsections.js @@ -0,0 +1,199 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 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 + */ +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'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +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'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ +$(document).ready(function() { + $('.code,.codeRef').each(function() { + $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); + $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; + $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); + }); +}); diff --git a/files.html b/files.html new file mode 100644 index 000000000..911066235 --- /dev/null +++ b/files.html @@ -0,0 +1,182 @@ + + + + + + + +xtensor: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
  xtensor
 xaccessible.hpp
 xaccumulator.hpp
 xadapt.hpp
 xarray.hpp
 xassign.hpp
 xaxis_iterator.hpp
 xaxis_slice_iterator.hpp
 xblockwise_reducer.hpp
 xblockwise_reducer_functors.hpp
 xbroadcast.hpp
 xbuffer_adaptor.hpp
 xbuilder.hpp
 xchunked_array.hpp
 xchunked_assign.hpp
 xchunked_view.hpp
 xcomplex.hpp
 xcontainer.hpp
 xcsv.hpp
 xdynamic_view.hpp
 xeval.hpp
 xexception.hpp
 xexpression.hpp
 xexpression_holder.hpp
 xexpression_traits.hpp
 xfixed.hpp
 xfunction.hpp
 xfunctor_view.hpp
 xgenerator.hpp
 xhistogram.hpp
 xindex_view.hpp
 xinfo.hpp
 xio.hpp
 xiterable.hpp
 xiterator.hpp
 xjson.hpp
 xlayout.hpp
 xmanipulation.hpp
 xmasked_view.hpp
 xmath.hpp
 xmime.hpp
 xmultiindex_iterator.hpp
 xnoalias.hpp
 xnorm.hpp
 xnpy.hpp
 xoffset_view.hpp
 xoperation.hpp
 xoptional.hpp
 xoptional_assembly.hpp
 xoptional_assembly_base.hpp
 xoptional_assembly_storage.hpp
 xpad.hpp
 xrandom.hpp
 xreducer.hpp
 xrepeat.hpp
 xscalar.hpp
 xsemantic.hpp
 xset_operation.hpp
 xshape.hpp
 xslice.hpp
 xsort.hpp
 xstorage.hpp
 xstrided_view.hpp
 xstrided_view_base.hpp
 xstrides.hpp
 xtensor.hpp
 xtensor_config.hpp
 xtensor_forward.hpp
 xtensor_simd.hpp
 xutils.hpp
 xvectorize.hpp
 xview.hpp
 xview_utils.hpp
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 000000000..f1749d909 --- /dev/null +++ b/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/folderclosed.svg b/folderclosed.svg new file mode 100644 index 000000000..b04bed2e7 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 000000000..52f0166a2 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 000000000..f6896dd25 --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 000000000..2d1f06e7b --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..b59264dc5 --- /dev/null +++ b/functions.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..3bc789be6 --- /dev/null +++ b/functions_b.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..3e468f479 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..1f4610dda --- /dev/null +++ b/functions_d.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_dup.js b/functions_dup.js new file mode 100644 index 000000000..83fa29892 --- /dev/null +++ b/functions_dup.js @@ -0,0 +1,20 @@ +var functions_dup = +[ + [ "a", "functions.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 ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "x", "functions_x.html", null ] +]; \ No newline at end of file diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..deadcce44 --- /dev/null +++ b/functions_e.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..2a5268896 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..f97378551 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/functions_func.js b/functions_func.js new file mode 100644 index 000000000..eca1ded55 --- /dev/null +++ b/functions_func.js @@ -0,0 +1,20 @@ +var functions_func = +[ + [ "a", "functions_func.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 ], + [ "h", "functions_func_h.html", null ], + [ "i", "functions_func_i.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.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 ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "x", "functions_func_x.html", null ] +]; \ No newline at end of file diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..fbe66dbd5 --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..bab5fdd48 --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..4fc33d240 --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..65c856065 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..f666b257c --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..8320a55d4 --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..61489dca6 --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..c11cbdf24 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..840eaed03 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 000000000..3b5a1ff3d --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..f5a226dd0 --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..a6b6bdeae --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..ca1955520 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..f2dfcb1e4 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 000000000..38afd2393 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/functions_func_x.html b/functions_func_x.html new file mode 100644 index 000000000..9f3370425 --- /dev/null +++ b/functions_func_x.html @@ -0,0 +1,129 @@ + + + + + + + +xtensor: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- x -

+
+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..30f4f4512 --- /dev/null +++ b/functions_h.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..fd3f996a5 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..869fe62b1 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..0103d1a6e --- /dev/null +++ b/functions_m.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..f91966679 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..3bcdee93e --- /dev/null +++ b/functions_p.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..2777577e7 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..2b5332e70 --- /dev/null +++ b/functions_s.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..d63e7bd0c --- /dev/null +++ b/functions_u.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..c18809498 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/functions_x.html b/functions_x.html new file mode 100644 index 000000000..626cb746b --- /dev/null +++ b/functions_x.html @@ -0,0 +1,129 @@ + + + + + + + +xtensor: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- x -

+
+
+ + + + diff --git a/group__acc__functions.html b/group__acc__functions.html new file mode 100644 index 000000000..fa3f987d0 --- /dev/null +++ b/group__acc__functions.html @@ -0,0 +1,232 @@ + + + + + + + +xtensor: accumulating functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
accumulating functions
+
+
+ + + + + + + + + + +

+Functions

template<class T = void, class E >
auto xt::cumsum (E &&e, std::ptrdiff_t axis)
 Cumulative sum.
 
template<class T = void, class E >
auto xt::cumprod (E &&e, std::ptrdiff_t axis)
 Cumulative product.
 
+

Detailed Description

+

Function Documentation

+ +

◆ cumprod()

+ +
+
+
+template<class T = void, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::cumprod (E && e,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Cumulative product.

+

Returns the accumulated product for the elements over given axis (or flattened).

Parameters
+ + + +
ean xexpression
axisthe axes along which the cumulative product is computed (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xarray<T>
+ +

Definition at line 2320 of file xmath.hpp.

+ +
+
+ +

◆ cumsum()

+ +
+
+
+template<class T = void, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::cumsum (E && e,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Cumulative sum.

+

Returns the accumulated sum for the elements over given axis (or flattened).

Parameters
+ + + +
ean xexpression
axisthe axes along which the cumulative sum is computed (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xarray<T>
+ +

Definition at line 2285 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__acc__functions.js b/group__acc__functions.js new file mode 100644 index 000000000..59ca82515 --- /dev/null +++ b/group__acc__functions.js @@ -0,0 +1,5 @@ +var group__acc__functions = +[ + [ "xt::cumprod", "group__acc__functions.html#ga17f752dbaca06608f974c3514509fa7b", null ], + [ "xt::cumsum", "group__acc__functions.html#gaae1630a06b4975a5a759f2215e738123", null ] +]; \ No newline at end of file diff --git a/group__arithmetic__operators.html b/group__arithmetic__operators.html new file mode 100644 index 000000000..5206924aa --- /dev/null +++ b/group__arithmetic__operators.html @@ -0,0 +1,475 @@ + + + + + + + +xtensor: Arithmetic operators + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Arithmetic operators
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::operator+ (E &&e) noexcept -> detail::xfunction_type_t< detail::identity, E >
 Identity.
 
template<class E >
auto xt::operator- (E &&e) noexcept -> detail::xfunction_type_t< detail::negate, E >
 Opposite.
 
template<class E1 , class E2 >
auto xt::operator+ (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::plus, E1, E2 >
 Addition.
 
template<class E1 , class E2 >
auto xt::operator- (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::minus, E1, E2 >
 Substraction.
 
template<class E1 , class E2 >
auto xt::operator* (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::multiplies, E1, E2 >
 Multiplication.
 
template<class E1 , class E2 >
auto xt::operator/ (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::divides, E1, E2 >
 Division.
 
template<class E1 , class E2 >
auto xt::operator% (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::modulus, E1, E2 >
 Modulus.
 
+

Detailed Description

+

Function Documentation

+ +

◆ operator%()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator% (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::modulus, E1, E2> +
+
+inlinenoexcept
+
+ +

Modulus.

+

Returns an xfunction for the element-wise modulus of e1 by e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 328 of file xoperation.hpp.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator* (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::multiplies, E1, E2> +
+
+inlinenoexcept
+
+ +

Multiplication.

+

Returns an xfunction for the element-wise multiplication of e1 by e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 296 of file xoperation.hpp.

+ +
+
+ +

◆ operator+() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::operator+ (E && e) -> detail::xfunction_type_t<detail::identity, E> +
+
+inlinenoexcept
+
+ +

Identity.

+

Returns an xfunction for the element-wise identity of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 233 of file xoperation.hpp.

+ +
+
+ +

◆ operator+() [2/2]

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator+ (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::plus, E1, E2> +
+
+inlinenoexcept
+
+ +

Addition.

+

Returns an xfunction for the element-wise addition of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 264 of file xoperation.hpp.

+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::operator- (E && e) -> detail::xfunction_type_t<detail::negate, E> +
+
+inlinenoexcept
+
+ +

Opposite.

+

Returns an xfunction for the element-wise opposite of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 248 of file xoperation.hpp.

+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator- (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::minus, E1, E2> +
+
+inlinenoexcept
+
+ +

Substraction.

+

Returns an xfunction for the element-wise substraction of e2 to e1.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 280 of file xoperation.hpp.

+ +
+
+ +

◆ operator/()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator/ (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::divides, E1, E2> +
+
+inlinenoexcept
+
+ +

Division.

+

Returns an xfunction for the element-wise division of e1 by e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 312 of file xoperation.hpp.

+ +
+
+
+
+ + + + diff --git a/group__arithmetic__operators.js b/group__arithmetic__operators.js new file mode 100644 index 000000000..599493511 --- /dev/null +++ b/group__arithmetic__operators.js @@ -0,0 +1,10 @@ +var group__arithmetic__operators = +[ + [ "xt::operator%", "group__arithmetic__operators.html#gaa3c78e8ff8a284881563ccbdd64bf145", null ], + [ "xt::operator*", "group__arithmetic__operators.html#gaee209a211df9c1fdd671fe786c01eca6", null ], + [ "xt::operator+", "group__arithmetic__operators.html#ga4f6fda1324731f7d8c7bedfd786fd711", null ], + [ "xt::operator+", "group__arithmetic__operators.html#ga3a0012dd54e6eddb1dc1499bda3835fc", null ], + [ "xt::operator-", "group__arithmetic__operators.html#gae9984fddddb53d90fcef38c017ebb5c9", null ], + [ "xt::operator-", "group__arithmetic__operators.html#gadcc7da6c96325690024067869af4e3bf", null ], + [ "xt::operator/", "group__arithmetic__operators.html#ga5c9e3cca169a86ea0974e67d562f7f8c", null ] +]; \ No newline at end of file diff --git a/group__basic__functions.html b/group__basic__functions.html new file mode 100644 index 000000000..afbd8028f --- /dev/null +++ b/group__basic__functions.html @@ -0,0 +1,1261 @@ + + + + + + + +xtensor: Basic functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Basic functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::abs (E &&e) noexcept -> detail::xfunction_type_t< math::abs_fun, E >
 Absolute value function.
 
template<class E >
auto xt::fabs (E &&e) noexcept -> detail::xfunction_type_t< math::fabs_fun, E >
 Absolute value function.
 
template<class E1 , class E2 >
auto xt::fmod (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmod_fun, E1, E2 >
 Remainder of the floating point division operation.
 
template<class E1 , class E2 >
auto xt::remainder (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::remainder_fun, E1, E2 >
 Signed remainder of the division operation.
 
template<class E1 , class E2 , class E3 >
auto xt::fma (E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< math::fma_fun, E1, E2, E3 >
 Fused multiply-add operation.
 
template<class E1 , class E2 >
auto xt::fmax (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmax_fun, E1, E2 >
 Maximum function.
 
template<class E1 , class E2 >
auto xt::fmin (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmin_fun, E1, E2 >
 Minimum function.
 
template<class E1 , class E2 >
auto xt::fdim (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fdim_fun, E1, E2 >
 Positive difference function.
 
template<class E >
auto xt::deg2rad (E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >
 Convert angles from degrees to radians.
 
template<class E >
auto xt::radians (E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >
 Convert angles from degrees to radians.
 
template<class E >
auto xt::rad2deg (E &&e) noexcept -> detail::xfunction_type_t< math::rad2deg, E >
 Convert angles from radians to degrees.
 
template<class E >
auto xt::degrees (E &&e) noexcept -> detail::xfunction_type_t< math::rad2deg, E >
 Convert angles from radians to degrees.
 
template<class E1 , class E2 >
auto xt::maximum (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::maximum< void >, E1, E2 >
 Elementwise maximum.
 
template<class E1 , class E2 >
auto xt::minimum (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::minimum< void >, E1, E2 >
 Elementwise minimum.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::amax (E &&e, X &&axes, EVS es=EVS())
 Maximum element along given axis.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::amin (E &&e, X &&axes, EVS es=EVS())
 Minimum element along given axis.
 
template<class E1 , class E2 , class E3 >
auto xt::clip (E1 &&e1, E2 &&lo, E3 &&hi) noexcept -> detail::xfunction_type_t< math::clamp_fun, E1, E2, E3 >
 Clip values between hi and lo.
 
template<class E >
auto xt::sign (E &&e) noexcept -> detail::xfunction_type_t< math::sign_fun, E >
 Returns an element-wise indication of the sign of a number.
 
template<class E1 , class E2 , class E3 , typename T >
auto xt::interp (const E1 &x, const E2 &xp, const E3 &fp, T left, T right)
 Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.
 
template<class E1 , class E2 = xt::placeholders::xtuph, class E3 = double>
auto xt::unwrap (E1 &&p, E2 discontinuity=xnone(), std::ptrdiff_t axis=-1, E3 period=2.0 *xt::numeric_constants< double >::PI)
 Unwrap by taking the complement of large deltas with respect to the period.
 
template<class E1 , class E2 , class E3 >
auto xt::interp (const E1 &x, const E2 &xp, const E3 &fp)
 Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.
 
+

Detailed Description

+

Function Documentation

+ +

◆ abs()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::abs (E && e) -> detail::xfunction_type_t<math::abs_fun, E> +
+
+inlinenoexcept
+
+ +

Absolute value function.

+

Returns an xfunction for the element-wise absolute value of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 442 of file xmath.hpp.

+ +
+
+ +

◆ amax()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::amax (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Maximum element along given axis.

+

Returns an xreducer for the maximum of elements over given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the maximum is found (optional)
esevaluation strategy of the reducer
+
+
+
Returns
an xreducer
+ +

Definition at line 781 of file xmath.hpp.

+ +
+
+ +

◆ amin()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::amin (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Minimum element along given axis.

+

Returns an xreducer for the minimum of elements over given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the minimum is found (optional)
esevaluation strategy of the reducer
+
+
+
Returns
an xreducer
+ +

Definition at line 799 of file xmath.hpp.

+ +
+
+ +

◆ clip()

+ +
+
+
+template<class E1 , class E2 , class E3 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::clip (E1 && e1,
E2 && lo,
E3 && hi 
) -> detail::xfunction_type_t<math::clamp_fun, E1, E2, E3> +
+
+inlinenoexcept
+
+ +

Clip values between hi and lo.

+

Returns an xfunction for the element-wise clipped values between lo and hi

Parameters
+ + + + +
e1an xexpression or a scalar
loa scalar
hia scalar
+
+
+
Returns
a xfunction
+ +

Definition at line 814 of file xmath.hpp.

+ +
+
+ +

◆ deg2rad()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::deg2rad (E && e) -> detail::xfunction_type_t<math::deg2rad, E> +
+
+inlinenoexcept
+
+ +

Convert angles from degrees to radians.

+

Returns an xfunction for the element-wise corresponding angle in radians of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 683 of file xmath.hpp.

+ +
+
+ +

◆ degrees()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::degrees (E && e) -> detail::xfunction_type_t<math::rad2deg, E> +
+
+inlinenoexcept
+
+ +

Convert angles from radians to degrees.

+

Returns an xfunction for the element-wise corresponding angle in degrees of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 728 of file xmath.hpp.

+ +
+
+ +

◆ fabs()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::fabs (E && e) -> detail::xfunction_type_t<math::fabs_fun, E> +
+
+inlinenoexcept
+
+ +

Absolute value function.

+

Returns an xfunction for the element-wise absolute value of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 457 of file xmath.hpp.

+ +
+
+ +

◆ fdim()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::fdim (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::fdim_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Positive difference function.

+

Returns an xfunction for the element-wise positive difference of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 564 of file xmath.hpp.

+ +
+
+ +

◆ fma()

+ +
+
+
+template<class E1 , class E2 , class E3 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::fma (E1 && e1,
E2 && e2,
E3 && e3 
) -> detail::xfunction_type_t<math::fma_fun, E1, E2, E3> +
+
+inlinenoexcept
+
+ +

Fused multiply-add operation.

+

Returns an xfunction for e1 * e2 + e3 as if to infinite precision and rounded only once to fit the result type.

Parameters
+ + + + +
e1an xfunction or a scalar
e2an xfunction or a scalar
e3an xfunction or a scalar
+
+
+
Returns
an xfunction
+
Note
e1, e2 and e3 can't be scalars every three.
+ +

Definition at line 509 of file xmath.hpp.

+ +
+
+ +

◆ fmax()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::fmax (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::fmax_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Maximum function.

+

Returns an xfunction for the element-wise maximum of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 530 of file xmath.hpp.

+ +
+
+ +

◆ fmin()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::fmin (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::fmin_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Minimum function.

+

Returns an xfunction for the element-wise minimum of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 547 of file xmath.hpp.

+ +
+
+ +

◆ fmod()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::fmod (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::fmod_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Remainder of the floating point division operation.

+

Returns an xfunction for the element-wise remainder of the floating point division operation e1 / e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 474 of file xmath.hpp.

+ +
+
+ +

◆ interp() [1/2]

+ +
+
+
+template<class E1 , class E2 , class E3 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::interp (const E1 & x,
const E2 & xp,
const E3 & fp 
)
+
+inline
+
+ +

Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.

+
Parameters
+ + + + +
xThe x-coordinates at which to evaluate the interpolated values (sorted).
xpThe x-coordinates of the data points (sorted).
fpThe y-coordinates of the data points, same length as xp.
+
+
+
Returns
an one-dimensional xarray, same length as x.
+ +

Definition at line 3184 of file xmath.hpp.

+ +
+
+ +

◆ interp() [2/2]

+ +
+
+
+template<class E1 , class E2 , class E3 , typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::interp (const E1 & x,
const E2 & xp,
const E3 & fp,
left,
right 
)
+
+inline
+
+ +

Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.

+
Parameters
+ + + + + + +
xThe x-coordinates at which to evaluate the interpolated values (sorted).
xpThe x-coordinates of the data points (sorted).
fpThe y-coordinates of the data points, same length as xp.
leftValue to return for x < xp[0].
rightValue to return for x > xp[-1]
+
+
+
Returns
an one-dimensional xarray, same length as x.
+ +

Definition at line 3019 of file xmath.hpp.

+ +
+
+ +

◆ maximum()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::maximum (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::maximum<void>, E1, E2> +
+
+inlinenoexcept
+
+ +

Elementwise maximum.

+

Returns an xfunction for the element-wise maximum between e1 and e2.

Parameters
+ + + +
e1an xexpression
e2an xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 744 of file xmath.hpp.

+ +
+
+ +

◆ minimum()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::minimum (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::minimum<void>, E1, E2> +
+
+inlinenoexcept
+
+ +

Elementwise minimum.

+

Returns an xfunction for the element-wise minimum between e1 and e2.

Parameters
+ + + +
e1an xexpression
e2an xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 760 of file xmath.hpp.

+ +
+
+ +

◆ rad2deg()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::rad2deg (E && e) -> detail::xfunction_type_t<math::rad2deg, E> +
+
+inlinenoexcept
+
+ +

Convert angles from radians to degrees.

+

Returns an xfunction for the element-wise corresponding angle in degrees of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 713 of file xmath.hpp.

+ +
+
+ +

◆ radians()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::radians (E && e) -> detail::xfunction_type_t<math::deg2rad, E> +
+
+inlinenoexcept
+
+ +

Convert angles from degrees to radians.

+

Returns an xfunction for the element-wise corresponding angle in radians of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 698 of file xmath.hpp.

+ +
+
+ +

◆ remainder()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::remainder (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::remainder_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Signed remainder of the division operation.

+

Returns an xfunction for the element-wise signed remainder of the floating point division operation e1 / e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 491 of file xmath.hpp.

+ +
+
+ +

◆ sign()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::sign (E && e) -> detail::xfunction_type_t<math::sign_fun, E> +
+
+inlinenoexcept
+
+ +

Returns an element-wise indication of the sign of a number.

+

If the number is positive, returns +1. If negative, -1. If the number is zero, returns 0.

+
Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 876 of file xmath.hpp.

+ +
+
+ +

◆ unwrap()

+ +
+
+
+template<class E1 , class E2 = xt::placeholders::xtuph, class E3 = double>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::unwrap (E1 && p,
E2 discontinuity = xnone(),
std::ptrdiff_t axis = -1,
E3 period = 2.0 * xt::numeric_constants<double>::PI 
)
+
+inline
+
+ +

Unwrap by taking the complement of large deltas with respect to the period.

+

https://numpy.org/doc/stable/reference/generated/numpy.unwrap.html

Parameters
+ + + + + +
pInput array.
discontinuityMaximum discontinuity between values, default is period / 2. Values below period / 2 are treated as if they were period / 2. To have an effect different from the default, use discontinuity > period / 2.
axisAxis along which unwrap will operate, default: the last axis.
periodSize of the range over which the input wraps. Default: $ 2 \pi $.
+
+
+ +

Definition at line 3139 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__basic__functions.js b/group__basic__functions.js new file mode 100644 index 000000000..490109ec8 --- /dev/null +++ b/group__basic__functions.js @@ -0,0 +1,24 @@ +var group__basic__functions = +[ + [ "xt::abs", "group__basic__functions.html#ga5a8df8c0823f064b710b90fdc73384f7", null ], + [ "xt::amax", "group__basic__functions.html#ga2087e1dd9e331edc470b4b78343f33af", null ], + [ "xt::amin", "group__basic__functions.html#gaab0c337a9aefb746fb8a8b6cfcb511ed", null ], + [ "xt::clip", "group__basic__functions.html#ga951c830ac7329af2e6de1194821c09c4", null ], + [ "xt::deg2rad", "group__basic__functions.html#ga1bc991dd9cc5f66575ab91f87b140577", null ], + [ "xt::degrees", "group__basic__functions.html#ga4450fb9262604f2ed230e479092e7fdb", null ], + [ "xt::fabs", "group__basic__functions.html#ga6548f786920ac988f0e655576b3a3c82", null ], + [ "xt::fdim", "group__basic__functions.html#gaa68f33844e1bb457b87880b7433506d3", null ], + [ "xt::fma", "group__basic__functions.html#ga0f88cbfba7ddc6b5e8a1c74e422a0409", null ], + [ "xt::fmax", "group__basic__functions.html#ga782cdb54181f69e99679e1045cb53323", null ], + [ "xt::fmin", "group__basic__functions.html#gab8eb77690d6d7b651f61a961b0b4e472", null ], + [ "xt::fmod", "group__basic__functions.html#ga51fa6991b9bc8878a763212346d6449b", null ], + [ "xt::interp", "group__basic__functions.html#gaa909fc5959dbb290c47c9698d5076ed3", null ], + [ "xt::interp", "group__basic__functions.html#ga47e1576710edcbb14d2ccf4df7d62ec3", null ], + [ "xt::maximum", "group__basic__functions.html#ga72354e9ca3d4446608c32d77d78fc721", null ], + [ "xt::minimum", "group__basic__functions.html#ga6ba20f491bf0a014df5a219461ac8c98", null ], + [ "xt::rad2deg", "group__basic__functions.html#gab8884e81107ab3012f7604fa1826bca3", null ], + [ "xt::radians", "group__basic__functions.html#ga9bdbff83a3137d687d749c710fa466fb", null ], + [ "xt::remainder", "group__basic__functions.html#ga2322bc87a5871e26173db4b2383e1db8", null ], + [ "xt::sign", "group__basic__functions.html#gad678caa2e599d095ad40e2b32bf4eb37", null ], + [ "xt::unwrap", "group__basic__functions.html#gaeb6f80a96d7a1da033b737b34acaeb74", null ] +]; \ No newline at end of file diff --git a/group__bitwise__operators.html b/group__bitwise__operators.html new file mode 100644 index 000000000..23ce62566 --- /dev/null +++ b/group__bitwise__operators.html @@ -0,0 +1,543 @@ + + + + + + + +xtensor: Bitwise operators + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Bitwise operators
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E1 , class E2 >
auto xt::operator& (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_and, E1, E2 >
 Bitwise and.
 
template<class E1 , class E2 >
auto xt::operator| (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_or, E1, E2 >
 Bitwise or.
 
template<class E1 , class E2 >
auto xt::operator^ (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_xor, E1, E2 >
 Bitwise xor.
 
template<class E >
auto xt::operator~ (E &&e) noexcept -> detail::xfunction_type_t< detail::bitwise_not, E >
 Bitwise not.
 
template<class E1 , class E2 >
auto xt::left_shift (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::left_shift, E1, E2 >
 Bitwise left shift.
 
template<class E1 , class E2 >
auto xt::right_shift (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::right_shift, E1, E2 >
 Bitwise left shift.
 
template<class E1 , class E2 >
auto xt::operator<< (E1 &&e1, E2 &&e2) noexcept -> detail::shift_return_type_t< detail::left_shift, E1, E2 >
 Bitwise left shift.
 
template<class E1 , class E2 >
auto xt::operator>> (E1 &&e1, E2 &&e2) -> detail::shift_return_type_t< detail::right_shift, E1, E2 >
 Bitwise right shift.
 
+

Detailed Description

+

Function Documentation

+ +

◆ left_shift()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::left_shift (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::left_shift, E1, E2> +
+
+inlinenoexcept
+
+ +

Bitwise left shift.

+

Returns an xfunction for the element-wise bitwise left shift of e1 by e2.

Parameters
+ + + +
e1an xexpression
e2an xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 462 of file xoperation.hpp.

+ +
+
+ +

◆ operator&()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator& (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::bitwise_and, E1, E2> +
+
+inlinenoexcept
+
+ +

Bitwise and.

+

Returns an xfunction for the element-wise bitwise and of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 399 of file xoperation.hpp.

+ +
+
+ +

◆ operator<<()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator<< (E1 && e1,
E2 && e2 
) -> detail::shift_return_type_t<detail::left_shift, E1, E2> +
+
+inlinenoexcept
+
+ +

Bitwise left shift.

+

Returns an xfunction for the element-wise bitwise left shift of e1 by e2.

Parameters
+ + + +
e1an xexpression
e2an xexpression
+
+
+
Returns
an xfunction
+
See also
left_shift
+ +

Definition at line 525 of file xoperation.hpp.

+ +
+
+ +

◆ operator>>()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator>> (E1 && e1,
E2 && e2 
) -> detail::shift_return_type_t<detail::right_shift, E1, E2> +
+
+inline
+
+ +

Bitwise right shift.

+

Returns an xfunction for the element-wise bitwise right shift of e1 by e2.

Parameters
+ + + +
e1an xexpression
e2an xexpression
+
+
+
Returns
an xfunction
+
See also
right_shift
+ +

Definition at line 543 of file xoperation.hpp.

+ +
+
+ +

◆ operator^()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator^ (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::bitwise_xor, E1, E2> +
+
+inlinenoexcept
+
+ +

Bitwise xor.

+

Returns an xfunction for the element-wise bitwise xor of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 431 of file xoperation.hpp.

+ +
+
+ +

◆ operator|()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator| (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::bitwise_or, E1, E2> +
+
+inlinenoexcept
+
+ +

Bitwise or.

+

Returns an xfunction for the element-wise bitwise or of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 415 of file xoperation.hpp.

+ +
+
+ +

◆ operator~()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::operator~ (E && e) -> detail::xfunction_type_t<detail::bitwise_not, E> +
+
+inlinenoexcept
+
+ +

Bitwise not.

+

Returns an xfunction for the element-wise bitwise not of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 446 of file xoperation.hpp.

+ +
+
+ +

◆ right_shift()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::right_shift (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::right_shift, E1, E2> +
+
+inlinenoexcept
+
+ +

Bitwise left shift.

+

Returns an xfunction for the element-wise bitwise left shift of e1 by e2.

Parameters
+ + + +
e1an xexpression
e2an xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 478 of file xoperation.hpp.

+ +
+
+
+
+ + + + diff --git a/group__bitwise__operators.js b/group__bitwise__operators.js new file mode 100644 index 000000000..e747d71d1 --- /dev/null +++ b/group__bitwise__operators.js @@ -0,0 +1,11 @@ +var group__bitwise__operators = +[ + [ "xt::left_shift", "group__bitwise__operators.html#ga2cd49affcc3745f02fbb43f1bed16ed1", null ], + [ "xt::operator&", "group__bitwise__operators.html#ga0084d8f6f0f513d35a35e79f7fffc2fb", null ], + [ "xt::operator<<", "group__bitwise__operators.html#gaa7b48fdbaa2c12656338470eb3cc5c8e", null ], + [ "xt::operator>>", "group__bitwise__operators.html#gace6ce969d4a7bdee37e410309448df92", null ], + [ "xt::operator^", "group__bitwise__operators.html#ga85c9a2b613116854aa104a4005f2a0f4", null ], + [ "xt::operator|", "group__bitwise__operators.html#gac1e3650f1eae70c7ab951cce7df0b7ac", null ], + [ "xt::operator~", "group__bitwise__operators.html#ga61f9831f1f2da86982f23d8e4e45e3db", null ], + [ "xt::right_shift", "group__bitwise__operators.html#ga2eab76876895cd0cae2a667e513c9f92", null ] +]; \ No newline at end of file diff --git a/group__casting__operators.html b/group__casting__operators.html new file mode 100644 index 000000000..4cfcbd488 --- /dev/null +++ b/group__casting__operators.html @@ -0,0 +1,157 @@ + + + + + + + +xtensor: Casting operators + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Casting operators
+
+
+ + + + + + +

+Functions

template<class R , class E >
auto xt::cast (E &&e) noexcept -> detail::xfunction_type_t< typename detail::cast< R >::functor, E >
 Element-wise static_cast.
 
+

Detailed Description

+

Function Documentation

+ +

◆ cast()

+ +
+
+
+template<class R , class E >
+ + + + + +
+ + + + + + + + +
auto xt::cast (E && e) -> detail::xfunction_type_t<typename detail::cast<R>::functor, E> +
+
+inlinenoexcept
+
+ +

Element-wise static_cast.

+

Returns an xfunction for the element-wise static_cast of e to type R.

+
Parameters
+ + +
ean xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 990 of file xoperation.hpp.

+ +
+
+
+
+ + + + diff --git a/group__casting__operators.js b/group__casting__operators.js new file mode 100644 index 000000000..b65ba968a --- /dev/null +++ b/group__casting__operators.js @@ -0,0 +1,4 @@ +var group__casting__operators = +[ + [ "xt::cast", "group__casting__operators.html#ga8d57e20151af53f5ffec3afa6f834cf4", null ] +]; \ No newline at end of file diff --git a/group__classif__functions.html b/group__classif__functions.html new file mode 100644 index 000000000..a3d1ec809 --- /dev/null +++ b/group__classif__functions.html @@ -0,0 +1,387 @@ + + + + + + + +xtensor: Classification functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Classification functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::isfinite (E &&e) noexcept -> detail::xfunction_type_t< math::isfinite_fun, E >
 finite value check
 
template<class E >
auto xt::isinf (E &&e) noexcept -> detail::xfunction_type_t< math::isinf_fun, E >
 infinity check
 
template<class E >
auto xt::isnan (E &&e) noexcept -> detail::xfunction_type_t< math::isnan_fun, E >
 NaN check.
 
template<class E1 , class E2 >
auto xt::isclose (E1 &&e1, E2 &&e2, double rtol=1e-05, double atol=1e-08, bool equal_nan=false) noexcept
 Element-wise closeness detection.
 
template<class E1 , class E2 >
auto xt::allclose (E1 &&e1, E2 &&e2, double rtol=1e-05, double atol=1e-08) noexcept
 Check if all elements in e1 are close to the corresponding elements in e2.
 
+

Detailed Description

+

Function Documentation

+ +

◆ allclose()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::allclose (E1 && e1,
E2 && e2,
double rtol = 1e-05,
double atol = 1e-08 
)
+
+inlinenoexcept
+
+ +

Check if all elements in e1 are close to the corresponding elements in e2.

+

Returns true if all elements in e1 and e2 are close to each other according to parameters atol and rtol.

Parameters
+ + + + + +
e1input array to compare
e2input arrays to compare
rtolthe relative tolerance parameter (default 1e-05)
atolthe absolute tolerance parameter (default 1e-08)
+
+
+
Returns
a boolean
+ +

Definition at line 1812 of file xmath.hpp.

+ +
+
+ +

◆ isclose()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::isclose (E1 && e1,
E2 && e2,
double rtol = 1e-05,
double atol = 1e-08,
bool equal_nan = false 
)
+
+inlinenoexcept
+
+ +

Element-wise closeness detection.

+

Returns an xfunction that evaluates to true if the elements in e1 and e2 are close to each other according to parameters atol and rtol. The equation is: std::abs(a - b) <= (m_atol + m_rtol * std::abs(b)).

Parameters
+ + + + + + +
e1input array to compare
e2input array to compare
rtolthe relative tolerance parameter (default 1e-05)
atolthe absolute tolerance parameter (default 1e-08)
equal_nanif true, isclose returns true if both elements of e1 and e2 are NaN
+
+
+
Returns
an xfunction
+ +

Definition at line 1789 of file xmath.hpp.

+ +
+
+ +

◆ isfinite()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::isfinite (E && e) -> detail::xfunction_type_t<math::isfinite_fun, E> +
+
+inlinenoexcept
+
+ +

finite value check

+

Returns an xfunction for the element-wise finite value check tangent of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1677 of file xmath.hpp.

+ +
+
+ +

◆ isinf()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::isinf (E && e) -> detail::xfunction_type_t<math::isinf_fun, E> +
+
+inlinenoexcept
+
+ +

infinity check

+

Returns an xfunction for the element-wise infinity check tangent of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1692 of file xmath.hpp.

+ +
+
+ +

◆ isnan()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::isnan (E && e) -> detail::xfunction_type_t<math::isnan_fun, E> +
+
+inlinenoexcept
+
+ +

NaN check.

+

Returns an xfunction for the element-wise NaN check tangent of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1707 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__classif__functions.js b/group__classif__functions.js new file mode 100644 index 000000000..475d97ceb --- /dev/null +++ b/group__classif__functions.js @@ -0,0 +1,8 @@ +var group__classif__functions = +[ + [ "xt::allclose", "group__classif__functions.html#ga07beaa8c1b5c159ac3f6c0c09ab1e05c", null ], + [ "xt::isclose", "group__classif__functions.html#ga94330518c2d0f78691dc8bb4b27eb72a", null ], + [ "xt::isfinite", "group__classif__functions.html#ga177a09c77ac16a253588403fe7cbeaec", null ], + [ "xt::isinf", "group__classif__functions.html#ga94db88dbac47fd2e3cce71c568332554", null ], + [ "xt::isnan", "group__classif__functions.html#ga41ec7bcedb794bccf3535bac9c3142ab", null ] +]; \ No newline at end of file diff --git a/group__comparison__operators.html b/group__comparison__operators.html new file mode 100644 index 000000000..4ddbdd7bb --- /dev/null +++ b/group__comparison__operators.html @@ -0,0 +1,770 @@ + + + + + + + +xtensor: Comparison operators + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Comparison operators
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E1 , class E2 >
auto xt::operator< (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::less, E1, E2 >
 Lesser than.
 
template<class E1 , class E2 >
auto xt::operator<= (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::less_equal, E1, E2 >
 Lesser or equal.
 
template<class E1 , class E2 >
auto xt::operator> (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::greater, E1, E2 >
 Greater than.
 
template<class E1 , class E2 >
auto xt::operator>= (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::greater_equal, E1, E2 >
 Greater or equal.
 
template<class E1 , class E2 >
std::enable_if_t< xoptional_comparable< E1, E2 >::value, bool > xt::operator== (const xexpression< E1 > &e1, const xexpression< E2 > &e2)
 Equality.
 
template<class E1 , class E2 >
bool xt::operator!= (const xexpression< E1 > &e1, const xexpression< E2 > &e2)
 Inequality.
 
template<class E1 , class E2 >
auto xt::equal (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::equal_to, E1, E2 >
 Element-wise equality.
 
template<class E1 , class E2 >
auto xt::not_equal (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::not_equal_to, E1, E2 >
 Element-wise inequality.
 
template<class E1 , class E2 >
auto xt::less (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1)< std::forward< E2 >(e2))
 Lesser than.
 
template<class E1 , class E2 >
auto xt::less_equal (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1)<=std::forward< E2 >(e2))
 Lesser or equal.
 
template<class E1 , class E2 >
auto xt::greater (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) > std::forward< E2 >(e2))
 Greater than.
 
template<class E1 , class E2 >
auto xt::greater_equal (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) >=std::forward< E2 >(e2))
 Greater or equal.
 
+

Detailed Description

+

Function Documentation

+ +

◆ equal()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::equal (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::equal_to, E1, E2> +
+
+inlinenoexcept
+
+ +

Element-wise equality.

+

Returns an xfunction for the element-wise equality of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 674 of file xoperation.hpp.

+ +
+
+ +

◆ greater()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::greater (E1 && e1,
E2 && e2 
) -> decltype(std::forward<E1>(e1) > std::forward<E2>(e2)) +
+
+inlinenoexcept
+
+ +

Greater than.

+

Returns an xfunction for the element-wise greater than comparison of e1 and e2. This function is equivalent to operator>(E1&&, E2&&).

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 741 of file xoperation.hpp.

+ +
+
+ +

◆ greater_equal()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::greater_equal (E1 && e1,
E2 && e2 
) -> decltype(std::forward<E1>(e1) >= std::forward<E2>(e2)) +
+
+inlinenoexcept
+
+ +

Greater or equal.

+

Returns an xfunction for the element-wise greater or equal comparison of e1 and e2. This function is equivalent to operator>=(E1&&, E2&&).

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 758 of file xoperation.hpp.

+ +
+
+ +

◆ less()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::less (E1 && e1,
E2 && e2 
) -> decltype(std::forward<E1>(e1) < std::forward<E2>(e2)) +
+
+inlinenoexcept
+
+ +

Lesser than.

+

Returns an xfunction for the element-wise lesser than comparison of e1 and e2. This function is equivalent to operator<(E1&&, E2&&).

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 707 of file xoperation.hpp.

+ +
+
+ +

◆ less_equal()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::less_equal (E1 && e1,
E2 && e2 
) -> decltype(std::forward<E1>(e1) <= std::forward<E2>(e2)) +
+
+inlinenoexcept
+
+ +

Lesser or equal.

+

Returns an xfunction for the element-wise lesser or equal comparison of e1 and e2. This function is equivalent to operator<=(E1&&, E2&&).

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 724 of file xoperation.hpp.

+ +
+
+ +

◆ not_equal()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::not_equal (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::not_equal_to, E1, E2> +
+
+inlinenoexcept
+
+ +

Element-wise inequality.

+

Returns an xfunction for the element-wise inequality of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 690 of file xoperation.hpp.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::operator!= (const xexpression< E1 > & e1,
const xexpression< E2 > & e2 
)
+
+inline
+
+ +

Inequality.

+

Returns true if e1 and e2 have different shapes or hold the different values. Unlike other comparison operators, this does not return an xfunction.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
a boolean
+ +

Definition at line 658 of file xoperation.hpp.

+ +
+
+ +

◆ operator<()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator< (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::less, E1, E2> +
+
+inlinenoexcept
+
+ +

Lesser than.

+

Returns an xfunction for the element-wise lesser than comparison of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 563 of file xoperation.hpp.

+ +
+
+ +

◆ operator<=()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator<= (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::less_equal, E1, E2> +
+
+inlinenoexcept
+
+ +

Lesser or equal.

+

Returns an xfunction for the element-wise lesser or equal comparison of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 579 of file xoperation.hpp.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::enable_if_t< xoptional_comparable< E1, E2 >::value, bool > xt::operator== (const xexpression< E1 > & e1,
const xexpression< E2 > & e2 
)
+
+inline
+
+ +

Equality.

+

Returns true if e1 and e2 have the same shape and hold the same values. Unlike other comparison operators, this does not return an xfunction.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
a boolean
+ +

Definition at line 630 of file xoperation.hpp.

+ +
+
+ +

◆ operator>()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator> (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::greater, E1, E2> +
+
+inlinenoexcept
+
+ +

Greater than.

+

Returns an xfunction for the element-wise greater than comparison of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 595 of file xoperation.hpp.

+ +
+
+ +

◆ operator>=()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator>= (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::greater_equal, E1, E2> +
+
+inlinenoexcept
+
+ +

Greater or equal.

+

Returns an xfunction for the element-wise greater or equal comparison of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 611 of file xoperation.hpp.

+ +
+
+
+
+ + + + diff --git a/group__comparison__operators.js b/group__comparison__operators.js new file mode 100644 index 000000000..cda864dad --- /dev/null +++ b/group__comparison__operators.js @@ -0,0 +1,15 @@ +var group__comparison__operators = +[ + [ "xt::equal", "group__comparison__operators.html#ga4c778acba0a9407a9093505fad0506d2", null ], + [ "xt::greater", "group__comparison__operators.html#ga7c7efdc8246d1ae40ab7f6a8cffe0958", null ], + [ "xt::greater_equal", "group__comparison__operators.html#ga68a359635b6a5d0940f97c7586a61ea3", null ], + [ "xt::less", "group__comparison__operators.html#ga2c830ecb583258f639e710642dbf0d7c", null ], + [ "xt::less_equal", "group__comparison__operators.html#ga9e84bf652cf6e810f974a8bcb51f1511", null ], + [ "xt::not_equal", "group__comparison__operators.html#ga014ea335af4e1334f9d95ca6f9b9f6ce", null ], + [ "xt::operator!=", "group__comparison__operators.html#gaae699c5c8cda32f45372da2daee9a9b4", null ], + [ "xt::operator<", "group__comparison__operators.html#ga2adbdc9609fe51aa3e50955fe039ba67", null ], + [ "xt::operator<=", "group__comparison__operators.html#gaf7b3cb0fe146e5a95a750a1291bfdcca", null ], + [ "xt::operator==", "group__comparison__operators.html#gaa82e19b7daac1f55388a62f89cd5f9c7", null ], + [ "xt::operator>", "group__comparison__operators.html#ga3addaced4bd7bdacea4a842d9d6c850a", null ], + [ "xt::operator>=", "group__comparison__operators.html#gaa40baca1e4f53789261cd3e8736a98ef", null ] +]; \ No newline at end of file diff --git a/group__err__functions.html b/group__err__functions.html new file mode 100644 index 000000000..989a03aad --- /dev/null +++ b/group__err__functions.html @@ -0,0 +1,288 @@ + + + + + + + +xtensor: Error and gamma functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Error and gamma functions
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::erf (E &&e) noexcept -> detail::xfunction_type_t< math::erf_fun, E >
 Error function.
 
template<class E >
auto xt::erfc (E &&e) noexcept -> detail::xfunction_type_t< math::erfc_fun, E >
 Complementary error function.
 
template<class E >
auto xt::tgamma (E &&e) noexcept -> detail::xfunction_type_t< math::tgamma_fun, E >
 Gamma function.
 
template<class E >
auto xt::lgamma (E &&e) noexcept -> detail::xfunction_type_t< math::lgamma_fun, E >
 Natural logarithm of the gamma function.
 
+

Detailed Description

+

Function Documentation

+ +

◆ erf()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::erf (E && e) -> detail::xfunction_type_t<math::erf_fun, E> +
+
+inlinenoexcept
+
+ +

Error function.

+

Returns an xfunction for the element-wise error function of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1508 of file xmath.hpp.

+ +
+
+ +

◆ erfc()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::erfc (E && e) -> detail::xfunction_type_t<math::erfc_fun, E> +
+
+inlinenoexcept
+
+ +

Complementary error function.

+

Returns an xfunction for the element-wise complementary error function of e, whithout loss of precision for large argument.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1523 of file xmath.hpp.

+ +
+
+ +

◆ lgamma()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::lgamma (E && e) -> detail::xfunction_type_t<math::lgamma_fun, E> +
+
+inlinenoexcept
+
+ +

Natural logarithm of the gamma function.

+

Returns an xfunction for the element-wise logarithm of the asbolute value fo the gamma function of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1553 of file xmath.hpp.

+ +
+
+ +

◆ tgamma()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::tgamma (E && e) -> detail::xfunction_type_t<math::tgamma_fun, E> +
+
+inlinenoexcept
+
+ +

Gamma function.

+

Returns an xfunction for the element-wise gamma function of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1538 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__err__functions.js b/group__err__functions.js new file mode 100644 index 000000000..db1676b69 --- /dev/null +++ b/group__err__functions.js @@ -0,0 +1,7 @@ +var group__err__functions = +[ + [ "xt::erf", "group__err__functions.html#ga996f61e9186110b7daa859da0a8d2755", null ], + [ "xt::erfc", "group__err__functions.html#ga6af9a81a9ca2bab66e744167c9683920", null ], + [ "xt::lgamma", "group__err__functions.html#ga5216029cd6e56b81f5145041540d043e", null ], + [ "xt::tgamma", "group__err__functions.html#gabe9c5e1fc33af3db795c8b3655321f02", null ] +]; \ No newline at end of file diff --git a/group__exp__functions.html b/group__exp__functions.html new file mode 100644 index 000000000..63ff0f8cf --- /dev/null +++ b/group__exp__functions.html @@ -0,0 +1,420 @@ + + + + + + + +xtensor: Exponential functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Exponential functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::exp (E &&e) noexcept -> detail::xfunction_type_t< math::exp_fun, E >
 Natural exponential function.
 
template<class E >
auto xt::exp2 (E &&e) noexcept -> detail::xfunction_type_t< math::exp2_fun, E >
 Base 2 exponential function.
 
template<class E >
auto xt::expm1 (E &&e) noexcept -> detail::xfunction_type_t< math::expm1_fun, E >
 Natural exponential minus one function.
 
template<class E >
auto xt::log (E &&e) noexcept -> detail::xfunction_type_t< math::log_fun, E >
 Natural logarithm function.
 
template<class E >
auto xt::log10 (E &&e) noexcept -> detail::xfunction_type_t< math::log10_fun, E >
 Base 10 logarithm function.
 
template<class E >
auto xt::log2 (E &&e) noexcept -> detail::xfunction_type_t< math::log2_fun, E >
 Base 2 logarithm function.
 
template<class E >
auto xt::log1p (E &&e) noexcept -> detail::xfunction_type_t< math::log1p_fun, E >
 Natural logarithm of one plus function.
 
+

Detailed Description

+

Function Documentation

+ +

◆ exp()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::exp (E && e) -> detail::xfunction_type_t<math::exp_fun, E> +
+
+inlinenoexcept
+
+ +

Natural exponential function.

+

Returns an xfunction for the element-wise natural exponential of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 899 of file xmath.hpp.

+ +
+
+ +

◆ exp2()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::exp2 (E && e) -> detail::xfunction_type_t<math::exp2_fun, E> +
+
+inlinenoexcept
+
+ +

Base 2 exponential function.

+

Returns an xfunction for the element-wise base 2 exponential of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 914 of file xmath.hpp.

+ +
+
+ +

◆ expm1()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::expm1 (E && e) -> detail::xfunction_type_t<math::expm1_fun, E> +
+
+inlinenoexcept
+
+ +

Natural exponential minus one function.

+

Returns an xfunction for the element-wise natural exponential of e, minus 1.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 929 of file xmath.hpp.

+ +
+
+ +

◆ log()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::log (E && e) -> detail::xfunction_type_t<math::log_fun, E> +
+
+inlinenoexcept
+
+ +

Natural logarithm function.

+

Returns an xfunction for the element-wise natural logarithm of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 944 of file xmath.hpp.

+ +
+
+ +

◆ log10()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::log10 (E && e) -> detail::xfunction_type_t<math::log10_fun, E> +
+
+inlinenoexcept
+
+ +

Base 10 logarithm function.

+

Returns an xfunction for the element-wise base 10 logarithm of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 959 of file xmath.hpp.

+ +
+
+ +

◆ log1p()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::log1p (E && e) -> detail::xfunction_type_t<math::log1p_fun, E> +
+
+inlinenoexcept
+
+ +

Natural logarithm of one plus function.

+

Returns an xfunction for the element-wise natural logarithm of e, plus 1.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 989 of file xmath.hpp.

+ +
+
+ +

◆ log2()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::log2 (E && e) -> detail::xfunction_type_t<math::log2_fun, E> +
+
+inlinenoexcept
+
+ +

Base 2 logarithm function.

+

Returns an xfunction for the element-wise base 2 logarithm of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 974 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__exp__functions.js b/group__exp__functions.js new file mode 100644 index 000000000..bbda9a612 --- /dev/null +++ b/group__exp__functions.js @@ -0,0 +1,10 @@ +var group__exp__functions = +[ + [ "xt::exp", "group__exp__functions.html#gae0c736d69056d124184aada09007e70b", null ], + [ "xt::exp2", "group__exp__functions.html#ga212886f718828e83aaf07cdabf60aeab", null ], + [ "xt::expm1", "group__exp__functions.html#ga1646ca23b54f4a72d4bbe46f1182921c", null ], + [ "xt::log", "group__exp__functions.html#gaaeb73f780e08001206f1f9ed9db161e1", null ], + [ "xt::log10", "group__exp__functions.html#gae6585ff00a0cf0fdcdf659639e8d1ca0", null ], + [ "xt::log1p", "group__exp__functions.html#ga08b8fa80ab57f38bb87e8c01b943d7f7", null ], + [ "xt::log2", "group__exp__functions.html#gae08fcbd5914db4f5b2649f5333375d95", null ] +]; \ No newline at end of file diff --git a/group__hyper__functions.html b/group__hyper__functions.html new file mode 100644 index 000000000..4cd69beaf --- /dev/null +++ b/group__hyper__functions.html @@ -0,0 +1,376 @@ + + + + + + + +xtensor: Hyperbolic functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Hyperbolic functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::sinh (E &&e) noexcept -> detail::xfunction_type_t< math::sinh_fun, E >
 Hyperbolic sine function.
 
template<class E >
auto xt::cosh (E &&e) noexcept -> detail::xfunction_type_t< math::cosh_fun, E >
 Hyperbolic cosine function.
 
template<class E >
auto xt::tanh (E &&e) noexcept -> detail::xfunction_type_t< math::tanh_fun, E >
 Hyperbolic tangent function.
 
template<class E >
auto xt::asinh (E &&e) noexcept -> detail::xfunction_type_t< math::asinh_fun, E >
 Inverse hyperbolic sine function.
 
template<class E >
auto xt::acosh (E &&e) noexcept -> detail::xfunction_type_t< math::acosh_fun, E >
 Inverse hyperbolic cosine function.
 
template<class E >
auto xt::atanh (E &&e) noexcept -> detail::xfunction_type_t< math::atanh_fun, E >
 Inverse hyperbolic tangent function.
 
+

Detailed Description

+

Function Documentation

+ +

◆ acosh()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::acosh (E && e) -> detail::xfunction_type_t<math::acosh_fun, E> +
+
+inlinenoexcept
+
+ +

Inverse hyperbolic cosine function.

+

Returns an xfunction for the element-wise inverse hyperbolic cosine of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1470 of file xmath.hpp.

+ +
+
+ +

◆ asinh()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::asinh (E && e) -> detail::xfunction_type_t<math::asinh_fun, E> +
+
+inlinenoexcept
+
+ +

Inverse hyperbolic sine function.

+

Returns an xfunction for the element-wise inverse hyperbolic sine of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1455 of file xmath.hpp.

+ +
+
+ +

◆ atanh()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::atanh (E && e) -> detail::xfunction_type_t<math::atanh_fun, E> +
+
+inlinenoexcept
+
+ +

Inverse hyperbolic tangent function.

+

Returns an xfunction for the element-wise inverse hyperbolic tangent of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1485 of file xmath.hpp.

+ +
+
+ +

◆ cosh()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::cosh (E && e) -> detail::xfunction_type_t<math::cosh_fun, E> +
+
+inlinenoexcept
+
+ +

Hyperbolic cosine function.

+

Returns an xfunction for the element-wise hyperbolic cosine of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1425 of file xmath.hpp.

+ +
+
+ +

◆ sinh()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::sinh (E && e) -> detail::xfunction_type_t<math::sinh_fun, E> +
+
+inlinenoexcept
+
+ +

Hyperbolic sine function.

+

Returns an xfunction for the element-wise hyperbolic sine of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1410 of file xmath.hpp.

+ +
+
+ +

◆ tanh()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::tanh (E && e) -> detail::xfunction_type_t<math::tanh_fun, E> +
+
+inlinenoexcept
+
+ +

Hyperbolic tangent function.

+

Returns an xfunction for the element-wise hyperbolic tangent of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1440 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__hyper__functions.js b/group__hyper__functions.js new file mode 100644 index 000000000..033ff41a3 --- /dev/null +++ b/group__hyper__functions.js @@ -0,0 +1,9 @@ +var group__hyper__functions = +[ + [ "xt::acosh", "group__hyper__functions.html#ga982a251110da20b8dae705367b3ddd7e", null ], + [ "xt::asinh", "group__hyper__functions.html#ga0893b951ad8fb1b23b97f0dae14651de", null ], + [ "xt::atanh", "group__hyper__functions.html#gaf99552b5a0d06bfd92f42f272e7af623", null ], + [ "xt::cosh", "group__hyper__functions.html#ga4073cdc98201789ff723069156b4d34b", null ], + [ "xt::sinh", "group__hyper__functions.html#ga43507ff72c11c17061fd4ae7716c11d5", null ], + [ "xt::tanh", "group__hyper__functions.html#ga1b22c94cc8d9750ca8153d9b5bbb6c86", null ] +]; \ No newline at end of file diff --git a/group__logical__operators.html b/group__logical__operators.html new file mode 100644 index 000000000..0f1972da0 --- /dev/null +++ b/group__logical__operators.html @@ -0,0 +1,888 @@ + + + + + + + +xtensor: Logical operators + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Logical operators
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E1 , class E2 >
auto xt::operator|| (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::logical_or, E1, E2 >
 Or.
 
template<class E1 , class E2 >
auto xt::operator&& (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::logical_and, E1, E2 >
 And.
 
template<class E >
auto xt::operator! (E &&e) noexcept -> detail::xfunction_type_t< detail::logical_not, E >
 Not.
 
template<class E1 , class E2 , class E3 >
auto xt::where (E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< detail::conditional_ternary, E1, E2, E3 >
 Ternary selection.
 
template<class T >
auto xt::nonzero (const T &arr)
 return vector of indices where T is not zero
 
template<class T >
auto xt::where (const T &condition)
 return vector of indices where condition is true (equivalent to nonzero(condition))
 
template<layout_type L = ::xt::layout_type::row_major, class T >
auto xt::argwhere (const T &arr)
 return vector of indices where arr is not zero
 
template<class E >
bool xt::any (E &&e)
 Any.
 
template<class E >
bool xt::all (E &&e)
 Any.
 
template<class E , class T >
auto xt::isin (E &&element, std::initializer_list< T > test_elements) noexcept
 isin
 
template<class E , class F , class = typename std::enable_if_t<has_iterator_interface<F>::value>>
auto xt::isin (E &&element, F &&test_elements) noexcept
 isin
 
template<class E , class I , class = typename std::enable_if_t<is_iterator<I>::value>>
auto xt::isin (E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept
 isin
 
template<class E , class T >
auto xt::in1d (E &&element, std::initializer_list< T > test_elements) noexcept
 in1d
 
template<class E , class F , class = typename std::enable_if_t<has_iterator_interface<F>::value>>
auto xt::in1d (E &&element, F &&test_elements) noexcept
 in1d
 
template<class E , class I , class = typename std::enable_if_t<is_iterator<I>::value>>
auto xt::in1d (E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept
 in1d
 
+

Detailed Description

+

Function Documentation

+ +

◆ all()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
bool xt::all (E && e)
+
+inline
+
+ +

Any.

+

Returns true if all of the values of e are truthy, false otherwise.

Parameters
+ + +
ean xexpression
+
+
+
Returns
a boolean
+ +

Definition at line 960 of file xoperation.hpp.

+ +
+
+ +

◆ any()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
bool xt::any (E && e)
+
+inline
+
+ +

Any.

+

Returns true if any of the values of e is truthy, false otherwise.

Parameters
+ + +
ean xexpression
+
+
+
Returns
a boolean
+ +

Definition at line 936 of file xoperation.hpp.

+ +
+
+ +

◆ argwhere()

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class T >
+ + + + + +
+ + + + + + + + +
auto xt::argwhere (const T & arr)
+
+inline
+
+ +

return vector of indices where arr is not zero

+
Template Parameters
+ + +
Lthe traversal order
+
+
+
Parameters
+ + +
arrinput array
+
+
+
Returns
vector of index_types where arr is not equal to zero (use xt::from_indices to convert)
+
See also
xt::from_indices
+ +

Definition at line 905 of file xoperation.hpp.

+ +
+
+ +

◆ in1d() [1/3]

+ +
+
+
+template<class E , class F , class = typename std::enable_if_t<has_iterator_interface<F>::value>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::in1d (E && element,
F && test_elements 
)
+
+inlinenoexcept
+
+ +

in1d

+

Returns a boolean array of the same shape as element that is true where an element of element is in test_elements and False otherwise.

Parameters
+ + + +
elementan xexpression
test_elementsan array
+
+
+
Returns
a boolean array
+ +

Definition at line 147 of file xset_operation.hpp.

+ +
+
+ +

◆ in1d() [2/3]

+ +
+
+
+template<class E , class I , class = typename std::enable_if_t<is_iterator<I>::value>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::in1d (E && element,
I && test_elements_begin,
I && test_elements_end 
)
+
+inlinenoexcept
+
+ +

in1d

+

Returns a boolean array of the same shape as element that is true where an element of element is in test_elements and False otherwise.

Parameters
+ + + + +
elementan xexpression
test_elements_beginiterator to the beginning of an array
test_elements_enditerator to the end of an array
+
+
+
Returns
a boolean array
+ +

Definition at line 166 of file xset_operation.hpp.

+ +
+
+ +

◆ in1d() [3/3]

+ +
+
+
+template<class E , class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::in1d (E && element,
std::initializer_list< T > test_elements 
)
+
+inlinenoexcept
+
+ +

in1d

+

Returns a boolean array of the same shape as element that is true where an element of element is in test_elements and False otherwise.

Parameters
+ + + +
elementan xexpression
test_elementsan array
+
+
+
Returns
a boolean array
+ +

Definition at line 130 of file xset_operation.hpp.

+ +
+
+ +

◆ isin() [1/3]

+ +
+
+
+template<class E , class F , class = typename std::enable_if_t<has_iterator_interface<F>::value>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::isin (E && element,
F && test_elements 
)
+
+inlinenoexcept
+
+ +

isin

+

Returns a boolean array of the same shape as element that is true where an element of element is in test_elements and False otherwise.

Parameters
+ + + +
elementan xexpression
test_elementsan array
+
+
+
Returns
a boolean array
+ +

Definition at line 91 of file xset_operation.hpp.

+ +
+
+ +

◆ isin() [2/3]

+ +
+
+
+template<class E , class I , class = typename std::enable_if_t<is_iterator<I>::value>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::isin (E && element,
I && test_elements_begin,
I && test_elements_end 
)
+
+inlinenoexcept
+
+ +

isin

+

Returns a boolean array of the same shape as element that is true where an element of element is in test_elements and False otherwise.

Parameters
+ + + + +
elementan xexpression
test_elements_beginiterator to the beginning of an array
test_elements_enditerator to the end of an array
+
+
+
Returns
a boolean array
+ +

Definition at line 110 of file xset_operation.hpp.

+ +
+
+ +

◆ isin() [3/3]

+ +
+
+
+template<class E , class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::isin (E && element,
std::initializer_list< T > test_elements 
)
+
+inlinenoexcept
+
+ +

isin

+

Returns a boolean array of the same shape as element that is true where an element of element is in test_elements and False otherwise.

Parameters
+ + + +
elementan xexpression
test_elementsan array
+
+
+
Returns
a boolean array
+ +

Definition at line 71 of file xset_operation.hpp.

+ +
+
+ +

◆ nonzero()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::nonzero (const T & arr)
+
+inline
+
+ +

return vector of indices where T is not zero

+
Parameters
+ + +
arrinput array
+
+
+
Returns
vector of vectors, one for each dimension of arr, containing the indices of the non-zero elements in that dimension
+ +

Definition at line 856 of file xoperation.hpp.

+ +
+
+ +

◆ operator!()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::operator! (E && e) -> detail::xfunction_type_t<detail::logical_not, E> +
+
+inlinenoexcept
+
+ +

Not.

+

Returns an xfunction for the element-wise not of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 379 of file xoperation.hpp.

+ +
+
+ +

◆ operator&&()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator&& (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::logical_and, E1, E2> +
+
+inlinenoexcept
+
+ +

And.

+

Returns an xfunction for the element-wise and of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 364 of file xoperation.hpp.

+ +
+
+ +

◆ operator||()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::operator|| (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<detail::logical_or, E1, E2> +
+
+inlinenoexcept
+
+ +

Or.

+

Returns an xfunction for the element-wise or of e1 and e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 348 of file xoperation.hpp.

+ +
+
+ +

◆ where() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::where (const T & condition)
+
+inline
+
+ +

return vector of indices where condition is true (equivalent to nonzero(condition))

+
Parameters
+ + +
conditioninput array
+
+
+
Returns
vector of index_types where condition is not equal to zero
+ +

Definition at line 889 of file xoperation.hpp.

+ +
+
+ +

◆ where() [2/2]

+ +
+
+
+template<class E1 , class E2 , class E3 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::where (E1 && e1,
E2 && e2,
E3 && e3 
) -> detail::xfunction_type_t<detail::conditional_ternary, E1, E2, E3> +
+
+inlinenoexcept
+
+ +

Ternary selection.

+

Returns an xfunction for the element-wise ternary selection (i.e. operator ? :) of e1, e2 and e3.

Parameters
+ + + + +
e1a boolean xexpression
e2an xexpression or a scalar
e3an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 777 of file xoperation.hpp.

+ +
+
+
+
+ + + + diff --git a/group__logical__operators.js b/group__logical__operators.js new file mode 100644 index 000000000..c8b6c4834 --- /dev/null +++ b/group__logical__operators.js @@ -0,0 +1,18 @@ +var group__logical__operators = +[ + [ "xt::all", "group__logical__operators.html#ga8da84f179efb13f3d860c5950b5c626e", null ], + [ "xt::any", "group__logical__operators.html#gadf5680cca336e22d483b0bfa188db592", null ], + [ "xt::argwhere", "group__logical__operators.html#ga8e8213a0ec55abe31dc046b6a03379d7", null ], + [ "xt::in1d", "group__logical__operators.html#ga3aab6400780394dfb5d0d938c19f1f63", null ], + [ "xt::in1d", "group__logical__operators.html#ga835cd37cf9a3142a7836509b4f082a64", null ], + [ "xt::in1d", "group__logical__operators.html#gab1bbf85dbe7bc76561321466d657bed4", null ], + [ "xt::isin", "group__logical__operators.html#ga84c1d8a7eaaa5d9f7e0484b9dfc0c646", null ], + [ "xt::isin", "group__logical__operators.html#gaaef46d45350e3699429eff9ca45755f7", null ], + [ "xt::isin", "group__logical__operators.html#gac71ec22119ac398c4c737d48197e5399", null ], + [ "xt::nonzero", "group__logical__operators.html#ga9f570271ba6f20a0d6a5880fa4ae83cb", null ], + [ "xt::operator!", "group__logical__operators.html#ga669c5968e594e618cd199674074c32e4", null ], + [ "xt::operator&&", "group__logical__operators.html#ga95f7645635520ba70e7d0d9b0e989205", null ], + [ "xt::operator||", "group__logical__operators.html#gab0fb5db8b5da410253c08053a1c9c518", null ], + [ "xt::where", "group__logical__operators.html#gad36802fb44a519f60e8c2d20ab5b6ef8", null ], + [ "xt::where", "group__logical__operators.html#gabe2a59ff19cc1341bdaf0f833793cbd5", null ] +]; \ No newline at end of file diff --git a/group__nan__functions.html b/group__nan__functions.html new file mode 100644 index 000000000..960087edf --- /dev/null +++ b/group__nan__functions.html @@ -0,0 +1,753 @@ + + + + + + + +xtensor: nan functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nan functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::nan_to_num (E &&e)
 Convert nan or +/- inf to numbers.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::nanmin (E &&e, X &&axes, EVS es=EVS())
 Minimum element over given axes, ignoring NaNs.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::nanmax (E &&e, X &&axes, EVS es=EVS())
 Maximum element along given axes, ignoring NaNs.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::nansum (E &&e, X &&axes, EVS es=EVS())
 Sum of elements over given axes, replacing NaN with 0.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::nanprod (E &&e, X &&axes, EVS es=EVS())
 Product of elements over given axes, replacing NaN with 1.
 
template<class T = void, class E >
auto xt::nancumsum (E &&e, std::ptrdiff_t axis)
 Cumulative sum, replacing nan with 0.
 
template<class T = void, class E >
auto xt::nancumprod (E &&e, std::ptrdiff_t axis)
 Cumulative product, replacing nan with 1.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::nanmean (E &&e, X &&axes, EVS es=EVS())
 Mean of elements over given axes, excluding NaNs.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::nanvar (E &&e, X &&axes, EVS es=EVS())
 Compute the variance along the specified axes, excluding NaNs.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::nanstd (E &&e, X &&axes, EVS es=EVS())
 Compute the standard deviation along the specified axis, excluding nans.
 
+

Detailed Description

+

Function Documentation

+ +

◆ nan_to_num()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::nan_to_num (E && e)
+
+inline
+
+ +

Convert nan or +/- inf to numbers.

+

This functions converts NaN to 0, and +inf to the highest, -inf to the lowest floating point value of the same type.

+
Parameters
+ + +
einput xexpression
+
+
+
Returns
an xexpression
+ +

Definition at line 2446 of file xmath.hpp.

+ +
+
+ +

◆ nancumprod()

+ +
+
+
+template<class T = void, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::nancumprod (E && e,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Cumulative product, replacing nan with 1.

+

Returns an xaccumulator for the product of elements over given axis, replacing nan with 1.

Parameters
+ + + +
ean xexpression
axisthe axis along which the elements are accumulated (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xaccumulator
+ +

Definition at line 2664 of file xmath.hpp.

+ +
+
+ +

◆ nancumsum()

+ +
+
+
+template<class T = void, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::nancumsum (E && e,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Cumulative sum, replacing nan with 0.

+

Returns an xaccumulator for the sum of elements over given axis, replacing nan with 0.

Parameters
+ + + +
ean xexpression
axisthe axis along which the elements are accumulated (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xaccumulator
+ +

Definition at line 2629 of file xmath.hpp.

+ +
+
+ +

◆ nanmax()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nanmax (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Maximum element along given axes, ignoring NaNs.

+

Returns an xreducer for the sum of elements over given axes, ignoring NaN.

Warning
Casting the result to an integer type can cause undefined behavior.
+
Parameters
+ + + + +
ean xexpression
axesthe axes along which the sum is performed (optional)
esevaluation strategy of the reducer (optional)
+
+
+
Template Parameters
+ + +
Tthe result type. The default is E::value_type.
+
+
+
Returns
an xreducer
+ +

Definition at line 2479 of file xmath.hpp.

+ +
+
+ +

◆ nanmean()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nanmean (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Mean of elements over given axes, excluding NaNs.

+

Returns an xreducer for the mean of elements over given axes, excluding NaNs. This is not the same as counting NaNs as zero, since excluding NaNs changes the number of elements considered in the statistic.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the mean is computed (optional)
esthe evaluation strategy (optional)
+
+
+
Template Parameters
+ + +
Tthe result type. The default is E::value_type. You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xexpression
+ +

Definition at line 2748 of file xmath.hpp.

+ +
+
+ +

◆ nanmin()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nanmin (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Minimum element over given axes, ignoring NaNs.

+

Returns an xreducer for the minimum of elements over given axes, ignoring NaNs.

Warning
Casting the result to an integer type can cause undefined behavior.
+
Parameters
+ + + + +
ean xexpression
axesthe axes along which the minimum is found (optional)
esevaluation strategy of the reducer (optional)
+
+
+
Template Parameters
+ + +
Tthe result type. The default is E::value_type.
+
+
+
Returns
an xreducer
+ +

Definition at line 2464 of file xmath.hpp.

+ +
+
+ +

◆ nanprod()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nanprod (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Product of elements over given axes, replacing NaN with 1.

+

Returns an xreducer for the sum of elements over given axes, replacing nan with 1.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the sum is performed (optional)
esevaluation strategy of the reducer (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xreducer
+ +

Definition at line 2513 of file xmath.hpp.

+ +
+
+ +

◆ nanstd()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nanstd (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Compute the standard deviation along the specified axis, excluding nans.

+

Returns the standard deviation, a measure of the spread of a distribution, of the array elements. The standard deviation is computed for the flattened array by default, otherwise over the specified axis. Excluding NaNs changes the number of elements considered in the statistic.

+

Note: this function is not yet specialized for complex numbers.

+
Parameters
+ + + + +
ean xexpression
axesthe axes along which the standard deviation is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Template Parameters
+ + +
Tthe result type. The default is E::value_type. You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xexpression
+
See also
nanvar, nanmean
+ +

Definition at line 2873 of file xmath.hpp.

+ +
+
+ +

◆ nansum()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nansum (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Sum of elements over given axes, replacing NaN with 0.

+

Returns an xreducer for the sum of elements over given axes, ignoring NaN.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the sum is performed (optional)
esevaluation strategy of the reducer (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xreducer
+ +

Definition at line 2496 of file xmath.hpp.

+ +
+
+ +

◆ nanvar()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::nanvar (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Compute the variance along the specified axes, excluding NaNs.

+

Returns the variance of the array elements, a measure of the spread of a distribution. The variance is computed for the flattened array by default, otherwise over the specified axes. Excluding NaNs changes the number of elements considered in the statistic.

+

Note: this function is not yet specialized for complex numbers.

+
Parameters
+ + + + +
ean xexpression
axesthe axes along which the variance is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Template Parameters
+ + +
Tthe result type. The default is E::value_type. You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xexpression
+
See also
nanstd, nanmean
+ +

Definition at line 2825 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__nan__functions.js b/group__nan__functions.js new file mode 100644 index 000000000..77f598c28 --- /dev/null +++ b/group__nan__functions.js @@ -0,0 +1,13 @@ +var group__nan__functions = +[ + [ "xt::nan_to_num", "group__nan__functions.html#gae82e0b56454b586ec1ffbf57d6d2122f", null ], + [ "xt::nancumprod", "group__nan__functions.html#ga4fb43a2f434821dfec8464e84ad05de7", null ], + [ "xt::nancumsum", "group__nan__functions.html#ga48eab6816103340e288db50e05f00e60", null ], + [ "xt::nanmax", "group__nan__functions.html#ga0e300ce1d00beec93e45d7aa0e308ceb", null ], + [ "xt::nanmean", "group__nan__functions.html#ga5ff43d5bf500e85b384c2c08d2ababe9", null ], + [ "xt::nanmin", "group__nan__functions.html#gaaade983a5b6b9406608d54f3ba37a264", null ], + [ "xt::nanprod", "group__nan__functions.html#gad63669d7342cc68dae7b15f3c49ca1c2", null ], + [ "xt::nanstd", "group__nan__functions.html#ga21421ea090897548b9199c1fdb3049be", null ], + [ "xt::nansum", "group__nan__functions.html#gadbfe228ebc452fabfdbf4067274a471a", null ], + [ "xt::nanvar", "group__nan__functions.html#ga3c3fdce46c4143d595e11db1646f7d89", null ] +]; \ No newline at end of file diff --git a/group__nearint__functions.html b/group__nearint__functions.html new file mode 100644 index 000000000..d4f7aa87e --- /dev/null +++ b/group__nearint__functions.html @@ -0,0 +1,376 @@ + + + + + + + +xtensor: Nearest integer floating point operations + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Nearest integer floating point operations
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::ceil (E &&e) noexcept -> detail::xfunction_type_t< math::ceil_fun, E >
 ceil function.
 
template<class E >
auto xt::floor (E &&e) noexcept -> detail::xfunction_type_t< math::floor_fun, E >
 floor function.
 
template<class E >
auto xt::trunc (E &&e) noexcept -> detail::xfunction_type_t< math::trunc_fun, E >
 trunc function.
 
template<class E >
auto xt::round (E &&e) noexcept -> detail::xfunction_type_t< math::round_fun, E >
 round function.
 
template<class E >
auto xt::nearbyint (E &&e) noexcept -> detail::xfunction_type_t< math::nearbyint_fun, E >
 nearbyint function.
 
template<class E >
auto xt::rint (E &&e) noexcept -> detail::xfunction_type_t< math::rint_fun, E >
 rint function.
 
+

Detailed Description

+

Function Documentation

+ +

◆ ceil()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::ceil (E && e) -> detail::xfunction_type_t<math::ceil_fun, E> +
+
+inlinenoexcept
+
+ +

ceil function.

+

Returns an xfunction for the element-wise smallest integer value not less than e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1576 of file xmath.hpp.

+ +
+
+ +

◆ floor()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::floor (E && e) -> detail::xfunction_type_t<math::floor_fun, E> +
+
+inlinenoexcept
+
+ +

floor function.

+

Returns an xfunction for the element-wise smallest integer value not greater than e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1591 of file xmath.hpp.

+ +
+
+ +

◆ nearbyint()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::nearbyint (E && e) -> detail::xfunction_type_t<math::nearbyint_fun, E> +
+
+inlinenoexcept
+
+ +

nearbyint function.

+

Returns an xfunction for the element-wise rounding of e to integer values in floating point format, using the current rounding mode. nearbyint never raises FE_INEXACT error.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1638 of file xmath.hpp.

+ +
+
+ +

◆ rint()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::rint (E && e) -> detail::xfunction_type_t<math::rint_fun, E> +
+
+inlinenoexcept
+
+ +

rint function.

+

Returns an xfunction for the element-wise rounding of e to integer values in floating point format, using the current rounding mode. Contrary to nearbyint, rint may raise FE_INEXACT error.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1654 of file xmath.hpp.

+ +
+
+ +

◆ round()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::round (E && e) -> detail::xfunction_type_t<math::round_fun, E> +
+
+inlinenoexcept
+
+ +

round function.

+

Returns an xfunction for the element-wise nearest integer value to e, rounding halfway cases away from zero, regardless of the current rounding mode.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1622 of file xmath.hpp.

+ +
+
+ +

◆ trunc()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::trunc (E && e) -> detail::xfunction_type_t<math::trunc_fun, E> +
+
+inlinenoexcept
+
+ +

trunc function.

+

Returns an xfunction for the element-wise nearest integer not greater in magnitude than e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1606 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__nearint__functions.js b/group__nearint__functions.js new file mode 100644 index 000000000..b5c17f13d --- /dev/null +++ b/group__nearint__functions.js @@ -0,0 +1,9 @@ +var group__nearint__functions = +[ + [ "xt::ceil", "group__nearint__functions.html#ga06d485029e29f092e60af3afabd0d154", null ], + [ "xt::floor", "group__nearint__functions.html#ga651ff45bf2ffda746e6602773925ca5c", null ], + [ "xt::nearbyint", "group__nearint__functions.html#ga297d1cfd2029ec779f3b2caf20cae56f", null ], + [ "xt::rint", "group__nearint__functions.html#gaad503e7c9ee485a6b623770c8f43bde0", null ], + [ "xt::round", "group__nearint__functions.html#gaa8b6a7ec9f215261ace43466d4ae6f0b", null ], + [ "xt::trunc", "group__nearint__functions.html#ga1bf2a5edfa5f687938657e37064ddc74", null ] +]; \ No newline at end of file diff --git a/group__pow__functions.html b/group__pow__functions.html new file mode 100644 index 000000000..e81ae7fe9 --- /dev/null +++ b/group__pow__functions.html @@ -0,0 +1,450 @@ + + + + + + + +xtensor: Power functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Power functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E1 , class E2 >
auto xt::pow (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >
 Power function.
 
template<class E1 >
auto xt::square (E1 &&e1) noexcept
 Square power function, equivalent to e1 * e1.
 
template<class E1 >
auto xt::cube (E1 &&e1) noexcept
 Cube power function, equivalent to e1 * e1 * e1.
 
template<std::size_t N, class E >
auto xt::pow (E &&e) noexcept
 Integer power function.
 
template<class E >
auto xt::sqrt (E &&e) noexcept -> detail::xfunction_type_t< math::sqrt_fun, E >
 Square root function.
 
template<class E >
auto xt::cbrt (E &&e) noexcept -> detail::xfunction_type_t< math::cbrt_fun, E >
 Cubic root function.
 
template<class E1 , class E2 >
auto xt::hypot (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::hypot_fun, E1, E2 >
 Hypotenuse function.
 
+

Detailed Description

+

Function Documentation

+ +

◆ cbrt()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::cbrt (E && e) -> detail::xfunction_type_t<math::cbrt_fun, E> +
+
+inlinenoexcept
+
+ +

Cubic root function.

+

Returns an xfunction for the element-wise cubic root of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1253 of file xmath.hpp.

+ +
+
+ +

◆ cube()

+ +
+
+
+template<class E1 >
+ + + + + +
+ + + + + + + + +
auto xt::cube (E1 && e1)
+
+inlinenoexcept
+
+ +

Cube power function, equivalent to e1 * e1 * e1.

+

Returns an xfunction for the element-wise value of of e1 * e1.

Parameters
+ + +
e1an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 1150 of file xmath.hpp.

+ +
+
+ +

◆ hypot()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::hypot (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::hypot_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Hypotenuse function.

+

Returns an xfunction for the element-wise square root of the sum of the square of e1 and e2, avoiding overflow and underflow at intermediate stages of computation.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 1271 of file xmath.hpp.

+ +
+
+ +

◆ pow() [1/2]

+ +
+
+
+template<std::size_t N, class E >
+ + + + + +
+ + + + + + + + +
auto xt::pow (E && e)
+
+inlinenoexcept
+
+ +

Integer power function.

+

Returns an xfunction for the element-wise power of e1 to an integral constant.

+

Instead of computing the power by using the (expensive) logarithm, this function computes the power in a number of straight-forward multiplication steps. This function is therefore much faster (even for high N) than the generic pow-function.

+

For example, e1^20 can be expressed as (((e1^2)^2)^2)^2*(e1^2)^2, which is just 5 multiplications.

+
Parameters
+ + +
ean xexpression
+
+
+
Template Parameters
+ + +
Nthe exponent (has to be positive integer)
+
+
+
Returns
an xfunction
+ +

Definition at line 1222 of file xmath.hpp.

+ +
+
+ +

◆ pow() [2/2]

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::pow (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::pow_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Power function.

+

Returns an xfunction for the element-wise value of of e1 raised to the power e2.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 1014 of file xmath.hpp.

+ +
+
+ +

◆ sqrt()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::sqrt (E && e) -> detail::xfunction_type_t<math::sqrt_fun, E> +
+
+inlinenoexcept
+
+ +

Square root function.

+

Returns an xfunction for the element-wise square root of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1238 of file xmath.hpp.

+ +
+
+ +

◆ square()

+ +
+
+
+template<class E1 >
+ + + + + +
+ + + + + + + + +
auto xt::square (E1 && e1)
+
+inlinenoexcept
+
+ +

Square power function, equivalent to e1 * e1.

+

Returns an xfunction for the element-wise value of of e1 * e1.

Parameters
+ + +
e1an xexpression or a scalar
+
+
+
Returns
an xfunction
+ +

Definition at line 1127 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__pow__functions.js b/group__pow__functions.js new file mode 100644 index 000000000..0577dc64a --- /dev/null +++ b/group__pow__functions.js @@ -0,0 +1,10 @@ +var group__pow__functions = +[ + [ "xt::cbrt", "group__pow__functions.html#gad5ff49e786eca533425d6f230c945184", null ], + [ "xt::cube", "group__pow__functions.html#ga0d98743e330f7ef3474bd706e186ac44", null ], + [ "xt::hypot", "group__pow__functions.html#ga9b55bcc865f0dd82fd679e01c3838526", null ], + [ "xt::pow", "group__pow__functions.html#ga9cf15362f1892675576f2298c01e2b6b", null ], + [ "xt::pow", "group__pow__functions.html#ga726d449a0411dabbe7451c38cec235ae", null ], + [ "xt::sqrt", "group__pow__functions.html#ga2ac4c9ab16cee0b95b444191419c2802", null ], + [ "xt::square", "group__pow__functions.html#ga6e5fca6d456f46a946b4a9707e1d442f", null ] +]; \ No newline at end of file diff --git a/group__red__functions.html b/group__red__functions.html new file mode 100644 index 000000000..2869f9557 --- /dev/null +++ b/group__red__functions.html @@ -0,0 +1,1343 @@ + + + + + + + +xtensor: reducing functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
reducing functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::sum (E &&e, X &&axes, EVS es=EVS())
 Sum of elements over given axes.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
auto xt::prod (E &&e, X &&axes, EVS es=EVS())
 Product of elements over given axes.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::mean (E &&e, X &&axes, EVS es=EVS())
 Mean of elements over given axes.
 
template<class T = void, class E , class W , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::negation< xtl::is_integral< X > > > = 0>
auto xt::average (E &&e, W &&weights, X &&axes, EVS ev=EVS())
 Average of elements over given axes using weights.
 
template<class T = void, class E , class X , class D , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< D > > = 0>
auto xt::variance (E &&e, X &&axes, const D &ddof, EVS es=EVS())
 Compute the variance along the specified axes.
 
template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::stddev (E &&e, X &&axes, EVS es=EVS())
 Compute the standard deviation along the specified axis.
 
template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
auto xt::minmax (E &&e, EVS es=EVS())
 Minimum and maximum among the elements of an array or expression.
 
template<class T >
auto xt::diff (const xexpression< T > &a, std::size_t n=1, std::ptrdiff_t axis=-1)
 Calculate the n-th discrete difference along the given axis.
 
template<class T >
auto xt::trapz (const xexpression< T > &y, double dx=1.0, std::ptrdiff_t axis=-1)
 Integrate along the given axis using the composite trapezoidal rule.
 
template<class T , class E >
auto xt::trapz (const xexpression< T > &y, const xexpression< E > &x, std::ptrdiff_t axis=-1)
 Integrate along the given axis using the composite trapezoidal rule.
 
template<class E , class X , class EVS , class >
auto xt::norm_l0 (E &&e, X &&axes, EVS es) noexcept
 L0 (count) pseudo-norm of an array-like argument over given axes.
 
template<class E , class X , class EVS , class >
auto xt::norm_l1 (E &&e, X &&axes, EVS es) noexcept
 L1 norm of an array-like argument over given axes.
 
template<class E , class X , class EVS , class >
auto xt::norm_sq (E &&e, X &&axes, EVS es) noexcept
 Squared L2 norm of an array-like argument over given axes.
 
template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
auto xt::norm_l2 (E &&e, EVS es=EVS()) noexcept
 L2 norm of a scalar or array-like argument.
 
template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E >, xtl::negation< is_reducer_options< X > > > = 0>
auto xt::norm_l2 (E &&e, X &&axes, EVS es=EVS()) noexcept
 L2 norm of an array-like argument over given axes.
 
template<class E , class X , class EVS , class >
auto xt::norm_linf (E &&e, X &&axes, EVS es) noexcept
 Infinity (maximum) norm of an array-like argument over given axes.
 
template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::norm_lp_to_p (E &&e, double p, X &&axes, EVS es=EVS()) noexcept
 p-th power of the Lp norm of an array-like argument over given axes.
 
template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
auto xt::norm_lp (E &&e, double p, X &&axes, EVS es=EVS())
 Lp norm of an array-like argument over given axes.
 
template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
auto xt::norm_induced_l1 (E &&e, EVS es=EVS())
 Induced L1 norm of a matrix.
 
template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
auto xt::norm_induced_linf (E &&e, EVS es=EVS())
 Induced L-infinity norm of a matrix.
 
+

Detailed Description

+

Function Documentation

+ +

◆ average()

+ +
+
+
+template<class T = void, class E , class W , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::negation< xtl::is_integral< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::average (E && e,
W && weights,
X && axes,
EVS ev = EVS() 
)
+
+inline
+
+ +

Average of elements over given axes using weights.

+

Returns an xreducer for the mean of elements over given axes.

Parameters
+ + + + +
ean xexpression
weightsxexpression containing weights associated with the values in e
axesthe axes along which the mean is computed (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() + E::value_type(). You can passbig_promote_value_type_t<E>` to avoid overflow in computation.
+
+
+
Returns
an xexpression
+
See also
mean
+ +

Definition at line 1975 of file xmath.hpp.

+ +
+
+ +

◆ diff()

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::diff (const xexpression< T > & a,
std::size_t n = 1,
std::ptrdiff_t axis = -1 
)
+
+ +

Calculate the n-th discrete difference along the given axis.

+

Calculate the n-th discrete difference along the given axis. This function is not lazy (might change in the future).

Parameters
+ + + + +
aan xexpression
nThe number of times values are differenced. If zero, the input is returned as-is. (optional)
axisThe axis along which the difference is taken, default is the last axis.
+
+
+
Returns
an xarray
+ +

Definition at line 2910 of file xmath.hpp.

+ +
+
+ +

◆ mean()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::mean (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Mean of elements over given axes.

+

Returns an xreducer for the mean of elements over given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the mean is computed (optional)
esthe evaluation strategy (optional)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xexpression
+ +

Definition at line 1934 of file xmath.hpp.

+ +
+
+ +

◆ minmax()

+ +
+
+
+template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::minmax (E && e,
EVS es = EVS() 
)
+
+inline
+
+ +

Minimum and maximum among the elements of an array or expression.

+

Returns an xreducer for the minimum and maximum of an expression's elements.

Parameters
+ + + +
ean xexpression
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xexpression of type std::array<value_type, 2>, whose first and second element represent the minimum and maximum respectively
+ +

Definition at line 2233 of file xmath.hpp.

+ +
+
+ +

◆ norm_induced_l1()

+ +
+
+
+template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::norm_induced_l1 (E && e,
EVS es = EVS() 
)
+
+inline
+
+ +

Induced L1 norm of a matrix.

+

Returns an xreducer for the induced L1 norm (i.e. the maximum of the L1 norms of e's columns).

Parameters
+ + + +
ea 2D xexpression
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy)
+ +

Definition at line 630 of file xnorm.hpp.

+ +
+
+ +

◆ norm_induced_linf()

+ +
+
+
+template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::norm_induced_linf (E && e,
EVS es = EVS() 
)
+
+inline
+
+ +

Induced L-infinity norm of a matrix.

+

Returns an xreducer for the induced L-infinity norm (i.e. the maximum of the L1 norms of e's rows).

Parameters
+ + + +
ea 2D xexpression
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy)
+ +

Definition at line 650 of file xnorm.hpp.

+ +
+
+ +

◆ norm_l0()

+ +
+
+
+template<class E , class X , class EVS , class >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_l0 (E && e,
X && axes,
EVS es 
)
+
+noexcept
+
+ +

L0 (count) pseudo-norm of an array-like argument over given axes.

+

Returns an xreducer for the L0 pseudo-norm of the elements across given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the norm is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy) When no axes are provided, the norm is calculated over the entire array. In this case, the reducer represents a scalar result, otherwise an array of appropriate dimension.
+ +
+
+ +

◆ norm_l1()

+ +
+
+
+template<class E , class X , class EVS , class >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_l1 (E && e,
X && axes,
EVS es 
)
+
+noexcept
+
+ +

L1 norm of an array-like argument over given axes.

+

Returns an xreducer for the L1 norm of the elements across given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the norm is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy) When no axes are provided, the norm is calculated over the entire array. In this case, the reducer represents a scalar result, otherwise an array of appropriate dimension.
+ +
+
+ +

◆ norm_l2() [1/2]

+ +
+
+
+template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::norm_l2 (E && e,
EVS es = EVS() 
)
+
+inlinenoexcept
+
+ +

L2 norm of a scalar or array-like argument.

+
Parameters
+ + + +
ean xexpression
esevaluation strategy to use (lazy (default), or immediate) For scalar types: implemented as abs(t)
+ otherwise: implemented as sqrt(norm_sq(t)).
+
+
+ +

Definition at line 494 of file xnorm.hpp.

+ +
+
+ +

◆ norm_l2() [2/2]

+ +
+
+
+template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E >, xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_l2 (E && e,
X && axes,
EVS es = EVS() 
)
+
+inlinenoexcept
+
+ +

L2 norm of an array-like argument over given axes.

+

Returns an xreducer for the L2 norm of the elements across given axes.

Parameters
+ + + + +
ean xexpression
esevaluation strategy to use (lazy (default), or immediate)
axesthe axes along which the norm is computed
+
+
+
Returns
an xreducer (specifically: sqrt(norm_sq(e, axes))) (or xcontainer, depending on evaluation strategy)
+ +

Definition at line 516 of file xnorm.hpp.

+ +
+
+ +

◆ norm_linf()

+ +
+
+
+template<class E , class X , class EVS , class >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_linf (E && e,
X && axes,
EVS es 
)
+
+noexcept
+
+ +

Infinity (maximum) norm of an array-like argument over given axes.

+

Returns an xreducer for the infinity norm of the elements across given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the norm is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy) When no axes are provided, the norm is calculated over the entire array. In this case, the reducer represents a scalar result, otherwise an array of appropriate dimension.
+ +
+
+ +

◆ norm_lp()

+ +
+
+
+template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_lp (E && e,
double p,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Lp norm of an array-like argument over given axes.

+

Returns an xreducer for the Lp norm (p != 0) of the elements across given axes.

Parameters
+ + + + + +
ean xexpression
p
axesthe axes along which the norm is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy) When no axes are provided, the norm is calculated over the entire array. In this case, the reducer represents a scalar result, otherwise an array of appropriate dimension.
+ +

Definition at line 601 of file xnorm.hpp.

+ +
+
+ +

◆ norm_lp_to_p()

+ +
+
+
+template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_lp_to_p (E && e,
double p,
X && axes,
EVS es = EVS() 
)
+
+inlinenoexcept
+
+ +

p-th power of the Lp norm of an array-like argument over given axes.

+

Returns an xreducer for the p-th power of the Lp norm of the elements across given axes.

Parameters
+ + + + + +
ean xexpression
p
axesthe axes along which the norm is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy) When no axes are provided, the norm is calculated over the entire array. In this case, the reducer represents a scalar result, otherwise an array of appropriate dimension.
+ +

Definition at line 557 of file xnorm.hpp.

+ +
+
+ +

◆ norm_sq()

+ +
+
+
+template<class E , class X , class EVS , class >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::norm_sq (E && e,
X && axes,
EVS es 
)
+
+noexcept
+
+ +

Squared L2 norm of an array-like argument over given axes.

+

Returns an xreducer for the squared L2 norm of the elements across given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the norm is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Returns
an xreducer (or xcontainer, depending on evaluation strategy) When no axes are provided, the norm is calculated over the entire array. In this case, the reducer represents a scalar result, otherwise an array of appropriate dimension.
+ +
+
+ +

◆ prod()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::prod (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Product of elements over given axes.

+

Returns an xreducer for the product of elements over given axes.

Parameters
+ + + + + +
ean xexpression
axesthe axes along which the product is computed (optional)
ddofdelta degrees of freedom (optional). The divisor used in calculations is N - ddof, where N represents the number of elements. By default ddof is zero.
esevaluation strategy of the reducer
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() * E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xreducer
+ +

Definition at line 1860 of file xmath.hpp.

+ +
+
+ +

◆ stddev()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::stddev (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Compute the standard deviation along the specified axis.

+

Returns the standard deviation, a measure of the spread of a distribution, of the array elements. The standard deviation is computed for the flattened array by default, otherwise over the specified axis.

+

Note: this function is not yet specialized for complex numbers.

+
Parameters
+ + + + +
ean xexpression
axesthe axes along which the standard deviation is computed (optional)
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xexpression
+
See also
variance, mean
+ +

Definition at line 2180 of file xmath.hpp.

+ +
+
+ +

◆ sum()

+ +
+
+
+template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::sum (E && e,
X && axes,
EVS es = EVS() 
)
+
+inline
+
+ +

Sum of elements over given axes.

+

Returns an xreducer for the sum of elements over given axes.

Parameters
+ + + + +
ean xexpression
axesthe axes along which the sum is performed (optional)
esevaluation strategy of the reducer
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. T is also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xreducer
+ +

Definition at line 1840 of file xmath.hpp.

+ +
+
+ +

◆ trapz() [1/2]

+ +
+
+
+template<class T , class E >
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::trapz (const xexpression< T > & y,
const xexpression< E > & x,
std::ptrdiff_t axis = -1 
)
+
+ +

Integrate along the given axis using the composite trapezoidal rule.

+

Returns definite integral as approximated by trapezoidal rule. This function is not lazy (might change in the future).

Parameters
+ + + + +
yan xexpression
xan xexpression representing the sample points corresponding to the y values.
axisthe axis along which to integrate.
+
+
+
Returns
an xarray
+ +

Definition at line 2974 of file xmath.hpp.

+ +
+
+ +

◆ trapz() [2/2]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::trapz (const xexpression< T > & y,
double dx = 1.0,
std::ptrdiff_t axis = -1 
)
+
+ +

Integrate along the given axis using the composite trapezoidal rule.

+

Returns definite integral as approximated by trapezoidal rule. This function is not lazy (might change in the future).

Parameters
+ + + + +
yan xexpression
dxthe spacing between sample points (optional)
axisthe axis along which to integrate.
+
+
+
Returns
an xarray
+ +

Definition at line 2947 of file xmath.hpp.

+ +
+
+ +

◆ variance()

+ +
+
+
+template<class T = void, class E , class X , class D , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< D > > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::variance (E && e,
X && axes,
const D & ddof,
EVS es = EVS() 
)
+
+inline
+
+ +

Compute the variance along the specified axes.

+

Returns the variance of the array elements, a measure of the spread of a distribution. The variance is computed for the flattened array by default, otherwise over the specified axes.

+

Note: this function is not yet specialized for complex numbers.

+
Parameters
+ + + + + +
ean xexpression
axesthe axes along which the variance is computed (optional)
ddofdelta degrees of freedom (optional). The divisor used in calculations is N - ddof, where N represents the number of elements. By default ddof is zero.
esevaluation strategy to use (lazy (default), or immediate)
+
+
+
Template Parameters
+ + +
Tthe value type used for internal computation. The default is E::value_type. Tis also used for determining the value type of the result, which is the type of T() + E::value_type(). You can pass big_promote_value_type_t<E> to avoid overflow in computation.
+
+
+
Returns
an xexpression
+
See also
stddev, mean
+ +

Definition at line 2119 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__red__functions.js b/group__red__functions.js new file mode 100644 index 000000000..54ee26812 --- /dev/null +++ b/group__red__functions.js @@ -0,0 +1,23 @@ +var group__red__functions = +[ + [ "xt::average", "group__red__functions.html#gac71fc60e960526979d68aece67232f82", null ], + [ "xt::diff", "group__red__functions.html#gab421eb4d3565597848ec53dad1b0d6c6", null ], + [ "xt::mean", "group__red__functions.html#gad0919b7cd9e5d8907363a2a146c1ec09", null ], + [ "xt::minmax", "group__red__functions.html#gab752be31d54ec7e45daef9a5d3868030", null ], + [ "xt::norm_induced_l1", "group__red__functions.html#ga6756e0125ea6eaf41da4d72c863222ad", null ], + [ "xt::norm_induced_linf", "group__red__functions.html#ga32553e96de228c6a760ea1e7eac51dbd", null ], + [ "xt::norm_l0", "group__red__functions.html#gad29e1eba5e05138bd5db7bfc577215f1", null ], + [ "xt::norm_l1", "group__red__functions.html#ga75c1f16a4c45c0ded05f6a50f8245385", null ], + [ "xt::norm_l2", "group__red__functions.html#ga612264ac7b3ed369ebe6da569e2bf7f5", null ], + [ "xt::norm_l2", "group__red__functions.html#gad8d838a048615ed661350fcd7af66d06", null ], + [ "xt::norm_linf", "group__red__functions.html#gad3987362169c6b7f82dc4acaa012c65f", null ], + [ "xt::norm_lp", "group__red__functions.html#ga4f5622197f95e83dafec8394265fd750", null ], + [ "xt::norm_lp_to_p", "group__red__functions.html#gaa1062bcc8bc659e9a09a5816626d5575", null ], + [ "xt::norm_sq", "group__red__functions.html#ga243ff01254cf5c1bcfe3ef6b6b67331d", null ], + [ "xt::prod", "group__red__functions.html#ga90d729a5dc08b66740997ad3e7fdb0c1", null ], + [ "xt::stddev", "group__red__functions.html#ga0c8291754c7c050cbfac3f6eeeaa1f77", null ], + [ "xt::sum", "group__red__functions.html#ga018d66d27aae0df9558107d684380436", null ], + [ "xt::trapz", "group__red__functions.html#ga681c9cbfe336a5a7892633f189098c3d", null ], + [ "xt::trapz", "group__red__functions.html#ga99e0a7ad0979b3ceeaf99d75fd30af9d", null ], + [ "xt::variance", "group__red__functions.html#ga7001a4fe6acde5968aa526166659a5fa", null ] +]; \ No newline at end of file diff --git a/group__trigo__functions.html b/group__trigo__functions.html new file mode 100644 index 000000000..399770574 --- /dev/null +++ b/group__trigo__functions.html @@ -0,0 +1,432 @@ + + + + + + + +xtensor: Trigonometric function + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Trigonometric function
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::sin (E &&e) noexcept -> detail::xfunction_type_t< math::sin_fun, E >
 Sine function.
 
template<class E >
auto xt::cos (E &&e) noexcept -> detail::xfunction_type_t< math::cos_fun, E >
 Cosine function.
 
template<class E >
auto xt::tan (E &&e) noexcept -> detail::xfunction_type_t< math::tan_fun, E >
 Tangent function.
 
template<class E >
auto xt::asin (E &&e) noexcept -> detail::xfunction_type_t< math::asin_fun, E >
 Arcsine function.
 
template<class E >
auto xt::acos (E &&e) noexcept -> detail::xfunction_type_t< math::acos_fun, E >
 Arccosine function.
 
template<class E >
auto xt::atan (E &&e) noexcept -> detail::xfunction_type_t< math::atan_fun, E >
 Arctangent function.
 
template<class E1 , class E2 >
auto xt::atan2 (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::atan2_fun, E1, E2 >
 Artangent function, using signs to determine quadrants.
 
+

Detailed Description

+

Function Documentation

+ +

◆ acos()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::acos (E && e) -> detail::xfunction_type_t<math::acos_fun, E> +
+
+inlinenoexcept
+
+ +

Arccosine function.

+

Returns an xfunction for the element-wise arccosine of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1354 of file xmath.hpp.

+ +
+
+ +

◆ asin()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::asin (E && e) -> detail::xfunction_type_t<math::asin_fun, E> +
+
+inlinenoexcept
+
+ +

Arcsine function.

+

Returns an xfunction for the element-wise arcsine of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1339 of file xmath.hpp.

+ +
+
+ +

◆ atan()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::atan (E && e) -> detail::xfunction_type_t<math::atan_fun, E> +
+
+inlinenoexcept
+
+ +

Arctangent function.

+

Returns an xfunction for the element-wise arctangent of e.

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1369 of file xmath.hpp.

+ +
+
+ +

◆ atan2()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::atan2 (E1 && e1,
E2 && e2 
) -> detail::xfunction_type_t<math::atan2_fun, E1, E2> +
+
+inlinenoexcept
+
+ +

Artangent function, using signs to determine quadrants.

+

Returns an xfunction for the element-wise arctangent of e1 / e2, using the signs of arguments to determine the correct quadrant.

Parameters
+ + + +
e1an xexpression or a scalar
e2an xexpression or a scalar
+
+
+
Returns
an xfunction
+
Note
e1 and e2 can't be both scalars.
+ +

Definition at line 1387 of file xmath.hpp.

+ +
+
+ +

◆ cos()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::cos (E && e) -> detail::xfunction_type_t<math::cos_fun, E> +
+
+inlinenoexcept
+
+ +

Cosine function.

+

Returns an xfunction for the element-wise cosine of e (measured in radians).

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1309 of file xmath.hpp.

+ +
+
+ +

◆ sin()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::sin (E && e) -> detail::xfunction_type_t<math::sin_fun, E> +
+
+inlinenoexcept
+
+ +

Sine function.

+

Returns an xfunction for the element-wise sine of e (measured in radians).

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1294 of file xmath.hpp.

+ +
+
+ +

◆ tan()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::tan (E && e) -> detail::xfunction_type_t<math::tan_fun, E> +
+
+inlinenoexcept
+
+ +

Tangent function.

+

Returns an xfunction for the element-wise tangent of e (measured in radians).

Parameters
+ + +
ean xexpression
+
+
+
Returns
an xfunction
+ +

Definition at line 1324 of file xmath.hpp.

+ +
+
+
+
+ + + + diff --git a/group__trigo__functions.js b/group__trigo__functions.js new file mode 100644 index 000000000..b08643468 --- /dev/null +++ b/group__trigo__functions.js @@ -0,0 +1,10 @@ +var group__trigo__functions = +[ + [ "xt::acos", "group__trigo__functions.html#gaef1a134c51ccdb072964383887b838c7", null ], + [ "xt::asin", "group__trigo__functions.html#gabdab214ece01511604c914f91b81fdb1", null ], + [ "xt::atan", "group__trigo__functions.html#gab62818bfe16f2dd284b39bea1a345383", null ], + [ "xt::atan2", "group__trigo__functions.html#gaba0008974d39d88ec21dff058a642ca0", null ], + [ "xt::cos", "group__trigo__functions.html#gabf9e140b22bb15dc6add351a7dc06d58", null ], + [ "xt::sin", "group__trigo__functions.html#gad8638d83d6874334a912c892b9d8a9c5", null ], + [ "xt::tan", "group__trigo__functions.html#gae6d7aef2bb82c074da4a500ca5eadc7b", null ] +]; \ No newline at end of file diff --git a/group__xt__xadapt.html b/group__xt__xadapt.html new file mode 100644 index 000000000..6985aee98 --- /dev/null +++ b/group__xt__xadapt.html @@ -0,0 +1,1100 @@ + + + + + + + +xtensor: Adaptors of STL-like containers + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Adaptors of STL-like containers
+
+
+ + + + + + + + + + +

+Typedefs

template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major>
using xt::xtensor_pointer = xtensor_adaptor< xbuffer_adaptor< xtl::closure_type_t< T * >, xt::no_ownership, detail::default_allocator_for_ptr_t< T > >, N, L >
 xtensor adaptor for a pointer.
 
template<class T , layout_type L = ::xt::layout_type::row_major, class SC = xt::svector<typename uvector< T , std::allocator<std::size_t> >::size_type, 4, std::allocator<std::size_t> , true>>
using xt::xarray_pointer = xarray_adaptor< xbuffer_adaptor< xtl::closure_type_t< T * >, xt::no_ownership, detail::default_allocator_for_ptr_t< T > >, L, SC >
 xarray adaptor for a pointer.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<layout_type L = ::xt::layout_type::row_major, class C , class SC >
auto xt::adapt (C &&container, const SC &shape, layout_type l=L)
 Constructs:
 
template<class C , class SC , class SS >
auto xt::adapt (C &&container, SC &&shape, SS &&strides)
 Constructs:
 
template<layout_type L = ::xt::layout_type::row_major, class P , class O , class SC , class A = detail::default_allocator_for_ptr_t<P>>
auto xt::adapt (P &&pointer, typename A::size_type size, O ownership, const SC &shape, layout_type l=L, const A &alloc=A())
 Constructs:
 
template<class P , class O , class SC , class SS , class A = detail::default_allocator_for_ptr_t<P>>
auto xt::adapt (P &&pointer, typename A::size_type size, O ownership, SC &&shape, SS &&strides, const A &alloc=A())
 Constructs:
 
template<layout_type L = ::xt::layout_type::row_major, class T , std::size_t N, class SC >
auto xt::adapt (T(&c_array)[N], const SC &shape, layout_type l=L)
 Constructs:
 
template<class T , std::size_t N, class SC , class SS >
auto xt::adapt (T(&c_array)[N], SC &&shape, SS &&strides)
 Constructs:
 
template<layout_type L = ::xt::layout_type::row_major, class C , std::size_t... X>
auto xt::adapt (C &&pointer, const fixed_shape< X... > &)
 Constructs an non-owning xtensor_fixed_adaptor from a pointer with the specified shape and layout.
 
template<layout_type L = ::xt::layout_type::row_major, class C >
xtensor_adaptor< C, 1, L > xt::adapt (C &&container, layout_type l=L)
 Constructs a 1-D xtensor_adaptor of the given stl-like container, with the specified layout_type.
 
template<layout_type L = ::xt::layout_type::row_major, class P , class O , class A = detail::default_allocator_for_ptr_t<P>>
xtensor_adaptor< xbuffer_adaptor< xtl::closure_type_t< P >, O, A >, 1, L > xt::adapt (P &&pointer, typename A::size_type size, O ownership, layout_type l=L, const A &alloc=A())
 Constructs a 1-D xtensor_adaptor of the given dynamically allocated C array, with the specified layout.
 
template<layout_type L = ::xt::layout_type::row_major, class P , class SC , xtl::check_concept< detail::not_an_array< std::decay_t< SC > > > = 0>
auto xt::adapt_smart_ptr (P &&smart_ptr, const SC &shape, layout_type l=L)
 Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)
 
template<layout_type L = ::xt::layout_type::row_major, class P , class SC , class D , xtl::check_concept< detail::not_an_array< std::decay_t< SC > >, detail::not_a_layout< std::decay_t< D > > > = 0>
auto xt::adapt_smart_ptr (P &&data_ptr, const SC &shape, D &&smart_ptr, layout_type l=L)
 Adapt a smart pointer (shared_ptr or unique_ptr)
 
template<layout_type L = ::xt::layout_type::row_major, class P , class I , std::size_t N>
auto xt::adapt_smart_ptr (P &&smart_ptr, const I(&shape)[N], layout_type l=L)
 Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)
 
template<layout_type L = ::xt::layout_type::row_major, class P , class I , std::size_t N, class D , xtl::check_concept< detail::not_a_layout< std::decay_t< D > > > = 0>
auto xt::adapt_smart_ptr (P &&data_ptr, const I(&shape)[N], D &&smart_ptr, layout_type l=L)
 Adapt a smart pointer (shared_ptr or unique_ptr)
 
+

Detailed Description

+

Typedef Documentation

+ +

◆ xarray_pointer

+ +
+
+
+template<class T , layout_type L = ::xt::layout_type::row_major, class SC = xt::svector<typename uvector< T , std::allocator<std::size_t> >::size_type, 4, std::allocator<std::size_t> , true>>
+ + + + +
using xt::xarray_pointer = typedef xarray_adaptor< xbuffer_adaptor<xtl::closure_type_t<T*>, xt::no_ownership, detail::default_allocator_for_ptr_t<T> >, L, SC>
+
+ +

xarray adaptor for a pointer.

+

Construct for example with:

+
#include <xtensor/xadapt.hpp>
+
+
std::vector<int> data(4, 0);
+
xt::svector<size_t> shape({2, 2});
+
+
xt::xarray_pointer<int> a = xt::adapt(data.data(), data.size(), xt::no_ownership(), shape);
+ +
Dense multidimensional container adaptor with tensor semantic.
Definition xarray.hpp:217
+
auto adapt(C &&container, const SC &shape, layout_type l=L)
Constructs:
+ +
Template Parameters
+ + + + +
TThe data type (e.g. double).
LThe xt::layout_type() of the xarray.
SCThe shape container type (e.g. xt::svector<size_t>). Default matches xt::adapt(P&&, typename A::size_type, O, const SC&, layout_type, const A& alloc)
+
+
+ +

Definition at line 915 of file xadapt.hpp.

+ +
+
+ +

◆ xtensor_pointer

+ +
+
+
+template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major>
+ + + + +
using xt::xtensor_pointer = typedef xtensor_adaptor< xbuffer_adaptor<xtl::closure_type_t<T*>, xt::no_ownership, detail::default_allocator_for_ptr_t<T> >, N, L>
+
+ +

xtensor adaptor for a pointer.

+

Construct for example with:

+
#include <xtensor/xadapt.hpp>
+
+
std::array<size_t, 2> shape = {2, 2};
+
std::vector<double> data = {1, 2, 3, 4};
+
+ +
Dense multidimensional container adaptor with tensor semantics and fixed dimension.
Definition xtensor.hpp:212
+
Template Parameters
+ + + + +
TThe data type (e.g. double).
NThe number of dimensions.
LThe xt::layout_type() of the xtensor.
+
+
+ +

Definition at line 886 of file xadapt.hpp.

+ +
+
+

Function Documentation

+ +

◆ adapt() [1/9]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class C , class SC >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt (C && container,
const SC & shape,
layout_type l = L 
)
+
+inline
+
+ +

Constructs:

+ +

from the given stl-like container or pointer, with the specified shape and layout. If the adaptor is built from a pointer, it does not take its ownership.

+
Parameters
+ + + + +
containerthe container or pointer to adapt
shapethe shape of the adaptor
lthe layout_type of the adaptor
+
+
+ +
+
+ +

◆ adapt() [2/9]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class C >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xtensor_adaptor< C, 1, L > xt::adapt (C && container,
layout_type l = L 
)
+
+inline
+
+ +

Constructs a 1-D xtensor_adaptor of the given stl-like container, with the specified layout_type.

+
Parameters
+ + + +
containerthe container to adapt
lthe layout_type of the xtensor_adaptor
+
+
+ +
+
+ +

◆ adapt() [3/9]

+ +
+
+
+template<class C , class SC , class SS >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt (C && container,
SC && shape,
SS && strides 
)
+
+inline
+
+ +

Constructs:

+ +

from the given stl-like container with the specified shape and strides.

+
Parameters
+ + + + +
containerthe container to adapt
shapethe shape of the adaptor
stridesthe strides of the adaptor
+
+
+ +
+
+ +

◆ adapt() [4/9]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class C , std::size_t... X>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::adapt (C && pointer,
const fixed_shape< X... > &  
)
+
+inline
+
+ +

Constructs an non-owning xtensor_fixed_adaptor from a pointer with the specified shape and layout.

+
Parameters
+ + + +
pointerthe pointer to adapt
shapethe shape of the xtensor_fixed_adaptor
+
+
+ +
+
+ +

◆ adapt() [5/9]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class P , class O , class SC , class A = detail::default_allocator_for_ptr_t<P>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt (P && pointer,
typename A::size_type size,
ownership,
const SC & shape,
layout_type l = L,
const A & alloc = A() 
)
+
+inline
+
+ +

Constructs:

+ +

of the given dynamically allocated C array, with the specified shape and layout.

+
Parameters
+ + + + + + + +
pointerthe pointer to the beginning of the dynamic array
sizethe size of the dynamic array
ownershipindicates whether the adaptor takes ownership of the array. Possible values are no_ownership() or acquire_ownership()
shapethe shape of the adaptor
lthe layout_type of the adaptor
allocthe allocator used for allocating / deallocating the dynamic array
+
+
+ +
+
+ +

◆ adapt() [6/9]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class P , class O , class A = detail::default_allocator_for_ptr_t<P>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xtensor_adaptor< xbuffer_adaptor< xtl::closure_type_t< P >, O, A >, 1, L > xt::adapt (P && pointer,
typename A::size_type size,
ownership,
layout_type l = L,
const A & alloc = A() 
)
+
+inline
+
+ +

Constructs a 1-D xtensor_adaptor of the given dynamically allocated C array, with the specified layout.

+
Parameters
+ + + + + + +
pointerthe pointer to the beginning of the dynamic array
sizethe size of the dynamic array
ownershipindicates whether the adaptor takes ownership of the array. Possible values are no_ownership() or acquire_ownership()
lthe layout_type of the xtensor_adaptor
allocthe allocator used for allocating / deallocating the dynamic array
+
+
+ +
+
+ +

◆ adapt() [7/9]

+ +
+
+
+template<class P , class O , class SC , class SS , class A = detail::default_allocator_for_ptr_t<P>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt (P && pointer,
typename A::size_type size,
ownership,
SC && shape,
SS && strides,
const A & alloc = A() 
)
+
+inline
+
+ +

Constructs:

+ +

of the given dynamically allocated C array, with the specified shape and strides.

+
Parameters
+ + + + + + + +
pointerthe pointer to the beginning of the dynamic array
sizethe size of the dynamic array
ownershipindicates whether the adaptor takes ownership of the array. Possible values are no_ownership() or acquire_ownership()
shapethe shape of the adaptor
stridesthe strides of the adaptor
allocthe allocator used for allocating / deallocating the dynamic array
+
+
+ +
+
+ +

◆ adapt() [8/9]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class T , std::size_t N, class SC >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt (T(&) c_array[N],
const SC & shape,
layout_type l = L 
)
+
+inline
+
+ +

Constructs:

+ +

of the given C array allocated on the stack, with the specified shape and layout.

+
Parameters
+ + + + +
c_arraythe C array allocated on the stack
shapethe shape of the adaptor
lthe layout_type of the adaptor
+
+
+ +
+
+ +

◆ adapt() [9/9]

+ +
+
+
+template<class T , std::size_t N, class SC , class SS >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt (T(&) c_array[N],
SC && shape,
SS && strides 
)
+
+inline
+
+ +

Constructs:

+ +

of the given C array allocated on the stack, with the specified shape and strides.

+
Parameters
+ + + + +
c_arraythe C array allocated on the stack
shapethe shape of the adaptor
stridesthe strides of the adaptor
+
+
+ +
+
+ +

◆ adapt_smart_ptr() [1/4]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class P , class I , std::size_t N, class D , xtl::check_concept< detail::not_a_layout< std::decay_t< D > > > = 0>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt_smart_ptr (P && data_ptr,
const I(&) shape[N],
D && smart_ptr,
layout_type l = L 
)
+
+ +

Adapt a smart pointer (shared_ptr or unique_ptr)

+

This function allows to automatically adapt a shared or unique pointer to a given shape and operate naturally on it. Memory will be automatically handled by the smart pointer implementation.

+
#include <xtensor/xadapt.hpp>
+
#include <xtensor/xio.hpp>
+
+
struct Buffer {
+
Buffer(std::vector<double>& buf) : m_buf(buf) {}
+
~Buffer() { std::cout << "deleted" << std::endl; }
+
std::vector<double> m_buf;
+
};
+
+
auto data = std::vector<double>{1,2,3,4,5,6,7,8};
+
auto shared_buf = std::make_shared<Buffer>(data);
+
auto unique_buf = std::make_unique<Buffer>(data);
+
+
std::cout << shared_buf.use_count() << std::endl;
+
{
+
auto obj = adapt_smart_ptr(shared_buf.get()->m_buf.data(),
+
{2, 4}, shared_buf);
+
// Use count increased to 2
+
std::cout << shared_buf.use_count() << std::endl;
+
std::cout << obj << std::endl;
+
}
+
// Use count reset to 1
+
std::cout << shared_buf.use_count() << std::endl;
+
+
{
+
auto obj = adapt_smart_ptr(unique_buf.get()->m_buf.data(),
+
{2, 4}, std::move(unique_buf));
+
std::cout << obj << std::endl;
+
}
+
auto adapt_smart_ptr(P &&smart_ptr, const SC &shape, layout_type l=L)
Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)
Definition xadapt.hpp:687
+
Parameters
+ + + + + +
data_ptrA pointer to a typed data block (e.g. double*)
shapeThe desired shape
smart_ptrA smart pointer to move or copy, in order to manage memory
lThe desired memory layout
+
+
+
Returns
xtensor_adaptor on the memory
+ +

Definition at line 852 of file xadapt.hpp.

+ +
+
+ +

◆ adapt_smart_ptr() [2/4]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class P , class SC , class D , xtl::check_concept< detail::not_an_array< std::decay_t< SC > >, detail::not_a_layout< std::decay_t< D > > > = 0>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt_smart_ptr (P && data_ptr,
const SC & shape,
D && smart_ptr,
layout_type l = L 
)
+
+ +

Adapt a smart pointer (shared_ptr or unique_ptr)

+

This function allows to automatically adapt a shared or unique pointer to a given shape and operate naturally on it. Memory will be automatically handled by the smart pointer implementation.

+
#include <xtensor/xadapt.hpp>
+
#include <xtensor/xio.hpp>
+
+
struct Buffer {
+
Buffer(std::vector<double>& buf) : m_buf(buf) {}
+
~Buffer() { std::cout << "deleted" << std::endl; }
+
std::vector<double> m_buf;
+
};
+
+
auto data = std::vector<double>{1,2,3,4,5,6,7,8};
+
auto shared_buf = std::make_shared<Buffer>(data);
+
auto unique_buf = std::make_unique<Buffer>(data);
+
+
std::cout << shared_buf.use_count() << std::endl;
+
{
+
std::vector<size_t> shape = {2, 4};
+
auto obj = adapt_smart_ptr(shared_buf.get()->m_buf.data(),
+
shape, shared_buf);
+
// Use count increased to 2
+
std::cout << shared_buf.use_count() << std::endl;
+
std::cout << obj << std::endl;
+
}
+
// Use count reset to 1
+
std::cout << shared_buf.use_count() << std::endl;
+
+
{
+
std::vector<size_t> shape = {2, 4};
+
auto obj = adapt_smart_ptr(unique_buf.get()->m_buf.data(),
+
shape, std::move(unique_buf));
+
std::cout << obj << std::endl;
+
}
+
Parameters
+ + + + + +
data_ptrA pointer to a typed data block (e.g. double*)
shapeThe desired shape
smart_ptrA smart pointer to move or copy, in order to manage memory
lThe desired memory layout
+
+
+
Returns
xarray_adaptor on the memory
+ +

Definition at line 752 of file xadapt.hpp.

+ +
+
+ +

◆ adapt_smart_ptr() [3/4]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class P , class I , std::size_t N>
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt_smart_ptr (P && smart_ptr,
const I(&) shape[N],
layout_type l = L 
)
+
+ +

Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)

+
#include <xtensor/xadapt.hpp>
+
#include <xtensor/xio.hpp>
+
+
std::shared_ptr<double> sptr(new double[8], std::default_delete<double[]>());
+
sptr.get()[2] = 321.;
+
auto xptr = adapt_smart_ptr(sptr, {4, 2});
+
xptr(1, 3) = 123.;
+
std::cout << xptr;
+
Parameters
+ + + + +
smart_ptra smart pointer to a memory block of T[]
shapeThe desired shape
lThe desired memory layout
+
+
+
Returns
xtensor_adaptor for memory
+ +

Definition at line 785 of file xadapt.hpp.

+ +
+
+ +

◆ adapt_smart_ptr() [4/4]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class P , class SC , xtl::check_concept< detail::not_an_array< std::decay_t< SC > > > = 0>
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::adapt_smart_ptr (P && smart_ptr,
const SC & shape,
layout_type l = L 
)
+
+ +

Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)

+
#include <xtensor/xadapt.hpp>
+
#include <xtensor/xio.hpp>
+
+
std::shared_ptr<double> sptr(new double[8], std::default_delete<double[]>());
+
sptr.get()[2] = 321.;
+
std::vector<size_t> shape = {4, 2};
+
auto xptr = adapt_smart_ptr(sptr, shape);
+
xptr(1, 3) = 123.;
+
std::cout << xptr;
+
Parameters
+ + + + +
smart_ptra smart pointer to a memory block of T[]
shapeThe desired shape
lThe desired memory layout
+
+
+
Returns
xarray_adaptor for memory
+ +

Definition at line 687 of file xadapt.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xadapt.js b/group__xt__xadapt.js new file mode 100644 index 000000000..a2546621d --- /dev/null +++ b/group__xt__xadapt.js @@ -0,0 +1,18 @@ +var group__xt__xadapt = +[ + [ "xt::xarray_pointer", "group__xt__xadapt.html#gab482c333e050233e9a190366730b552c", null ], + [ "xt::xtensor_pointer", "group__xt__xadapt.html#gafda572717f1f939d87e173e781280e6e", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga80782b35941520fa1d729ed6224cba72", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga2eeb31313c7f9661f62d8ae6a6005013", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga6d665539130b96871327cb7a4aa8b2e0", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga9481e907df524526bc4fd7b77a7c6dcc", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga5d6037b3273754077e434c1dd12d897c", null ], + [ "xt::adapt", "group__xt__xadapt.html#gad7037a00f2c9e7679805e3b0b3515299", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga4170776d38583fd9bedf66df77f3d328", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga7ce00acd98d8aa752d44779e68b0c97c", null ], + [ "xt::adapt", "group__xt__xadapt.html#ga4a46bac84f94e0d22a5000df7008e7da", null ], + [ "xt::adapt_smart_ptr", "group__xt__xadapt.html#ga4addfb25502247a072b944240b67fd3f", null ], + [ "xt::adapt_smart_ptr", "group__xt__xadapt.html#ga9b942dfcc4b69cd9883c99b803b003aa", null ], + [ "xt::adapt_smart_ptr", "group__xt__xadapt.html#gabe827f240de5a66f559ae57fadd19aad", null ], + [ "xt::adapt_smart_ptr", "group__xt__xadapt.html#ga399f6121a1ebe2bf8b338e731bdc2c4e", null ] +]; \ No newline at end of file diff --git a/group__xt__xchunked__array.html b/group__xt__xchunked__array.html new file mode 100644 index 000000000..81844edf8 --- /dev/null +++ b/group__xt__xchunked__array.html @@ -0,0 +1,315 @@ + + + + + + + +xtensor: Xt_xchunked_array + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Xt_xchunked_array
+
+
+ +

Chunked array container. +More...

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

+Functions

template<class T , layout_type L = ::xt::layout_type::row_major, class S >
xchunked_array< xarray< xarray< T > > > xt::chunked_array (S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
 Creates an in-memory chunked array.
 
template<layout_type L = ::xt::layout_type::row_major, class E , class S >
xchunked_array< xarray< xarray< typename E::value_type > > > xt::chunked_array (const xexpression< E > &e, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
 Creates an in-memory chunked array.
 
template<layout_type L = ::xt::layout_type::row_major, class E >
xchunked_array< xarray< xarray< typename E::value_type > > > xt::chunked_array (const xexpression< E > &e, layout_type chunk_memory_layout=::xt::layout_type::row_major)
 Creates an in-memory chunked array.
 
+

Detailed Description

+

Chunked array container.

+

Defined in xtensor/xchunked_array.hpp.

+

Function Documentation

+ +

◆ chunked_array() [1/3]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
xchunked_array< xarray< xarray< typename E::value_type > > > xt::chunked_array (const xexpression< E > & e,
layout_type chunk_memory_layout = ::xt::layout_type::row_major 
)
+
+inline
+
+ +

Creates an in-memory chunked array.

+

This function returns a xt::xchunked_array<xt::xarray<T>> initialized from an expression.

+
Template Parameters
+ + +
LThe layout_type of the array
+
+
+
Parameters
+ + + +
eThe expression to initialize the chunked array from
chunk_memory_layoutThe layout of each chunk (default: XTENSOR_DEFAULT_LAYOUT)
+
+
+
Returns
returns a xt::xchunked_array<xt::xarray<T>> from the given expression, with the expression's chunk shape and the given memory layout.
+ +

Definition at line 378 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunked_array() [2/3]

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class E , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xchunked_array< xarray< xarray< typename E::value_type > > > xt::chunked_array (const xexpression< E > & e,
S && chunk_shape,
layout_type chunk_memory_layout = ::xt::layout_type::row_major 
)
+
+inline
+
+ +

Creates an in-memory chunked array.

+

This function returns a xt::xchunked_array<xt::xarray<T>> initialized from an expression.

+
Template Parameters
+ + +
LThe layout_type of the array
+
+
+
Parameters
+ + + + +
eThe expression to initialize the chunked array from
chunk_shapeThe shape of a chunk
chunk_memory_layoutThe layout of each chunk (default: XTENSOR_DEFAULT_LAYOUT)
+
+
+
Returns
returns a xt::xchunked_array<xt::xarray<T>> from the given expression, with the given chunk shape and memory layout.
+ +

Definition at line 370 of file xchunked_array.hpp.

+ +
+
+ +

◆ chunked_array() [3/3]

+ +
+
+
+template<class T , layout_type L = ::xt::layout_type::row_major, class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xchunked_array< xarray< xarray< T > > > xt::chunked_array (S && shape,
S && chunk_shape,
layout_type chunk_memory_layout = ::xt::layout_type::row_major 
)
+
+inline
+
+ +

Creates an in-memory chunked array.

+

This function returns an uninitialized xt::xchunked_array<xt::xarray<T>>.

+
Template Parameters
+ + + +
TThe type of the elements (e.g. double)
LThe layout_type of the array
+
+
+
Parameters
+ + + + +
shapeThe shape of the array
chunk_shapeThe shape of a chunk
chunk_memory_layoutThe layout of each chunk (default: XTENSOR_DEFAULT_LAYOUT)
+
+
+
Returns
returns a xt::xchunked_array<xt::xarray<T>> with the given shape, chunk shape and memory layout.
+ +

Definition at line 347 of file xchunked_array.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xchunked__array.js b/group__xt__xchunked__array.js new file mode 100644 index 000000000..eb1ded89a --- /dev/null +++ b/group__xt__xchunked__array.js @@ -0,0 +1,6 @@ +var group__xt__xchunked__array = +[ + [ "xt::chunked_array", "group__xt__xchunked__array.html#ga2dae3e469de3f3ec7b0d4fc49f82de5c", null ], + [ "xt::chunked_array", "group__xt__xchunked__array.html#ga7f77d42d689828b2d8e8cdd57c28ee9b", null ], + [ "xt::chunked_array", "group__xt__xchunked__array.html#ga8c408e717c7725211a42114adb4557b2", null ] +]; \ No newline at end of file diff --git a/group__xt__xcomplex.html b/group__xt__xcomplex.html new file mode 100644 index 000000000..909acdc1e --- /dev/null +++ b/group__xt__xcomplex.html @@ -0,0 +1,383 @@ + + + + + + + +xtensor: Xt_xcomplex + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Xt_xcomplex
+
+
+ +

Defined in xtensor/xcomplex.hpp +More...

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

+Functions

template<class E >
decltype(auto) xt::real (E &&e) noexcept
 Return an xt::xexpression representing the real part of the given expression.
 
template<class E >
decltype(auto) xt::imag (E &&e) noexcept
 Return an xt::xexpression representing the imaginary part of the given expression.
 
template<class E >
auto xt::conj (E &&e) noexcept
 Return an xt::xfunction evaluating to the complex conjugate of the given expression.
 
template<class E >
auto xt::arg (E &&e) noexcept
 Calculates the phase angle (in radians) elementwise for the complex numbers in e.
 
template<class E >
auto xt::angle (E &&e, bool deg=false) noexcept
 Calculates the phase angle elementwise for the complex numbers in e.
 
template<class E >
auto xt::norm (E &&e) noexcept
 Calculates the squared magnitude elementwise for the complex numbers in e.
 
+

Detailed Description

+

Defined in xtensor/xcomplex.hpp

+

Function Documentation

+ +

◆ angle()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::angle (E && e,
bool deg = false 
)
+
+inlinenoexcept
+
+ +

Calculates the phase angle elementwise for the complex numbers in e.

+

Note that this function might be slightly less performant than xt::arg.

+
Parameters
+ + + +
ethe xt::xexpression
degcalculate angle in degrees instead of radians
+
+
+ +

Definition at line 238 of file xcomplex.hpp.

+ +
+
+ +

◆ arg()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::arg (E && e)
+
+inlinenoexcept
+
+ +

Calculates the phase angle (in radians) elementwise for the complex numbers in e.

+
Parameters
+ + +
ethe xt::xexpression
+
+
+ +

Definition at line 221 of file xcomplex.hpp.

+ +
+
+ +

◆ conj()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::conj (E && e)
+
+inlinenoexcept
+
+ +

Return an xt::xfunction evaluating to the complex conjugate of the given expression.

+
Parameters
+ + +
ethe xt::xexpression
+
+
+ +

Definition at line 207 of file xcomplex.hpp.

+ +
+
+ +

◆ imag()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
decltype(auto) xt::imag (E && e)
+
+inlinenoexcept
+
+ +

Return an xt::xexpression representing the imaginary part of the given expression.

+

The returned expression either hold a const reference to e or a copy depending on whether e is an lvalue or an rvalue.

+
Template Parameters
+ + +
eThe xt::xexpression
+
+
+ +

Definition at line 144 of file xcomplex.hpp.

+ +
+
+ +

◆ norm()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::norm (E && e)
+
+inlinenoexcept
+
+ +

Calculates the squared magnitude elementwise for the complex numbers in e.

+

Equivalent to xt::pow(xt::real(e), 2) + xt::pow(xt::imag(e), 2).

+
Parameters
+ + +
ethe xt::xexpression
+
+
+ +

Definition at line 257 of file xcomplex.hpp.

+ +
+
+ +

◆ real()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
decltype(auto) xt::real (E && e)
+
+inlinenoexcept
+
+ +

Return an xt::xexpression representing the real part of the given expression.

+

The returned expression either hold a const reference to e or a copy depending on whether e is an lvalue or an rvalue.

+
Template Parameters
+ + +
eThe xt::xexpression
+
+
+ +

Definition at line 128 of file xcomplex.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xcomplex.js b/group__xt__xcomplex.js new file mode 100644 index 000000000..e34f763df --- /dev/null +++ b/group__xt__xcomplex.js @@ -0,0 +1,9 @@ +var group__xt__xcomplex = +[ + [ "xt::angle", "group__xt__xcomplex.html#gad2d3e146e64f9cb63d1b66e7d0d43867", null ], + [ "xt::arg", "group__xt__xcomplex.html#ga79e6cc463f0aeee688d90dcd320cd672", null ], + [ "xt::conj", "group__xt__xcomplex.html#ga77874ddd5efaa90065d692ee4a6049a2", null ], + [ "xt::imag", "group__xt__xcomplex.html#ga155e369dcf03bd465609d279b82f6da8", null ], + [ "xt::norm", "group__xt__xcomplex.html#gad3afef5ff535998e5dd0d95a979c54bf", null ], + [ "xt::real", "group__xt__xcomplex.html#ga40dd460909cc5b81f23947646eebd543", null ] +]; \ No newline at end of file diff --git a/group__xt__xeval.html b/group__xt__xeval.html new file mode 100644 index 000000000..d5161b9ae --- /dev/null +++ b/group__xt__xeval.html @@ -0,0 +1,216 @@ + + + + + + + +xtensor: Xt_xeval + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Xt_xeval
+
+
+ +

Evaluation functions. +More...

+ + + + + + + + + + +

+Functions

template<class T >
auto xt::eval (T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
 Force evaluation of xexpression.
 
template<layout_type L = layout_type::any, class E >
auto xt::as_strided (E &&e) -> std::enable_if_t< has_data_interface< std::decay_t< E > >::value &&detail::has_same_layout< L, E >(), E && >
 Force evaluation of xexpression not providing a data interface and convert to the required layout.
 
+

Detailed Description

+

Evaluation functions.

+

Defined in xtensor/xeval.hpp

+

Function Documentation

+ +

◆ as_strided()

+ +
+
+
+template<layout_type L = layout_type::any, class E >
+ + + + + +
+ + + + + + + + +
auto xt::as_strided (E && e) -> std::enable_if_t<has_data_interface<std::decay_t<E>>::value && detail::has_same_layout<L, E>(), E&&> +
+
+inline
+
+ +

Force evaluation of xexpression not providing a data interface and convert to the required layout.

+
+
+
// take reference to a (no copy!)
+
auto&& b = xt::as_strided(a);
+
+
// xarray<double> with the required layout
+
auto&& c = xt::as_strided<xt::layout_type::column_major>(a);
+
+
// xexpression
+
auto&& a_cast = xt::cast<int>(a);
+
+
// xarray<int>, not an xexpression
+
auto&& d = xt::as_strided(a_cast);
+
+
// xarray<int> with the required layout
+
auto&& e = xt::as_strided<xt::layout_type::column_major>(a_cast);
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
auto as_strided(E &&e) -> std::enable_if_t< has_data_interface< std::decay_t< E > >::value &&detail::has_same_layout< L, E >(), E && >
Force evaluation of xexpression not providing a data interface and convert to the required layout.
Definition xeval.hpp:149
+
Warning
This function should be used in a local context only. Returning the value returned by this function could lead to a dangling reference.
+
Returns
The expression when it already provides a data interface with the correct layout, an evaluated xt::xarray or xt::xtensor depending on shape type otherwise.
+ +

Definition at line 149 of file xeval.hpp.

+ +
+
+ +

◆ eval()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
auto xt::eval (T && t) -> std::enable_if_t<detail::is_container<std::decay_t<T>>::value, T&&> +
+
+inline
+
+ +

Force evaluation of xexpression.

+
xt::xarray<double> a = {1, 2, 3, 4};
+
auto&& b = xt::eval(a); // b is a reference to a, no copy!
+
auto&& c = xt::eval(a + b); // c is xarray<double>, not an xexpression
+
auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
Force evaluation of xexpression.
Definition xeval.hpp:46
+
Returns
xt::xarray or xt::xtensor depending on shape type
+ +

Definition at line 46 of file xeval.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xeval.js b/group__xt__xeval.js new file mode 100644 index 000000000..ec67871bf --- /dev/null +++ b/group__xt__xeval.js @@ -0,0 +1,5 @@ +var group__xt__xeval = +[ + [ "xt::as_strided", "group__xt__xeval.html#ga67df3a5e9f6d3f55dceea48706539b46", null ], + [ "xt::eval", "group__xt__xeval.html#ga60f1ff0460adb785f2d4055d0863551b", null ] +]; \ No newline at end of file diff --git a/group__xt__xfunctor__view.html b/group__xt__xfunctor__view.html new file mode 100644 index 000000000..590a12651 --- /dev/null +++ b/group__xt__xfunctor__view.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Xt_xfunctor_view + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Xt_xfunctor_view
+
+
+ +

Chunked array container. +More...

+ + + + + + + + +

+Classes

class  xt::xfunctor_view< F, CT >
 View of an xexpression . More...
 
class  xt::xfunctor_adaptor< F, CT >
 Adapt a container with a functor, forwarding methods such as resize / reshape. More...
 
+

Detailed Description

+

Chunked array container.

+

Defined in xtensor/xfunctor_view.hpp

+
+
+ + + + diff --git a/group__xt__xfunctor__view.js b/group__xt__xfunctor__view.js new file mode 100644 index 000000000..432cb88ae --- /dev/null +++ b/group__xt__xfunctor__view.js @@ -0,0 +1,9 @@ +var group__xt__xfunctor__view = +[ + [ "xt::xfunctor_view< F, CT >", "classxt_1_1xfunctor__view.html", [ + [ "operator=", "classxt_1_1xfunctor__view.html#a9e41f726bcd647106ca9f420a045d228", null ] + ] ], + [ "xt::xfunctor_adaptor< F, CT >", "classxt_1_1xfunctor__adaptor.html", [ + [ "operator=", "classxt_1_1xfunctor__adaptor.html#a4eaf31a6089dc47d2e772fa6590514bd", null ] + ] ] +]; \ No newline at end of file diff --git a/group__xt__xmanipulation.html b/group__xt__xmanipulation.html new file mode 100644 index 000000000..e2f88cd97 --- /dev/null +++ b/group__xt__xmanipulation.html @@ -0,0 +1,1449 @@ + + + + + + + +xtensor: Xt_xmanipulation + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Xt_xmanipulation
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::transpose (E &&e) noexcept
 Returns a transpose view by reversing the dimensions of xexpression e.
 
template<class E , class S , class Tag = check_policy::none>
auto xt::transpose (E &&e, S &&permutation, Tag check_policy)
 Returns a transpose view by permuting the xexpression e with permutation.
 
template<class E >
auto xt::swapaxes (E &&e, std::ptrdiff_t axis1, std::ptrdiff_t axis2)
 Return a new expression with two axes interchanged.
 
template<class E >
auto xt::moveaxis (E &&e, std::ptrdiff_t src, std::ptrdiff_t dest)
 Return a new expression with an axis move to a new position.
 
template<layout_type L = ::xt::layout_type::row_major, class E >
auto xt::ravel (E &&e)
 Return a flatten view of the given expression.
 
template<layout_type L = ::xt::layout_type::row_major, class E >
auto xt::flatten (E &&e)
 Return a flatten view of the given expression.
 
template<class E >
auto xt::trim_zeros (E &&e, const std::string &direction)
 Trim zeros at beginning, end or both of 1D sequence.
 
template<class E >
auto xt::squeeze (E &&e)
 Returns a squeeze view of the given expression.
 
template<class E , class S , class Tag = check_policy::none, std::enable_if_t<!xtl::is_integral< S >::value, int > = 0>
auto xt::squeeze (E &&e, S &&axis, Tag check_policy)
 Remove single-dimensional entries from the shape of an xexpression.
 
template<class E >
auto xt::expand_dims (E &&e, std::size_t axis)
 Expand the shape of an xexpression.
 
template<std::size_t N, class E >
auto xt::atleast_Nd (E &&e)
 Expand dimensions of xexpression to at least N
 
template<class E >
auto xt::atleast_1d (E &&e)
 Expand to at least 1D.
 
template<class E >
auto xt::atleast_2d (E &&e)
 Expand to at least 2D.
 
template<class E >
auto xt::atleast_3d (E &&e)
 Expand to at least 3D.
 
template<class E >
auto xt::split (E &e, std::size_t n, std::size_t axis)
 Split xexpression along axis into subexpressions.
 
template<class E >
auto xt::hsplit (E &e, std::size_t n)
 Split an xexpression into subexpressions horizontally (column-wise)
 
template<class E >
auto xt::vsplit (E &e, std::size_t n)
 Split an xexpression into subexpressions vertically (row-wise)
 
template<class E >
auto xt::flip (E &&e)
 Reverse the order of elements in an xexpression along every axis.
 
template<class E >
auto xt::flip (E &&e, std::size_t axis)
 Reverse the order of elements in an xexpression along the given axis.
 
template<std::ptrdiff_t N = 1, class E >
auto xt::rot90 (E &&e, const std::array< std::ptrdiff_t, 2 > &axes)
 Rotate an array by 90 degrees in the plane specified by axes.
 
template<class E >
auto xt::roll (E &&e, std::ptrdiff_t shift)
 Roll an expression.
 
template<class E >
auto xt::roll (E &&e, std::ptrdiff_t shift, std::ptrdiff_t axis)
 Roll an expression along a given axis.
 
template<class E >
auto xt::repeat (E &&e, std::size_t repeats, std::size_t axis)
 Repeat elements of an expression along a given axis.
 
template<class E >
auto xt::repeat (E &&e, const std::vector< std::size_t > &repeats, std::size_t axis)
 Repeat elements of an expression along a given axis.
 
template<class E >
auto xt::repeat (E &&e, std::vector< std::size_t > &&repeats, std::size_t axis)
 Repeat elements of an expression along a given axis.
 
+

Detailed Description

+

Function Documentation

+ +

◆ atleast_1d()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::atleast_1d (E && e)
+
+inline
+
+ +

Expand to at least 1D.

+
See also
atleast_Nd
+ +

Definition at line 685 of file xmanipulation.hpp.

+ +
+
+ +

◆ atleast_2d()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::atleast_2d (E && e)
+
+inline
+
+ +

Expand to at least 2D.

+
See also
atleast_Nd
+ +

Definition at line 697 of file xmanipulation.hpp.

+ +
+
+ +

◆ atleast_3d()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::atleast_3d (E && e)
+
+inline
+
+ +

Expand to at least 3D.

+
See also
atleast_Nd
+ +

Definition at line 709 of file xmanipulation.hpp.

+ +
+
+ +

◆ atleast_Nd()

+ +
+
+
+template<std::size_t N, class E >
+ + + + + +
+ + + + + + + + +
auto xt::atleast_Nd (E && e)
+
+inline
+
+ +

Expand dimensions of xexpression to at least N

+

This adds newaxis() slices to a strided_view until the dimension of the view reaches at least N. Note: dimensions are added equally at the beginning and the end. For example, a 1-D array of shape (N,) becomes a view of shape (1, N, 1).

+
Parameters
+ + +
einput xexpression
+
+
+
Template Parameters
+ + +
Nthe number of requested dimensions
+
+
+
Returns
strided_view with expanded dimensions
+ +

Definition at line 658 of file xmanipulation.hpp.

+ +
+
+ +

◆ expand_dims()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::expand_dims (E && e,
std::size_t axis 
)
+
+inline
+
+ +

Expand the shape of an xexpression.

+

Insert a new axis that will appear at the axis position in the expanded array shape. This will return a strided_view with a xt::newaxis() at the indicated axis.

+
Parameters
+ + + +
einput xexpression
axisaxis to expand
+
+
+
Returns
returns a strided_view with expanded dimension
+ +

Definition at line 633 of file xmanipulation.hpp.

+ +
+
+ +

◆ flatten()

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class E >
+ + + + + +
+ + + + + + + + +
auto xt::flatten (E && e)
+
+inline
+
+ +

Return a flatten view of the given expression.

+

No copy is made. This method is equivalent to ravel and is provided for API sameness with NumPy.

+
Parameters
+ + +
ethe input expression
+
+
+
Template Parameters
+ + + +
Lthe layout used to read the elements of e. If no parameter is specified, XTENSOR_DEFAULT_TRAVERSAL is used.
Ethe type of the expression
+
+
+
See also
ravel
+ +

Definition at line 442 of file xmanipulation.hpp.

+ +
+
+ +

◆ flip() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::flip (E && e)
+
+inline
+
+ +

Reverse the order of elements in an xexpression along every axis.

+
Parameters
+ + +
ethe input xexpression
+
+
+
Returns
returns a view with the result of the flip.
+ +

Definition at line 800 of file xmanipulation.hpp.

+ +
+
+ +

◆ flip() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::flip (E && e,
std::size_t axis 
)
+
+inline
+
+ +

Reverse the order of elements in an xexpression along the given axis.

+

Note: A NumPy/Matlab style flipud(arr) is equivalent to xt::flip(arr, 0), fliplr(arr) to xt::flip(arr, 1).

+
Parameters
+ + + +
ethe input xexpression
axisthe axis along which elements should be reversed
+
+
+
Returns
returns a view with the result of the flip
+ +

Definition at line 823 of file xmanipulation.hpp.

+ +
+
+ +

◆ hsplit()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::hsplit (E & e,
std::size_t n 
)
+
+inline
+
+ +

Split an xexpression into subexpressions horizontally (column-wise)

+

This method is equivalent to split(e, n, 1).

+
Parameters
+ + + +
einput xexpression
nnumber of elements to return
+
+
+ +

Definition at line 768 of file xmanipulation.hpp.

+ +
+
+ +

◆ moveaxis()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::moveaxis (E && e,
std::ptrdiff_t src,
std::ptrdiff_t dest 
)
+
+inline
+
+ +

Return a new expression with an axis move to a new position.

+
Parameters
+ + + + +
eThe input expression
srcOriginal position of the axis to move
destDestination position for the original axis.
+
+
+ +

Definition at line 368 of file xmanipulation.hpp.

+ +
+
+ +

◆ ravel()

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class E >
+ + + + + +
+ + + + + + + + +
auto xt::ravel (E && e)
+
+inline
+
+ +

Return a flatten view of the given expression.

+

No copy is made.

+
Parameters
+ + +
ethe input expression
+
+
+
Template Parameters
+ + + +
Lthe layout used to read the elements of e. If no parameter is specified, XTENSOR_DEFAULT_TRAVERSAL is used.
Ethe type of the expression
+
+
+ +

Definition at line 417 of file xmanipulation.hpp.

+ +
+
+ +

◆ repeat() [1/3]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::repeat (E && e,
const std::vector< std::size_t > & repeats,
std::size_t axis 
)
+
+inline
+
+ +

Repeat elements of an expression along a given axis.

+
Parameters
+ + + + +
ethe input xexpression
repeatsThe number of repetition of each elements. The size of repeats must match the shape of the given axis.
axisthe axis along which to repeat the value
+
+
+
Returns
an expression which as the same shape as e, except along the given axis
+ +

Definition at line 1123 of file xmanipulation.hpp.

+ +
+
+ +

◆ repeat() [2/3]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::repeat (E && e,
std::size_t repeats,
std::size_t axis 
)
+
+inline
+
+ +

Repeat elements of an expression along a given axis.

+
Parameters
+ + + + +
ethe input xexpression
repeatsThe number of repetition of each elements. repeats is broadcasted to fit the shape of the given axis.
axisthe axis along which to repeat the value
+
+
+
Returns
an expression which as the same shape as e, except along the given axis
+ +

Definition at line 1103 of file xmanipulation.hpp.

+ +
+
+ +

◆ repeat() [3/3]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::repeat (E && e,
std::vector< std::size_t > && repeats,
std::size_t axis 
)
+
+inline
+
+ +

Repeat elements of an expression along a given axis.

+
Parameters
+ + + + +
ethe input xexpression
repeatsThe number of repetition of each elements. The size of repeats must match the shape of the given axis.
axisthe axis along which to repeat the value
+
+
+
Returns
an expression which as the same shape as e, except along the given axis
+ +

Definition at line 1139 of file xmanipulation.hpp.

+ +
+
+ +

◆ roll() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::roll (E && e,
std::ptrdiff_t shift 
)
+
+inline
+
+ +

Roll an expression.

+

The expression is flatten before shifting, after which the original shape is restore. Elements that roll beyond the last position are re-introduced at the first. This function does not change the input expression.

+
Parameters
+ + + +
ethe input xexpression
shiftthe number of places by which elements are shifted
+
+
+
Returns
a roll of the input expression
+ +

Definition at line 952 of file xmanipulation.hpp.

+ +
+
+ +

◆ roll() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::roll (E && e,
std::ptrdiff_t shift,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Roll an expression along a given axis.

+

Elements that roll beyond the last position are re-introduced at the first. This function does not change the input expression.

+
Parameters
+ + + + +
ethe input xexpression
shiftthe number of places by which elements are shifted
axisthe axis along which elements are shifted.
+
+
+
Returns
a roll of the input expression
+ +

Definition at line 1049 of file xmanipulation.hpp.

+ +
+
+ +

◆ rot90()

+ +
+
+
+template<std::ptrdiff_t N = 1, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::rot90 (E && e,
const std::array< std::ptrdiff_t, 2 > & axes 
)
+
+inline
+
+ +

Rotate an array by 90 degrees in the plane specified by axes.

+

Rotation direction is from the first towards the second axis.

+
Parameters
+ + + +
ethe input xexpression
axesthe array is rotated in the plane defined by the axes. Axes must be different.
+
+
+
Template Parameters
+ + +
Nnumber of times the array is rotated by 90 degrees. Default is 1.
+
+
+
Returns
returns a view with the result of the rotation
+ +

Definition at line 919 of file xmanipulation.hpp.

+ +
+
+ +

◆ split()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::split (E & e,
std::size_t n,
std::size_t axis 
)
+
+inline
+
+ +

Split xexpression along axis into subexpressions.

+

This splits an xexpression along the axis in n equal parts and returns a vector of strided_view. Calling split with axis > dimension of e or a n that does not result in an equal division of the xexpression will throw a runtime_error.

+
Parameters
+ + + + +
einput xexpression
nnumber of elements to return
axisaxis along which to split the expression
+
+
+ +

Definition at line 732 of file xmanipulation.hpp.

+ +
+
+ +

◆ squeeze() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::squeeze (E && e)
+
+inline
+
+ +

Returns a squeeze view of the given expression.

+

No copy is made. Squeezing an expression removes dimensions of extent 1.

+
Parameters
+ + +
ethe input expression
+
+
+
Template Parameters
+ + +
Ethe type of the expression
+
+
+ +

Definition at line 513 of file xmanipulation.hpp.

+ +
+
+ +

◆ squeeze() [2/2]

+ +
+
+
+template<class E , class S , class Tag = check_policy::none, std::enable_if_t<!xtl::is_integral< S >::value, int > = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::squeeze (E && e,
S && axis,
Tag check_policy 
)
+
+inline
+
+ +

Remove single-dimensional entries from the shape of an xexpression.

+
Parameters
+ + + + +
einput xexpression
axisinteger or container of integers, select a subset of single-dimensional entries of the shape.
check_policyselect check_policy. With check_policy::full(), selecting an axis which is greater than one will throw a runtime_error.
+
+
+ +

Definition at line 592 of file xmanipulation.hpp.

+ +
+
+ +

◆ swapaxes()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::swapaxes (E && e,
std::ptrdiff_t axis1,
std::ptrdiff_t axis2 
)
+
+inline
+
+ +

Return a new expression with two axes interchanged.

+

The two axis parameter axis and axis2 are interchangable.

+
Parameters
+ + + + +
eThe input expression
axis1First axis to swap
axis2Second axis to swap
+
+
+ +

Definition at line 314 of file xmanipulation.hpp.

+ +
+
+ +

◆ transpose() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::transpose (E && e)
+
+inlinenoexcept
+
+ +

Returns a transpose view by reversing the dimensions of xexpression e.

+
Parameters
+ + +
ethe input expression
+
+
+ +

Definition at line 237 of file xmanipulation.hpp.

+ +
+
+ +

◆ transpose() [2/2]

+ +
+
+
+template<class E , class S , class Tag = check_policy::none>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::transpose (E && e,
S && permutation,
Tag check_policy 
)
+
+inline
+
+ +

Returns a transpose view by permuting the xexpression e with permutation.

+
Parameters
+ + + + +
ethe input expression
permutationthe sequence containing permutation
check_policythe check level (check_policy::full() or check_policy::none())
+
+
+
Template Parameters
+ + +
Tagselects the level of error checking on permutation vector defaults to check_policy::none.
+
+
+ +

Definition at line 269 of file xmanipulation.hpp.

+ +
+
+ +

◆ trim_zeros()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::trim_zeros (E && e,
const std::string & direction 
)
+
+inline
+
+ +

Trim zeros at beginning, end or both of 1D sequence.

+
Parameters
+ + + +
einput xexpression
directionstring of either 'f' for trim from beginning, 'b' for trim from end or 'fb' (default) for both.
+
+
+
Returns
returns a view without zeros at the beginning and end
+ +

Definition at line 475 of file xmanipulation.hpp.

+ +
+
+ +

◆ vsplit()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::vsplit (E & e,
std::size_t n 
)
+
+inline
+
+ +

Split an xexpression into subexpressions vertically (row-wise)

+

This method is equivalent to split(e, n, 0).

+
Parameters
+ + + +
einput xexpression
nnumber of elements to return
+
+
+ +

Definition at line 783 of file xmanipulation.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xmanipulation.js b/group__xt__xmanipulation.js new file mode 100644 index 000000000..14434f47e --- /dev/null +++ b/group__xt__xmanipulation.js @@ -0,0 +1,28 @@ +var group__xt__xmanipulation = +[ + [ "xt::atleast_1d", "group__xt__xmanipulation.html#ga220444924c684f9f2afbc3384a8ff09e", null ], + [ "xt::atleast_2d", "group__xt__xmanipulation.html#gae2392e470cec79a918e975987d431c54", null ], + [ "xt::atleast_3d", "group__xt__xmanipulation.html#gaf9edf6c754946e30b77d9617852ed15c", null ], + [ "xt::atleast_Nd", "group__xt__xmanipulation.html#ga66c613dc60a31ca07c28b45337ee59b7", null ], + [ "xt::expand_dims", "group__xt__xmanipulation.html#gabe8cb55041a20cb995a15c599b7a2bc2", null ], + [ "xt::flatten", "group__xt__xmanipulation.html#ga10a975d3b718bfaf8ecf1db8072a0a0c", null ], + [ "xt::flip", "group__xt__xmanipulation.html#gad4b24c51356470db0a22b0c6c7d7611d", null ], + [ "xt::flip", "group__xt__xmanipulation.html#ga4bf31ad3a5950024a3825118f9f6a4e7", null ], + [ "xt::hsplit", "group__xt__xmanipulation.html#gaf342a194380b6c7bbc7f2c89f4e88317", null ], + [ "xt::moveaxis", "group__xt__xmanipulation.html#ga2d8bcbb846f2efae57cf6fb4aa24625a", null ], + [ "xt::ravel", "group__xt__xmanipulation.html#ga52d3b08fa67fe8c498e4271fca338e28", null ], + [ "xt::repeat", "group__xt__xmanipulation.html#ga0061839371ca8e1f29c37e812dee9ad1", null ], + [ "xt::repeat", "group__xt__xmanipulation.html#ga86b343ba5d1f6150c418475a00e3d3c3", null ], + [ "xt::repeat", "group__xt__xmanipulation.html#ga7aba37875778e4c7a786cbe6ec909ef2", null ], + [ "xt::roll", "group__xt__xmanipulation.html#ga2211d25aea0f9a27855fb602419a365b", null ], + [ "xt::roll", "group__xt__xmanipulation.html#ga957635620a4f4c19c4ee0546c69fcb1d", null ], + [ "xt::rot90", "group__xt__xmanipulation.html#gab5a947902290cc80a26e8d091428497e", null ], + [ "xt::split", "group__xt__xmanipulation.html#gaad5c56f6a09fb0a6ebaa2ec6cf22cf5c", null ], + [ "xt::squeeze", "group__xt__xmanipulation.html#ga2734defabe45fcb86ed9545c1b033134", null ], + [ "xt::squeeze", "group__xt__xmanipulation.html#gadcffbf0452884112fd3bcf7e7077fd6f", null ], + [ "xt::swapaxes", "group__xt__xmanipulation.html#gaed086f2e402aa1e927f745fceae54018", null ], + [ "xt::transpose", "group__xt__xmanipulation.html#ga620b1159b15601a1fd9b2ddaa746225e", null ], + [ "xt::transpose", "group__xt__xmanipulation.html#gae8b37193755be9f7e4c0161a6d9f9b6b", null ], + [ "xt::trim_zeros", "group__xt__xmanipulation.html#ga938cc86961805cf29a1f68394922d9f7", null ], + [ "xt::vsplit", "group__xt__xmanipulation.html#gad25f3a38510304cf1e3489748a43812c", null ] +]; \ No newline at end of file diff --git a/group__xt__xshape.html b/group__xt__xshape.html new file mode 100644 index 000000000..674755a1b --- /dev/null +++ b/group__xt__xshape.html @@ -0,0 +1,316 @@ + + + + + + + +xtensor: Support functions to get/check a shape array. + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Support functions to get/check a shape array.
+
+
+ + + + + +

+Classes

struct  xt::select_layout< L, S >
 Compute a layout based on a layout and a shape type. More...
 
+ + + + + + + + + + + + + +

+Typedefs

template<class... S>
using xt::promote_shape_t = typename promote_shape< S... >::type
 
template<class... S>
using xt::promote_strides_t = typename promote_strides< S... >::type
 
template<class S >
using xt::index_from_shape_t = typename index_from_shape< S >::type
 
template<class S >
using xt::filter_fixed_shape_t = typename filter_fixed_shape< S >::type
 
+ + + + + + + + + +

+Functions

template<class S1 , class S2 >
bool xt::same_shape (const S1 &s1, const S2 &s2) noexcept
 Check if two objects have the same shape.
 
template<class E , class S >
bool xt::has_shape (const E &e, std::initializer_list< S > shape) noexcept
 Check if an object has a certain shape.
 
+

Detailed Description

+

Typedef Documentation

+ +

◆ filter_fixed_shape_t

+ +
+
+
+template<class S >
+ + + + +
using xt::filter_fixed_shape_t = typedef typename filter_fixed_shape<S>::type
+
+ +

Definition at line 575 of file xshape.hpp.

+ +
+
+ +

◆ index_from_shape_t

+ +
+
+
+template<class S >
+ + + + +
using xt::index_from_shape_t = typedef typename index_from_shape<S>::type
+
+ +

Definition at line 545 of file xshape.hpp.

+ +
+
+ +

◆ promote_shape_t

+ +
+
+
+template<class... S>
+ + + + +
using xt::promote_shape_t = typedef typename promote_shape<S...>::type
+
+ +

Definition at line 521 of file xshape.hpp.

+ +
+
+ +

◆ promote_strides_t

+ +
+
+
+template<class... S>
+ + + + +
using xt::promote_strides_t = typedef typename promote_strides<S...>::type
+
+ +

Definition at line 533 of file xshape.hpp.

+ +
+
+

Function Documentation

+ +

◆ has_shape()

+ +
+
+
+template<class E , class S >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::has_shape (const E & e,
std::initializer_list< S > shape 
)
+
+inlinenoexcept
+
+ +

Check if an object has a certain shape.

+
Parameters
+ + + +
aan array
shapethe shape to test
+
+
+
Returns
bool
+ +

Definition at line 130 of file xshape.hpp.

+ +
+
+ +

◆ same_shape()

+ +
+
+
+template<class S1 , class S2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool xt::same_shape (const S1 & s1,
const S2 & s2 
)
+
+inlinenoexcept
+
+ +

Check if two objects have the same shape.

+
Parameters
+ + + +
s1an array
s2an array
+
+
+
Returns
bool
+ +

Definition at line 112 of file xshape.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xshape.js b/group__xt__xshape.js new file mode 100644 index 000000000..7cfd1be5e --- /dev/null +++ b/group__xt__xshape.js @@ -0,0 +1,6 @@ +var group__xt__xshape = +[ + [ "xt::select_layout< L, S >", "structxt_1_1select__layout.html", null ], + [ "xt::has_shape", "group__xt__xshape.html#ga56d28aa1be818adaecee7803249dad7d", null ], + [ "xt::same_shape", "group__xt__xshape.html#ga3c10cfb8271fbf79932a98edc5491ac7", null ] +]; \ No newline at end of file diff --git a/group__xt__xsort.html b/group__xt__xsort.html new file mode 100644 index 000000000..ed410781e --- /dev/null +++ b/group__xt__xsort.html @@ -0,0 +1,907 @@ + + + + + + + +xtensor: Sorting functions. + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Sorting functions.
+
+
+ +

Because sorting functions need to access the tensor data repeatedly, they evaluate their input and may allocate temporaries. +More...

+ + + + + +

+Enumerations

enum class  xt::quantile_method {
+  xt::quantile_method::interpolated_inverted_cdf = 4 +, xt::quantile_method::hazen +, xt::quantile_method::weibull +, xt::quantile_method::linear +,
+  xt::quantile_method::median_unbiased +, xt::quantile_method::normal_unbiased +
+ }
 Quantile interpolation method. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class E >
auto xt::sort (const xexpression< E > &e, std::ptrdiff_t axis=-1)
 Sort xexpression (optionally along axis) The sort is performed using the std::sort functions.
 
template<class E >
auto xt::argsort (const xexpression< E > &e, std::ptrdiff_t axis=-1, sorting_method method=sorting_method::quick)
 Argsort xexpression (optionally along axis) Performs an indirect sort along the given axis.
 
template<class E , class C , class R = detail::flatten_sort_result_type_t<E>, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
xt::partition (const xexpression< E > &e, C kth_container, placeholders::xtuph)
 Partially sort xexpression.
 
template<class E , class C , class R = typename detail::linear_argsort_result_type<typename detail::sort_eval_type<E>::type>::type, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
xt::argpartition (const xexpression< E > &e, C kth_container, placeholders::xtuph)
 Partially sort arguments.
 
template<class T = double, class E , class P >
auto xt::quantile (E &&e, const P &probas, std::ptrdiff_t axis, T alpha, T beta)
 Compute quantiles over the given axis.
 
template<class T = double, class E , class P >
auto xt::quantile (E &&e, const P &probas, T alpha, T beta)
 Compute quantiles of the whole expression.
 
template<class T = double, class E , class P >
auto xt::quantile (E &&e, const P &probas, std::ptrdiff_t axis, quantile_method method=quantile_method::linear)
 Compute quantiles over the given axis.
 
template<class T = double, class E , class P >
auto xt::quantile (E &&e, const P &probas, quantile_method method=quantile_method::linear)
 Compute quantiles of the whole expression.
 
template<class E >
auto xt::median (E &&e, std::ptrdiff_t axis)
 Find the median along the specified axis.
 
template<layout_type L = ::xt::layout_type::row_major, class E >
auto xt::argmax (const xexpression< E > &e, std::ptrdiff_t axis)
 Find position of maximal value in xexpression By default, the returned index is into the flattened array.
 
template<class E >
auto xt::unique (const xexpression< E > &e)
 Find unique elements of a xexpression.
 
template<class E1 , class E2 >
auto xt::setdiff1d (const xexpression< E1 > &ar1, const xexpression< E2 > &ar2)
 Find the set difference of two xexpressions.
 
+

Detailed Description

+

Because sorting functions need to access the tensor data repeatedly, they evaluate their input and may allocate temporaries.

+

Enumeration Type Documentation

+ +

◆ quantile_method

+ +
+
+ + + + + +
+ + + + +
enum class xt::quantile_method
+
+strong
+
+ +

Quantile interpolation method.

+

Predefined methods for interpolating quantiles, as defined in (Hyndman and Fan, 1996).

+
See also
(Hyndman and Fan, 1996) R. J. Hyndman and Y. Fan, "Sample quantiles in statistical packages", The American Statistician, 50(4), pp. 361-365, 1996
+
+xt::quantile(E&& e, P const& probas, std::ptrdiff_t axis, xt::quantile_method method)
+ + + + + + + +
Enumerator
interpolated_inverted_cdf 

Method 4 of (Hyndman and Fan, 1996) with alpha=0 and beta=1.

+
hazen 

Method 5 of (Hyndman and Fan, 1996) with alpha=1/2 and beta=1/2.

+
weibull 

Method 6 of (Hyndman and Fan, 1996) with alpha=0 and beta=0.

+
linear 

Method 7 of (Hyndman and Fan, 1996) with alpha=1 and beta=1.

+
median_unbiased 

Method 8 of (Hyndman and Fan, 1996) with alpha=1/3 and beta=1/3.

+
normal_unbiased 

Method 9 of (Hyndman and Fan, 1996) with alpha=3/8 and beta=3/8.

+
+ +

Definition at line 983 of file xsort.hpp.

+ +
+
+

Function Documentation

+ +

◆ argmax()

+ +
+
+
+template<layout_type L = ::xt::layout_type::row_major, class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::argmax (const xexpression< E > & e,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Find position of maximal value in xexpression By default, the returned index is into the flattened array.

+

If axis is specified, the indices are along the specified axis.

+
Parameters
+ + + +
einput xexpression
axisselect axis (optional)
+
+
+
Returns
returns xarray with positions of maximal value
+ +

Definition at line 1286 of file xsort.hpp.

+ +
+
+ +

◆ argpartition()

+ +
+
+
+template<class E , class C , class R = typename detail::linear_argsort_result_type<typename detail::sort_eval_type<E>::type>::type, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
R xt::argpartition (const xexpression< E > & e,
kth_container,
placeholders::xtuph  
)
+
+inline
+
+ +

Partially sort arguments.

+

Argpartition shuffles the indices to a xexpression in a way so that the index for the kth element in the returned xexpression is in the place it would appear in a sorted array and all elements smaller than this entry are placed (unsorted) before.

+

The optional third parameter can either be an axis or xnone() in which case the xexpression will be flattened.

+

This function uses std::nth_element internally.

+
xt::xarray<float> a = {1, 10, -10, 123};
+
std::cout << xt::argpartition(a, 0) << std::endl; // {2, 0, 3, 1} the correct entry at index 0
+
std::cout << xt::argpartition(a, 3) << std::endl; // {0, 1, 2, 3} the correct entry at index 3
+
std::cout << xt::argpartition(a, {0, 3}) << std::endl; // {2, 0, 1, 3} the correct entries at index 0
+
and 3
+
Dense multidimensional container with tensor semantic.
Definition xarray.hpp:85
+
R argpartition(const xexpression< E > &e, C kth_container, placeholders::xtuph)
Partially sort arguments.
Definition xsort.hpp:664
+
Parameters
+ + + + +
einput xexpression
kth_containera container of indices that should contain the correctly sorted value
axiseither integer (default = -1) to sort along last axis or xnone() to flatten before sorting
+
+
+
Returns
xcontainer with indices of partial sort of input
+ +

Definition at line 664 of file xsort.hpp.

+ +
+
+ +

◆ argsort()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::argsort (const xexpression< E > & e,
std::ptrdiff_t axis = -1,
sorting_method method = sorting_method::quick 
)
+
+inline
+
+ +

Argsort xexpression (optionally along axis) Performs an indirect sort along the given axis.

+

Returns an xarray of indices of the same shape as e that index data along the given axis in sorted order.

+
Parameters
+ + + + +
exexpression to argsort
axisaxis along which argsort is performed
methodsorting algorithm to use
+
+
+
Returns
argsorted index array
+
See also
xt::sorting_method
+ +

Definition at line 452 of file xsort.hpp.

+ +
+
+ +

◆ median()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::median (E && e,
std::ptrdiff_t axis 
)
+
+inline
+
+ +

Find the median along the specified axis.

+

Given a vector V of length N, the median of V is the middle value of a sorted copy of V, V_sorted - i e., V_sorted[(N-1)/2], when N is odd, and the average of the two middle values of V_sorted when N is even.

+
Parameters
+ + + +
axisaxis along which the medians are computed. If not set, computes the median along a flattened version of the input.
einput xexpression
+
+
+
Returns
median value
+ +

Definition at line 1126 of file xsort.hpp.

+ +
+
+ +

◆ partition()

+ +
+
+
+template<class E , class C , class R = detail::flatten_sort_result_type_t<E>, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
R xt::partition (const xexpression< E > & e,
kth_container,
placeholders::xtuph  
)
+
+inline
+
+ +

Partially sort xexpression.

+

Partition shuffles the xexpression in a way so that the kth element in the returned xexpression is in the place it would appear in a sorted array and all elements smaller than this entry are placed (unsorted) before.

+

The optional third parameter can either be an axis or xnone() in which case the xexpression will be flattened.

+

This function uses std::nth_element internally.

+
xt::xarray<float> a = {1, 10, -10, 123};
+
std::cout << xt::partition(a, 0) << std::endl; // {-10, 1, 123, 10} the correct entry at index 0
+
std::cout << xt::partition(a, 3) << std::endl; // {1, 10, -10, 123} the correct entry at index 3
+
std::cout << xt::partition(a, {0, 3}) << std::endl; // {-10, 1, 10, 123} the correct entries at index 0
+
and 3
+
R partition(const xexpression< E > &e, C kth_container, placeholders::xtuph)
Partially sort xexpression.
Definition xsort.hpp:569
+
Parameters
+ + + + +
einput xexpression
kth_containera container of indices that should contain the correctly sorted value
axiseither integer (default = -1) to sort along last axis or xnone() to flatten before sorting
+
+
+
Returns
partially sorted xcontainer
+ +

Definition at line 569 of file xsort.hpp.

+ +
+
+ +

◆ quantile() [1/4]

+ +
+
+
+template<class T = double, class E , class P >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::quantile (E && e,
const P & probas,
quantile_method method = quantile_method::linear 
)
+
+inline
+
+ +

Compute quantiles of the whole expression.

+

The quantiles are computed over the whole expression, as if flatten in a one-dimensional expression. The function takes the name of a predefined method to compute to interpolate between values.

+
See also
xt::quantile_method
+
+xt::quantile(E&& e, P const& probas, std::ptrdiff_t axis, xt::quantile_method method)
+ +

Definition at line 1076 of file xsort.hpp.

+ +
+
+ +

◆ quantile() [2/4]

+ +
+
+
+template<class T = double, class E , class P >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::quantile (E && e,
const P & probas,
std::ptrdiff_t axis,
quantile_method method = quantile_method::linear 
)
+
+inline
+
+ +

Compute quantiles over the given axis.

+

The function takes the name of a predefined method to compute to interpolate between values.

+
See also
xt::quantile_method
+
+xt::quantile(E&& e, P const& probas, std::ptrdiff_t axis, T alpha, T beta)
+ +

Definition at line 1010 of file xsort.hpp.

+ +
+
+ +

◆ quantile() [3/4]

+ +
+
+
+template<class T = double, class E , class P >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::quantile (E && e,
const P & probas,
std::ptrdiff_t axis,
alpha,
beta 
)
+
+inline
+
+ +

Compute quantiles over the given axis.

+

In a sorted array represneting a distribution of numbers, the quantile of a probability p is the the cut value q such that a fraction p of the distribution is lesser or equal to q. When the cutpoint falls between two elemnts of the sample distribution, a interpolation is computed using the alpha and beta coefficients, as descripted in (Hyndman and Fan, 1996).

+

The algorithm partially sorts entries in a copy along the axis axis.

+
Parameters
+ + + + + + +
eExpression containing the distribution over which the quantiles are computed.
probasAn list of probability associated with each desired quantiles. All elements must be in the range [0, 1].
axisThe dimension in which to compute the quantiles, i.e the axis representing the distribution.
alphaInterpolation parameter. Must be in the range [0, 1]].
betaInterpolation parameter. Must be in the range [0, 1]].
+
+
+
Template Parameters
+ + +
TThe type in which the quantile are computed.
+
+
+
Returns
An expression with as many dimensions as the input e. The first axis correspond to the quantiles. The other axes are the axes that remain after the reduction of e.
+
See also
(Hyndman and Fan, 1996) R. J. Hyndman and Y. Fan, "Sample quantiles in statistical packages", The American Statistician, 50(4), pp. 361-365, 1996
+
+https://en.wikipedia.org/wiki/Quantile
+ +

Definition at line 906 of file xsort.hpp.

+ +
+
+ +

◆ quantile() [4/4]

+ +
+
+
+template<class T = double, class E , class P >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::quantile (E && e,
const P & probas,
alpha,
beta 
)
+
+inline
+
+ +

Compute quantiles of the whole expression.

+

The quantiles are computed over the whole expression, as if flatten in a one-dimensional expression.

+
See also
xt::quantile(E&& e, P const& probas, std::ptrdiff_t axis, T alpha, T beta)
+ +

Definition at line 960 of file xsort.hpp.

+ +
+
+ +

◆ setdiff1d()

+ +
+
+
+template<class E1 , class E2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::setdiff1d (const xexpression< E1 > & ar1,
const xexpression< E2 > & ar2 
)
+
+inline
+
+ +

Find the set difference of two xexpressions.

+

This returns a flattened xtensor with the sorted, unique values in ar1 that are not in ar2.

+
Parameters
+ + + +
ar1input xexpression (will be flattened)
ar2input xexpression
+
+
+ +

Definition at line 1323 of file xsort.hpp.

+ +
+
+ +

◆ sort()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::sort (const xexpression< E > & e,
std::ptrdiff_t axis = -1 
)
+
+inline
+
+ +

Sort xexpression (optionally along axis) The sort is performed using the std::sort functions.

+

A copy of the xexpression is created and returned.

+
Parameters
+ + + +
exexpression to sort
axisaxis along which sort is performed
+
+
+
Returns
sorted array (copy)
+ +

Definition at line 255 of file xsort.hpp.

+ +
+
+ +

◆ unique()

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + +
auto xt::unique (const xexpression< E > & e)
+
+inline
+
+ +

Find unique elements of a xexpression.

+

This returns a flattened xtensor with sorted, unique elements from the original expression.

+
Parameters
+ + +
einput xexpression (will be flattened)
+
+
+ +

Definition at line 1302 of file xsort.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xsort.js b/group__xt__xsort.js new file mode 100644 index 000000000..e5567d037 --- /dev/null +++ b/group__xt__xsort.js @@ -0,0 +1,23 @@ +var group__xt__xsort = +[ + [ "xt::quantile_method", "group__xt__xsort.html#ga2afe52f60aa76f33b0b883a78cabc1ed", [ + [ "xt::quantile_method::interpolated_inverted_cdf", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda7f20bc9a8cd4acd58c1d9b46821e9242", null ], + [ "xt::quantile_method::hazen", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaf4b08e7cc0a94bb8f4e9969eeb532039", null ], + [ "xt::quantile_method::weibull", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda17198fea0bd47a1170b57db7db9e6060", null ], + [ "xt::quantile_method::linear", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda9a932b3cb396238423eb2f33ec17d6aa", null ], + [ "xt::quantile_method::median_unbiased", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaeddf62d602ae684d91d6f586f5e5cbaf", null ], + [ "xt::quantile_method::normal_unbiased", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edad1056b777fd87429ccb7a8a55db32545", null ] + ] ], + [ "xt::argmax", "group__xt__xsort.html#ga258b6c4df6acf24de4bec48be87f0218", null ], + [ "xt::argpartition", "group__xt__xsort.html#gac5d19a520cca302691a677d806cae666", null ], + [ "xt::argsort", "group__xt__xsort.html#gaa3ce074f31b6284b63b0d5240820e50a", null ], + [ "xt::median", "group__xt__xsort.html#gae6a650f8da9d0066e26ecda36ee293e4", null ], + [ "xt::partition", "group__xt__xsort.html#ga6177ff3c8d30606b88a0bbcacd8dcf4e", null ], + [ "xt::quantile", "group__xt__xsort.html#gaa8159912f652b20d4477c0187dfb301f", null ], + [ "xt::quantile", "group__xt__xsort.html#ga632a72d1def84debe56b68d79a451f11", null ], + [ "xt::quantile", "group__xt__xsort.html#ga7dd83e71409830d5211608257f18e361", null ], + [ "xt::quantile", "group__xt__xsort.html#gae3b1b26f618ece7324455223330d5780", null ], + [ "xt::setdiff1d", "group__xt__xsort.html#gab6eedcadc051be2d6e3ad7890a5c2d90", null ], + [ "xt::sort", "group__xt__xsort.html#gae455f4aaacbc04bebc76451907003ee3", null ], + [ "xt::unique", "group__xt__xsort.html#ga2b46eaf022e2fcd9e82ae5223fdd3ed5", null ] +]; \ No newline at end of file diff --git a/group__xt__xstrides.html b/group__xt__xstrides.html new file mode 100644 index 000000000..4bbc3dc2c --- /dev/null +++ b/group__xt__xstrides.html @@ -0,0 +1,451 @@ + + + + + + + +xtensor: Support functions swich between array indices and flat indices + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Support functions swich between array indices and flat indices
+
+
+ + + + + +

+Enumerations

enum class  xt::stride_type { xt::stride_type::internal = 0 +, xt::stride_type::normal = 1 +, xt::stride_type::bytes = 2 + }
 Choose stride type. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class offset_type , class S , class Arg , class... Args>
offset_type xt::data_offset (const S &strides, Arg arg, Args... args) noexcept
 Return the flat index for an array index.
 
template<layout_type L = layout_type::dynamic, class shape_type , class strides_type >
std::size_t xt::compute_strides (const shape_type &shape, layout_type l, strides_type &strides)
 Compute the strides given the shape and the layout of an array.
 
template<class S , class... Args>
void xt::normalize_periodic (const S &shape, Args &... args)
 Normalise an index of a periodic array.
 
template<class E >
auto xt::strides (const E &e, stride_type type=stride_type::normal) noexcept
 Get strides of an object.
 
template<class E >
auto xt::strides (const E &e, std::size_t axis, stride_type type=stride_type::normal) noexcept
 Get stride of an object along an axis.
 
+

Detailed Description

+

Enumeration Type Documentation

+ +

◆ stride_type

+ +
+
+ + + + + +
+ + + + +
enum class xt::stride_type
+
+strong
+
+ +

Choose stride type.

+ + + + +
Enumerator
internal 

As used internally (with stride(axis) == 0 if shape(axis) == 1)

+
normal 

Normal stride corresponding to storage.

+
bytes 

Normal stride in bytes.

+
+ +

Definition at line 233 of file xstrides.hpp.

+ +
+
+

Function Documentation

+ +

◆ compute_strides()

+ +
+
+
+template<layout_type L = layout_type::dynamic, class shape_type , class strides_type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::size_t xt::compute_strides (const shape_type & shape,
layout_type l,
strides_type & strides 
)
+
+inline
+
+ +

Compute the strides given the shape and the layout of an array.

+
Parameters
+ + + + +
shapeShape of the array.
lLayout type, see xt::layout_type().
strides(output) Strides of the array.
+
+
+
Returns
The size: the product of the shape.
+ +

Definition at line 566 of file xstrides.hpp.

+ +
+
+ +

◆ data_offset()

+ +
+
+
+template<class offset_type , class S , class Arg , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
offset_type xt::data_offset (const S & strides,
Arg arg,
Args... args 
)
+
+inlinenoexcept
+
+ +

Return the flat index for an array index.

+

Given m arguments, and dimension nof the array (n == strides.size()).

+
    +
  • If m == n, the index is strides[0] * index[0] + ... + strides[n - 1] * index[n - 1].
  • +
  • If m < n and the last argument is xt::missing the indices are zero-padded at the end to match the dimension of the array. The index is then strides[0] * index[0] + ... + strides[m - 1] * index[m - 1].
  • +
  • If m < n (and the last argument is not xt::missing), the index is strides[n - m - 1] * index[0] + ... + strides[n - 1] * index[m - 1].
  • +
  • If m > n, then the first m - n arguments are ignored. The index is then strides[0] * index[m - n] + ... + strides[n - 1] * index[m - 1].
  • +
+
Parameters
+ + + +
stridesStrides of the array.
argsArray index.
+
+
+
Returns
The flat index.
+ +

Definition at line 453 of file xstrides.hpp.

+ +
+
+ +

◆ normalize_periodic()

+ +
+
+
+template<class S , class... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void xt::normalize_periodic (const S & shape,
Args &... args 
)
+
+inline
+
+ +

Normalise an index of a periodic array.

+

For example if the shape is (3, 4) and the index is (3, -4) the result is (0, 0).

+
Parameters
+ + + +
shapeShape of the array.
args(input/output) Array index.
+
+
+ +

Definition at line 909 of file xstrides.hpp.

+ +
+
+ +

◆ strides() [1/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
auto xt::strides (const E & e,
std::size_t axis,
stride_type type = stride_type::normal 
)
+
+inlinenoexcept
+
+ +

Get stride of an object along an axis.

+
Parameters
+ + +
aan array
+
+
+
Returns
integer
+ +

Definition at line 292 of file xstrides.hpp.

+ +
+
+ +

◆ strides() [2/2]

+ +
+
+
+template<class E >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
auto xt::strides (const E & e,
stride_type type = stride_type::normal 
)
+
+inlinenoexcept
+
+ +

Get strides of an object.

+
Parameters
+ + +
aan array
+
+
+
Returns
array
+ +

Definition at line 248 of file xstrides.hpp.

+ +
+
+
+
+ + + + diff --git a/group__xt__xstrides.js b/group__xt__xstrides.js new file mode 100644 index 000000000..03b91c3f7 --- /dev/null +++ b/group__xt__xstrides.js @@ -0,0 +1,13 @@ +var group__xt__xstrides = +[ + [ "xt::stride_type", "group__xt__xstrides.html#ga743568032eda84a9d0df401f20317b7d", [ + [ "xt::stride_type::internal", "group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dad1efad72dc5b17dc66a46767c32fff40", null ], + [ "xt::stride_type::normal", "group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dafea087517c26fadd409bd4b9dc642555", null ], + [ "xt::stride_type::bytes", "group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7da4b3a6218bb3e3a7303e8a171a60fcf92", null ] + ] ], + [ "xt::compute_strides", "group__xt__xstrides.html#ga3b03c8046a44a3bf2d4800c7296ecefd", null ], + [ "xt::data_offset", "group__xt__xstrides.html#ga3bcc575a1a2870d78b96ff674e700ec7", null ], + [ "xt::normalize_periodic", "group__xt__xstrides.html#gafa51177b0954ec061327dab5d8055ddb", null ], + [ "xt::strides", "group__xt__xstrides.html#ga1ddf9b85add66ccc98661073a78cd953", null ], + [ "xt::strides", "group__xt__xstrides.html#ga651f61121a205e14993c06c52c6d2503", null ] +]; \ No newline at end of file diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..1360545d7 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,893 @@ + + + + + + + +xtensor: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CA
 Cxt::math::abs_fun
 Cxt::math::acos_fun
 Cxt::math::acosh_fun
 Cxt::acquire_ownership
 Cxt_simd::aligned_allocator< T, A >
 Cxt_simd::aligned_mode
 Cxt_simd::allocator_alignment< A >
 Cxt::apply_cv< T, U >
 Cxt::math::arg_fun
 Cstd::array
 Cxt::math::asin_fun
 Cxt::math::asinh_fun
 Cxt::math::atan2_fun
 Cxt::math::atan_fun
 Cxt::math::atanh_fun
 Cxt::big_promote_value_type< E >
 Cxt::buffer_inner_types< D >
 Cxt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
 Cxt::buffer_inner_types< xiterator_adaptor< I, CI > >
 Cxt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
 Cdetail::buffer_storage_t
 Cxt::math::cbrt_fun
 Cxt::math::ceil_fun
 Cxt::strided_assign_detail::check_strides_functor< L, S >
 Cxt::check_strides_overlap< L >
 Cxt::check_strides_overlap< layout_type::column_major >
 Cxt::check_strides_overlap< layout_type::row_major >
 Cxt::math::clamp_fun
 Cxt::common_difference_type< Args >
 Cxt::common_difference_type<>
 Cxt::common_size_type< Args >
 Cxt::common_size_type<>
 Cxt::detail::common_tensor_type_impl< std::decay_t< C >... >
 Cxt::common_value_type< C >
 Cxt::conditional_cast_functor< condition, T >
 Cxt::conditional_cast_functor< true, T >
 Cstd::conditional_t
 Cxt::math::conj_impl_fun
 Cxtl::conjunction< T >
 Cxtl::conjunction< has_data_interface< std::decay_t< E > >, xtl::negation< is_flat_expression_adaptor< ST > > >
 Cxtl::conjunction< has_simd_type< T >, has_simd_apply< F, xt_simd::simd_type< T > >, has_simd_interface< std::decay_t< CT >, T >... >
 Cxtl::conjunction< has_simd_type< T >, has_simd_interface< xfunctor_applier_base< D >::xexpression_type >, detail::has_simd_interface_impl< xfunctor_applier_base< D >, T > >
 Cxtl::conjunction< xtl::disjunction< is_xtensor_expression< E >, is_xoptional_expression< E > >... >
 Cxt::const_array< T, N >A std::array like class with all member function (except reverse iterators) as constexpr
 Cxt::const_value< T >
 Cxt::const_xclosure< E, EN >
 Cxt::const_xclosure< E, disable_xexpression< std::decay_t< E > > >
 Cxt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >
 Cxt_simd::container_alignment< C >
 Cxt::math::cos_fun
 Cxt::math::cosh_fun
 Cxt::decay_all< S, X >
 Cxt::decay_all< S< X... > >
 Cxt::math::deg2rad
 Cxt::driven_align_mode< A1, A2 >
 Cxt::print_options::edge_itemsIo manipulator used to set the number of egde items if the summarization is triggered
 Cstd::enable_if
 Cxt::math::erf_fun
 Cxt::math::erfc_fun
 Cxt::math::exp2_fun
 Cxt::math::exp_fun
 Cxt::math::expm1_fun
 Cxt::extension::expression_tag_and< T >
 Cxt::extension::expression_tag_and< T >
 Cxt::extension::expression_tag_and< T, T >
 Cxt::extension::expression_tag_and< T1, expression_tag_and< T... >::type >
 Cxt::extension::expression_tag_and< xtensor_expression_tag, T >
 Cxt::extension::expression_tag_and< xtensor_expression_tag, xtensor_expression_tag >
 Cxt::extension::expression_tag_and<>
 Cxt::math::fabs_fun
 Cstd::false_type
 Cxt::math::fdim_fun
 Cxt::detail::filter_fixed_shape_impl< S >
 Cxt::fixed_shape< X >Fixed shape implementation for compile time defined arrays
 Cxt::fixed_xreducer_shape_type< S1, S2 >
 Cxt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >
 Cxt::math::floor_fun
 Cxt::math::fma_fun
 Cxt::math::fmax_fun
 Cxt::math::fmin_fun
 Cxt::math::fmod_fun
 Cxt::check_policy::full
 Cxt::convolve_mode::full
 Cxt::extension::get_expression_tag< xtl::xoptional< T, B > >
 Cxt::extension::get_expression_tag_impl< E, class >
 Cxt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >
 Cxt::get_init_type< V, S >
 Cxt::get_init_type< V, fixed_shape< X... > >
 Cxt::get_rank< E, typename >
 Cxt::get_rank< E, decltype((void) E::rank, void())>
 Cxt::get_strides_type< S >
 Cxt::get_strides_type< fixed_shape< I... > >
 Cxt::get_strides_type< xbuffer_adaptor< CP, O, A > >
 Cxt::get_value_type< T, class >
 Cxt::get_value_type< T, void_t< typename T::value_type > >
 Cxt::has_assign_conversion< FROM, TO >
 Cxt::has_fixed_rank< E >
 Cxt::has_rank< E, N >
 Cxt::has_sign_conversion< FROM, TO >
 Cxt::math::hypot_fun
 Cxtl::identity
 Cxt::strided_assign_detail::idx_tools< layout >
 Cxt::strided_assign_detail::idx_tools< layout_type::column_major >
 Cxt::strided_assign_detail::idx_tools< layout_type::row_major >
 Cxt::index_from_shape< S >
 Cxt::initializer_dimension< U >
 Cxt::inner_aligned_mode
 Cxt::inner_reference< ST >
 Cstd::integral_constant
 Cxt::invalid_type
 Cstd::is_assignable
 Cstd::is_base_of
 Cdetail::chunk_helper::is_chunked
 Cxt::is_indexed_stepper< T >
 Cxt::is_indexed_stepper< xindexed_stepper< T, B > >
 Cxt::is_narrowing_conversion< FROM, TO >
 Cstd::is_same
 Cxt::math::isfinite_fun
 Cxt::math::isinf_fun
 Cxt::math::isnan_fun
 Cxt::math::lgamma_fun
 Cxt::print_options::line_widthIo manipulator used to set the width of the lines when printing an expression
 Cxt::linear_assigner< simd_assign >
 Cxt::linear_assigner< false >
 Cxt::math::log10_fun
 Cxt::math::log1p_fun
 Cxt::math::log2_fun
 Cxt::math::log_fun
 Cxt::make_invalid_type< T >
 Cxt::make_void< T >
 Cxt::math::maximum< T >
 Cxt::meta_identity< T >
 Cxt::math::minimum< T >
 Cxt::missing_type
 Cxt::math::nearbyint_fun
 Cxtl::negation
 Cxt::nested_initializer_list< T, I >
 Cxt::nested_initializer_list< T, 0 >
 Cxt::no_ownership
 Cxt::noalias_proxy< A >
 Cxt::check_policy::none
 Cxt::math::norm_fun
 Cxt::traits_detail::norm_of_array_elements_impl< T, integral, floating >
 Cxt::traits_detail::norm_of_array_elements_impl< long double, false, true >
 Cxt::traits_detail::norm_of_array_elements_impl< T, false, false >
 Cxt::traits_detail::norm_of_array_elements_impl< T, false, true >
 Cxt::traits_detail::norm_of_array_elements_impl< T, true, false >
 Cxt::traits_detail::norm_of_array_elements_impl< void *, false, false >
 Cxt::traits_detail::norm_of_scalar_impl< T, scalar >
 Cxt::traits_detail::norm_of_scalar_impl< T, false >
 Cxt::traits_detail::norm_of_scalar_impl< T, true >
 Cxt::traits_detail::norm_of_vector_impl< ARRAY >
 Cxt::traits_detail::norm_type_base< U >
 Cxt::traits_detail::norm_type_base< T >
 Cxt::numeric_constants< T >
 Cxt::detail::option_base
 Cxt::math::pow_fun
 Cxt::print_options::precisionIo manipulator used to set the precision of the floating point values when printing an expression
 Cxt::print_options::print_options_impl
 Cxt::promote_shape< S >
 Cxt::promote_strides< S >
 Cxt::math::rad2deg
 Cxt::tracking_allocator< T, A, P >::rebind< U >
 Cxt::rebind_container< X, C >
 Cxt::rebind_container< X, C< T, A > >
 Cxt::rebind_container< X, C< T, N > >
 Cxt::rebind_container< X, svector< T, N, A, B > >
 Cxt::reducer_options< R, T >
 Cxt::math::remainder_fun
 Cxt::remove_class< T >
 Cxt::remove_class< R(C::*)(Args...) const >
 Cxt::remove_class< R(C::*)(Args...)>
 Cxt_simd::revert_simd_traits< T >
 Cxt::math::rint_fun
 Cxt::math::round_fun
 Cstd::runtime_error
 Cxt::select_dim_mapping_type< T >
 Cxt::select_dim_mapping_type< fixed_shape< I... > >
 Cxt::select_dim_mapping_type< inner_shape_type >
 Cselect_expression_base_t
 Cxt::select_iterable_base< L1, L2, T >
 Cselect_iterable_base_t
 Cxt::select_layout< L, S >Compute a layout based on a layout and a shape type
 Cxt::sequence_view< E, Start, End >
 Cxt::detail::shape_storage< S >
 Cxt::math::sign_fun
 Cxt::math::sign_impl< T >
 Cxt::math::sign_impl< xtl::xoptional< T, B > >
 Cxt_simd::simd_traits< T >
 Cxt::math::sin_fun
 Cxt::math::sinh_fun
 Cxt::math::sqrt_fun
 Cxt::static_dimension< S >
 Cxt::static_string
 Cxt::stepper_assigner< E1, E2, L >
 Cxt::stepper_tools< L >
 Cxt::strided_loop_assigner< simd >
 Cxt::svector< T, N, A, Init >
 Cxt::svector< size_type >
 Cxt::math::tan_fun
 Cxt::math::tanh_fun
 Cxt::temporary_container< C >
 Cxt::temporary_container< xbuffer_adaptor< CP, O, A > >
 Cxt::temporary_container< xiterator_adaptor< I, CI > >
 Cxt::temporary_container< xiterator_owner_adaptor< C, IG > >
 Cxt::temporary_type< T, class >
 Cxt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >
 Cxt::temporary_type_from_tag< Tag, T >
 Cxt::temporary_type_from_tag< xtensor_expression_tag, T >
 Cxt::math::tgamma_fun
 Cxt::print_options::thresholdIo manipulator used to set the threshold after which summarization is triggered
 Cstd::true_type
 Cxt::math::trunc_fun
 Cstd::tuple
 Cxt::tuple_idx_of< T, Tuple >
 Cxt::tuple_idx_of_impl< I, T, Tuple >
 Cxt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > >
 Cxt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > >
 Cxt::tuple_idx_of_impl< I, T, std::tuple<> >
 Cdetail::tensor_view_simd_helper::type
 Cxt_simd::unaligned_mode
 Cxt::uvector< T, A >
 Cxt::convolve_mode::valid
 Cxt::view_temporary_type< E, SL >
 Cxt::xall_tag
 Cxt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >
 Cextension::xarray_adaptor_base_t
 Cxt::extension::xarray_container_base< EC, L, SC, Tag >
 Cxt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag >
 Cxt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag >
 Cextension::xarray_container_base_t
 Cxt::extension::xarray_optional_traits< EC, L, SC >
 Cxt::xassign_traits< E1, E2 >
 Cxt::xaxis_iterator< CT >Class for iteration over (N-1)-dimensional slices, where N is the dimension of the underlying expression
 Cxt::xaxis_slice_iterator< CT >Class for iteration over one-dimensional slices
 Cxt::xblockwise_reducer< CT, F, X, O >
 Cxt::extension::xbroadcast_base_impl< Tag, CT, X >
 Cxt::extension::xbroadcast_base_impl< xexpression_tag_t< CT >, CT, X >
 Cxt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X >
 Cxt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X >
 Cextension::xbroadcast_base_t
 Cxt::xbuffer_adaptor_base< D >
 Cxt::xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >
 Cxt::xbuffer_adaptor_base< xiterator_adaptor< I, CI > >
 Cxt::xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >
 Cxt::xchunked_assigner< T, chunk_storage >
 Cxt::xchunked_view< E >
 Cxt::xchunked_view< const std::decay_t< CT > & >
 Cxt::xclosure< E, EN >
 Cxt::xclosure< E, disable_xexpression< std::decay_t< E > > >
 Cxt::xclosure< xshared_expression< E >, std::enable_if_t< true > >
 Cxt::xconst_accessible< D >Base class for implementation of common expression constant access methods
 Cxt::xconst_accessible< xarray_adaptor< EC, L, SC, Tag > >
 Cxt::xconst_accessible< xarray_container< EC, L, SC, Tag > >
 Cxt::xconst_accessible< xbroadcast< CT, X > >
 Cxt::xconst_accessible< xchunked_array< chunk_storage > >
 Cxt::xconst_accessible< xfixed_adaptor< EC, S, L, SH, Tag > >
 Cxt::xconst_accessible< xfixed_container< ET, S, L, SH, Tag > >
 Cxt::xconst_accessible< xfunction< F, CT... > >
 Cxt::xconst_accessible< xfunctor_adaptor< F, CT > >
 Cxt::xconst_accessible< xfunctor_view< F, CT > >
 Cxt::xconst_accessible< xgenerator< F, R, S > >
 Cxt::xconst_accessible< xmasked_view< CTD, CTM > >
 Cxt::xconst_accessible< xreducer< F, CT, X, O > >
 Cxt::xconst_accessible< xrepeat< CT, R > >
 Cxt::xconst_accessible< xscalar< CT > >
 Cxt::xconst_accessible< xtensor_adaptor< EC, N, L, Tag > >
 Cxt::xconst_accessible< xtensor_container< EC, N, L, Tag > >
 Cxt::xconst_accessible< xtensor_view< EC, N, L, Tag > >
 Cxt::xconst_accessible< xview< CT, S... > >
 Cxt::xconst_iterable< D >Base class for multidimensional iterable constant expressions
 Cxt::xconst_iterable< xarray_adaptor< EC, L, SC, Tag > >
 Cxt::xconst_iterable< xarray_container< EC, L, SC, Tag > >
 Cxt::xconst_iterable< xbroadcast< CT, X > >
 Cxt::xconst_iterable< xchunked_array< chunk_storage > >
 Cxt::xconst_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >
 Cxt::xconst_iterable< xfixed_container< ET, S, L, SH, Tag > >
 Cxt::xconst_iterable< xfunction< F, CT... > >
 Cxt::xconst_iterable< xgenerator< F, R, S > >
 Cxt::xconst_iterable< xindex_view< CT, I > >
 Cxt::xconst_iterable< xmasked_view< CTD, CTM > >
 Cxt::xconst_iterable< xoptional_assembly< VE, FE > >
 Cxt::xconst_iterable< xoptional_assembly_adaptor< VEC, FEC > >
 Cxt::xconst_iterable< xreducer< F, CT, X, O > >
 Cxt::xconst_iterable< xrepeat< CT, R > >
 Cxt::xconst_iterable< xscalar< CT > >
 Cxt::xconst_iterable< xtensor_adaptor< EC, N, L, Tag > >
 Cxt::xconst_iterable< xtensor_container< EC, N, L, Tag > >
 Cxt::xconst_iterable< xtensor_view< EC, N, L, Tag > >
 Cxt::xcontainer_inner_types< D >
 Cxt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
 Cxt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
 Cxt::xcontainer_inner_types< xbroadcast< CT, X > >
 Cxt::xcontainer_inner_types< xchunked_array< chunk_storage > >
 Cxt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
 Cxt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
 Cxt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
 Cxt::xcontainer_inner_types< xfunction< F, CT... > >
 Cxt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >
 Cxt::xcontainer_inner_types< xfunctor_view< F, CT > >
 Cxt::xcontainer_inner_types< xgenerator< C, R, S > >
 Cxt::xcontainer_inner_types< xindex_view< CT, I > >
 Cxt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
 Cxt::xcontainer_inner_types< xoptional_assembly< VE, FE > >
 Cxt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
 Cxt::xcontainer_inner_types< xreducer< F, CT, X, O > >
 Cxt::xcontainer_inner_types< xrepeat< CT, R > >
 Cxt::xcontainer_inner_types< xscalar< CT > >
 Cxt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
 Cxt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
 Cxt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
 Cxt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
 Cxt::xcontainer_inner_types< xview< CT, S... > >
 Cxt::xcontainer_iterable_types< D >
 Cxt::xcontainer_iterable_types< xarray_adaptor< EC, L, SC, Tag > >
 Cxt::xcontainer_iterable_types< xarray_container< EC, L, SC, Tag > >
 Cxt::xcontainer_iterable_types< xfixed_adaptor< EC, S, L, SH, Tag > >
 Cxt::xcontainer_iterable_types< xfixed_container< ET, S, L, SH, Tag > >
 Cxt::xcontainer_iterable_types< xtensor_adaptor< EC, N, L, Tag > >
 Cxt::xcontainer_iterable_types< xtensor_container< EC, N, L, Tag > >
 Cxt::xcontainer_iterable_types< xtensor_view< EC, N, L, Tag > >
 Cxt::xcsv_config
 Cxt::extension::xdynamic_view_base_impl< Tag, CT, S, L, FST >
 Cxt::extension::xdynamic_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >
 Cxt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >
 Cxt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >
 Cextension::xdynamic_view_base_t
 Cxt::xellipsis_tag
 Cxt::xexpression< D >Base class for xexpressions
 Cxt::xexpression< xbroadcast< CT, X > >
 Cxt::xexpression< xfunction< F, CT... > >
 Cxt::xexpression< xgenerator< F, R, S > >
 Cxt::xexpression< xreducer< F, CT, X, O > >
 Cxt::xexpression< xrepeat< CT, R > >
 Cxt::xexpression< xscalar< CT > >
 Cxt::xexpression< xshared_expression< E > >
 Cxt::xexpression_assigner_base< Tag >
 Cxt::xexpression_assigner_base< xoptional_expression_tag >
 Cxt::xexpression_assigner_base< xtensor_expression_tag >
 Cxt::xexpression_holder
 Cxt::xexpression_tag< T >
 Cxt::xfiltration< ECT, CCT >Filter of a xexpression for fast scalar assign
 Cxt::extension::xfunction_base_impl< Tag, F, CT >
 Cxt::extension::xfunction_base_impl< xexpression_tag_t< CT... >, F, CT... >
 Cxt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... >
 Cxt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... >
 Cextension::xfunction_base_t
 Cxt::detail::xfunction_cache_impl< promote::type, promote >
 Cxt::xfunction_stepper< F, CT >
 Cxt::xfunctor_stepper< F, ST >
 Cxt::extension::xfunctor_view_base_impl< Tag, F, CT >
 Cxt::extension::xfunctor_view_base_impl< xexpression_tag_t< CT >, F, CT >
 Cxt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT >
 Cxt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT >
 Cextension::xfunctor_view_base_t
 Cxt::xfunctor_view_temporary_type< F, E >
 Cxt::extension::xgenerator_base_impl< Tag, F, R, S >
 Cxt::extension::xgenerator_base_impl< xexpression_tag_t< R >, F, R, S >
 Cxt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S >
 Cxt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S >
 Cextension::xgenerator_base_t
 Cxt::extension::xindex_view_base_impl< Tag, CT, I >
 Cxt::extension::xindex_view_base_impl< xexpression_tag_t< CT >, CT, I >
 Cxt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I >
 Cxt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I >
 Cextension::xindex_view_base_t
 Cxt::xindexed_stepper< E, is_const >
 Cxt::xiterable_inner_types< D >
 Cxt::xiterable_inner_types< xbroadcast< CT, X > >
 Cxt::xiterable_inner_types< xchunked_array< chunk_storage > >
 Cxt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >
 Cxt::xiterable_inner_types< xfunction< F, CT... > >
 Cxt::xiterable_inner_types< xgenerator< C, R, S > >
 Cxt::xiterable_inner_types< xindex_view< CT, I > >
 Cxt::xiterable_inner_types< xmasked_view< CTD, CTM > >
 Cxt::xiterable_inner_types< xoptional_assembly< VE, FE > >
 Cxt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
 Cxt::xiterable_inner_types< xreducer< F, CT, X, O > >
 Cxt::xiterable_inner_types< xrepeat< CT, R > >
 Cxt::xiterable_inner_types< xscalar< CT > >
 Cxt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >
 Cxt::xiterable_inner_types< xview< CT, S... > >
 Cxt::xmasked_value< T, B >
 Cxt::xmasked_view_stepper< D, is_const >
 Cxt::xmultiindex_iterator< S >
 Cxt::xnewaxis_tag
 Cxt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >
 Cxt::xoptional_assembly_stepper< D, is_const >
 Cxt::xoptional_assembly_storage< VE, FE >
 Cxt::extension::xoptional_empty_base< D >
 Cxt::extension::xoptional_empty_base< T::derived_type >
 Cxt::extension::xoptional_empty_base< xbroadcast< CT, X > >
 Cxt::extension::xoptional_empty_base< xdynamic_view< CT, S, L, FST > >
 Cxt::extension::xoptional_empty_base< xfunction< F, CT... > >
 Cxt::extension::xoptional_empty_base< xfunctor_view< F, CT > >
 Cxt::extension::xoptional_empty_base< xgenerator< F, R, S > >
 Cxt::extension::xoptional_empty_base< xindex_view< CT, I > >
 Cxt::extension::xoptional_empty_base< xreducer< F, CT, X, O > >
 Cxt::extension::xoptional_empty_base< xrepeat< CT, X > >
 Cxt::extension::xoptional_empty_base< xscalar< CT > >
 Cxt::extension::xoptional_empty_base< xstrided_view< CT, S, L, FST > >
 Cxt::extension::xoptional_empty_base< xview< CT, S... > >
 Cxt::xoptional_expression_tag
 Cxt::xproxy_inner_types< R >
 Cxtl::xrandom_access_iterator_base
 Cxtl::xrandom_access_iterator_base2
 Cxt::xrange_adaptor< A, B, C >
 Cxt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >
 Cextension::xreducer_base_t
 Cxt::xreducer_shape_type< ST, X, O >
 Cxt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >
 Cxt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >
 Cxt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >
 Cxt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >
 Cxt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >
 Cxt::xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t< X >, keep_dims >
 Cxt::xreducer_stepper< F, CT, X, O >
 Cxt::extension::xrepeat_base_impl< Tag, CT, X >
 Cxt::extension::xrepeat_base_impl< xexpression_tag_t< CT >, CT, X >
 Cxt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X >
 Cxt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X >
 Cextension::xrepeat_base_t
 Cxt::xrepeat_stepper< S, R >
 Cxt::extension::xscalar_base_impl< Tag, CT >
 Cxt::extension::xscalar_base_impl< get_expression_tag_t< std::decay_t< CT > >, CT >
 Cxt::extension::xscalar_base_impl< xoptional_expression_tag, CT >
 Cxt::extension::xscalar_base_impl< xtensor_expression_tag, CT >
 Cextension::xscalar_base_t
 Cxt::extension::xscalar_optional_traits< CT >
 Cxt::xscalar_stepper< is_const, CT >
 Cxt::xslice< D >
 Cxt::xslice< xall< T > >
 Cxt::xslice< xdrop_slice< T > >
 Cxt::xslice< xfake_slice< T > >
 Cxt::xslice< xkeep_slice< T > >
 Cxt::xslice< xnewaxis< T > >
 Cxt::xslice< xrange< T > >
 Cxt::xslice< xstepped_range< T > >
 Cxt::xstepper< C >
 Cxt::extension::xstrided_view_base_impl< Tag, CT, S, L, FST >
 Cxt::extension::xstrided_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >
 Cxt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >
 Cxt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >
 Cextension::xstrided_view_base_t
 Cxt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >
 Cextension::xtensor_adaptor_base_t
 Cxt::extension::xtensor_container_base< EC, N, L, Tag >
 Cxt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag >
 Cxt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag >
 Cextension::xtensor_container_base_t
 Cxt::extension::xtensor_empty_base
 Cxt::xtensor_expression_tag
 Cxt::extension::xtensor_optional_traits< EC, N, L >
 Cxt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag >
 Cextension::xtensor_view_base_t
 Cxt::xvectorizer< F, R >
 Cxt::extension::xview_base_impl< Tag, CT, S >
 Cxt::extension::xview_base_impl< xexpression_tag_t< CT >, CT, S... >
 Cxt::extension::xview_base_impl< xoptional_expression_tag, CT, S... >
 Cxt::extension::xview_base_impl< xtensor_expression_tag, CT, S... >
 Cextension::xview_base_t
 Cxt::xview_shape_type< ST, S >
 Cxt::xview_shape_type< fixed_shape< I... >, S... >
 Cxt::xview_shape_type< std::array< I, L >, S... >
 Cxt::xview_stepper< is_const, CT, S >
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 000000000..a926836d8 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,949 @@ +var hierarchy = +[ + [ "A", null, [ + [ "xt::tracking_allocator< T, A, P >", "structxt_1_1tracking__allocator.html", null ] + ] ], + [ "xt::math::abs_fun", "structxt_1_1math_1_1abs__fun.html", null ], + [ "xt::math::acos_fun", "structxt_1_1math_1_1acos__fun.html", null ], + [ "xt::math::acosh_fun", "structxt_1_1math_1_1acosh__fun.html", null ], + [ "xt::acquire_ownership", "structxt_1_1acquire__ownership.html", null ], + [ "xt_simd::aligned_allocator< T, A >", "classxt__simd_1_1aligned__allocator.html", null ], + [ "xt_simd::aligned_mode", "structxt__simd_1_1aligned__mode.html", null ], + [ "xt_simd::allocator_alignment< A >", "structxt__simd_1_1allocator__alignment.html", null ], + [ "xt::apply_cv< T, U >", "structxt_1_1apply__cv.html", null ], + [ "xt::math::arg_fun", "structxt_1_1math_1_1arg__fun.html", null ], + [ "std::array", null, [ + [ "xt::aligned_array< T, N, Align >", "classxt_1_1aligned__array.html", null ] + ] ], + [ "xt::math::asin_fun", "structxt_1_1math_1_1asin__fun.html", null ], + [ "xt::math::asinh_fun", "structxt_1_1math_1_1asinh__fun.html", null ], + [ "xt::math::atan2_fun", "structxt_1_1math_1_1atan2__fun.html", null ], + [ "xt::math::atan_fun", "structxt_1_1math_1_1atan__fun.html", null ], + [ "xt::math::atanh_fun", "structxt_1_1math_1_1atanh__fun.html", null ], + [ "xt::big_promote_value_type< E >", "structxt_1_1big__promote__value__type.html", null ], + [ "xt::buffer_inner_types< D >", "structxt_1_1buffer__inner__types.html", null ], + [ "xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >", "structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "xt::buffer_inner_types< xiterator_adaptor< I, CI > >", "structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >", "structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "detail::buffer_storage_t", null, [ + [ "xt::xbuffer_adaptor< CP, O, A >", "classxt_1_1xbuffer__adaptor.html", null ] + ] ], + [ "xt::math::cbrt_fun", "structxt_1_1math_1_1cbrt__fun.html", null ], + [ "xt::math::ceil_fun", "structxt_1_1math_1_1ceil__fun.html", null ], + [ "xt::strided_assign_detail::check_strides_functor< L, S >", "structxt_1_1strided__assign__detail_1_1check__strides__functor.html", null ], + [ "xt::check_strides_overlap< L >", "structxt_1_1check__strides__overlap.html", null ], + [ "xt::check_strides_overlap< layout_type::column_major >", "structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html", null ], + [ "xt::check_strides_overlap< layout_type::row_major >", "structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html", null ], + [ "xt::math::clamp_fun", "structxt_1_1math_1_1clamp__fun.html", null ], + [ "xt::common_difference_type< Args >", "structxt_1_1common__difference__type.html", null ], + [ "xt::common_difference_type<>", "structxt_1_1common__difference__type_3_4.html", null ], + [ "xt::common_size_type< Args >", "structxt_1_1common__size__type.html", null ], + [ "xt::common_size_type<>", "structxt_1_1common__size__type_3_4.html", null ], + [ "xt::detail::common_tensor_type_impl< std::decay_t< C >... >", null, [ + [ "xt::common_tensor_type< C >", "structxt_1_1common__tensor__type.html", null ] + ] ], + [ "xt::common_value_type< C >", "structxt_1_1common__value__type.html", null ], + [ "xt::conditional_cast_functor< condition, T >", "structxt_1_1conditional__cast__functor.html", null ], + [ "xt::conditional_cast_functor< true, T >", "structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html", null ], + [ "std::conditional_t", null, [ + [ "xt::detail::xchunk_iterator_base< E >", null, [ + [ "xt::xchunk_iterator< E >", "classxt_1_1xchunk__iterator.html", null ] + ] ], + [ "xt::xview< CT, S >", "classxt_1_1xview.html", null ] + ] ], + [ "xt::math::conj_impl_fun", "structxt_1_1math_1_1conj__impl__fun.html", null ], + [ "xtl::conjunction< T >", "structxtl_1_1conjunction.html", null ], + [ "xtl::conjunction< has_data_interface< std::decay_t< E > >, xtl::negation< is_flat_expression_adaptor< ST > > >", "structxtl_1_1conjunction.html", null ], + [ "xtl::conjunction< has_simd_type< T >, has_simd_apply< F, xt_simd::simd_type< T > >, has_simd_interface< std::decay_t< CT >, T >... >", "structxtl_1_1conjunction.html", [ + [ "xt::has_simd_interface< xfunction< F, CT... >, T >", "structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html", null ] + ] ], + [ "xtl::conjunction< has_simd_type< T >, has_simd_interface< xfunctor_applier_base< D >::xexpression_type >, detail::has_simd_interface_impl< xfunctor_applier_base< D >, T > >", "structxtl_1_1conjunction.html", [ + [ "xt::has_simd_interface< xfunctor_applier_base< D >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html", null ] + ] ], + [ "xtl::conjunction< xtl::disjunction< is_xtensor_expression< E >, is_xoptional_expression< E > >... >", "structxtl_1_1conjunction.html", [ + [ "xt::xoptional_comparable< E >", "structxt_1_1xoptional__comparable.html", null ] + ] ], + [ "xt::const_array< T, N >", "structxt_1_1const__array.html", null ], + [ "xt::const_value< T >", "structxt_1_1const__value.html", null ], + [ "xt::const_xclosure< E, EN >", "structxt_1_1const__xclosure.html", null ], + [ "xt::const_xclosure< E, disable_xexpression< std::decay_t< E > > >", "structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html", null ], + [ "xt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >", "structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html", null ], + [ "xt_simd::container_alignment< C >", "structxt__simd_1_1container__alignment.html", null ], + [ "xt::math::cos_fun", "structxt_1_1math_1_1cos__fun.html", null ], + [ "xt::math::cosh_fun", "structxt_1_1math_1_1cosh__fun.html", null ], + [ "xt::decay_all< S, X >", "structxt_1_1decay__all.html", null ], + [ "xt::decay_all< S< X... > >", "structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "xt::math::deg2rad", "structxt_1_1math_1_1deg2rad.html", null ], + [ "xt::driven_align_mode< A1, A2 >", "structxt_1_1driven__align__mode.html", null ], + [ "xt::print_options::edge_items", "classxt_1_1print__options_1_1edge__items.html", null ], + [ "std::enable_if", null, [ + [ "xt::container_simd_return_type< C, T1, T2 >", "structxt_1_1container__simd__return__type.html", null ], + [ "xt::disable_indexed_stepper< T, R >", "structxt_1_1disable__indexed__stepper.html", null ], + [ "xt::enable_indexed_stepper< T, R >", "structxt_1_1enable__indexed__stepper.html", null ] + ] ], + [ "xt::math::erf_fun", "structxt_1_1math_1_1erf__fun.html", null ], + [ "xt::math::erfc_fun", "structxt_1_1math_1_1erfc__fun.html", null ], + [ "xt::math::exp2_fun", "structxt_1_1math_1_1exp2__fun.html", null ], + [ "xt::math::exp_fun", "structxt_1_1math_1_1exp__fun.html", null ], + [ "xt::math::expm1_fun", "structxt_1_1math_1_1expm1__fun.html", null ], + [ "xt::extension::expression_tag_and< T >", "structxt_1_1extension_1_1expression__tag__and.html", null ], + [ "xt::extension::expression_tag_and< T >", "structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html", null ], + [ "xt::extension::expression_tag_and< T, T >", "structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html", null ], + [ "xt::extension::expression_tag_and< T1, expression_tag_and< T... >::type >", "structxt_1_1extension_1_1expression__tag__and.html", [ + [ "xt::extension::expression_tag_and< T1, T... >", "structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html", null ] + ] ], + [ "xt::extension::expression_tag_and< xtensor_expression_tag, T >", "structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html", [ + [ "xt::extension::expression_tag_and< T, xtensor_expression_tag >", "structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html", null ] + ] ], + [ "xt::extension::expression_tag_and< xtensor_expression_tag, xtensor_expression_tag >", "structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html", null ], + [ "xt::extension::expression_tag_and<>", "structxt_1_1extension_1_1expression__tag__and_3_4.html", null ], + [ "xt::math::fabs_fun", "structxt_1_1math_1_1fabs__fun.html", null ], + [ "std::false_type", null, [ + [ "xt::is_reducer_options_impl< std::decay_t< T > >", "structxt_1_1is__reducer__options__impl.html", [ + [ "xt::is_reducer_options< T >", "structxt_1_1is__reducer__options.html", null ] + ] ], + [ "xt::detail::has_load_simd< E, T, class >", null, [ + [ "xt::detail::has_simd_interface_impl< E, T, B >", null, [ + [ "xt::has_simd_interface< xfunctor_applier_base< xfunctor_adaptor< F, CT > >, T >", "structxt_1_1has__simd__interface.html", [ + [ "xt::has_simd_interface< xfunctor_adaptor< F, CT >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html", null ] + ] ], + [ "xt::has_simd_interface< xfunctor_applier_base< xfunctor_view< F, CT > >, T >", "structxt_1_1has__simd__interface.html", [ + [ "xt::has_simd_interface< xfunctor_view< F, CT >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html", null ] + ] ], + [ "xt::has_simd_interface< E, T >", "structxt_1_1has__simd__interface.html", null ] + ] ] + ] ], + [ "xt::detail::has_simd_apply_impl< F, B, class >", null, [ + [ "xt::has_simd_apply< F, B >", "structxt_1_1has__simd__apply.html", null ] + ] ], + [ "xt::forbid_simd< T >", "structxt_1_1forbid__simd.html", null ], + [ "xt::has_assign_to< E1, E2, class >", "structxt_1_1has__assign__to.html", null ], + [ "xt::has_data_interface< E, class >", "structxt_1_1has__data__interface.html", null ], + [ "xt::has_iterator_interface< E, class >", "structxt_1_1has__iterator__interface.html", null ], + [ "xt::has_storage_type< T, class >", "structxt_1_1has__storage__type.html", null ], + [ "xt::has_strides< E, class >", "structxt_1_1has__strides.html", null ], + [ "xt::is_contiguous_container< xiterator< St, S, L > >", "structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.html", null ], + [ "xt::is_iterator< E, class >", "structxt_1_1is__iterator.html", null ], + [ "xt::is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >", "structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html", null ], + [ "xt::is_reducer_options_impl< T >", "structxt_1_1is__reducer__options__impl.html", null ], + [ "xt::reducer_options< R, T >::initial_tester< X >", "structxt_1_1reducer__options_1_1initial__tester.html", null ], + [ "xt_simd::is_batch_bool< V >", "structxt__simd_1_1is__batch__bool.html", null ], + [ "xt_simd::is_batch_complex< V >", "structxt__simd_1_1is__batch__complex.html", null ] + ] ], + [ "xt::math::fdim_fun", "structxt_1_1math_1_1fdim__fun.html", null ], + [ "xt::detail::filter_fixed_shape_impl< S >", null, [ + [ "xt::filter_fixed_shape< S >", "structxt_1_1filter__fixed__shape.html", null ] + ] ], + [ "xt::fixed_shape< X >", "classxt_1_1fixed__shape.html", null ], + [ "xt::fixed_xreducer_shape_type< S1, S2 >", "structxt_1_1fixed__xreducer__shape__type.html", null ], + [ "xt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >", "structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html", null ], + [ "xt::math::floor_fun", "structxt_1_1math_1_1floor__fun.html", null ], + [ "xt::math::fma_fun", "structxt_1_1math_1_1fma__fun.html", null ], + [ "xt::math::fmax_fun", "structxt_1_1math_1_1fmax__fun.html", null ], + [ "xt::math::fmin_fun", "structxt_1_1math_1_1fmin__fun.html", null ], + [ "xt::math::fmod_fun", "structxt_1_1math_1_1fmod__fun.html", null ], + [ "xt::check_policy::full", "structxt_1_1check__policy_1_1full.html", null ], + [ "xt::convolve_mode::full", "structxt_1_1convolve__mode_1_1full.html", null ], + [ "xt::extension::get_expression_tag< xtl::xoptional< T, B > >", "structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "xt::extension::get_expression_tag_impl< E, class >", "structxt_1_1extension_1_1get__expression__tag__impl.html", [ + [ "xt::extension::get_expression_tag< E >", "structxt_1_1extension_1_1get__expression__tag.html", null ] + ] ], + [ "xt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >", "structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de048c22abe806a8cb61aa0c08ab63f2de.html", null ], + [ "xt::get_init_type< V, S >", "structxt_1_1get__init__type.html", null ], + [ "xt::get_init_type< V, fixed_shape< X... > >", "structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "xt::get_rank< E, typename >", "structxt_1_1get__rank.html", null ], + [ "xt::get_rank< E, decltype((void) E::rank, void())>", "structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html", null ], + [ "xt::get_strides_type< S >", "structxt_1_1get__strides__type.html", null ], + [ "xt::get_strides_type< fixed_shape< I... > >", "structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html", null ], + [ "xt::get_strides_type< xbuffer_adaptor< CP, O, A > >", "structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "xt::get_value_type< T, class >", "structxt_1_1get__value__type.html", null ], + [ "xt::get_value_type< T, void_t< typename T::value_type > >", "structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html", null ], + [ "xt::has_assign_conversion< FROM, TO >", "structxt_1_1has__assign__conversion.html", null ], + [ "xt::has_fixed_rank< E >", "structxt_1_1has__fixed__rank.html", null ], + [ "xt::has_rank< E, N >", "structxt_1_1has__rank.html", null ], + [ "xt::has_sign_conversion< FROM, TO >", "structxt_1_1has__sign__conversion.html", null ], + [ "xt::math::hypot_fun", "structxt_1_1math_1_1hypot__fun.html", null ], + [ "xtl::identity", null, [ + [ "xt::conditional_cast_functor< false, T >", "structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html", null ] + ] ], + [ "xt::strided_assign_detail::idx_tools< layout >", "structxt_1_1strided__assign__detail_1_1idx__tools.html", null ], + [ "xt::strided_assign_detail::idx_tools< layout_type::column_major >", "structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html", null ], + [ "xt::strided_assign_detail::idx_tools< layout_type::row_major >", "structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html", null ], + [ "xt::index_from_shape< S >", "structxt_1_1index__from__shape.html", null ], + [ "xt::initializer_dimension< U >", "structxt_1_1initializer__dimension.html", null ], + [ "xt::inner_aligned_mode", "structxt_1_1inner__aligned__mode.html", null ], + [ "xt::inner_reference< ST >", "structxt_1_1inner__reference.html", null ], + [ "std::integral_constant", null, [ + [ "xt::has_simd_type< T >", "structxt_1_1has__simd__type.html", null ] + ] ], + [ "xt::invalid_type", "structxt_1_1invalid__type.html", null ], + [ "std::is_assignable", null, [ + [ "xt::can_assign< CT, RHS >", "structxt_1_1can__assign.html", [ + [ "xt::can_assign< xstrided_view< CT, S, L, FST >, RHS >", "structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html", null ] + ] ], + [ "xt::can_assign< LHS, RHS >", "structxt_1_1can__assign.html", null ] + ] ], + [ "std::is_base_of", null, [ + [ "xt::is_evaluation_strategy< T >", "structxt_1_1is__evaluation__strategy.html", null ] + ] ], + [ "detail::chunk_helper::is_chunked", null, [ + [ "xt::is_chunked_t< E >", "structxt_1_1is__chunked__t.html", null ] + ] ], + [ "xt::is_indexed_stepper< T >", "structxt_1_1is__indexed__stepper.html", null ], + [ "xt::is_indexed_stepper< xindexed_stepper< T, B > >", "structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "xt::is_narrowing_conversion< FROM, TO >", "structxt_1_1is__narrowing__conversion.html", null ], + [ "std::is_same", null, [ + [ "xt::is_xoptional_expression< E >", "structxt_1_1is__xoptional__expression.html", null ], + [ "xt::is_xtensor_expression< E >", "structxt_1_1is__xtensor__expression.html", null ] + ] ], + [ "xt::math::isfinite_fun", "structxt_1_1math_1_1isfinite__fun.html", null ], + [ "xt::math::isinf_fun", "structxt_1_1math_1_1isinf__fun.html", null ], + [ "xt::math::isnan_fun", "structxt_1_1math_1_1isnan__fun.html", null ], + [ "xt::math::lgamma_fun", "structxt_1_1math_1_1lgamma__fun.html", null ], + [ "xt::print_options::line_width", "classxt_1_1print__options_1_1line__width.html", null ], + [ "xt::linear_assigner< simd_assign >", "classxt_1_1linear__assigner.html", null ], + [ "xt::linear_assigner< false >", "classxt_1_1linear__assigner_3_01false_01_4.html", null ], + [ "xt::math::log10_fun", "structxt_1_1math_1_1log10__fun.html", null ], + [ "xt::math::log1p_fun", "structxt_1_1math_1_1log1p__fun.html", null ], + [ "xt::math::log2_fun", "structxt_1_1math_1_1log2__fun.html", null ], + [ "xt::math::log_fun", "structxt_1_1math_1_1log__fun.html", null ], + [ "xt::make_invalid_type< T >", "structxt_1_1make__invalid__type.html", null ], + [ "xt::make_void< T >", "structxt_1_1make__void.html", null ], + [ "xt::math::maximum< T >", "structxt_1_1math_1_1maximum.html", null ], + [ "xt::meta_identity< T >", "structxt_1_1meta__identity.html", null ], + [ "xt::math::minimum< T >", "structxt_1_1math_1_1minimum.html", null ], + [ "xt::missing_type", "structxt_1_1missing__type.html", null ], + [ "xt::math::nearbyint_fun", "structxt_1_1math_1_1nearbyint__fun.html", null ], + [ "xtl::negation", null, [ + [ "xt::has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >", "structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html", null ] + ] ], + [ "xt::nested_initializer_list< T, I >", "structxt_1_1nested__initializer__list.html", null ], + [ "xt::nested_initializer_list< T, 0 >", "structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html", null ], + [ "xt::no_ownership", "structxt_1_1no__ownership.html", null ], + [ "xt::noalias_proxy< A >", "classxt_1_1noalias__proxy.html", null ], + [ "xt::check_policy::none", "structxt_1_1check__policy_1_1none.html", null ], + [ "xt::math::norm_fun", "structxt_1_1math_1_1norm__fun.html", null ], + [ "xt::traits_detail::norm_of_array_elements_impl< T, integral, floating >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html", null ], + [ "xt::traits_detail::norm_of_array_elements_impl< long double, false, true >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html", null ], + [ "xt::traits_detail::norm_of_array_elements_impl< T, false, false >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html", null ], + [ "xt::traits_detail::norm_of_array_elements_impl< T, false, true >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html", null ], + [ "xt::traits_detail::norm_of_array_elements_impl< T, true, false >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html", null ], + [ "xt::traits_detail::norm_of_array_elements_impl< void *, false, false >", "structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html", null ], + [ "xt::traits_detail::norm_of_scalar_impl< T, scalar >", "structxt_1_1traits__detail_1_1norm__of__scalar__impl.html", null ], + [ "xt::traits_detail::norm_of_scalar_impl< T, false >", "structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html", null ], + [ "xt::traits_detail::norm_of_scalar_impl< T, true >", "structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html", null ], + [ "xt::traits_detail::norm_of_vector_impl< ARRAY >", "structxt_1_1traits__detail_1_1norm__of__vector__impl.html", null ], + [ "xt::traits_detail::norm_type_base< U >", "structxt_1_1traits__detail_1_1norm__type__base.html", null ], + [ "xt::traits_detail::norm_type_base< T >", "structxt_1_1traits__detail_1_1norm__type__base.html", [ + [ "xt::norm_type< T >", "structxt_1_1norm__type.html", null ], + [ "xt::squared_norm_type< T >", "structxt_1_1squared__norm__type.html", null ] + ] ], + [ "xt::numeric_constants< T >", "structxt_1_1numeric__constants.html", null ], + [ "xt::detail::option_base", null, [ + [ "xt::evaluation_strategy::immediate_type", "structxt_1_1evaluation__strategy_1_1immediate__type.html", null ], + [ "xt::evaluation_strategy::lazy_type", "structxt_1_1evaluation__strategy_1_1lazy__type.html", null ], + [ "xt::keep_dims_type", "structxt_1_1keep__dims__type.html", null ], + [ "xt::xinitial< T >", "structxt_1_1xinitial.html", null ] + ] ], + [ "xt::math::pow_fun", "structxt_1_1math_1_1pow__fun.html", null ], + [ "xt::print_options::precision", "classxt_1_1print__options_1_1precision.html", null ], + [ "xt::print_options::print_options_impl", "structxt_1_1print__options_1_1print__options__impl.html", null ], + [ "xt::promote_shape< S >", "structxt_1_1promote__shape.html", null ], + [ "xt::promote_strides< S >", "structxt_1_1promote__strides.html", null ], + [ "xt::math::rad2deg", "structxt_1_1math_1_1rad2deg.html", null ], + [ "xt::tracking_allocator< T, A, P >::rebind< U >", "structxt_1_1tracking__allocator_1_1rebind.html", null ], + [ "xt::rebind_container< X, C >", "structxt_1_1rebind__container.html", null ], + [ "xt::rebind_container< X, C< T, A > >", "structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html", null ], + [ "xt::rebind_container< X, C< T, N > >", "structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html", null ], + [ "xt::rebind_container< X, svector< T, N, A, B > >", "structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html", null ], + [ "xt::reducer_options< R, T >", "structxt_1_1reducer__options.html", null ], + [ "xt::math::remainder_fun", "structxt_1_1math_1_1remainder__fun.html", null ], + [ "xt::remove_class< T >", "structxt_1_1remove__class.html", null ], + [ "xt::remove_class< R(C::*)(Args...) const >", "structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html", null ], + [ "xt::remove_class< R(C::*)(Args...)>", "structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html", null ], + [ "xt_simd::revert_simd_traits< T >", "structxt__simd_1_1revert__simd__traits.html", null ], + [ "xt::math::rint_fun", "structxt_1_1math_1_1rint__fun.html", null ], + [ "xt::math::round_fun", "structxt_1_1math_1_1round__fun.html", null ], + [ "std::runtime_error", null, [ + [ "xt::broadcast_error", "classxt_1_1broadcast__error.html", null ], + [ "xt::concatenate_error", "classxt_1_1concatenate__error.html", null ], + [ "xt::transpose_error", "classxt_1_1transpose__error.html", null ] + ] ], + [ "xt::select_dim_mapping_type< T >", "structxt_1_1select__dim__mapping__type.html", null ], + [ "xt::select_dim_mapping_type< fixed_shape< I... > >", "structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html", null ], + [ "xt::select_dim_mapping_type< inner_shape_type >", "structxt_1_1select__dim__mapping__type.html", null ], + [ "select_expression_base_t", null, [ + [ "xt::xsemantic_base< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xchunked_array< chunk_storage > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xfunctor_adaptor< F, CT > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xfunctor_view< F, CT > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xindex_view< CT, I > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xmasked_view< CTD, CTM > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xoptional_assembly< VE, FE > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xoptional_assembly_adaptor< VEC, FEC > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< xview< CT, S... > >", "classxt_1_1xsemantic__base.html", null ], + [ "xt::xsemantic_base< D >", "classxt_1_1xsemantic__base.html", [ + [ "xt::xchunked_semantic< xchunked_array< chunk_storage > >", "classxt_1_1xchunked__semantic.html", [ + [ "xt::xchunked_array< chunk_storage >", "classxt_1_1xchunked__array.html", null ] + ] ], + [ "xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xarray_adaptor< EC, L, SC, Tag >", "classxt_1_1xarray__adaptor.html", null ] + ] ], + [ "xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xarray_container< EC, L, SC, Tag >", "classxt_1_1xarray__container.html", null ] + ] ], + [ "xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xfixed_adaptor< EC, S, L, SH, Tag >", "classxt_1_1xfixed__adaptor.html", null ] + ] ], + [ "xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xfixed_container< ET, S, L, SH, Tag >", "classxt_1_1xfixed__container.html", null ] + ] ], + [ "xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xfunctor_adaptor< F, CT >", "classxt_1_1xfunctor__adaptor.html", null ] + ] ], + [ "xt::xcontainer_semantic< xoptional_assembly< VE, FE > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xoptional_assembly< VE, FE >", "classxt_1_1xoptional__assembly.html", null ] + ] ], + [ "xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xoptional_assembly_adaptor< VEC, FEC >", "classxt_1_1xoptional__assembly__adaptor.html", null ] + ] ], + [ "xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xtensor_adaptor< EC, N, L, Tag >", "classxt_1_1xtensor__adaptor.html", null ] + ] ], + [ "xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xcontainer__semantic.html", [ + [ "xt::xtensor_container< EC, N, L, Tag >", "classxt_1_1xtensor__container.html", null ] + ] ], + [ "xt::xview_semantic< xfunctor_view< F, CT > >", "classxt_1_1xview__semantic.html", [ + [ "xt::xfunctor_view< F, CT >", "classxt_1_1xfunctor__view.html", null ] + ] ], + [ "xt::xview_semantic< xindex_view< CT, I > >", "classxt_1_1xview__semantic.html", [ + [ "xt::xindex_view< CT, I >", "classxt_1_1xindex__view.html", null ] + ] ], + [ "xt::xview_semantic< xmasked_view< CTD, CTM > >", "classxt_1_1xview__semantic.html", [ + [ "xt::xmasked_view< CTD, CTM >", "classxt_1_1xmasked__view.html", null ] + ] ], + [ "xt::xview_semantic< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xview__semantic.html", [ + [ "xt::xtensor_view< EC, N, L, Tag >", "classxt_1_1xtensor__view.html", null ] + ] ], + [ "xt::xview_semantic< xview< CT, S... > >", "classxt_1_1xview__semantic.html", [ + [ "xt::xview< CT, S >", "classxt_1_1xview.html", null ] + ] ], + [ "xt::xchunked_semantic< D >", "classxt_1_1xchunked__semantic.html", null ], + [ "xt::xcontainer_semantic< D >", "classxt_1_1xcontainer__semantic.html", null ], + [ "xt::xview_semantic< D >", "classxt_1_1xview__semantic.html", [ + [ "xt::xstrided_view< CT, shape_type >", "classxt_1_1xstrided__view.html", null ], + [ "xt::xdynamic_view< CT, S, L, FST >", "classxt_1_1xdynamic__view.html", null ], + [ "xt::xstrided_view< CT, S, L, FST >", "classxt_1_1xstrided__view.html", null ] + ] ] + ] ] + ] ], + [ "xt::select_iterable_base< L1, L2, T >", "structxt_1_1select__iterable__base.html", null ], + [ "select_iterable_base_t", null, [ + [ "xt::xstrided_view< CT, shape_type >", "classxt_1_1xstrided__view.html", null ], + [ "xt::xstrided_view< CT, S, L, FST >", "classxt_1_1xstrided__view.html", null ] + ] ], + [ "xt::select_layout< L, S >", "structxt_1_1select__layout.html", null ], + [ "xt::sequence_view< E, Start, End >", "classxt_1_1sequence__view.html", null ], + [ "xt::detail::shape_storage< S >", null, [ + [ "xt::xiterator< St, S, L >", "classxt_1_1xiterator.html", null ] + ] ], + [ "xt::math::sign_fun", "structxt_1_1math_1_1sign__fun.html", null ], + [ "xt::math::sign_impl< T >", "structxt_1_1math_1_1sign__impl.html", null ], + [ "xt::math::sign_impl< xtl::xoptional< T, B > >", "structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "xt_simd::simd_traits< T >", "structxt__simd_1_1simd__traits.html", null ], + [ "xt::math::sin_fun", "structxt_1_1math_1_1sin__fun.html", null ], + [ "xt::math::sinh_fun", "structxt_1_1math_1_1sinh__fun.html", null ], + [ "xt::math::sqrt_fun", "structxt_1_1math_1_1sqrt__fun.html", null ], + [ "xt::static_dimension< S >", "structxt_1_1static__dimension.html", null ], + [ "xt::static_string", "structxt_1_1static__string.html", null ], + [ "xt::stepper_assigner< E1, E2, L >", "classxt_1_1stepper__assigner.html", null ], + [ "xt::stepper_tools< L >", "structxt_1_1stepper__tools.html", null ], + [ "xt::strided_loop_assigner< simd >", "classxt_1_1strided__loop__assigner.html", null ], + [ "xt::svector< T, N, A, Init >", "classxt_1_1svector.html", null ], + [ "xt::svector< size_type >", "classxt_1_1svector.html", null ], + [ "xt::math::tan_fun", "structxt_1_1math_1_1tan__fun.html", null ], + [ "xt::math::tanh_fun", "structxt_1_1math_1_1tanh__fun.html", null ], + [ "xt::temporary_container< C >", "structxt_1_1temporary__container.html", null ], + [ "xt::temporary_container< xbuffer_adaptor< CP, O, A > >", "structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "xt::temporary_container< xiterator_adaptor< I, CI > >", "structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "xt::temporary_container< xiterator_owner_adaptor< C, IG > >", "structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "xt::temporary_type< T, class >", "structxt_1_1temporary__type.html", null ], + [ "xt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >", "structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html", null ], + [ "xt::temporary_type_from_tag< Tag, T >", "structxt_1_1temporary__type__from__tag.html", null ], + [ "xt::temporary_type_from_tag< xtensor_expression_tag, T >", "structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html", null ], + [ "xt::math::tgamma_fun", "structxt_1_1math_1_1tgamma__fun.html", null ], + [ "xt::print_options::threshold", "classxt_1_1print__options_1_1threshold.html", null ], + [ "std::true_type", null, [ + [ "xt::is_contiguous_container< I >", "structxt_1_1is__contiguous__container.html", [ + [ "xt::is_contiguous_container< xiterator_adaptor< I, CI > >", "structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ] + ] ], + [ "xt::is_contiguous_container< IG::iterator >", "structxt_1_1is__contiguous__container.html", [ + [ "xt::is_contiguous_container< xiterator_owner_adaptor< C, IG > >", "structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ] + ] ], + [ "xt::forbid_simd< const std::vector< bool, A > >", "structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html", null ], + [ "xt::forbid_simd< const xtl::xdynamic_bitset< B, A > >", "structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html", null ], + [ "xt::forbid_simd< std::vector< bool, A > >", "structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html", null ], + [ "xt::forbid_simd< xtl::xdynamic_bitset< B, A > >", "structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html", null ], + [ "xt::has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >", "structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html", null ], + [ "xt::has_data_interface< E, void_t< decltype(std::declval< E >().data())> >", "structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html", null ], + [ "xt::has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >", "structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html", null ], + [ "xt::has_strides< E, void_t< decltype(std::declval< E >().strides())> >", "structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html", null ], + [ "xt::is_contiguous_container< C >", "structxt_1_1is__contiguous__container.html", null ], + [ "xt::is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >", "structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.html", null ], + [ "xt::is_not_xdummy_iterator< T >", "structxt_1_1is__not__xdummy__iterator.html", null ], + [ "xt::is_reducer_options_impl< std::tuple< X... > >", "structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "xt::reducer_options< R, T >::initial_tester< const xinitial< X > >", "structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html", null ], + [ "xt::reducer_options< R, T >::initial_tester< xinitial< X > >", "structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html", null ], + [ "xt_simd::simd_condition< T1, T2 >", "structxt__simd_1_1simd__condition.html", null ] + ] ], + [ "xt::math::trunc_fun", "structxt_1_1math_1_1trunc__fun.html", null ], + [ "std::tuple", null, [ + [ "xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >", "structxt_1_1xaccumulator__functor.html", null ], + [ "xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >", "structxt_1_1xreducer__functors.html", null ] + ] ], + [ "xt::tuple_idx_of< T, Tuple >", "structxt_1_1tuple__idx__of.html", null ], + [ "xt::tuple_idx_of_impl< I, T, Tuple >", "structxt_1_1tuple__idx__of__impl.html", null ], + [ "xt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html", null ], + [ "xt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html", null ], + [ "xt::tuple_idx_of_impl< I, T, std::tuple<> >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html", null ], + [ "detail::tensor_view_simd_helper::type", null, [ + [ "xt::has_simd_interface< xtensor_view< EC, N, L, Tag > >", "structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt_simd::unaligned_mode", "structxt__simd_1_1unaligned__mode.html", null ], + [ "xt::uvector< T, A >", "classxt_1_1uvector.html", null ], + [ "xt::convolve_mode::valid", "structxt_1_1convolve__mode_1_1valid.html", null ], + [ "xt::view_temporary_type< E, SL >", "structxt_1_1view__temporary__type.html", null ], + [ "xt::xall_tag", "structxt_1_1xall__tag.html", null ], + [ "xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >", "structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html", null ], + [ "extension::xarray_adaptor_base_t", null, [ + [ "xt::xarray_adaptor< EC, L, SC, Tag >", "classxt_1_1xarray__adaptor.html", null ] + ] ], + [ "xt::extension::xarray_container_base< EC, L, SC, Tag >", "structxt_1_1extension_1_1xarray__container__base.html", null ], + [ "xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag >", "structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html", null ], + [ "xt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag >", "structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html", null ], + [ "extension::xarray_container_base_t", null, [ + [ "xt::xarray_container< EC, L, SC, Tag >", "classxt_1_1xarray__container.html", null ] + ] ], + [ "xt::extension::xarray_optional_traits< EC, L, SC >", "structxt_1_1extension_1_1xarray__optional__traits.html", [ + [ "xt::extension::xarray_adaptor_optional_traits< EC, L, SC >", "structxt_1_1extension_1_1xarray__adaptor__optional__traits.html", null ], + [ "xt::extension::xarray_container_optional_traits< EC, L, SC >", "structxt_1_1extension_1_1xarray__container__optional__traits.html", null ] + ] ], + [ "xt::xassign_traits< E1, E2 >", "classxt_1_1xassign__traits.html", null ], + [ "xt::xaxis_iterator< CT >", "classxt_1_1xaxis__iterator.html", null ], + [ "xt::xaxis_slice_iterator< CT >", "classxt_1_1xaxis__slice__iterator.html", null ], + [ "xt::xblockwise_reducer< CT, F, X, O >", "classxt_1_1xblockwise__reducer.html", null ], + [ "xt::extension::xbroadcast_base_impl< Tag, CT, X >", "structxt_1_1extension_1_1xbroadcast__base__impl.html", null ], + [ "xt::extension::xbroadcast_base_impl< xexpression_tag_t< CT >, CT, X >", "structxt_1_1extension_1_1xbroadcast__base__impl.html", [ + [ "xt::extension::xbroadcast_base< CT, X >", "structxt_1_1extension_1_1xbroadcast__base.html", null ] + ] ], + [ "xt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X >", "structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "xt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X >", "structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "extension::xbroadcast_base_t", null, [ + [ "xt::xbroadcast< CT, X >", "classxt_1_1xbroadcast.html", null ] + ] ], + [ "xt::xbuffer_adaptor_base< D >", "classxt_1_1xbuffer__adaptor__base.html", null ], + [ "xt::xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >", "classxt_1_1xbuffer__adaptor__base.html", [ + [ "xt::xbuffer_adaptor< CP, O, A >", "classxt_1_1xbuffer__adaptor.html", null ] + ] ], + [ "xt::xbuffer_adaptor_base< xiterator_adaptor< I, CI > >", "classxt_1_1xbuffer__adaptor__base.html", [ + [ "xt::xiterator_adaptor< I, CI >", "classxt_1_1xiterator__adaptor.html", null ] + ] ], + [ "xt::xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >", "classxt_1_1xbuffer__adaptor__base.html", [ + [ "xt::xiterator_owner_adaptor< C, IG >", "classxt_1_1xiterator__owner__adaptor.html", null ] + ] ], + [ "xt::xchunked_assigner< T, chunk_storage >", "classxt_1_1xchunked__assigner.html", null ], + [ "xt::xchunked_view< E >", "classxt_1_1xchunked__view.html", null ], + [ "xt::xchunked_view< const std::decay_t< CT > & >", "classxt_1_1xchunked__view.html", null ], + [ "xt::xclosure< E, EN >", "structxt_1_1xclosure.html", null ], + [ "xt::xclosure< E, disable_xexpression< std::decay_t< E > > >", "structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html", null ], + [ "xt::xclosure< xshared_expression< E >, std::enable_if_t< true > >", "structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html", null ], + [ "xt::xconst_accessible< D >", "classxt_1_1xconst__accessible.html", [ + [ "xt::xaccessible< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xchunked_array< chunk_storage > >", "classxt_1_1xaccessible.html", [ + [ "xt::xchunked_array< chunk_storage >", "classxt_1_1xchunked__array.html", null ] + ] ], + [ "xt::xaccessible< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xfunctor_adaptor< F, CT > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xfunctor_view< F, CT > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xmasked_view< CTD, CTM > >", "classxt_1_1xaccessible.html", [ + [ "xt::xmasked_view< CTD, CTM >", "classxt_1_1xmasked__view.html", null ] + ] ], + [ "xt::xaccessible< xreducer< F, CT, X, O > >", "classxt_1_1xaccessible.html", [ + [ "xt::xreducer< F, CT, X, O >", "classxt_1_1xreducer.html", null ] + ] ], + [ "xt::xaccessible< xscalar< CT > >", "classxt_1_1xaccessible.html", [ + [ "xt::xscalar< CT >", "classxt_1_1xscalar.html", null ] + ] ], + [ "xt::xaccessible< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xaccessible.html", null ], + [ "xt::xaccessible< xview< CT, S... > >", "classxt_1_1xaccessible.html", [ + [ "xt::xview< CT, S >", "classxt_1_1xview.html", null ] + ] ], + [ "xt::xaccessible< D >", "classxt_1_1xaccessible.html", [ + [ "xt::xcontainer< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xcontainer.html", [ + [ "xt::xfixed_adaptor< EC, S, L, SH, Tag >", "classxt_1_1xfixed__adaptor.html", null ] + ] ], + [ "xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xcontainer.html", [ + [ "xt::xfixed_container< ET, S, L, SH, Tag >", "classxt_1_1xfixed__container.html", null ] + ] ], + [ "xt::xcontainer< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xfunctor_applier_base< xfunctor_adaptor< F, CT > >", "classxt_1_1xfunctor__applier__base.html", [ + [ "xt::xfunctor_adaptor< F, CT >", "classxt_1_1xfunctor__adaptor.html", null ] + ] ], + [ "xt::xfunctor_applier_base< xfunctor_view< F, CT > >", "classxt_1_1xfunctor__applier__base.html", [ + [ "xt::xfunctor_view< F, CT >", "classxt_1_1xfunctor__view.html", null ] + ] ], + [ "xt::xcontainer< D >", "classxt_1_1xcontainer.html", [ + [ "xt::xstrided_container< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xstrided__container.html", [ + [ "xt::xarray_adaptor< EC, L, SC, Tag >", "classxt_1_1xarray__adaptor.html", null ] + ] ], + [ "xt::xstrided_container< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xstrided__container.html", [ + [ "xt::xarray_container< EC, L, SC, Tag >", "classxt_1_1xarray__container.html", null ] + ] ], + [ "xt::xstrided_container< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xstrided__container.html", [ + [ "xt::xtensor_adaptor< EC, N, L, Tag >", "classxt_1_1xtensor__adaptor.html", null ] + ] ], + [ "xt::xstrided_container< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xstrided__container.html", [ + [ "xt::xtensor_container< EC, N, L, Tag >", "classxt_1_1xtensor__container.html", null ] + ] ], + [ "xt::xstrided_container< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xstrided__container.html", [ + [ "xt::xtensor_view< EC, N, L, Tag >", "classxt_1_1xtensor__view.html", null ] + ] ], + [ "xt::xstrided_container< D >", "classxt_1_1xstrided__container.html", null ] + ] ], + [ "xt::xfunctor_applier_base< D >", "classxt_1_1xfunctor__applier__base.html", null ], + [ "xt::xstrided_view_base< D >", "classxt_1_1xstrided__view__base.html", [ + [ "xt::xstrided_view< CT, shape_type >", "classxt_1_1xstrided__view.html", null ], + [ "xt::xdynamic_view< CT, S, L, FST >", "classxt_1_1xdynamic__view.html", null ], + [ "xt::xstrided_view< CT, S, L, FST >", "classxt_1_1xstrided__view.html", null ] + ] ] + ] ] + ] ], + [ "xt::xconst_accessible< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xbroadcast< CT, X > >", "classxt_1_1xconst__accessible.html", [ + [ "xt::xbroadcast< CT, X >", "classxt_1_1xbroadcast.html", null ] + ] ], + [ "xt::xconst_accessible< xchunked_array< chunk_storage > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xfunction< F, CT... > >", "classxt_1_1xconst__accessible.html", [ + [ "xt::xfunction< F, CT >", "classxt_1_1xfunction.html", null ] + ] ], + [ "xt::xconst_accessible< xfunctor_adaptor< F, CT > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xfunctor_view< F, CT > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xgenerator< F, R, S > >", "classxt_1_1xconst__accessible.html", [ + [ "xt::xgenerator< F, R, S >", "classxt_1_1xgenerator.html", null ] + ] ], + [ "xt::xconst_accessible< xmasked_view< CTD, CTM > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xreducer< F, CT, X, O > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xrepeat< CT, R > >", "classxt_1_1xconst__accessible.html", [ + [ "xt::xrepeat< CT, R >", "classxt_1_1xrepeat.html", null ] + ] ], + [ "xt::xconst_accessible< xscalar< CT > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_accessible< xview< CT, S... > >", "classxt_1_1xconst__accessible.html", null ], + [ "xt::xconst_iterable< D >", "classxt_1_1xconst__iterable.html", [ + [ "xt::xiterable< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xchunked_array< chunk_storage > >", "classxt_1_1xiterable.html", [ + [ "xt::xchunked_array< chunk_storage >", "classxt_1_1xchunked__array.html", null ] + ] ], + [ "xt::xiterable< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xindex_view< CT, I > >", "classxt_1_1xiterable.html", [ + [ "xt::xindex_view< CT, I >", "classxt_1_1xindex__view.html", null ] + ] ], + [ "xt::xiterable< xmasked_view< CTD, CTM > >", "classxt_1_1xiterable.html", [ + [ "xt::xmasked_view< CTD, CTM >", "classxt_1_1xmasked__view.html", null ] + ] ], + [ "xt::xiterable< xoptional_assembly< VE, FE > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xoptional_assembly_adaptor< VEC, FEC > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xscalar< CT > >", "classxt_1_1xiterable.html", [ + [ "xt::xscalar< CT >", "classxt_1_1xscalar.html", null ] + ] ], + [ "xt::xiterable< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xiterable.html", null ], + [ "xt::xiterable< D >", "classxt_1_1xiterable.html", [ + [ "xt::xcontiguous_iterable< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xcontiguous_iterable< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xcontiguous_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xcontiguous_iterable< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xcontiguous_iterable< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xcontiguous_iterable< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xcontiguous_iterable< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xcontiguous__iterable.html", null ], + [ "xt::xoptional_assembly_base< xoptional_assembly< VE, FE > >", "classxt_1_1xoptional__assembly__base.html", [ + [ "xt::xoptional_assembly< VE, FE >", "classxt_1_1xoptional__assembly.html", null ] + ] ], + [ "xt::xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >", "classxt_1_1xoptional__assembly__base.html", [ + [ "xt::xoptional_assembly_adaptor< VEC, FEC >", "classxt_1_1xoptional__assembly__adaptor.html", null ] + ] ], + [ "xt::xcontiguous_iterable< D >", "classxt_1_1xcontiguous__iterable.html", [ + [ "xt::xcontainer< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xcontainer.html", null ], + [ "xt::xcontainer< D >", "classxt_1_1xcontainer.html", null ] + ] ], + [ "xt::xdynamic_view< CT, S, L, FST >", "classxt_1_1xdynamic__view.html", null ], + [ "xt::xoptional_assembly_base< D >", "classxt_1_1xoptional__assembly__base.html", null ] + ] ] + ] ], + [ "xt::xconst_iterable< xarray_adaptor< EC, L, SC, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xarray_container< EC, L, SC, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xbroadcast< CT, X > >", "classxt_1_1xconst__iterable.html", [ + [ "xt::xbroadcast< CT, X >", "classxt_1_1xbroadcast.html", null ] + ] ], + [ "xt::xconst_iterable< xchunked_array< chunk_storage > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xfixed_container< ET, S, L, SH, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xfunction< F, CT... > >", "classxt_1_1xconst__iterable.html", [ + [ "xt::xfunction< F, CT >", "classxt_1_1xfunction.html", null ] + ] ], + [ "xt::xconst_iterable< xgenerator< F, R, S > >", "classxt_1_1xconst__iterable.html", [ + [ "xt::xgenerator< F, R, S >", "classxt_1_1xgenerator.html", null ] + ] ], + [ "xt::xconst_iterable< xindex_view< CT, I > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xmasked_view< CTD, CTM > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xoptional_assembly< VE, FE > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xoptional_assembly_adaptor< VEC, FEC > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xreducer< F, CT, X, O > >", "classxt_1_1xconst__iterable.html", [ + [ "xt::xreducer< F, CT, X, O >", "classxt_1_1xreducer.html", null ] + ] ], + [ "xt::xconst_iterable< xrepeat< CT, R > >", "classxt_1_1xconst__iterable.html", [ + [ "xt::xrepeat< CT, R >", "classxt_1_1xrepeat.html", null ] + ] ], + [ "xt::xconst_iterable< xscalar< CT > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xtensor_adaptor< EC, N, L, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xtensor_container< EC, N, L, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xconst_iterable< xtensor_view< EC, N, L, Tag > >", "classxt_1_1xconst__iterable.html", null ], + [ "xt::xcontainer_inner_types< D >", "structxt_1_1xcontainer__inner__types.html", null ], + [ "xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xbroadcast< CT, X > >", "structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xchunked_array< chunk_storage > >", "structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >", "structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xfunction< F, CT... > >", "structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >", "structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xfunctor_view< F, CT > >", "structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xgenerator< C, R, S > >", "structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xindex_view< CT, I > >", "structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >", "structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >", "structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >", "structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xreducer< F, CT, X, O > >", "structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xrepeat< CT, R > >", "structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xscalar< CT > >", "structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >", "structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xt::xcontainer_inner_types< xview< CT, S... > >", "structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html", null ], + [ "xt::xcontainer_iterable_types< D >", "structxt_1_1xcontainer__iterable__types.html", null ], + [ "xt::xcontainer_iterable_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcontainer_iterable_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcontainer_iterable_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcontainer_iterable_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcontainer_iterable_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcontainer_iterable_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcontainer_iterable_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xcontainer__iterable__types.html", [ + [ "xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ] + ] ], + [ "xt::xcsv_config", "structxt_1_1xcsv__config.html", null ], + [ "xt::extension::xdynamic_view_base_impl< Tag, CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base__impl.html", null ], + [ "xt::extension::xdynamic_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base__impl.html", [ + [ "xt::extension::xdynamic_view_base< CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base.html", null ] + ] ], + [ "xt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "xt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "extension::xdynamic_view_base_t", null, [ + [ "xt::xdynamic_view< CT, S, L, FST >", "classxt_1_1xdynamic__view.html", null ] + ] ], + [ "xt::xellipsis_tag", "structxt_1_1xellipsis__tag.html", null ], + [ "xt::xexpression< D >", "classxt_1_1xexpression.html", [ + [ "xt::xsharable_expression< xbroadcast< CT, X > >", "classxt_1_1xsharable__expression.html", [ + [ "xt::xbroadcast< CT, X >", "classxt_1_1xbroadcast.html", null ] + ] ], + [ "xt::xsharable_expression< xfunction< F, CT... > >", "classxt_1_1xsharable__expression.html", [ + [ "xt::xfunction< F, CT >", "classxt_1_1xfunction.html", null ] + ] ], + [ "xt::xsharable_expression< xgenerator< F, R, S > >", "classxt_1_1xsharable__expression.html", [ + [ "xt::xgenerator< F, R, S >", "classxt_1_1xgenerator.html", null ] + ] ], + [ "xt::xsharable_expression< xreducer< F, CT, X, O > >", "classxt_1_1xsharable__expression.html", [ + [ "xt::xreducer< F, CT, X, O >", "classxt_1_1xreducer.html", null ] + ] ], + [ "xt::xsharable_expression< xrepeat< CT, R > >", "classxt_1_1xsharable__expression.html", [ + [ "xt::xrepeat< CT, R >", "classxt_1_1xrepeat.html", null ] + ] ], + [ "xt::xsharable_expression< xscalar< CT > >", "classxt_1_1xsharable__expression.html", [ + [ "xt::xscalar< CT >", "classxt_1_1xscalar.html", null ] + ] ], + [ "xt::xsharable_expression< D >", "classxt_1_1xsharable__expression.html", null ] + ] ], + [ "xt::xexpression< xbroadcast< CT, X > >", "classxt_1_1xexpression.html", null ], + [ "xt::xexpression< xfunction< F, CT... > >", "classxt_1_1xexpression.html", null ], + [ "xt::xexpression< xgenerator< F, R, S > >", "classxt_1_1xexpression.html", null ], + [ "xt::xexpression< xreducer< F, CT, X, O > >", "classxt_1_1xexpression.html", null ], + [ "xt::xexpression< xrepeat< CT, R > >", "classxt_1_1xexpression.html", null ], + [ "xt::xexpression< xscalar< CT > >", "classxt_1_1xexpression.html", null ], + [ "xt::xexpression< xshared_expression< E > >", "classxt_1_1xexpression.html", [ + [ "xt::xshared_expression< E >", "classxt_1_1xshared__expression.html", null ] + ] ], + [ "xt::xexpression_assigner_base< Tag >", "classxt_1_1xexpression__assigner__base.html", [ + [ "xt::xexpression_assigner< Tag >", "classxt_1_1xexpression__assigner.html", null ] + ] ], + [ "xt::xexpression_assigner_base< xoptional_expression_tag >", "classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html", null ], + [ "xt::xexpression_assigner_base< xtensor_expression_tag >", "classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html", null ], + [ "xt::xexpression_holder", "classxt_1_1xexpression__holder.html", null ], + [ "xt::xexpression_tag< T >", "structxt_1_1xexpression__tag.html", null ], + [ "xt::xfiltration< ECT, CCT >", "classxt_1_1xfiltration.html", null ], + [ "xt::extension::xfunction_base_impl< Tag, F, CT >", "structxt_1_1extension_1_1xfunction__base__impl.html", null ], + [ "xt::extension::xfunction_base_impl< xexpression_tag_t< CT... >, F, CT... >", "structxt_1_1extension_1_1xfunction__base__impl.html", [ + [ "xt::extension::xfunction_base< F, CT >", "structxt_1_1extension_1_1xfunction__base.html", null ] + ] ], + [ "xt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... >", "structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html", null ], + [ "xt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... >", "structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html", null ], + [ "extension::xfunction_base_t", null, [ + [ "xt::xfunction< F, CT >", "classxt_1_1xfunction.html", null ] + ] ], + [ "xt::detail::xfunction_cache_impl< promote::type, promote >", null, [ + [ "xt::xfunction_cache< promote >", "structxt_1_1xfunction__cache.html", null ] + ] ], + [ "xt::xfunction_stepper< F, CT >", "classxt_1_1xfunction__stepper.html", null ], + [ "xt::xfunctor_stepper< F, ST >", "classxt_1_1xfunctor__stepper.html", null ], + [ "xt::extension::xfunctor_view_base_impl< Tag, F, CT >", "structxt_1_1extension_1_1xfunctor__view__base__impl.html", null ], + [ "xt::extension::xfunctor_view_base_impl< xexpression_tag_t< CT >, F, CT >", "structxt_1_1extension_1_1xfunctor__view__base__impl.html", [ + [ "xt::extension::xfunctor_view_base< F, CT >", "structxt_1_1extension_1_1xfunctor__view__base.html", null ] + ] ], + [ "xt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT >", "structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html", null ], + [ "xt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT >", "structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html", null ], + [ "extension::xfunctor_view_base_t", null, [ + [ "xt::xfunctor_adaptor< F, CT >", "classxt_1_1xfunctor__adaptor.html", null ], + [ "xt::xfunctor_view< F, CT >", "classxt_1_1xfunctor__view.html", null ] + ] ], + [ "xt::xfunctor_view_temporary_type< F, E >", "structxt_1_1xfunctor__view__temporary__type.html", null ], + [ "xt::extension::xgenerator_base_impl< Tag, F, R, S >", "structxt_1_1extension_1_1xgenerator__base__impl.html", null ], + [ "xt::extension::xgenerator_base_impl< xexpression_tag_t< R >, F, R, S >", "structxt_1_1extension_1_1xgenerator__base__impl.html", [ + [ "xt::extension::xgenerator_base< F, R, S >", "structxt_1_1extension_1_1xgenerator__base.html", null ] + ] ], + [ "xt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S >", "structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html", null ], + [ "xt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S >", "structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html", null ], + [ "extension::xgenerator_base_t", null, [ + [ "xt::xgenerator< F, R, S >", "classxt_1_1xgenerator.html", null ] + ] ], + [ "xt::extension::xindex_view_base_impl< Tag, CT, I >", "structxt_1_1extension_1_1xindex__view__base__impl.html", null ], + [ "xt::extension::xindex_view_base_impl< xexpression_tag_t< CT >, CT, I >", "structxt_1_1extension_1_1xindex__view__base__impl.html", [ + [ "xt::extension::xindex_view_base< CT, I >", "structxt_1_1extension_1_1xindex__view__base.html", null ] + ] ], + [ "xt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I >", "structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html", null ], + [ "xt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I >", "structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html", null ], + [ "extension::xindex_view_base_t", null, [ + [ "xt::xindex_view< CT, I >", "classxt_1_1xindex__view.html", null ] + ] ], + [ "xt::xindexed_stepper< E, is_const >", "classxt_1_1xindexed__stepper.html", null ], + [ "xt::xiterable_inner_types< D >", "structxt_1_1xiterable__inner__types.html", null ], + [ "xt::xiterable_inner_types< xbroadcast< CT, X > >", "structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xchunked_array< chunk_storage > >", "structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >", "structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xfunction< F, CT... > >", "structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xgenerator< C, R, S > >", "structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xindex_view< CT, I > >", "structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xmasked_view< CTD, CTM > >", "structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xoptional_assembly< VE, FE > >", "structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >", "structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xreducer< F, CT, X, O > >", "structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xrepeat< CT, R > >", "structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xscalar< CT > >", "structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >", "structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xt::xiterable_inner_types< xview< CT, S... > >", "structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html", null ], + [ "xt::xmasked_value< T, B >", "classxt_1_1xmasked__value.html", null ], + [ "xt::xmasked_view_stepper< D, is_const >", "classxt_1_1xmasked__view__stepper.html", null ], + [ "xt::xmultiindex_iterator< S >", "classxt_1_1xmultiindex__iterator.html", null ], + [ "xt::xnewaxis_tag", "structxt_1_1xnewaxis__tag.html", null ], + [ "xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >", "structxt_1_1xoptional__assembly__linear__iterator__traits.html", null ], + [ "xt::xoptional_assembly_stepper< D, is_const >", "classxt_1_1xoptional__assembly__stepper.html", null ], + [ "xt::xoptional_assembly_storage< VE, FE >", "classxt_1_1xoptional__assembly__storage.html", null ], + [ "xt::extension::xoptional_empty_base< D >", "classxt_1_1extension_1_1xoptional__empty__base.html", null ], + [ "xt::extension::xoptional_empty_base< T::derived_type >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xcontainer_optional_base< T >", "classxt_1_1extension_1_1xcontainer__optional__base.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xbroadcast< CT, X > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xbroadcast_optional< CT, X >", "classxt_1_1extension_1_1xbroadcast__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xdynamic_view< CT, S, L, FST > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xdynamic_view_optional< CT, S, L, FST >", "classxt_1_1extension_1_1xdynamic__view__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xfunction< F, CT... > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xfunction_optional_base< F, CT >", "classxt_1_1extension_1_1xfunction__optional__base.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xfunctor_view< F, CT > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xfunctor_view_optional< F, CT >", "classxt_1_1extension_1_1xfunctor__view__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xgenerator< F, R, S > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xgenerator_optional< F, R, S >", "classxt_1_1extension_1_1xgenerator__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xindex_view< CT, I > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xindex_view_optional< CT, I >", "classxt_1_1extension_1_1xindex__view__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xreducer< F, CT, X, O > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xreducer_optional< F, CT, X, O >", "classxt_1_1extension_1_1xreducer__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xrepeat< CT, X > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xrepeat_optional< CT, X >", "classxt_1_1extension_1_1xrepeat__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xscalar< CT > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xscalar_optional_base< CT >", "classxt_1_1extension_1_1xscalar__optional__base.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xstrided_view< CT, S, L, FST > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xstrided_view_optional< CT, S, L, FST >", "classxt_1_1extension_1_1xstrided__view__optional.html", null ] + ] ], + [ "xt::extension::xoptional_empty_base< xview< CT, S... > >", "classxt_1_1extension_1_1xoptional__empty__base.html", [ + [ "xt::extension::xview_optional< CT, S >", "classxt_1_1extension_1_1xview__optional.html", null ] + ] ], + [ "xt::xoptional_expression_tag", "structxt_1_1xoptional__expression__tag.html", null ], + [ "xt::xproxy_inner_types< R >", "structxt_1_1xproxy__inner__types.html", null ], + [ "xtl::xrandom_access_iterator_base", null, [ + [ "xt::xbounded_iterator< It, BIt >", "classxt_1_1xbounded__iterator.html", null ], + [ "xt::xdummy_iterator< is_const, CT >", "classxt_1_1xdummy__iterator.html", null ], + [ "xt::xfunction_iterator< F, CT >", "classxt_1_1xfunction__iterator.html", null ], + [ "xt::xfunctor_iterator< F, IT >", "classxt_1_1xfunctor__iterator.html", null ], + [ "xt::xiterator< St, S, L >", "classxt_1_1xiterator.html", null ] + ] ], + [ "xtl::xrandom_access_iterator_base2", null, [ + [ "xt::xoptional_assembly_linear_iterator< VE, FE, is_const >", "classxt_1_1xoptional__assembly__linear__iterator.html", null ] + ] ], + [ "xt::xrange_adaptor< A, B, C >", "structxt_1_1xrange__adaptor.html", null ], + [ "xt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >", "structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html", null ], + [ "extension::xreducer_base_t", null, [ + [ "xt::xreducer< F, CT, X, O >", "classxt_1_1xreducer.html", null ] + ] ], + [ "xt::xreducer_shape_type< ST, X, O >", "structxt_1_1xreducer__shape__type.html", null ], + [ "xt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html", null ], + [ "xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html", null ], + [ "xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html", null ], + [ "xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >", "structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html", null ], + [ "xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >", "structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html", null ], + [ "xt::xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t< X >, keep_dims >", "structxt_1_1xreducer__shape__type.html", null ], + [ "xt::xreducer_stepper< F, CT, X, O >", "classxt_1_1xreducer__stepper.html", null ], + [ "xt::extension::xrepeat_base_impl< Tag, CT, X >", "structxt_1_1extension_1_1xrepeat__base__impl.html", null ], + [ "xt::extension::xrepeat_base_impl< xexpression_tag_t< CT >, CT, X >", "structxt_1_1extension_1_1xrepeat__base__impl.html", [ + [ "xt::extension::xrepeat_base< CT, X >", "structxt_1_1extension_1_1xrepeat__base.html", null ] + ] ], + [ "xt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X >", "structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "xt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X >", "structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html", null ], + [ "extension::xrepeat_base_t", null, [ + [ "xt::xrepeat< CT, R >", "classxt_1_1xrepeat.html", null ] + ] ], + [ "xt::xrepeat_stepper< S, R >", "classxt_1_1xrepeat__stepper.html", null ], + [ "xt::extension::xscalar_base_impl< Tag, CT >", "structxt_1_1extension_1_1xscalar__base__impl.html", null ], + [ "xt::extension::xscalar_base_impl< get_expression_tag_t< std::decay_t< CT > >, CT >", "structxt_1_1extension_1_1xscalar__base__impl.html", [ + [ "xt::extension::xscalar_base< CT >", "structxt_1_1extension_1_1xscalar__base.html", null ] + ] ], + [ "xt::extension::xscalar_base_impl< xoptional_expression_tag, CT >", "structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html", null ], + [ "xt::extension::xscalar_base_impl< xtensor_expression_tag, CT >", "structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html", null ], + [ "extension::xscalar_base_t", null, [ + [ "xt::xscalar< CT >", "classxt_1_1xscalar.html", null ] + ] ], + [ "xt::extension::xscalar_optional_traits< CT >", "structxt_1_1extension_1_1xscalar__optional__traits.html", null ], + [ "xt::xscalar_stepper< is_const, CT >", "classxt_1_1xscalar__stepper.html", null ], + [ "xt::xslice< D >", "classxt_1_1xslice.html", null ], + [ "xt::xslice< xall< T > >", "classxt_1_1xslice.html", [ + [ "xt::xall< T >", "classxt_1_1xall.html", null ] + ] ], + [ "xt::xslice< xdrop_slice< T > >", "classxt_1_1xslice.html", [ + [ "xt::xdrop_slice< T >", "classxt_1_1xdrop__slice.html", null ] + ] ], + [ "xt::xslice< xfake_slice< T > >", "classxt_1_1xslice.html", null ], + [ "xt::xslice< xkeep_slice< T > >", "classxt_1_1xslice.html", [ + [ "xt::xkeep_slice< T >", "classxt_1_1xkeep__slice.html", null ] + ] ], + [ "xt::xslice< xnewaxis< T > >", "classxt_1_1xslice.html", [ + [ "xt::xnewaxis< T >", "classxt_1_1xnewaxis.html", null ] + ] ], + [ "xt::xslice< xrange< T > >", "classxt_1_1xslice.html", [ + [ "xt::xrange< T >", "classxt_1_1xrange.html", null ] + ] ], + [ "xt::xslice< xstepped_range< T > >", "classxt_1_1xslice.html", [ + [ "xt::xstepped_range< T >", "classxt_1_1xstepped__range.html", null ] + ] ], + [ "xt::xstepper< C >", "classxt_1_1xstepper.html", null ], + [ "xt::extension::xstrided_view_base_impl< Tag, CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base__impl.html", null ], + [ "xt::extension::xstrided_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base__impl.html", [ + [ "xt::extension::xstrided_view_base< CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base.html", null ] + ] ], + [ "xt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "xt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >", "structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html", null ], + [ "extension::xstrided_view_base_t", null, [ + [ "xt::xstrided_view< CT, shape_type >", "classxt_1_1xstrided__view.html", null ], + [ "xt::xstrided_view< CT, S, L, FST >", "classxt_1_1xstrided__view.html", null ] + ] ], + [ "xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >", "structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html", null ], + [ "extension::xtensor_adaptor_base_t", null, [ + [ "xt::xtensor_adaptor< EC, N, L, Tag >", "classxt_1_1xtensor__adaptor.html", null ] + ] ], + [ "xt::extension::xtensor_container_base< EC, N, L, Tag >", "structxt_1_1extension_1_1xtensor__container__base.html", null ], + [ "xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag >", "structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html", null ], + [ "xt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag >", "structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html", null ], + [ "extension::xtensor_container_base_t", null, [ + [ "xt::xtensor_container< EC, N, L, Tag >", "classxt_1_1xtensor__container.html", null ] + ] ], + [ "xt::extension::xtensor_empty_base", "structxt_1_1extension_1_1xtensor__empty__base.html", null ], + [ "xt::xtensor_expression_tag", "structxt_1_1xtensor__expression__tag.html", null ], + [ "xt::extension::xtensor_optional_traits< EC, N, L >", "structxt_1_1extension_1_1xtensor__optional__traits.html", [ + [ "xt::extension::xtensor_adaptor_optional_traits< EC, N, L >", "structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html", null ], + [ "xt::extension::xtensor_container_optional_traits< EC, N, L >", "structxt_1_1extension_1_1xtensor__container__optional__traits.html", null ], + [ "xt::extension::xtensor_view_optional_traits< EC, N, L >", "structxt_1_1extension_1_1xtensor__view__optional__traits.html", null ] + ] ], + [ "xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag >", "structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html", null ], + [ "extension::xtensor_view_base_t", null, [ + [ "xt::xtensor_view< EC, N, L, Tag >", "classxt_1_1xtensor__view.html", null ] + ] ], + [ "xt::xvectorizer< F, R >", "classxt_1_1xvectorizer.html", null ], + [ "xt::extension::xview_base_impl< Tag, CT, S >", "structxt_1_1extension_1_1xview__base__impl.html", null ], + [ "xt::extension::xview_base_impl< xexpression_tag_t< CT >, CT, S... >", "structxt_1_1extension_1_1xview__base__impl.html", [ + [ "xt::extension::xview_base< CT, S >", "structxt_1_1extension_1_1xview__base.html", null ] + ] ], + [ "xt::extension::xview_base_impl< xoptional_expression_tag, CT, S... >", "structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html", null ], + [ "xt::extension::xview_base_impl< xtensor_expression_tag, CT, S... >", "structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html", null ], + [ "extension::xview_base_t", null, [ + [ "xt::xview< CT, S >", "classxt_1_1xview.html", null ] + ] ], + [ "xt::xview_shape_type< ST, S >", "structxt_1_1xview__shape__type.html", null ], + [ "xt::xview_shape_type< fixed_shape< I... >, S... >", "structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html", null ], + [ "xt::xview_shape_type< std::array< I, L >, S... >", "structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html", null ], + [ "xt::xview_stepper< is_const, CT, S >", "classxt_1_1xview__stepper.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..c8f8c5155 --- /dev/null +++ b/index.html @@ -0,0 +1,104 @@ + + + + + + + +xtensor: Main Page + + + + + + + + + + + + + +
+
+ + + + + + +
+
xtensor +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xtensor Documentation
+
+
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",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("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",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(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{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"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,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}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 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 + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..ca3ae78ed --- /dev/null +++ b/menudata.js @@ -0,0 +1,126 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Topics",url:"topics.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:"a",url:"namespacemembers.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:"h",url:"namespacemembers_h.html#index_h"}, +{text:"i",url:"namespacemembers_i.html#index_i"}, +{text:"k",url:"namespacemembers_k.html#index_k"}, +{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:"q",url:"namespacemembers_q.html#index_q"}, +{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:"x",url:"namespacemembers_x.html#index_x"}, +{text:"z",url:"namespacemembers_z.html#index_z"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"a",url:"namespacemembers_func.html#index_a"}, +{text:"b",url:"namespacemembers_func_b.html#index_b"}, +{text:"c",url:"namespacemembers_func_c.html#index_c"}, +{text:"d",url:"namespacemembers_func_d.html#index_d"}, +{text:"e",url:"namespacemembers_func_e.html#index_e"}, +{text:"f",url:"namespacemembers_func_f.html#index_f"}, +{text:"g",url:"namespacemembers_func_g.html#index_g"}, +{text:"h",url:"namespacemembers_func_h.html#index_h"}, +{text:"i",url:"namespacemembers_func_i.html#index_i"}, +{text:"k",url:"namespacemembers_func_k.html#index_k"}, +{text:"l",url:"namespacemembers_func_l.html#index_l"}, +{text:"m",url:"namespacemembers_func_m.html#index_m"}, +{text:"n",url:"namespacemembers_func_n.html#index_n"}, +{text:"o",url:"namespacemembers_func_o.html#index_o"}, +{text:"p",url:"namespacemembers_func_p.html#index_p"}, +{text:"q",url:"namespacemembers_func_q.html#index_q"}, +{text:"r",url:"namespacemembers_func_r.html#index_r"}, +{text:"s",url:"namespacemembers_func_s.html#index_s"}, +{text:"t",url:"namespacemembers_func_t.html#index_t"}, +{text:"u",url:"namespacemembers_func_u.html#index_u"}, +{text:"v",url:"namespacemembers_func_v.html#index_v"}, +{text:"w",url:"namespacemembers_func_w.html#index_w"}, +{text:"x",url:"namespacemembers_func_x.html#index_x"}, +{text:"z",url:"namespacemembers_func_z.html#index_z"}]}, +{text:"Typedefs",url:"namespacemembers_type.html"}, +{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:"a",url:"functions.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:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{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:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"x",url:"functions_x.html#index_x"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.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:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{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:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"x",url:"functions_func_x.html#index_x"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/minus.svg b/minus.svg new file mode 100644 index 000000000..f70d0c1a1 --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 000000000..5f8e87962 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..63a754b64 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,139 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - a -

      +
    • abs() : xt
    • +
    • accumulate() : xt
    • +
    • acos() : xt
    • +
    • acosh() : xt
    • +
    • adapt() : xt
    • +
    • adapt_smart_ptr() : xt
    • +
    • all() : xt
    • +
    • allclose() : xt
    • +
    • amax() : xt
    • +
    • amin() : xt
    • +
    • angle() : xt
    • +
    • any() : xt
    • +
    • arange() : xt
    • +
    • arg() : xt
    • +
    • argmax() : xt
    • +
    • argmin() : xt
    • +
    • argpartition() : xt
    • +
    • argsort() : xt
    • +
    • argwhere() : xt
    • +
    • as_strided() : xt
    • +
    • asin() : xt
    • +
    • asinh() : xt
    • +
    • atan() : xt
    • +
    • atan2() : xt
    • +
    • atanh() : xt
    • +
    • atleast_1d() : xt
    • +
    • atleast_2d() : xt
    • +
    • atleast_3d() : xt
    • +
    • atleast_Nd() : xt
    • +
    • average() : xt
    • +
    • axis_begin() : xt
    • +
    • axis_end() : xt
    • +
    • axis_slice_begin() : xt
    • +
    • axis_slice_end() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_b.html b/namespacemembers_b.html new file mode 100644 index 000000000..a3186b28d --- /dev/null +++ b/namespacemembers_b.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - b -

      +
    • bin_items() : xt
    • +
    • bincount() : xt
    • +
    • broadcast() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_c.html b/namespacemembers_c.html new file mode 100644 index 000000000..85c51d9c0 --- /dev/null +++ b/namespacemembers_c.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - c -

      +
    • cast() : xt
    • +
    • cbrt() : xt
    • +
    • ceil() : xt
    • +
    • chunked_array() : xt
    • +
    • clip() : xt
    • +
    • col() : xt
    • +
    • compute_layout() : xt
    • +
    • compute_strides() : xt
    • +
    • concatenate() : xt
    • +
    • conditional_cast() : xt
    • +
    • conj() : xt
    • +
    • cos() : xt
    • +
    • cosh() : xt
    • +
    • cov() : xt
    • +
    • cube() : xt
    • +
    • cumprod() : xt
    • +
    • cumsum() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_d.html b/namespacemembers_d.html new file mode 100644 index 000000000..7067ed6a6 --- /dev/null +++ b/namespacemembers_d.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - d -

      +
    • data_offset() : xt
    • +
    • deg2rad() : xt
    • +
    • degrees() : xt
    • +
    • diag() : xt
    • +
    • diagonal() : xt
    • +
    • diff() : xt
    • +
    • digitize() : xt
    • +
    • drop() : xt
    • +
    • dump_csv() : xt
    • +
    • dump_npy() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_dup.js b/namespacemembers_dup.js new file mode 100644 index 000000000..eef6cf068 --- /dev/null +++ b/namespacemembers_dup.js @@ -0,0 +1,27 @@ +var namespacemembers_dup = +[ + [ "a", "namespacemembers.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 ], + [ "h", "namespacemembers_h.html", null ], + [ "i", "namespacemembers_i.html", null ], + [ "k", "namespacemembers_k.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 ], + [ "q", "namespacemembers_q.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 ], + [ "x", "namespacemembers_x.html", null ], + [ "z", "namespacemembers_z.html", null ] +]; \ No newline at end of file diff --git a/namespacemembers_e.html b/namespacemembers_e.html new file mode 100644 index 000000000..0c4a1d0db --- /dev/null +++ b/namespacemembers_e.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - e -

      +
    • ellipsis() : xt
    • +
    • empty() : xt
    • +
    • empty_like() : xt
    • +
    • equal() : xt
    • +
    • erf() : xt
    • +
    • erfc() : xt
    • +
    • eval() : xt
    • +
    • exp() : xt
    • +
    • exp2() : xt
    • +
    • expand_dims() : xt
    • +
    • expm1() : xt
    • +
    • eye() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 000000000..4c8d0f01c --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace enums with links to the namespaces they belong to:
      +
    • histogram_algorithm : xt
    • +
    • layout_type : xt
    • +
    • pad_mode : xt
    • +
    • quantile_method : xt
    • +
    • sorting_method : xt
    • +
    • stride_type : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_f.html b/namespacemembers_f.html new file mode 100644 index 000000000..356b42245 --- /dev/null +++ b/namespacemembers_f.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - f -

      +
    • fabs() : xt
    • +
    • fdim() : xt
    • +
    • filter() : xt
    • +
    • filtration() : xt
    • +
    • flatnonzero() : xt
    • +
    • flatten() : xt
    • +
    • flatten_indices() : xt
    • +
    • flip() : xt
    • +
    • floor() : xt
    • +
    • fma() : xt
    • +
    • fmax() : xt
    • +
    • fmin() : xt
    • +
    • fmod() : xt
    • +
    • from_indices() : xt
    • +
    • from_json() : xt
    • +
    • full_like() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..e4d98d147 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,139 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - a -

      +
    • abs() : xt
    • +
    • accumulate() : xt
    • +
    • acos() : xt
    • +
    • acosh() : xt
    • +
    • adapt() : xt
    • +
    • adapt_smart_ptr() : xt
    • +
    • all() : xt
    • +
    • allclose() : xt
    • +
    • amax() : xt
    • +
    • amin() : xt
    • +
    • angle() : xt
    • +
    • any() : xt
    • +
    • arange() : xt
    • +
    • arg() : xt
    • +
    • argmax() : xt
    • +
    • argmin() : xt
    • +
    • argpartition() : xt
    • +
    • argsort() : xt
    • +
    • argwhere() : xt
    • +
    • as_strided() : xt
    • +
    • asin() : xt
    • +
    • asinh() : xt
    • +
    • atan() : xt
    • +
    • atan2() : xt
    • +
    • atanh() : xt
    • +
    • atleast_1d() : xt
    • +
    • atleast_2d() : xt
    • +
    • atleast_3d() : xt
    • +
    • atleast_Nd() : xt
    • +
    • average() : xt
    • +
    • axis_begin() : xt
    • +
    • axis_end() : xt
    • +
    • axis_slice_begin() : xt
    • +
    • axis_slice_end() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func.js b/namespacemembers_func.js new file mode 100644 index 000000000..1d1a2bb41 --- /dev/null +++ b/namespacemembers_func.js @@ -0,0 +1,27 @@ +var namespacemembers_func = +[ + [ "a", "namespacemembers_func.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 ], + [ "h", "namespacemembers_func_h.html", null ], + [ "i", "namespacemembers_func_i.html", null ], + [ "k", "namespacemembers_func_k.html", null ], + [ "l", "namespacemembers_func_l.html", null ], + [ "m", "namespacemembers_func_m.html", null ], + [ "n", "namespacemembers_func_n.html", null ], + [ "o", "namespacemembers_func_o.html", null ], + [ "p", "namespacemembers_func_p.html", null ], + [ "q", "namespacemembers_func_q.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 ], + [ "x", "namespacemembers_func_x.html", null ], + [ "z", "namespacemembers_func_z.html", null ] +]; \ No newline at end of file diff --git a/namespacemembers_func_b.html b/namespacemembers_func_b.html new file mode 100644 index 000000000..8478d06bb --- /dev/null +++ b/namespacemembers_func_b.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - b -

      +
    • bin_items() : xt
    • +
    • bincount() : xt
    • +
    • broadcast() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_c.html b/namespacemembers_func_c.html new file mode 100644 index 000000000..c2c664b66 --- /dev/null +++ b/namespacemembers_func_c.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - c -

      +
    • cast() : xt
    • +
    • cbrt() : xt
    • +
    • ceil() : xt
    • +
    • chunked_array() : xt
    • +
    • clip() : xt
    • +
    • col() : xt
    • +
    • compute_layout() : xt
    • +
    • compute_strides() : xt
    • +
    • concatenate() : xt
    • +
    • conditional_cast() : xt
    • +
    • conj() : xt
    • +
    • cos() : xt
    • +
    • cosh() : xt
    • +
    • cov() : xt
    • +
    • cube() : xt
    • +
    • cumprod() : xt
    • +
    • cumsum() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_d.html b/namespacemembers_func_d.html new file mode 100644 index 000000000..647390ad6 --- /dev/null +++ b/namespacemembers_func_d.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - d -

      +
    • data_offset() : xt
    • +
    • deg2rad() : xt
    • +
    • degrees() : xt
    • +
    • diag() : xt
    • +
    • diagonal() : xt
    • +
    • diff() : xt
    • +
    • digitize() : xt
    • +
    • drop() : xt
    • +
    • dump_csv() : xt
    • +
    • dump_npy() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_e.html b/namespacemembers_func_e.html new file mode 100644 index 000000000..16775b4c9 --- /dev/null +++ b/namespacemembers_func_e.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - e -

      +
    • ellipsis() : xt
    • +
    • empty() : xt
    • +
    • empty_like() : xt
    • +
    • equal() : xt
    • +
    • erf() : xt
    • +
    • erfc() : xt
    • +
    • eval() : xt
    • +
    • exp() : xt
    • +
    • exp2() : xt
    • +
    • expand_dims() : xt
    • +
    • expm1() : xt
    • +
    • eye() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_f.html b/namespacemembers_func_f.html new file mode 100644 index 000000000..16ed4ff29 --- /dev/null +++ b/namespacemembers_func_f.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - f -

      +
    • fabs() : xt
    • +
    • fdim() : xt
    • +
    • filter() : xt
    • +
    • filtration() : xt
    • +
    • flatnonzero() : xt
    • +
    • flatten() : xt
    • +
    • flatten_indices() : xt
    • +
    • flip() : xt
    • +
    • floor() : xt
    • +
    • fma() : xt
    • +
    • fmax() : xt
    • +
    • fmin() : xt
    • +
    • fmod() : xt
    • +
    • from_indices() : xt
    • +
    • from_json() : xt
    • +
    • full_like() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_g.html b/namespacemembers_func_g.html new file mode 100644 index 000000000..5c7b2bce6 --- /dev/null +++ b/namespacemembers_func_g.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - g -

      +
    • greater() : xt
    • +
    • greater_equal() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_h.html b/namespacemembers_func_h.html new file mode 100644 index 000000000..4a6a7a48a --- /dev/null +++ b/namespacemembers_func_h.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - h -

      +
    • has_shape() : xt
    • +
    • histogram() : xt
    • +
    • histogram_bin_edges() : xt
    • +
    • hsplit() : xt
    • +
    • hstack() : xt
    • +
    • hypot() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_i.html b/namespacemembers_func_i.html new file mode 100644 index 000000000..5325fe70d --- /dev/null +++ b/namespacemembers_func_i.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - i -

      +
    • imag() : xt
    • +
    • in1d() : xt
    • +
    • in_bounds() : xt
    • +
    • index_view() : xt
    • +
    • interp() : xt
    • +
    • isclose() : xt
    • +
    • isfinite() : xt
    • +
    • isin() : xt
    • +
    • isinf() : xt
    • +
    • isnan() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_k.html b/namespacemembers_func_k.html new file mode 100644 index 000000000..48635eb7a --- /dev/null +++ b/namespacemembers_func_k.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - k -

      +
    • keep() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_l.html b/namespacemembers_func_l.html new file mode 100644 index 000000000..17ed787b8 --- /dev/null +++ b/namespacemembers_func_l.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - l -

      +
    • left_shift() : xt
    • +
    • less() : xt
    • +
    • less_equal() : xt
    • +
    • lgamma() : xt
    • +
    • linspace() : xt
    • +
    • load_csv() : xt
    • +
    • load_npy() : xt
    • +
    • log() : xt
    • +
    • log10() : xt
    • +
    • log1p() : xt
    • +
    • log2() : xt
    • +
    • logspace() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_m.html b/namespacemembers_func_m.html new file mode 100644 index 000000000..c17d2746c --- /dev/null +++ b/namespacemembers_func_m.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - m -

      +
    • make_lambda_xfunction() : xt
    • +
    • make_xshared() : xt
    • +
    • maximum() : xt
    • +
    • mean() : xt
    • +
    • median() : xt
    • +
    • meshgrid() : xt
    • +
    • minimum() : xt
    • +
    • minmax() : xt
    • +
    • moveaxis() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_n.html b/namespacemembers_func_n.html new file mode 100644 index 000000000..ff19e2ac6 --- /dev/null +++ b/namespacemembers_func_n.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - n -

      +
    • nan_to_num() : xt
    • +
    • nancumprod() : xt
    • +
    • nancumsum() : xt
    • +
    • nanmax() : xt
    • +
    • nanmean() : xt
    • +
    • nanmin() : xt
    • +
    • nanprod() : xt
    • +
    • nanstd() : xt
    • +
    • nansum() : xt
    • +
    • nanvar() : xt
    • +
    • nearbyint() : xt
    • +
    • newaxis() : xt
    • +
    • nonzero() : xt
    • +
    • norm() : xt
    • +
    • norm_induced_l1() : xt
    • +
    • norm_induced_linf() : xt
    • +
    • norm_l0() : xt
    • +
    • norm_l1() : xt
    • +
    • norm_l2() : xt
    • +
    • norm_linf() : xt
    • +
    • norm_lp() : xt
    • +
    • norm_lp_to_p() : xt
    • +
    • norm_sq() : xt
    • +
    • normalize_periodic() : xt
    • +
    • not_equal() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_o.html b/namespacemembers_func_o.html new file mode 100644 index 000000000..5cba949dd --- /dev/null +++ b/namespacemembers_func_o.html @@ -0,0 +1,127 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - o -

      +
    • ones() : xt
    • +
    • ones_like() : xt
    • +
    • operator!() : xt
    • +
    • operator!=() : xt
    • +
    • operator%() : xt
    • +
    • operator&() : xt
    • +
    • operator&&() : xt
    • +
    • operator*() : xt
    • +
    • operator+() : xt
    • +
    • operator-() : xt
    • +
    • operator/() : xt
    • +
    • operator<() : xt
    • +
    • operator<<() : xt
    • +
    • operator<=() : xt
    • +
    • operator==() : xt
    • +
    • operator>() : xt
    • +
    • operator>=() : xt
    • +
    • operator>>() : xt
    • +
    • operator^() : xt
    • +
    • operator|() : xt
    • +
    • operator||() : xt
    • +
    • operator~() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_p.html b/namespacemembers_func_p.html new file mode 100644 index 000000000..780574cc7 --- /dev/null +++ b/namespacemembers_func_p.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - p -

      +
    • pad() : xt
    • +
    • partition() : xt
    • +
    • pow() : xt
    • +
    • prod() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_q.html b/namespacemembers_func_q.html new file mode 100644 index 000000000..58b085fdd --- /dev/null +++ b/namespacemembers_func_q.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - q -

      +
    • quantile() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_r.html b/namespacemembers_func_r.html new file mode 100644 index 000000000..e3a7a461f --- /dev/null +++ b/namespacemembers_func_r.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - r -

      +
    • rad2deg() : xt
    • +
    • radians() : xt
    • +
    • range() : xt
    • +
    • ravel() : xt
    • +
    • ravel_indices() : xt
    • +
    • real() : xt
    • +
    • reduce() : xt
    • +
    • remainder() : xt
    • +
    • repeat() : xt
    • +
    • reshape_view() : xt
    • +
    • right_shift() : xt
    • +
    • rint() : xt
    • +
    • roll() : xt
    • +
    • rot90() : xt
    • +
    • round() : xt
    • +
    • row() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_s.html b/namespacemembers_func_s.html new file mode 100644 index 000000000..080dc0932 --- /dev/null +++ b/namespacemembers_func_s.html @@ -0,0 +1,124 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - s -

      +
    • same_shape() : xt
    • +
    • searchsorted() : xt
    • +
    • setdiff1d() : xt
    • +
    • shape() : xt
    • +
    • share() : xt
    • +
    • sign() : xt
    • +
    • sin() : xt
    • +
    • sinh() : xt
    • +
    • sort() : xt
    • +
    • split() : xt
    • +
    • sqrt() : xt
    • +
    • square() : xt
    • +
    • squeeze() : xt
    • +
    • stack() : xt
    • +
    • stddev() : xt
    • +
    • strided_view() : xt
    • +
    • strides() : xt
    • +
    • sum() : xt
    • +
    • swapaxes() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_t.html b/namespacemembers_func_t.html new file mode 100644 index 000000000..4cdd10889 --- /dev/null +++ b/namespacemembers_func_t.html @@ -0,0 +1,116 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - t -

      +
    • tan() : xt
    • +
    • tanh() : xt
    • +
    • tgamma() : xt
    • +
    • tile() : xt
    • +
    • to_json() : xt
    • +
    • transpose() : xt
    • +
    • trapz() : xt
    • +
    • tril() : xt
    • +
    • trim_zeros() : xt
    • +
    • triu() : xt
    • +
    • trunc() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_u.html b/namespacemembers_func_u.html new file mode 100644 index 000000000..1320dfd96 --- /dev/null +++ b/namespacemembers_func_u.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - u -

      +
    • unique() : xt
    • +
    • unwrap() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_v.html b/namespacemembers_func_v.html new file mode 100644 index 000000000..1be794673 --- /dev/null +++ b/namespacemembers_func_v.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - v -

      +
    • variance() : xt
    • +
    • view() : xt
    • +
    • vsplit() : xt
    • +
    • vstack() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_w.html b/namespacemembers_func_w.html new file mode 100644 index 000000000..2597eb61f --- /dev/null +++ b/namespacemembers_func_w.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - w -

      +
    • where() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_x.html b/namespacemembers_func_x.html new file mode 100644 index 000000000..b769e5374 --- /dev/null +++ b/namespacemembers_func_x.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - x -

      +
    • xtuple() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func_z.html b/namespacemembers_func_z.html new file mode 100644 index 000000000..af2f2e454 --- /dev/null +++ b/namespacemembers_func_z.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - z -

      +
    • zeros() : xt
    • +
    • zeros_like() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_g.html b/namespacemembers_g.html new file mode 100644 index 000000000..e1ac6524b --- /dev/null +++ b/namespacemembers_g.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - g -

      +
    • greater() : xt
    • +
    • greater_equal() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_h.html b/namespacemembers_h.html new file mode 100644 index 000000000..97a6cdd1e --- /dev/null +++ b/namespacemembers_h.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - h -

      +
    • has_shape() : xt
    • +
    • histogram() : xt
    • +
    • histogram_algorithm : xt
    • +
    • histogram_bin_edges() : xt
    • +
    • hsplit() : xt
    • +
    • hstack() : xt
    • +
    • hypot() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_i.html b/namespacemembers_i.html new file mode 100644 index 000000000..80cc3fad7 --- /dev/null +++ b/namespacemembers_i.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - i -

      +
    • imag() : xt
    • +
    • in1d() : xt
    • +
    • in_bounds() : xt
    • +
    • index_view() : xt
    • +
    • interp() : xt
    • +
    • isclose() : xt
    • +
    • isfinite() : xt
    • +
    • isin() : xt
    • +
    • isinf() : xt
    • +
    • isnan() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_k.html b/namespacemembers_k.html new file mode 100644 index 000000000..cb030bef0 --- /dev/null +++ b/namespacemembers_k.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - k -

      +
    • keep() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_l.html b/namespacemembers_l.html new file mode 100644 index 000000000..45deb8468 --- /dev/null +++ b/namespacemembers_l.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - l -

      +
    • layout_type : xt
    • +
    • left_shift() : xt
    • +
    • less() : xt
    • +
    • less_equal() : xt
    • +
    • lgamma() : xt
    • +
    • linspace() : xt
    • +
    • load_csv() : xt
    • +
    • load_npy() : xt
    • +
    • log() : xt
    • +
    • log10() : xt
    • +
    • log1p() : xt
    • +
    • log2() : xt
    • +
    • logspace() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_m.html b/namespacemembers_m.html new file mode 100644 index 000000000..c49a7780e --- /dev/null +++ b/namespacemembers_m.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - m -

      +
    • make_lambda_xfunction() : xt
    • +
    • make_xshared() : xt
    • +
    • maximum() : xt
    • +
    • mean() : xt
    • +
    • median() : xt
    • +
    • meshgrid() : xt
    • +
    • minimum() : xt
    • +
    • minmax() : xt
    • +
    • moveaxis() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_n.html b/namespacemembers_n.html new file mode 100644 index 000000000..f2bdab070 --- /dev/null +++ b/namespacemembers_n.html @@ -0,0 +1,131 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - n -

      +
    • nan_to_num() : xt
    • +
    • nancumprod() : xt
    • +
    • nancumsum() : xt
    • +
    • nanmax() : xt
    • +
    • nanmean() : xt
    • +
    • nanmin() : xt
    • +
    • nanprod() : xt
    • +
    • nanstd() : xt
    • +
    • nansum() : xt
    • +
    • nanvar() : xt
    • +
    • nearbyint() : xt
    • +
    • newaxis() : xt
    • +
    • nonzero() : xt
    • +
    • norm() : xt
    • +
    • norm_induced_l1() : xt
    • +
    • norm_induced_linf() : xt
    • +
    • norm_l0() : xt
    • +
    • norm_l1() : xt
    • +
    • norm_l2() : xt
    • +
    • norm_linf() : xt
    • +
    • norm_lp() : xt
    • +
    • norm_lp_to_p() : xt
    • +
    • norm_sq() : xt
    • +
    • norm_type_t : xt
    • +
    • normalize_periodic() : xt
    • +
    • not_equal() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_o.html b/namespacemembers_o.html new file mode 100644 index 000000000..939ef3ecf --- /dev/null +++ b/namespacemembers_o.html @@ -0,0 +1,127 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - o -

      +
    • ones() : xt
    • +
    • ones_like() : xt
    • +
    • operator!() : xt
    • +
    • operator!=() : xt
    • +
    • operator%() : xt
    • +
    • operator&() : xt
    • +
    • operator&&() : xt
    • +
    • operator*() : xt
    • +
    • operator+() : xt
    • +
    • operator-() : xt
    • +
    • operator/() : xt
    • +
    • operator<() : xt
    • +
    • operator<<() : xt
    • +
    • operator<=() : xt
    • +
    • operator==() : xt
    • +
    • operator>() : xt
    • +
    • operator>=() : xt
    • +
    • operator>>() : xt
    • +
    • operator^() : xt
    • +
    • operator|() : xt
    • +
    • operator||() : xt
    • +
    • operator~() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_p.html b/namespacemembers_p.html new file mode 100644 index 000000000..6f8c2f73d --- /dev/null +++ b/namespacemembers_p.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - p -

      +
    • pad() : xt
    • +
    • pad_mode : xt
    • +
    • partition() : xt
    • +
    • pow() : xt
    • +
    • prod() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_q.html b/namespacemembers_q.html new file mode 100644 index 000000000..3fe998754 --- /dev/null +++ b/namespacemembers_q.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - q -

      +
    • quantile() : xt
    • +
    • quantile_method : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_r.html b/namespacemembers_r.html new file mode 100644 index 000000000..deeef5520 --- /dev/null +++ b/namespacemembers_r.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - r -

      +
    • rad2deg() : xt
    • +
    • radians() : xt
    • +
    • range() : xt
    • +
    • ravel() : xt
    • +
    • ravel_indices() : xt
    • +
    • real() : xt
    • +
    • reduce() : xt
    • +
    • remainder() : xt
    • +
    • repeat() : xt
    • +
    • reshape_view() : xt
    • +
    • right_shift() : xt
    • +
    • rint() : xt
    • +
    • roll() : xt
    • +
    • rot90() : xt
    • +
    • round() : xt
    • +
    • row() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_s.html b/namespacemembers_s.html new file mode 100644 index 000000000..33150a292 --- /dev/null +++ b/namespacemembers_s.html @@ -0,0 +1,127 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - s -

      +
    • same_shape() : xt
    • +
    • searchsorted() : xt
    • +
    • setdiff1d() : xt
    • +
    • shape() : xt
    • +
    • share() : xt
    • +
    • sign() : xt
    • +
    • sin() : xt
    • +
    • sinh() : xt
    • +
    • sort() : xt
    • +
    • sorting_method : xt
    • +
    • split() : xt
    • +
    • sqrt() : xt
    • +
    • square() : xt
    • +
    • squared_norm_type_t : xt
    • +
    • squeeze() : xt
    • +
    • stack() : xt
    • +
    • stddev() : xt
    • +
    • stride_type : xt
    • +
    • strided_view() : xt
    • +
    • strides() : xt
    • +
    • sum() : xt
    • +
    • swapaxes() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_t.html b/namespacemembers_t.html new file mode 100644 index 000000000..0ef61446c --- /dev/null +++ b/namespacemembers_t.html @@ -0,0 +1,116 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - t -

      +
    • tan() : xt
    • +
    • tanh() : xt
    • +
    • tgamma() : xt
    • +
    • tile() : xt
    • +
    • to_json() : xt
    • +
    • transpose() : xt
    • +
    • trapz() : xt
    • +
    • tril() : xt
    • +
    • trim_zeros() : xt
    • +
    • triu() : xt
    • +
    • trunc() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 000000000..dfa7a875f --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace typedefs with links to the namespaces they belong to:
      +
    • norm_type_t : xt
    • +
    • squared_norm_type_t : xt
    • +
    • xarray : xt
    • +
    • xarray_optional : xt
    • +
    • xarray_pointer : xt
    • +
    • xshape : xt
    • +
    • xstrided_slice_vector : xt
    • +
    • xtensor : xt
    • +
    • xtensor_fixed : xt
    • +
    • xtensor_optional : xt
    • +
    • xtensor_pointer : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_u.html b/namespacemembers_u.html new file mode 100644 index 000000000..57fb80774 --- /dev/null +++ b/namespacemembers_u.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - u -

      +
    • unique() : xt
    • +
    • unwrap() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_v.html b/namespacemembers_v.html new file mode 100644 index 000000000..92b1e7774 --- /dev/null +++ b/namespacemembers_v.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - v -

      +
    • variance() : xt
    • +
    • view() : xt
    • +
    • vsplit() : xt
    • +
    • vstack() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_w.html b/namespacemembers_w.html new file mode 100644 index 000000000..574333112 --- /dev/null +++ b/namespacemembers_w.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - w -

      +
    • where() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_x.html b/namespacemembers_x.html new file mode 100644 index 000000000..aabc36d96 --- /dev/null +++ b/namespacemembers_x.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - x -

      +
    • xarray : xt
    • +
    • xarray_optional : xt
    • +
    • xarray_pointer : xt
    • +
    • xshape : xt
    • +
    • xstrided_slice_vector : xt
    • +
    • xtensor : xt
    • +
    • xtensor_fixed : xt
    • +
    • xtensor_optional : xt
    • +
    • xtensor_pointer : xt
    • +
    • xtuple() : xt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_z.html b/namespacemembers_z.html new file mode 100644 index 000000000..c77195f29 --- /dev/null +++ b/namespacemembers_z.html @@ -0,0 +1,107 @@ + + + + + + + +xtensor: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - z -

      +
    • zeros() : xt
    • +
    • zeros_like() : xt
    • +
    +
    +
    + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 000000000..3f3eb7177 --- /dev/null +++ b/namespaces.html @@ -0,0 +1,422 @@ + + + + + + + +xtensor: Namespace List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     NxtStandard mathematical functions for xexpressions
    +
    +
    +
    + + + + diff --git a/namespaces_dup.js b/namespaces_dup.js new file mode 100644 index 000000000..a6c4e3590 --- /dev/null +++ b/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "xt", "namespacext.html", "namespacext" ] +]; \ No newline at end of file diff --git a/namespacext.html b/namespacext.html new file mode 100644 index 000000000..54dfdcb9f --- /dev/null +++ b/namespacext.html @@ -0,0 +1,21491 @@ + + + + + + + +xtensor: xt Namespace Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt Namespace Reference
    +
    +
    + +

    standard mathematical functions for xexpressions +More...

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

    +Classes

    struct  acquire_ownership
     
    class  aligned_array
     This array class is modeled after std::array but adds optional alignment through a template parameter. More...
     
    struct  apply_cv
     
    struct  big_promote_value_type
     
    class  broadcast_error
     
    struct  buffer_inner_types
     
    struct  buffer_inner_types< xbuffer_adaptor< CP, O, A > >
     
    struct  buffer_inner_types< xiterator_adaptor< I, CI > >
     
    struct  buffer_inner_types< xiterator_owner_adaptor< C, IG > >
     
    struct  can_assign
     
    struct  can_assign< xstrided_view< CT, S, L, FST >, RHS >
     
    struct  check_strides_overlap
     
    struct  check_strides_overlap< layout_type::column_major >
     
    struct  check_strides_overlap< layout_type::row_major >
     
    struct  common_difference_type
     
    struct  common_difference_type<>
     
    struct  common_size_type
     
    struct  common_size_type<>
     
    struct  common_tensor_type
     
    struct  common_value_type
     
    class  concatenate_error
     
    struct  conditional_cast_functor
     
    struct  conditional_cast_functor< false, T >
     
    struct  conditional_cast_functor< true, T >
     
    struct  const_array
     A std::array like class with all member function (except reverse iterators) as constexpr. More...
     
    struct  const_value
     
    struct  const_xclosure
     
    struct  const_xclosure< E, disable_xexpression< std::decay_t< E > > >
     
    struct  const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >
     
    struct  container_simd_return_type
     
    struct  decay_all
     
    struct  decay_all< S< X... > >
     
    struct  disable_indexed_stepper
     
    struct  driven_align_mode
     
    struct  enable_indexed_stepper
     
    struct  filter_fixed_shape
     
    class  fixed_shape
     Fixed shape implementation for compile time defined arrays. More...
     
    struct  fixed_xreducer_shape_type
     
    struct  fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >
     
    struct  forbid_simd
     
    struct  forbid_simd< const std::vector< bool, A > >
     
    struct  forbid_simd< const xtl::xdynamic_bitset< B, A > >
     
    struct  forbid_simd< std::vector< bool, A > >
     
    struct  forbid_simd< xtl::xdynamic_bitset< B, A > >
     
    struct  get_init_type
     
    struct  get_init_type< V, fixed_shape< X... > >
     
    struct  get_rank
     
    struct  get_rank< E, decltype((void) E::rank, void())>
     
    struct  get_strides_type
     
    struct  get_strides_type< fixed_shape< I... > >
     
    struct  get_strides_type< xbuffer_adaptor< CP, O, A > >
     
    struct  get_value_type
     
    struct  get_value_type< T, void_t< typename T::value_type > >
     
    struct  has_assign_conversion
     
    struct  has_assign_to
     
    struct  has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >
     
    struct  has_data_interface
     
    struct  has_data_interface< E, void_t< decltype(std::declval< E >().data())> >
     
    struct  has_fixed_rank
     
    struct  has_iterator_interface
     
    struct  has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >
     
    struct  has_rank
     
    struct  has_sign_conversion
     
    struct  has_simd_apply
     
    struct  has_simd_interface
     
    struct  has_simd_interface< xfunction< F, CT... >, T >
     
    struct  has_simd_interface< xfunctor_adaptor< F, CT >, T >
     
    struct  has_simd_interface< xfunctor_applier_base< D >, T >
     
    struct  has_simd_interface< xfunctor_view< F, CT >, T >
     
    struct  has_simd_interface< xtensor_view< EC, N, L, Tag > >
     
    struct  has_simd_type
     
    struct  has_storage_type
     
    struct  has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >
     
    struct  has_strides
     
    struct  has_strides< E, void_t< decltype(std::declval< E >().strides())> >
     
    struct  index_from_shape
     
    struct  initializer_dimension
     
    struct  inner_aligned_mode
     
    struct  inner_reference
     
    struct  invalid_type
     
    struct  is_chunked_t
     
    struct  is_contiguous_container
     
    struct  is_contiguous_container< xiterator< St, S, L > >
     
    struct  is_contiguous_container< xiterator_adaptor< I, CI > >
     
    struct  is_contiguous_container< xiterator_owner_adaptor< C, IG > >
     
    struct  is_evaluation_strategy
     
    struct  is_indexed_stepper
     
    struct  is_indexed_stepper< xindexed_stepper< T, B > >
     
    struct  is_iterator
     
    struct  is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >
     
    struct  is_narrowing_conversion
     
    struct  is_not_xdummy_iterator
     
    struct  is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >
     
    struct  is_reducer_options
     
    struct  is_reducer_options_impl
     
    struct  is_reducer_options_impl< std::tuple< X... > >
     
    struct  is_xoptional_expression
     
    struct  is_xtensor_expression
     
    struct  keep_dims_type
     
    class  linear_assigner
     
    class  linear_assigner< false >
     
    struct  make_invalid_type
     
    struct  make_void
     
    struct  meta_identity
     
    struct  missing_type
     
    struct  nested_initializer_list
     
    struct  nested_initializer_list< T, 0 >
     
    struct  no_ownership
     
    class  noalias_proxy
     
    struct  norm_type
     Traits class for the result type of the norm_l2() function. More...
     
    struct  numeric_constants
     
    struct  promote_shape
     
    struct  promote_strides
     
    struct  rebind_container
     
    struct  rebind_container< X, C< T, A > >
     
    struct  rebind_container< X, C< T, N > >
     
    struct  rebind_container< X, svector< T, N, A, B > >
     
    struct  reducer_options
     
    struct  remove_class
     
    struct  remove_class< R(C::*)(Args...) const >
     
    struct  remove_class< R(C::*)(Args...)>
     
    struct  select_dim_mapping_type
     
    struct  select_dim_mapping_type< fixed_shape< I... > >
     
    struct  select_iterable_base
     
    struct  select_layout
     Compute a layout based on a layout and a shape type. More...
     
    class  sequence_view
     
    struct  squared_norm_type
     Traits class for the result type of the norm_sq() function. More...
     
    struct  static_dimension
     
    struct  static_string
     
    class  stepper_assigner
     
    struct  stepper_tools
     
    class  strided_loop_assigner
     
    class  svector
     
    struct  temporary_container
     
    struct  temporary_container< xbuffer_adaptor< CP, O, A > >
     
    struct  temporary_container< xiterator_adaptor< I, CI > >
     
    struct  temporary_container< xiterator_owner_adaptor< C, IG > >
     
    struct  temporary_type
     
    struct  temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >
     
    struct  temporary_type_from_tag
     
    struct  temporary_type_from_tag< xtensor_expression_tag, T >
     
    struct  tracking_allocator
     
    class  transpose_error
     
    struct  tuple_idx_of
     
    struct  tuple_idx_of_impl
     
    struct  tuple_idx_of_impl< I, T, std::tuple< T, Types... > >
     
    struct  tuple_idx_of_impl< I, T, std::tuple< U, Types... > >
     
    struct  tuple_idx_of_impl< I, T, std::tuple<> >
     
    class  uvector
     
    struct  view_temporary_type
     
    class  xaccessible
     Base class for implementation of common expression access methods. More...
     
    struct  xaccumulator_functor
     
    class  xall
     
    struct  xall_tag
     
    class  xarray_adaptor
     Dense multidimensional container adaptor with tensor semantic. More...
     
    class  xarray_container
     Dense multidimensional container with tensor semantic. More...
     
    class  xassign_traits
     
    class  xaxis_iterator
     Class for iteration over (N-1)-dimensional slices, where N is the dimension of the underlying expression. More...
     
    class  xaxis_slice_iterator
     Class for iteration over one-dimensional slices. More...
     
    class  xblockwise_reducer
     
    class  xbounded_iterator
     
    class  xbroadcast
     Broadcasted xexpression to a specified shape. More...
     
    class  xbuffer_adaptor
     
    class  xbuffer_adaptor_base
     
    class  xchunk_iterator
     
    class  xchunked_array
     
    class  xchunked_assigner
     
    class  xchunked_semantic
     
    class  xchunked_view
     
    struct  xclosure
     
    struct  xclosure< E, disable_xexpression< std::decay_t< E > > >
     
    struct  xclosure< xshared_expression< E >, std::enable_if_t< true > >
     
    class  xconst_accessible
     Base class for implementation of common expression constant access methods. More...
     
    class  xconst_iterable
     Base class for multidimensional iterable constant expressions. More...
     
    class  xcontainer
     Base class for dense multidimensional containers. More...
     
    struct  xcontainer_inner_types
     
    struct  xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
     
    struct  xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
     
    struct  xcontainer_inner_types< xbroadcast< CT, X > >
     
    struct  xcontainer_inner_types< xchunked_array< chunk_storage > >
     
    struct  xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
     
    struct  xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
     
    struct  xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
     
    struct  xcontainer_inner_types< xfunction< F, CT... > >
     
    struct  xcontainer_inner_types< xfunctor_adaptor< F, CT > >
     
    struct  xcontainer_inner_types< xfunctor_view< F, CT > >
     
    struct  xcontainer_inner_types< xgenerator< C, R, S > >
     
    struct  xcontainer_inner_types< xindex_view< CT, I > >
     
    struct  xcontainer_inner_types< xmasked_view< CTD, CTM > >
     
    struct  xcontainer_inner_types< xoptional_assembly< VE, FE > >
     
    struct  xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
     
    struct  xcontainer_inner_types< xreducer< F, CT, X, O > >
     
    struct  xcontainer_inner_types< xrepeat< CT, R > >
     
    struct  xcontainer_inner_types< xscalar< CT > >
     
    struct  xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
     
    struct  xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
     
    struct  xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
     
    struct  xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
     
    struct  xcontainer_inner_types< xview< CT, S... > >
     
    struct  xcontainer_iterable_types
     
    class  xcontainer_semantic
     Implementation of the xsemantic_base interface for dense multidimensional containers. More...
     
    class  xcontiguous_iterable
     Base class for multidimensional iterable expressions with contiguous storage. More...
     
    struct  xcsv_config
     
    class  xdrop_slice
     
    class  xdummy_iterator
     
    class  xdynamic_view
     
    struct  xellipsis_tag
     
    class  xexpression
     Base class for xexpressions. More...
     
    class  xexpression_assigner
     
    class  xexpression_assigner_base
     
    class  xexpression_assigner_base< xoptional_expression_tag >
     
    class  xexpression_assigner_base< xtensor_expression_tag >
     
    class  xexpression_holder
     
    struct  xexpression_tag
     
    class  xfiltration
     Filter of a xexpression for fast scalar assign. More...
     
    class  xfixed_adaptor
     Dense multidimensional container adaptor with tensor semantic and fixed dimension. More...
     
    class  xfixed_container
     Dense multidimensional container with tensor semantic and fixed dimension. More...
     
    class  xfunction
     Multidimensional function operating on xtensor expressions. More...
     
    struct  xfunction_cache
     
    class  xfunction_iterator
     
    class  xfunction_stepper
     
    class  xfunctor_adaptor
     Adapt a container with a functor, forwarding methods such as resize / reshape. More...
     
    class  xfunctor_applier_base
     
    class  xfunctor_iterator
     
    class  xfunctor_stepper
     
    class  xfunctor_view
     View of an xexpression . More...
     
    struct  xfunctor_view_temporary_type
     
    class  xgenerator
     Multidimensional function operating on indices. More...
     
    class  xindex_view
     View of an xexpression from vector of indices. More...
     
    class  xindexed_stepper
     
    struct  xinitial
     
    class  xiterable
     Base class for multidimensional iterable expressions. More...
     
    struct  xiterable_inner_types
     
    struct  xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >
     
    struct  xiterable_inner_types< xarray_container< EC, L, SC, Tag > >
     
    struct  xiterable_inner_types< xbroadcast< CT, X > >
     
    struct  xiterable_inner_types< xchunked_array< chunk_storage > >
     
    struct  xiterable_inner_types< xdynamic_view< CT, S, L, FST > >
     
    struct  xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
     
    struct  xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >
     
    struct  xiterable_inner_types< xfunction< F, CT... > >
     
    struct  xiterable_inner_types< xgenerator< C, R, S > >
     
    struct  xiterable_inner_types< xindex_view< CT, I > >
     
    struct  xiterable_inner_types< xmasked_view< CTD, CTM > >
     
    struct  xiterable_inner_types< xoptional_assembly< VE, FE > >
     
    struct  xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
     
    struct  xiterable_inner_types< xreducer< F, CT, X, O > >
     
    struct  xiterable_inner_types< xrepeat< CT, R > >
     
    struct  xiterable_inner_types< xscalar< CT > >
     
    struct  xiterable_inner_types< xstrided_view< CT, S, L, FST > >
     
    struct  xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >
     
    struct  xiterable_inner_types< xtensor_container< EC, N, L, Tag > >
     
    struct  xiterable_inner_types< xtensor_view< EC, N, L, Tag > >
     
    struct  xiterable_inner_types< xview< CT, S... > >
     
    class  xiterator
     
    class  xiterator_adaptor
     
    class  xiterator_owner_adaptor
     
    class  xkeep_slice
     
    class  xmasked_value
     
    class  xmasked_view
     View on an xoptional_assembly or xoptional_assembly_adaptor hiding values depending on a given mask. More...
     
    class  xmasked_view_stepper
     
    class  xmultiindex_iterator
     
    class  xnewaxis
     
    struct  xnewaxis_tag
     
    class  xoptional_assembly
     Dense multidimensional container holding optional values, optimized for tensor operations. More...
     
    class  xoptional_assembly_adaptor
     Dense multidimensional adaptor holding optional values, optimized for tensor operations. More...
     
    class  xoptional_assembly_base
     Base class for dense multidimensional optional assemblies. More...
     
    class  xoptional_assembly_linear_iterator
     
    struct  xoptional_assembly_linear_iterator_traits
     
    class  xoptional_assembly_stepper
     
    class  xoptional_assembly_storage
     
    struct  xoptional_comparable
     
    struct  xoptional_expression_tag
     
    struct  xproxy_inner_types
     
    class  xrange
     
    struct  xrange_adaptor
     
    class  xreducer
     Reducing function operating over specified axes. More...
     
    struct  xreducer_functors
     
    struct  xreducer_shape_type
     
    struct  xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >
     
    struct  xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >
     
    struct  xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >
     
    struct  xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >
     
    struct  xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >
     
    class  xreducer_stepper
     
    class  xrepeat
     Expression with repeated values along an axis. More...
     
    class  xrepeat_stepper
     
    class  xscalar
     
    class  xscalar_stepper
     
    class  xsemantic_base
     Base interface for assignable xexpressions. More...
     
    class  xsharable_expression
     
    class  xshared_expression
     Shared xexpressions. More...
     
    class  xslice
     
    class  xstepped_range
     
    class  xstepper
     
    class  xstrided_container
     Partial implementation of xcontainer that embeds the strides and the shape. More...
     
    class  xstrided_view
     View of an xexpression using strides. More...
     
    class  xstrided_view_base
     
    class  xtensor_adaptor
     Dense multidimensional container adaptor with tensor semantics and fixed dimension. More...
     
    class  xtensor_container
     Dense multidimensional container with tensor semantic and fixed dimension. More...
     
    struct  xtensor_expression_tag
     
    class  xtensor_view
     Dense multidimensional container adaptor with view semantics and fixed dimension. More...
     
    class  xvectorizer
     
    class  xview
     Multidimensional view with tensor semantic. More...
     
    class  xview_semantic
     Implementation of the xsemantic_base interface for multidimensional views. More...
     
    struct  xview_shape_type
     
    struct  xview_shape_type< fixed_shape< I... >, S... >
     
    struct  xview_shape_type< std::array< I, L >, S... >
     
    class  xview_stepper
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major>
    using xtensor_pointer = xtensor_adaptor< xbuffer_adaptor< xtl::closure_type_t< T * >, xt::no_ownership, detail::default_allocator_for_ptr_t< T > >, N, L >
     xtensor adaptor for a pointer.
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class SC = xt::svector<typename uvector< T , std::allocator<std::size_t> >::size_type, 4, std::allocator<std::size_t> , true>>
    using xarray_pointer = xarray_adaptor< xbuffer_adaptor< xtl::closure_type_t< T * >, xt::no_ownership, detail::default_allocator_for_ptr_t< T > >, L, SC >
     xarray adaptor for a pointer.
     
    using smart_ownership = no_ownership
     
    template<class C >
    using temporary_container_t = typename temporary_container< C >::type
     
    template<class T >
    using allocator_type_t = typename detail::allocator_type_impl< T >::type
     
    template<class T , class A = std::allocator<T>>
    using xcsv_tensor = xtensor_container< std::vector< T, A >, 2, layout_type::row_major >
     
    template<class T >
    using xdynamic_slice = xtl::variant< T, xrange_adaptor< placeholders::xtuph, T, T >, xrange_adaptor< T, placeholders::xtuph, T >, xrange_adaptor< T, T, placeholders::xtuph >, xrange_adaptor< T, placeholders::xtuph, placeholders::xtuph >, xrange_adaptor< placeholders::xtuph, T, placeholders::xtuph >, xrange_adaptor< placeholders::xtuph, placeholders::xtuph, T >, xrange_adaptor< T, T, T >, xrange_adaptor< placeholders::xtuph, placeholders::xtuph, placeholders::xtuph >, xrange< T >, xstepped_range< T >, xkeep_slice< T >, xdrop_slice< T >, xall_tag, xellipsis_tag, xnewaxis_tag >
     
    using xdynamic_slice_vector = std::vector< xdynamic_slice< std::ptrdiff_t > >
     
    template<class E >
    using xvalue_type = detail::xvalue_type_impl< E >
     
    template<class E >
    using xvalue_type_t = typename xvalue_type< E >::type
     
    template<class... C>
    using common_value_type_t = typename common_value_type< C... >::type
     
    template<class... Args>
    using common_size_type_t = typename common_size_type< Args... >::type
     
    template<class... Args>
    using common_difference_type_t = typename common_difference_type< Args... >::type
     
    template<class T >
    using temporary_type_t = typename temporary_type< T >::type
     
    template<class... C>
    using common_tensor_type_t = typename common_tensor_type< C... >::type
     
    template<class E >
    using big_promote_value_type_t = typename big_promote_value_type< E >::type
     
    template<class V , class S >
    using get_init_type_t = typename get_init_type< V, S >::type
     
    template<class C >
    using get_stepper_iterator = typename detail::get_stepper_iterator_impl< C >::type
     
    template<class C >
    using xindex_type_t = typename detail::index_type_impl< C >::type
     
    template<class T , class R = T>
    using enable_indexed_stepper_t = typename enable_indexed_stepper< T, R >::type
     
    template<class T , class R = T>
    using disable_indexed_stepper_t = typename disable_indexed_stepper< T, R >::type
     
    template<class T >
    using norm_type_t = typename norm_type< T >::type
     Abbreviation of 'typename norm_type<T>::type'.
     
    template<class T >
    using squared_norm_type_t = typename squared_norm_type< T >::type
     Abbreviation of 'typename squared_norm_type<T>::type'.
     
    template<class CT , class M , std::size_t I>
    using xoffset_view = xfunctor_view< detail::offset_forwarder< M, I >, CT >
     
    template<class CT , class M , std::size_t I>
    using xoffset_adaptor = xfunctor_adaptor< detail::offset_forwarder< M, I >, CT >
     
    template<class E >
    using is_xscalar = detail::is_xscalar_impl< E >
     
    template<class... E>
    using all_xscalar = detail::all_xscalar< E... >
     
    template<class D >
    using select_expression_base_t = std::conditional_t< detail::is_sharable< D >::value, xsharable_expression< D >, xexpression< D > >
     
    template<class E >
    using is_assignable = is_crtp_base_of< xsemantic_base, E >
     
    template<class E , class R = void>
    using enable_assignable = typename std::enable_if< is_assignable< E >::value, R >::type
     
    template<class E , class R = void>
    using disable_assignable = typename std::enable_if<!is_assignable< E >::value, R >::type
     
    template<class E >
    using has_container_semantics = is_crtp_base_of< xcontainer_semantic, E >
     
    template<class E , class R = void>
    using enable_xcontainer_semantics = typename std::enable_if< has_container_semantics< E >::value, R >::type
     
    template<class E , class R = void>
    using disable_xcontainer_semantics = typename std::enable_if<!has_container_semantics< E >::value, R >::type
     
    template<class E >
    using has_view_semantics = is_crtp_base_of< xview_semantic, E >
     
    template<class E , class R = void>
    using enable_xview_semantics = typename std::enable_if< has_view_semantics< E >::value, R >::type
     
    template<class E , class R = void>
    using disable_xview_semantics = typename std::enable_if<!has_view_semantics< E >::value, R >::type
     
    template<class T >
    using dynamic_shape = svector< T, 4 >
     
    template<class T , std::size_t N>
    using static_shape = std::array< T, N >
     
    using xindex = dynamic_shape< std::size_t >
     
    template<class... S>
    using promote_shape_t = typename promote_shape< S... >::type
     
    template<class... S>
    using promote_strides_t = typename promote_strides< S... >::type
     
    template<class S >
    using index_from_shape_t = typename index_from_shape< S >::type
     
    template<class S >
    using filter_fixed_shape_t = typename filter_fixed_shape< S >::type
     
    template<class S >
    using is_xslice = std::is_base_of< xslice< S >, S >
     
    template<class E , class R = void>
    using disable_xslice = typename std::enable_if<!is_xslice< E >::value, R >::type
     
    template<class... E>
    using has_xslice = xtl::disjunction< is_xslice< E >... >
     
    template<class E , class SL >
    using get_slice_type = typename detail::get_slice_type_impl< E, std::remove_reference_t< SL > >::type
     
    template<layout_type L1, layout_type L2, class T >
    using select_iterable_base_t = typename select_iterable_base< L1, L2, T >::type
     
    template<class T >
    using xstrided_slice = xtl::variant< T, xrange_adaptor< placeholders::xtuph, T, T >, xrange_adaptor< T, placeholders::xtuph, T >, xrange_adaptor< T, T, placeholders::xtuph >, xrange_adaptor< T, placeholders::xtuph, placeholders::xtuph >, xrange_adaptor< placeholders::xtuph, T, placeholders::xtuph >, xrange_adaptor< placeholders::xtuph, placeholders::xtuph, T >, xrange_adaptor< T, T, T >, xrange_adaptor< placeholders::xtuph, placeholders::xtuph, placeholders::xtuph >, xrange< T >, xstepped_range< T >, xall_tag, xellipsis_tag, xnewaxis_tag >
     
    using xstrided_slice_vector = std::vector< xstrided_slice< std::ptrdiff_t > >
     vector of slices used to build a xstrided_view
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >, class SA = std::allocator<typename std::vector<T, A>::size_type>>
    using xarray = xarray_container< uvector< T, A >, L, xt::svector< typename uvector< T, A >::size_type, 4, SA, true > >
     Alias template on xarray_container with default parameters for data container type and shape / strides container type.
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >, class BC = xtl::xdynamic_bitset<std::size_t>, class SA = std::allocator<typename std::vector<T, A>::size_type>>
    using xarray_optional = xarray_container< xtl::xoptional_vector< T, A, BC >, L, xt::svector< typename uvector< T, A >::size_type, 4, SA, true >, xoptional_expression_tag >
     Alias template on xarray_container for handling missing values.
     
    template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >>
    using xtensor = xtensor_container< uvector< T, A >, N, L >
     Alias template on xtensor_container with default parameters for data container type.
     
    template<std::size_t... N>
    using xshape = fixed_shape< N... >
     Alias template for fixed_shape allows for a shorter template shape definition in xtensor_fixed.
     
    template<class T , class FSH , layout_type L = ::xt::layout_type::row_major, bool Sharable = true>
    using xtensor_fixed = xfixed_container< T, FSH, L, Sharable >
     Alias template on xfixed_container with default parameters for layout type.
     
    template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >, class BC = xtl::xdynamic_bitset<std::size_t>>
    using xtensor_optional = xtensor_container< xtl::xoptional_vector< T, A, BC >, N, L, xoptional_expression_tag >
     Alias template on xtensor_container for handling missing values.
     
    template<class A1 , class A2 >
    using driven_align_mode_t = typename detail::driven_align_mode_impl< A1, A2 >::type
     
    template<class T >
    using bool_load_type = std::conditional_t< std::is_same< T, bool >::value, uint8_t, T >
     
    template<class C , class T1 , class T2 >
    using container_simd_return_type_t = typename container_simd_return_type< C, T1, T2 >::type
     
    template<class X , class C >
    using rebind_container_t = typename rebind_container< X, C >::type
     
    template<class... T>
    using void_t = typename make_void< T... >::type
     
    template<class T , class R >
    using disable_integral_t = std::enable_if_t<!xtl::is_integral< T >::value, R >
     
    template<class T >
    using remove_class_t = typename remove_class< T >::type
     
    template<class T , std::size_t I>
    using nested_initializer_list_t = typename nested_initializer_list< T, I >::type
     
    template<class T >
    using get_value_type_t = typename get_value_type< T >::type
     
    template<class T , class U >
    using apply_cv_t = typename apply_cv< T, U >::type
     
    template<class T >
    using xtrivially_default_constructible = std::is_trivially_default_constructible< T >
     
    template<class C >
    using get_strides_t = typename get_strides_type< C >::type
     
    template<class ST >
    using inner_reference_t = typename inner_reference< ST >::type
     
    template<class E >
    using has_fixed_rank_t = typename has_fixed_rank< std::decay_t< E > >::type
     
    template<class E , size_t N>
    using has_rank_t = typename has_rank< std::decay_t< E >, N >::type
     
    template<class V >
    using get_stepper = typename detail::get_stepper_impl< V >::type
     
    template<class E , class... SL>
    using view_temporary_type_t = typename view_temporary_type< E, SL... >::type
     
    + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum class  histogram_algorithm { automatic +, linspace +, logspace +, uniform + }
     Defines different algorithms to be used in "histogram_bin_edges". More...
     
    enum class  layout_type { dynamic = 0x00 +, any = 0xFF +, row_major = 0x01 +, column_major = 0x02 + }
     
    enum class  pad_mode {
    +  constant +, symmetric +, reflect +, wrap +,
    +  periodic +, edge +
    + }
     Defines different algorithms to be used in xt::pad: More...
     
    enum class  sorting_method { quick +, stable + }
     Sorting method. More...
     
    enum class  quantile_method {
    +  quantile_method::interpolated_inverted_cdf = 4 +, quantile_method::hazen +, quantile_method::weibull +, quantile_method::linear +,
    +  quantile_method::median_unbiased +, quantile_method::normal_unbiased +
    + }
     Quantile interpolation method. More...
     
    enum class  stride_type { stride_type::internal = 0 +, stride_type::normal = 1 +, stride_type::bytes = 2 + }
     Choose stride type. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<class RF >
    auto make_xaccumulator_functor (RF &&accumulate_func)
     
    template<class RF , class IF >
    auto make_xaccumulator_functor (RF &&accumulate_func, IF &&init_func)
     
    template<class F , class E , class EVS = evaluation_strategy::immediate_type, xtl::check_concept< is_evaluation_strategy< EVS > > = 0>
    auto accumulate (F &&f, E &&e, EVS evaluation_strategy=EVS())
     Accumulate and flatten array NOTE This function is not lazy!
     
    template<class F , class E , class EVS = evaluation_strategy::immediate_type>
    auto accumulate (F &&f, E &&e, std::ptrdiff_t axis, EVS evaluation_strategy=EVS())
     Accumulate over axis NOTE This function is not lazy!
     
    template<layout_type L = ::xt::layout_type::row_major, class C , class SC >
    auto adapt (C &&container, const SC &shape, layout_type l=L)
     Constructs:
     
    template<class C , class SC , class SS >
    auto adapt (C &&container, SC &&shape, SS &&strides)
     Constructs:
     
    template<layout_type L = ::xt::layout_type::row_major, class P , class O , class SC , class A = detail::default_allocator_for_ptr_t<P>>
    auto adapt (P &&pointer, typename A::size_type size, O ownership, const SC &shape, layout_type l=L, const A &alloc=A())
     Constructs:
     
    template<class P , class O , class SC , class SS , class A = detail::default_allocator_for_ptr_t<P>>
    auto adapt (P &&pointer, typename A::size_type size, O ownership, SC &&shape, SS &&strides, const A &alloc=A())
     Constructs:
     
    template<layout_type L = ::xt::layout_type::row_major, class T , std::size_t N, class SC >
    auto adapt (T(&c_array)[N], const SC &shape, layout_type l=L)
     Constructs:
     
    template<class T , std::size_t N, class SC , class SS >
    auto adapt (T(&c_array)[N], SC &&shape, SS &&strides)
     Constructs:
     
    template<layout_type L = ::xt::layout_type::row_major, class C , std::size_t... X>
    auto adapt (C &&pointer, const fixed_shape< X... > &)
     Constructs an non-owning xtensor_fixed_adaptor from a pointer with the specified shape and layout.
     
    template<layout_type L = ::xt::layout_type::row_major, class C >
    xtensor_adaptor< C, 1, L > adapt (C &&container, layout_type l=L)
     Constructs a 1-D xtensor_adaptor of the given stl-like container, with the specified layout_type.
     
    template<layout_type L = ::xt::layout_type::row_major, class P , class O , class A = detail::default_allocator_for_ptr_t<P>>
    xtensor_adaptor< xbuffer_adaptor< xtl::closure_type_t< P >, O, A >, 1, L > adapt (P &&pointer, typename A::size_type size, O ownership, layout_type l=L, const A &alloc=A())
     Constructs a 1-D xtensor_adaptor of the given dynamically allocated C array, with the specified layout.
     
    template<layout_type L = ::xt::layout_type::row_major, class P , class SC , xtl::check_concept< detail::not_an_array< std::decay_t< SC > > > = 0>
    auto adapt_smart_ptr (P &&smart_ptr, const SC &shape, layout_type l=L)
     Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)
     
    template<layout_type L = ::xt::layout_type::row_major, class P , class SC , class D , xtl::check_concept< detail::not_an_array< std::decay_t< SC > >, detail::not_a_layout< std::decay_t< D > > > = 0>
    auto adapt_smart_ptr (P &&data_ptr, const SC &shape, D &&smart_ptr, layout_type l=L)
     Adapt a smart pointer (shared_ptr or unique_ptr)
     
    template<layout_type L = ::xt::layout_type::row_major, class P , class I , std::size_t N>
    auto adapt_smart_ptr (P &&smart_ptr, const I(&shape)[N], layout_type l=L)
     Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)
     
    template<layout_type L = ::xt::layout_type::row_major, class P , class I , std::size_t N, class D , xtl::check_concept< detail::not_a_layout< std::decay_t< D > > > = 0>
    auto adapt_smart_ptr (P &&data_ptr, const I(&shape)[N], D &&smart_ptr, layout_type l=L)
     Adapt a smart pointer (shared_ptr or unique_ptr)
     
    template<class E1 , class E2 >
    void assign_data (xexpression< E1 > &e1, const xexpression< E2 > &e2, bool trivial)
     
    template<class E1 , class E2 >
    void assign_xexpression (xexpression< E1 > &e1, const xexpression< E2 > &e2)
     
    template<class E1 , class E2 >
    void computed_assign (xexpression< E1 > &e1, const xexpression< E2 > &e2)
     
    template<class E1 , class E2 , class F >
    void scalar_computed_assign (xexpression< E1 > &e1, const E2 &e2, F &&f)
     
    template<class E1 , class E2 >
    void assert_compatible_shape (const xexpression< E1 > &e1, const xexpression< E2 > &e2)
     
    +template<class E1 , class E2 >
    void strided_assign (E1 &e1, const E2 &e2, std::false_type)
     
    +template<class E1 , class E2 >
    void strided_assign (E1 &e1, const E2 &e2, std::true_type)
     
    +template<class E >
    auto xaxis_slice_begin (E &&e)
     
    +template<class E >
    auto xaxis_slice_begin (E &&e, typename std::decay_t< E >::size_type axis)
     
    +template<class E >
    auto xaxis_slice_end (E &&e)
     
    +template<class E >
    auto xaxis_slice_end (E &&e, typename std::decay_t< E >::size_type axis)
     
    template<class E , class CS , class A , class O , class FF >
    auto blockwise_reducer (E &&e, CS &&chunk_shape, A &&axes, O &&raw_options, FF &&functor)
     
    template<class E , class S >
    auto broadcast (E &&e, const S &s)
     Returns an xexpression broadcasting the given expression to a specified shape.
     
    template<class E , class I , std::size_t L>
    auto broadcast (E &&e, const I(&s)[L])
     
    template<class CT , class X >
    constexpr auto linear_begin (xbroadcast< CT, X > &c) noexcept
     
    template<class CT , class X >
    constexpr auto linear_end (xbroadcast< CT, X > &c) noexcept
     
    template<class CT , class X >
    constexpr auto linear_begin (const xbroadcast< CT, X > &c) noexcept
     
    template<class CT , class X >
    constexpr auto linear_end (const xbroadcast< CT, X > &c) noexcept
     
    template<class D >
    bool operator== (const xbuffer_adaptor_base< D > &lhs, const xbuffer_adaptor_base< D > &rhs)
     
    template<class D >
    bool operator!= (const xbuffer_adaptor_base< D > &lhs, const xbuffer_adaptor_base< D > &rhs)
     
    template<class D >
    bool operator< (const xbuffer_adaptor_base< D > &lhs, const xbuffer_adaptor_base< D > &rhs)
     
    template<class D >
    bool operator<= (const xbuffer_adaptor_base< D > &lhs, const xbuffer_adaptor_base< D > &rhs)
     
    template<class D >
    bool operator> (const xbuffer_adaptor_base< D > &lhs, const xbuffer_adaptor_base< D > &rhs)
     
    template<class D >
    bool operator>= (const xbuffer_adaptor_base< D > &lhs, const xbuffer_adaptor_base< D > &rhs)
     
    template<class CP , class O , class A >
    void swap (xbuffer_adaptor< CP, O, A > &lhs, xbuffer_adaptor< CP, O, A > &rhs) noexcept
     
    template<class I , class CI >
    void swap (xiterator_adaptor< I, CI > &lhs, xiterator_adaptor< I, CI > &rhs) noexcept
     
    template<class C , class IG >
    void swap (xiterator_owner_adaptor< C, IG > &lhs, xiterator_owner_adaptor< C, IG > &rhs) noexcept
     
    template<class C , class IG >
    auto make_xiterator_adaptor (C &&container, IG iterator_getter)
     
    template<class T , class S >
    auto ones (S shape) noexcept
     Returns an xexpression containing ones of the specified shape.
     
    template<class T , class I , std::size_t L>
    auto ones (const I(&shape)[L]) noexcept
     
    template<class T , class S >
    auto zeros (S shape) noexcept
     Returns an xexpression containing zeros of the specified shape.
     
    template<class T , class I , std::size_t L>
    auto zeros (const I(&shape)[L]) noexcept
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class S >
    xarray< T, L > empty (const S &shape)
     Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of with value_type T and shape.
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class ST , std::size_t N>
    xtensor< T, N, L > empty (const std::array< ST, N > &shape)
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class I , std::size_t N>
    xtensor< T, N, L > empty (const I(&shape)[N])
     
    template<class T , layout_type L = ::xt::layout_type::row_major, std::size_t... N>
    xtensor_fixed< T, fixed_shape< N... >, L > empty (const fixed_shape< N... > &)
     
    template<class E >
    auto empty_like (const xexpression< E > &e)
     Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of the same shape, value type and layout as the input xexpression e.
     
    template<class E >
    auto full_like (const xexpression< E > &e, typename E::value_type fill_value)
     Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with fill_value and of the same shape, value type and layout as the input xexpression e.
     
    template<class E >
    auto zeros_like (const xexpression< E > &e)
     Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with zeros and of the same shape, value type and layout as the input xexpression e.
     
    template<class E >
    auto ones_like (const xexpression< E > &e)
     Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with ones and of the same shape, value type and layout as the input xexpression e.
     
    template<class T = bool>
    auto eye (const std::vector< std::size_t > &shape, int k=0)
     Generates an array with ones on the diagonal.
     
    template<class T = bool>
    auto eye (std::size_t n, int k=0)
     Generates a (n x n) array with ones on the diagonal.
     
    template<class T , class S = T>
    auto arange (T start, T stop, S step=1) noexcept
     Generates numbers evenly spaced within given half-open interval [start, stop).
     
    template<class T >
    auto arange (T stop) noexcept
     Generate numbers evenly spaced within given half-open interval [0, stop) with a step size of 1.
     
    template<class T >
    auto linspace (T start, T stop, std::size_t num_samples=50, bool endpoint=true) noexcept
     Generates num_samples evenly spaced numbers over given interval.
     
    template<class T >
    auto logspace (T start, T stop, std::size_t num_samples, T base=10, bool endpoint=true) noexcept
     Generates num_samples numbers evenly spaced on a log scale over given interval.
     
    template<class... Types>
    auto xtuple (Types &&... args)
     Creates tuples from arguments for concatenate and stack.
     
    template<class... CT>
    auto concatenate (std::tuple< CT... > &&t, std::size_t axis=0)
     Concatenates xexpressions along axis.
     
    template<std::size_t axis, class... CT, typename = std::enable_if_t<detail::all_fixed_shapes<CT...>::value>>
    auto concatenate (std::tuple< CT... > &&t)
     
    template<class... CT>
    auto stack (std::tuple< CT... > &&t, std::size_t axis=0)
     Stack xexpressions along axis.
     
    template<class... CT>
    auto hstack (std::tuple< CT... > &&t)
     Stack xexpressions in sequence horizontally (column wise).
     
    template<class... CT>
    auto vstack (std::tuple< CT... > &&t)
     Stack xexpressions in sequence vertically (row wise).
     
    template<class... E>
    auto meshgrid (E &&... e) noexcept
     Return coordinate tensors from coordinate vectors.
     
    template<class E >
    auto diagonal (E &&arr, int offset=0, std::size_t axis_1=0, std::size_t axis_2=1)
     Returns the elements on the diagonal of arr If arr has more than two dimensions, then the axes specified by axis_1 and axis_2 are used to determine the 2-D sub-array whose diagonal is returned.
     
    template<class E >
    auto diag (E &&arr, int k=0)
     xexpression with values of arr on the diagonal, zeroes otherwise
     
    template<class E >
    auto tril (E &&arr, int k=0)
     Extract lower triangular matrix from xexpression.
     
    template<class E >
    auto triu (E &&arr, int k=0)
     Extract upper triangular matrix from xexpression.
     
    template<class E >
    constexpr bool is_chunked (const xexpression< E > &e)
     
    template<class E >
    constexpr bool is_chunked ()
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class S >
    xchunked_array< xarray< xarray< T > > > chunked_array (S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
     Creates an in-memory chunked array.
     
    template<class T , layout_type L = ::xt::layout_type::row_major, class S >
    xchunked_array< xarray< xarray< T > > > chunked_array (std::initializer_list< S > shape, std::initializer_list< S > chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
     
    template<layout_type L = ::xt::layout_type::row_major, class E , class S >
    xchunked_array< xarray< xarray< typename E::value_type > > > chunked_array (const xexpression< E > &e, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
     Creates an in-memory chunked array.
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    xchunked_array< xarray< xarray< typename E::value_type > > > chunked_array (const xexpression< E > &e, layout_type chunk_memory_layout=::xt::layout_type::row_major)
     Creates an in-memory chunked array.
     
    template<class E , class S >
    xchunked_view< E > as_chunked (E &&e, S &&chunk_shape)
     
    template<class E >
    xchunked_view< E > as_chunked (E &&e)
     
    template<class E >
    decltype(auto) real (E &&e) noexcept
     Return an xt::xexpression representing the real part of the given expression.
     
    template<class E >
    decltype(auto) imag (E &&e) noexcept
     Return an xt::xexpression representing the imaginary part of the given expression.
     
    template<class E >
    auto conj (E &&e) noexcept
     Return an xt::xfunction evaluating to the complex conjugate of the given expression.
     
    template<class E >
    auto arg (E &&e) noexcept
     Calculates the phase angle (in radians) elementwise for the complex numbers in e.
     
    template<class E >
    auto angle (E &&e, bool deg=false) noexcept
     Calculates the phase angle elementwise for the complex numbers in e.
     
    template<class E >
    auto norm (E &&e) noexcept
     Calculates the squared magnitude elementwise for the complex numbers in e.
     
    template<class T , class A = std::allocator<T>>
    xcsv_tensor< T, A > load_csv (std::istream &stream, const char delimiter, const std::size_t skip_rows, const std::ptrdiff_t max_rows, const std::string comments)
     Load tensor from CSV.
     
    template<class E >
    void dump_csv (std::ostream &stream, const xexpression< E > &e)
     Dump tensor to CSV.
     
    template<class E >
    void load_file (std::istream &stream, xexpression< E > &e, const xcsv_config &config)
     
    template<class E >
    void dump_file (std::ostream &stream, const xexpression< E > &e, const xcsv_config &)
     
    template<class E >
    auto dynamic_view (E &&e, const xdynamic_slice_vector &slices)
     
    template<class T >
    auto eval (T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
     Force evaluation of xexpression.
     
    template<layout_type L = layout_type::any, class E >
    auto as_strided (E &&e) -> std::enable_if_t< has_data_interface< std::decay_t< E > >::value &&detail::has_same_layout< L, E >(), E && >
     Force evaluation of xexpression not providing a data interface and convert to the required layout.
     
    template<class S1 , class S2 >
    void throw_broadcast_error (const S1 &lhs, const S2 &rhs)
     
    template<class S1 , class S2 >
    void throw_concatenate_error (const S1 &lhs, const S2 &rhs)
     
    +template<class S , class... Args>
    void check_index (const S &shape, Args... args)
     
    template<class S , class It >
    void check_element_index (const S &shape, It first, It last)
     
    template<class S >
    void check_index (const S &)
     
    template<class S >
    void check_index (const S &, missing_type)
     
    template<class S , class Arg , class... Args>
    void check_index (const S &shape, Arg arg, Args... args)
     
    template<class S , class... Args>
    void check_dimension (const S &shape, Args...)
     
    template<class A , class D >
    void check_axis_in_dim (A axis, D dim, const char *subject="Axis")
     
    template<class S , class... Args>
    void check_access (const S &shape, Args... args)
     
    template<layout_type L, class R , std::size_t... X>
    constexpr R get_strides (const fixed_shape< X... > &shape) noexcept
     
    template<class S , class T >
    constexpr T get_backstrides (const S &shape, const T &strides) noexcept
     
    template<class E1 , class E2 >
    auto digitize (E1 &&data, E2 &&bin_edges, bool right=false)
     Return the indices of the bins to which each value in input array belongs.
     
    template<class R = double, class E1 , class E2 , class E3 >
    auto histogram (E1 &&data, E2 &&bin_edges, E3 &&weights, bool density=false)
     Compute the histogram of a set of data.
     
    template<class R = double, class E1 , class E2 >
    auto histogram (E1 &&data, E2 &&bin_edges, bool density=false)
     Compute the histogram of a set of data.
     
    template<class R = double, class E1 >
    auto histogram (E1 &&data, std::size_t bins=10, bool density=false)
     Compute the histogram of a set of data.
     
    template<class R = double, class E1 , class E2 >
    auto histogram (E1 &&data, std::size_t bins, E2 left, E2 right, bool density=false)
     Compute the histogram of a set of data.
     
    template<class R = double, class E1 , class E2 >
    auto histogram (E1 &&data, std::size_t bins, E2 &&weights, bool density=false)
     Compute the histogram of a set of data.
     
    template<class R = double, class E1 , class E2 , class E3 >
    auto histogram (E1 &&data, std::size_t bins, E2 &&weights, E3 left, E3 right, bool density=false)
     Compute the histogram of a set of data.
     
    template<class E1 , class E2 , class E3 >
    auto histogram_bin_edges (E1 &&data, E2 &&weights, E3 left, E3 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)
     Compute the bin-edges of a histogram of a set of data using different algorithms.
     
    template<class E1 , class E2 >
    auto histogram_bin_edges (E1 &&data, E2 &&weights, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)
     Compute the bin-edges of a histogram of a set of data using different algorithms.
     
    template<class E1 >
    auto histogram_bin_edges (E1 &&data, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)
     Compute the bin-edges of a histogram of a set of data using different algorithms.
     
    template<class E1 , class E2 >
    auto histogram_bin_edges (E1 &&data, E2 left, E2 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)
     Compute the bin-edges of a histogram of a set of data using different algorithms.
     
    template<class E1 , class E2 , xtl::check_concept< is_xexpression< std::decay_t< E2 > > > = 0>
    auto bincount (E1 &&data, E2 &&weights, std::size_t minlength=0)
     Count number of occurrences of each value in array of non-negative ints.
     
    template<class E1 >
    auto bincount (E1 &&data, std::size_t minlength=0)
     
    template<class E >
    xt::xtensor< size_t, 1 > bin_items (size_t N, E &&weights)
     Get the number of items in each bin, given the fraction of items per bin.
     
    xt::xtensor< size_t, 1 > bin_items (size_t N, size_t bins)
     Get the number of items in each bin, with each bin having approximately the same number of items in it,under the constraint that the total number of items of all bins is exactly "N".
     
    template<class T >
    static_string type_name ()
     
    template<class T >
    std::string type_to_string ()
     
    template<class T >
    std::string info (const T &t)
     
    template<class E >
    std::ostream & operator<< (std::ostream &out, const xexpression< E > &e)
     
    print_options::print_options_impl get_print_options (std::ostream &out)
     
    template<class E , class F >
    std::ostream & pretty_print (const xexpression< E > &e, F &&func, std::ostream &out=std::cout)
     
    template<class E >
    std::ostream & pretty_print (const xexpression< E > &e, std::ostream &out=std::cout)
     
    template<class St , class S , layout_type L>
    bool operator== (const xiterator< St, S, L > &lhs, const xiterator< St, S, L > &rhs)
     
    template<class St , class S , layout_type L>
    bool operator< (const xiterator< St, S, L > &lhs, const xiterator< St, S, L > &rhs)
     
    template<class It , class BIt >
    bool operator== (const xbounded_iterator< It, BIt > &lhs, const xbounded_iterator< It, BIt > &rhs)
     
    template<class It , class BIt >
    bool operator< (const xbounded_iterator< It, BIt > &lhs, const xbounded_iterator< It, BIt > &rhs)
     
    template<class C >
    constexpr auto linear_begin (C &c) noexcept
     
    template<class C >
    constexpr auto linear_end (C &c) noexcept
     
    template<class C >
    constexpr auto linear_begin (const C &c) noexcept
     
    template<class C >
    constexpr auto linear_end (const C &c) noexcept
     
    template<template< typename U, typename V, typename... Args > class M, class E >
    enable_xexpression< E > to_json (nlohmann::basic_json< M > &j, const E &e)
     JSON serialization of an xtensor expression.
     
    template<template< typename U, typename V, typename... Args > class M, class E >
    enable_xcontainer_semantics< E > from_json (const nlohmann::basic_json< M > &j, E &e)
     JSON deserialization of a xtensor expression with a container or a view semantics.
     
    template<class... Args>
    constexpr layout_type compute_layout (Args... args) noexcept
     Implementation of the following logical table:
     
    constexpr layout_type default_assignable_layout (layout_type l) noexcept
     
    constexpr layout_type layout_remove_any (const layout_type layout) noexcept
     
    template<class E >
    auto transpose (E &&e) noexcept
     Returns a transpose view by reversing the dimensions of xexpression e.
     
    template<class E , class S , class Tag = check_policy::none>
    auto transpose (E &&e, S &&permutation, Tag check_policy)
     Returns a transpose view by permuting the xexpression e with permutation.
     
    template<class E >
    auto swapaxes (E &&e, std::ptrdiff_t axis1, std::ptrdiff_t axis2)
     Return a new expression with two axes interchanged.
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    auto ravel (E &&e)
     Return a flatten view of the given expression.
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    auto flatten (E &&e)
     Return a flatten view of the given expression.
     
    template<layout_type L, class T >
    auto flatnonzero (const T &arr)
     Return indices that are non-zero in the flattened version of arr.
     
    template<class E >
    auto trim_zeros (E &&e, const std::string &direction)
     Trim zeros at beginning, end or both of 1D sequence.
     
    template<class E >
    auto squeeze (E &&e)
     Returns a squeeze view of the given expression.
     
    template<class E , class S , class Tag = check_policy::none, std::enable_if_t<!xtl::is_integral< S >::value, int > = 0>
    auto squeeze (E &&e, S &&axis, Tag check_policy)
     Remove single-dimensional entries from the shape of an xexpression.
     
    template<class E >
    auto expand_dims (E &&e, std::size_t axis)
     Expand the shape of an xexpression.
     
    template<std::size_t N, class E >
    auto atleast_Nd (E &&e)
     Expand dimensions of xexpression to at least N
     
    template<class E >
    auto atleast_1d (E &&e)
     Expand to at least 1D.
     
    template<class E >
    auto atleast_2d (E &&e)
     Expand to at least 2D.
     
    template<class E >
    auto atleast_3d (E &&e)
     Expand to at least 3D.
     
    template<class E >
    auto split (E &e, std::size_t n, std::size_t axis)
     Split xexpression along axis into subexpressions.
     
    template<class E >
    auto hsplit (E &e, std::size_t n)
     Split an xexpression into subexpressions horizontally (column-wise)
     
    template<class E >
    auto vsplit (E &e, std::size_t n)
     Split an xexpression into subexpressions vertically (row-wise)
     
    template<class E >
    auto flip (E &&e)
     Reverse the order of elements in an xexpression along every axis.
     
    template<class E >
    auto flip (E &&e, std::size_t axis)
     Reverse the order of elements in an xexpression along the given axis.
     
    template<std::ptrdiff_t N = 1, class E >
    auto rot90 (E &&e, const std::array< std::ptrdiff_t, 2 > &axes)
     Rotate an array by 90 degrees in the plane specified by axes.
     
    template<class E >
    auto roll (E &&e, std::ptrdiff_t shift)
     Roll an expression.
     
    template<class E >
    auto roll (E &&e, std::ptrdiff_t shift, std::ptrdiff_t axis)
     Roll an expression along a given axis.
     
    template<class E >
    auto repeat (E &&e, std::size_t repeats, std::size_t axis)
     Repeat elements of an expression along a given axis.
     
    template<class E >
    auto repeat (E &&e, const std::vector< std::size_t > &repeats, std::size_t axis)
     Repeat elements of an expression along a given axis.
     
    template<class E >
    auto repeat (E &&e, std::vector< std::size_t > &&repeats, std::size_t axis)
     Repeat elements of an expression along a given axis.
     
    template<class E >
    auto moveaxis (E &&e, std::ptrdiff_t src, std::ptrdiff_t dest)
     Return a new expression with an axis move to a new position.
     
    template<class E >
    auto abs (E &&e) noexcept -> detail::xfunction_type_t< math::abs_fun, E >
     Absolute value function.
     
    template<class E >
    auto fabs (E &&e) noexcept -> detail::xfunction_type_t< math::fabs_fun, E >
     Absolute value function.
     
    template<class E1 , class E2 >
    auto fmod (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmod_fun, E1, E2 >
     Remainder of the floating point division operation.
     
    template<class E1 , class E2 >
    auto remainder (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::remainder_fun, E1, E2 >
     Signed remainder of the division operation.
     
    template<class E1 , class E2 , class E3 >
    auto fma (E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< math::fma_fun, E1, E2, E3 >
     Fused multiply-add operation.
     
    template<class E1 , class E2 >
    auto fmax (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmax_fun, E1, E2 >
     Maximum function.
     
    template<class E1 , class E2 >
    auto fmin (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmin_fun, E1, E2 >
     Minimum function.
     
    template<class E1 , class E2 >
    auto fdim (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fdim_fun, E1, E2 >
     Positive difference function.
     
    template<class E >
    auto deg2rad (E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >
     Convert angles from degrees to radians.
     
    template<class E >
    auto radians (E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >
     Convert angles from degrees to radians.
     
    template<class E >
    auto rad2deg (E &&e) noexcept -> detail::xfunction_type_t< math::rad2deg, E >
     Convert angles from radians to degrees.
     
    template<class E >
    auto degrees (E &&e) noexcept -> detail::xfunction_type_t< math::rad2deg, E >
     Convert angles from radians to degrees.
     
    template<class E1 , class E2 >
    auto maximum (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::maximum< void >, E1, E2 >
     Elementwise maximum.
     
    template<class E1 , class E2 >
    auto minimum (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::minimum< void >, E1, E2 >
     Elementwise minimum.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto amax (E &&e, X &&axes, EVS es=EVS())
     Maximum element along given axis.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto amax (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto amax (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto amax (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto amin (E &&e, X &&axes, EVS es=EVS())
     Minimum element along given axis.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto amin (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto amin (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto amin (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class E1 , class E2 , class E3 >
    auto clip (E1 &&e1, E2 &&lo, E3 &&hi) noexcept -> detail::xfunction_type_t< math::clamp_fun, E1, E2, E3 >
     Clip values between hi and lo.
     
    template<class E >
    auto sign (E &&e) noexcept -> detail::xfunction_type_t< math::sign_fun, E >
     Returns an element-wise indication of the sign of a number.
     
    template<class E >
    auto exp (E &&e) noexcept -> detail::xfunction_type_t< math::exp_fun, E >
     Natural exponential function.
     
    template<class E >
    auto exp2 (E &&e) noexcept -> detail::xfunction_type_t< math::exp2_fun, E >
     Base 2 exponential function.
     
    template<class E >
    auto expm1 (E &&e) noexcept -> detail::xfunction_type_t< math::expm1_fun, E >
     Natural exponential minus one function.
     
    template<class E >
    auto log (E &&e) noexcept -> detail::xfunction_type_t< math::log_fun, E >
     Natural logarithm function.
     
    template<class E >
    auto log10 (E &&e) noexcept -> detail::xfunction_type_t< math::log10_fun, E >
     Base 10 logarithm function.
     
    template<class E >
    auto log2 (E &&e) noexcept -> detail::xfunction_type_t< math::log2_fun, E >
     Base 2 logarithm function.
     
    template<class E >
    auto log1p (E &&e) noexcept -> detail::xfunction_type_t< math::log1p_fun, E >
     Natural logarithm of one plus function.
     
    template<class E1 , class E2 >
    auto pow (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >
     Power function.
     
    template<class F , class... E>
    auto make_lambda_xfunction (F &&lambda, E &&... args)
     Create a xfunction from a lambda.
     
    template<class E1 >
    auto square (E1 &&e1) noexcept
     Square power function, equivalent to e1 * e1.
     
    template<class E1 >
    auto cube (E1 &&e1) noexcept
     Cube power function, equivalent to e1 * e1 * e1.
     
    template<std::size_t N, class E >
    auto pow (E &&e) noexcept
     Integer power function.
     
    template<class E >
    auto sqrt (E &&e) noexcept -> detail::xfunction_type_t< math::sqrt_fun, E >
     Square root function.
     
    template<class E >
    auto cbrt (E &&e) noexcept -> detail::xfunction_type_t< math::cbrt_fun, E >
     Cubic root function.
     
    template<class E1 , class E2 >
    auto hypot (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::hypot_fun, E1, E2 >
     Hypotenuse function.
     
    template<class E >
    auto sin (E &&e) noexcept -> detail::xfunction_type_t< math::sin_fun, E >
     Sine function.
     
    template<class E >
    auto cos (E &&e) noexcept -> detail::xfunction_type_t< math::cos_fun, E >
     Cosine function.
     
    template<class E >
    auto tan (E &&e) noexcept -> detail::xfunction_type_t< math::tan_fun, E >
     Tangent function.
     
    template<class E >
    auto asin (E &&e) noexcept -> detail::xfunction_type_t< math::asin_fun, E >
     Arcsine function.
     
    template<class E >
    auto acos (E &&e) noexcept -> detail::xfunction_type_t< math::acos_fun, E >
     Arccosine function.
     
    template<class E >
    auto atan (E &&e) noexcept -> detail::xfunction_type_t< math::atan_fun, E >
     Arctangent function.
     
    template<class E1 , class E2 >
    auto atan2 (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::atan2_fun, E1, E2 >
     Artangent function, using signs to determine quadrants.
     
    template<class E >
    auto sinh (E &&e) noexcept -> detail::xfunction_type_t< math::sinh_fun, E >
     Hyperbolic sine function.
     
    template<class E >
    auto cosh (E &&e) noexcept -> detail::xfunction_type_t< math::cosh_fun, E >
     Hyperbolic cosine function.
     
    template<class E >
    auto tanh (E &&e) noexcept -> detail::xfunction_type_t< math::tanh_fun, E >
     Hyperbolic tangent function.
     
    template<class E >
    auto asinh (E &&e) noexcept -> detail::xfunction_type_t< math::asinh_fun, E >
     Inverse hyperbolic sine function.
     
    template<class E >
    auto acosh (E &&e) noexcept -> detail::xfunction_type_t< math::acosh_fun, E >
     Inverse hyperbolic cosine function.
     
    template<class E >
    auto atanh (E &&e) noexcept -> detail::xfunction_type_t< math::atanh_fun, E >
     Inverse hyperbolic tangent function.
     
    template<class E >
    auto erf (E &&e) noexcept -> detail::xfunction_type_t< math::erf_fun, E >
     Error function.
     
    template<class E >
    auto erfc (E &&e) noexcept -> detail::xfunction_type_t< math::erfc_fun, E >
     Complementary error function.
     
    template<class E >
    auto tgamma (E &&e) noexcept -> detail::xfunction_type_t< math::tgamma_fun, E >
     Gamma function.
     
    template<class E >
    auto lgamma (E &&e) noexcept -> detail::xfunction_type_t< math::lgamma_fun, E >
     Natural logarithm of the gamma function.
     
    template<class E >
    auto ceil (E &&e) noexcept -> detail::xfunction_type_t< math::ceil_fun, E >
     ceil function.
     
    template<class E >
    auto floor (E &&e) noexcept -> detail::xfunction_type_t< math::floor_fun, E >
     floor function.
     
    template<class E >
    auto trunc (E &&e) noexcept -> detail::xfunction_type_t< math::trunc_fun, E >
     trunc function.
     
    template<class E >
    auto round (E &&e) noexcept -> detail::xfunction_type_t< math::round_fun, E >
     round function.
     
    template<class E >
    auto nearbyint (E &&e) noexcept -> detail::xfunction_type_t< math::nearbyint_fun, E >
     nearbyint function.
     
    template<class E >
    auto rint (E &&e) noexcept -> detail::xfunction_type_t< math::rint_fun, E >
     rint function.
     
    template<class E >
    auto isfinite (E &&e) noexcept -> detail::xfunction_type_t< math::isfinite_fun, E >
     finite value check
     
    template<class E >
    auto isinf (E &&e) noexcept -> detail::xfunction_type_t< math::isinf_fun, E >
     infinity check
     
    template<class E >
    auto isnan (E &&e) noexcept -> detail::xfunction_type_t< math::isnan_fun, E >
     NaN check.
     
    template<class E1 , class E2 >
    auto isclose (E1 &&e1, E2 &&e2, double rtol=1e-05, double atol=1e-08, bool equal_nan=false) noexcept
     Element-wise closeness detection.
     
    template<class E1 , class E2 >
    auto allclose (E1 &&e1, E2 &&e2, double rtol=1e-05, double atol=1e-08) noexcept
     Check if all elements in e1 are close to the corresponding elements in e2.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto sum (E &&e, X &&axes, EVS es=EVS())
     Sum of elements over given axes.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto sum (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto sum (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto sum (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto prod (E &&e, X &&axes, EVS es=EVS())
     Product of elements over given axes.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto prod (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto prod (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto prod (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto mean (E &&e, X &&axes, EVS es=EVS())
     Mean of elements over given axes.
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto mean (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto mean (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class W , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::negation< xtl::is_integral< X > > > = 0>
    auto average (E &&e, W &&weights, X &&axes, EVS ev=EVS())
     Average of elements over given axes using weights.
     
    template<class T = void, class E , class W , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::is_integral< X > > = 0>
    auto average (E &&e, W &&weights, X axis, EVS ev=EVS())
     
    template<class T = void, class E , class W , class X , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto average (E &&e, W &&weights, const X(&axes)[N], EVS ev=EVS())
     
    template<class T = void, class E , class W , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto average (E &&e, W &&weights, EVS ev=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto average (E &&e, EVS ev=EVS())
     
    template<class T = void, class E , class D , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::is_integral< D > > = 0>
    auto variance (E &&e, const D &ddof, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto variance (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto stddev (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class X , class D , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< D > > = 0>
    auto variance (E &&e, X &&axes, const D &ddof, EVS es=EVS())
     Compute the variance along the specified axes.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > >, is_reducer_options< EVS > > = 0>
    auto variance (E &&e, X &&axes, EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto stddev (E &&e, X &&axes, EVS es=EVS())
     Compute the standard deviation along the specified axis.
     
    template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto stddev (E &&e, const A(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto variance (E &&e, const A(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class A , std::size_t N, class D , class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto variance (E &&e, const A(&axes)[N], const D &ddof, EVS es=EVS())
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto minmax (E &&e, EVS es=EVS())
     Minimum and maximum among the elements of an array or expression.
     
    template<class T = void, class E >
    auto cumsum (E &&e, std::ptrdiff_t axis)
     Cumulative sum.
     
    template<class T = void, class E >
    auto cumsum (E &&e)
     
    template<class T = void, class E >
    auto cumprod (E &&e, std::ptrdiff_t axis)
     Cumulative product.
     
    template<class T = void, class E >
    auto cumprod (E &&e)
     
    template<class E >
    auto nan_to_num (E &&e)
     Convert nan or +/- inf to numbers.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto nanmin (E &&e, X &&axes, EVS es=EVS())
     Minimum element over given axes, ignoring NaNs.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto nanmin (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nanmin (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nanmin (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto nanmax (E &&e, X &&axes, EVS es=EVS())
     Maximum element along given axes, ignoring NaNs.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto nanmax (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nanmax (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nanmax (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto nansum (E &&e, X &&axes, EVS es=EVS())
     Sum of elements over given axes, replacing NaN with 0.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto nansum (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nansum (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nansum (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > > > = 0>
    auto nanprod (E &&e, X &&axes, EVS es=EVS())
     Product of elements over given axes, replacing NaN with 1.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    auto nanprod (E &&e, X axis, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nanprod (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nanprod (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto count_nonzero (E &&e, EVS es=EVS())
     
    template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< X > > > = 0>
    auto count_nonzero (E &&e, X &&axes, EVS es=EVS())
     
    template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< X > > = 0>
    auto count_nonzero (E &&e, X axis, EVS es=EVS())
     
    template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto count_nonzero (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto count_nonnan (E &&e, EVS es=EVS())
     
    template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< X > > > = 0>
    auto count_nonnan (E &&e, X &&axes, EVS es=EVS())
     
    template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto count_nonnan (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E >
    auto nancumsum (E &&e, std::ptrdiff_t axis)
     Cumulative sum, replacing nan with 0.
     
    template<class T = void, class E >
    auto nancumsum (E &&e)
     
    template<class T = void, class E >
    auto nancumprod (E &&e, std::ptrdiff_t axis)
     Cumulative product, replacing nan with 1.
     
    template<class T = void, class E >
    auto nancumprod (E &&e)
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto nanmean (E &&e, X &&axes, EVS es=EVS())
     Mean of elements over given axes, excluding NaNs.
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nanmean (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nanmean (E &&e, const I(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nanvar (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    auto nanstd (E &&e, EVS es=EVS())
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto nanvar (E &&e, X &&axes, EVS es=EVS())
     Compute the variance along the specified axes, excluding NaNs.
     
    template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto nanstd (E &&e, X &&axes, EVS es=EVS())
     Compute the standard deviation along the specified axis, excluding nans.
     
    template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nanstd (E &&e, const A(&axes)[N], EVS es=EVS())
     
    template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto nanvar (E &&e, const A(&axes)[N], EVS es=EVS())
     
    template<class T >
    auto diff (const xexpression< T > &a, std::size_t n=1, std::ptrdiff_t axis=-1)
     Calculate the n-th discrete difference along the given axis.
     
    template<class T >
    auto trapz (const xexpression< T > &y, double dx=1.0, std::ptrdiff_t axis=-1)
     Integrate along the given axis using the composite trapezoidal rule.
     
    template<class T , class E >
    auto trapz (const xexpression< T > &y, const xexpression< E > &x, std::ptrdiff_t axis=-1)
     Integrate along the given axis using the composite trapezoidal rule.
     
    template<class E1 , class E2 , class E3 , typename T >
    auto interp (const E1 &x, const E2 &xp, const E3 &fp, T left, T right)
     Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.
     
    template<class E1 , class E2 = xt::placeholders::xtuph, class E3 = double>
    auto unwrap (E1 &&p, E2 discontinuity=xnone(), std::ptrdiff_t axis=-1, E3 period=2.0 *xt::numeric_constants< double >::PI)
     Unwrap by taking the complement of large deltas with respect to the period.
     
    template<class E1 , class E2 , class E3 >
    auto interp (const E1 &x, const E2 &xp, const E3 &fp)
     Returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x.
     
    template<class E1 >
    auto cov (const E1 &x, const E1 &y=E1())
     Returns the covariance matrix.
     
    template<class E1 , class E2 , class E3 >
    auto convolve (E1 &&a, E2 &&v, E3 mode)
     
    template<class P , class T >
    void compute_0d_table (std::stringstream &out, P &, const T &expr)
     
    template<class P >
    void compute_1d_row (std::stringstream &out, P &printer, const std::size_t &row_idx)
     
    template<class P , class T >
    void compute_1d_table (std::stringstream &out, P &printer, const T &expr, const std::size_t &edgeitems)
     
    template<class P >
    void compute_2d_element (std::stringstream &out, P &printer, const std::string &idx_str, const std::size_t &row_idx, const std::size_t &column_idx)
     
    template<class P , class T >
    void compute_2d_row (std::stringstream &out, P &printer, const T &expr, const std::size_t &edgeitems, const std::string &idx_str, const std::size_t &row_idx)
     
    template<class P , class T , class I >
    void compute_2d_table (std::stringstream &out, P &printer, const T &expr, const std::size_t &edgeitems, const std::vector< I > &idx)
     
    template<class P , class T , class I >
    void compute_nd_row (std::stringstream &out, P &printer, const T &expr, const std::size_t &edgeitems, const std::vector< I > &idx)
     
    template<class P , class T , class I >
    void compute_nd_table_impl (std::stringstream &out, P &printer, const T &expr, const std::size_t &edgeitems, const std::vector< I > &idx)
     
    template<class P , class T >
    void compute_nd_table (std::stringstream &out, P &printer, const T &expr, const std::size_t &edgeitems)
     
    template<class E >
    nlohmann::json mime_bundle_repr_impl (const E &expr)
     
    template<class F , class CT >
    nlohmann::json mime_bundle_repr (const xfunctor_view< F, CT > &expr)
     
    template<class F , class... CT>
    nlohmann::json mime_bundle_repr (const xfunction< F, CT... > &expr)
     
    template<class EC , layout_type L, class SC , class Tag >
    nlohmann::json mime_bundle_repr (const xarray_container< EC, L, SC, Tag > &expr)
     
    template<class EC , std::size_t N, layout_type L, class Tag >
    nlohmann::json mime_bundle_repr (const xtensor_container< EC, N, L, Tag > &expr)
     
    template<class ET , class S , layout_type L, bool SH, class Tag >
    nlohmann::json mime_bundle_repr (const xfixed_container< ET, S, L, SH, Tag > &expr)
     
    template<class F , class CT , class X , class O >
    nlohmann::json mime_bundle_repr (const xreducer< F, CT, X, O > &expr)
     
    template<class VE , class FE >
    nlohmann::json mime_bundle_repr (const xoptional_assembly< VE, FE > &expr)
     
    template<class VEC , class FEC >
    nlohmann::json mime_bundle_repr (const xoptional_assembly_adaptor< VEC, FEC > &expr)
     
    template<class CT >
    nlohmann::json mime_bundle_repr (const xscalar< CT > &expr)
     
    template<class CT , class X >
    nlohmann::json mime_bundle_repr (const xbroadcast< CT, X > &expr)
     
    template<class F , class R , class S >
    nlohmann::json mime_bundle_repr (const xgenerator< F, R, S > &expr)
     
    template<class CT , class... S>
    nlohmann::json mime_bundle_repr (const xview< CT, S... > &expr)
     
    template<class CT , class S , layout_type L, class FST >
    nlohmann::json mime_bundle_repr (const xstrided_view< CT, S, L, FST > &expr)
     
    template<class CTD , class CTM >
    nlohmann::json mime_bundle_repr (const xmasked_view< CTD, CTM > &expr)
     
    template<class T , class B >
    nlohmann::json mime_bundle_repr (const xmasked_value< T, B > &v)
     
    template<class S , class B , class E >
    auto multiindex_iterator_begin (B &&roi_begin, E &&roi_end)
     
    template<class S , class B , class E >
    auto multiindex_iterator_end (B &&roi_begin, E &&roi_end)
     
    template<class A >
    noalias_proxy< xtl::closure_type_t< A > > noalias (A &&a) noexcept
     
    template<class E , class X , class EVS , class >
    auto norm_l0 (E &&e, X &&axes, EVS es) noexcept
     L0 (count) pseudo-norm of an array-like argument over given axes.
     
    template<class E , class X , class EVS , class >
    auto norm_l1 (E &&e, X &&axes, EVS es) noexcept
     L1 norm of an array-like argument over given axes.
     
    template<class E , class X , class EVS , class >
    auto norm_sq (E &&e, X &&axes, EVS es) noexcept
     Squared L2 norm of an array-like argument over given axes.
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    auto norm_l2 (E &&e, EVS es=EVS()) noexcept
     L2 norm of a scalar or array-like argument.
     
    template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E >, xtl::negation< is_reducer_options< X > > > = 0>
    auto norm_l2 (E &&e, X &&axes, EVS es=EVS()) noexcept
     L2 norm of an array-like argument over given axes.
     
    template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto norm_l2 (E &&e, const I(&axes)[N], EVS es=EVS()) noexcept
     
    template<class E , class X , class EVS , class >
    auto norm_linf (E &&e, X &&axes, EVS es) noexcept
     Infinity (maximum) norm of an array-like argument over given axes.
     
    template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto norm_lp_to_p (E &&e, double p, X &&axes, EVS es=EVS()) noexcept
     p-th power of the Lp norm of an array-like argument over given axes.
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    auto norm_lp_to_p (E &&e, double p, EVS es=EVS()) noexcept
     
    template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto norm_lp_to_p (E &&e, double p, const I(&axes)[N], EVS es=EVS()) noexcept
     
    template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > > > = 0>
    auto norm_lp (E &&e, double p, X &&axes, EVS es=EVS())
     Lp norm of an array-like argument over given axes.
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    auto norm_lp (E &&e, double p, EVS es=EVS())
     
    template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    auto norm_lp (E &&e, double p, const I(&axes)[N], EVS es=EVS())
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    auto norm_induced_l1 (E &&e, EVS es=EVS())
     Induced L1 norm of a matrix.
     
    template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    auto norm_induced_linf (E &&e, EVS es=EVS())
     Induced L-infinity norm of a matrix.
     
    template<typename E >
    void dump_npy (const std::string &filename, const xexpression< E > &e)
     Save xexpression to NumPy npy format.
     
    template<typename E >
    std::string dump_npy (const xexpression< E > &e)
     Save xexpression to NumPy npy format in a string.
     
    template<typename T , layout_type L = layout_type::dynamic>
    auto load_npy (std::istream &stream)
     Loads a npy file (the NumPy storage format)
     
    template<typename T , layout_type L = layout_type::dynamic>
    auto load_npy (const std::string &filename)
     Loads a npy file (the NumPy storage format)
     
    template<class E >
    auto operator+ (E &&e) noexcept -> detail::xfunction_type_t< detail::identity, E >
     Identity.
     
    template<class E >
    auto operator- (E &&e) noexcept -> detail::xfunction_type_t< detail::negate, E >
     Opposite.
     
    template<class E1 , class E2 >
    auto operator+ (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::plus, E1, E2 >
     Addition.
     
    template<class E1 , class E2 >
    auto operator- (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::minus, E1, E2 >
     Substraction.
     
    template<class E1 , class E2 >
    auto operator* (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::multiplies, E1, E2 >
     Multiplication.
     
    template<class E1 , class E2 >
    auto operator/ (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::divides, E1, E2 >
     Division.
     
    template<class E1 , class E2 >
    auto operator% (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::modulus, E1, E2 >
     Modulus.
     
    template<class E1 , class E2 >
    auto operator|| (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::logical_or, E1, E2 >
     Or.
     
    template<class E1 , class E2 >
    auto operator&& (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::logical_and, E1, E2 >
     And.
     
    template<class E >
    auto operator! (E &&e) noexcept -> detail::xfunction_type_t< detail::logical_not, E >
     Not.
     
    template<class E1 , class E2 >
    auto operator& (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_and, E1, E2 >
     Bitwise and.
     
    template<class E1 , class E2 >
    auto operator| (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_or, E1, E2 >
     Bitwise or.
     
    template<class E1 , class E2 >
    auto operator^ (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_xor, E1, E2 >
     Bitwise xor.
     
    template<class E >
    auto operator~ (E &&e) noexcept -> detail::xfunction_type_t< detail::bitwise_not, E >
     Bitwise not.
     
    template<class E1 , class E2 >
    auto left_shift (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::left_shift, E1, E2 >
     Bitwise left shift.
     
    template<class E1 , class E2 >
    auto right_shift (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::right_shift, E1, E2 >
     Bitwise left shift.
     
    template<class E1 , class E2 >
    auto operator<< (E1 &&e1, E2 &&e2) noexcept -> detail::shift_return_type_t< detail::left_shift, E1, E2 >
     Bitwise left shift.
     
    template<class E1 , class E2 >
    auto operator>> (E1 &&e1, E2 &&e2) -> detail::shift_return_type_t< detail::right_shift, E1, E2 >
     Bitwise right shift.
     
    template<class E1 , class E2 >
    auto operator< (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::less, E1, E2 >
     Lesser than.
     
    template<class E1 , class E2 >
    auto operator<= (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::less_equal, E1, E2 >
     Lesser or equal.
     
    template<class E1 , class E2 >
    auto operator> (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::greater, E1, E2 >
     Greater than.
     
    template<class E1 , class E2 >
    auto operator>= (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::greater_equal, E1, E2 >
     Greater or equal.
     
    template<class E1 , class E2 >
    std::enable_if_t< xoptional_comparable< E1, E2 >::value, bool > operator== (const xexpression< E1 > &e1, const xexpression< E2 > &e2)
     Equality.
     
    template<class E1 , class E2 >
    bool operator!= (const xexpression< E1 > &e1, const xexpression< E2 > &e2)
     Inequality.
     
    template<class E1 , class E2 >
    auto equal (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::equal_to, E1, E2 >
     Element-wise equality.
     
    template<class E1 , class E2 >
    auto not_equal (E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::not_equal_to, E1, E2 >
     Element-wise inequality.
     
    template<class E1 , class E2 >
    auto less (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1)< std::forward< E2 >(e2))
     Lesser than.
     
    template<class E1 , class E2 >
    auto less_equal (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1)<=std::forward< E2 >(e2))
     Lesser or equal.
     
    template<class E1 , class E2 >
    auto greater (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) > std::forward< E2 >(e2))
     Greater than.
     
    template<class E1 , class E2 >
    auto greater_equal (E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) >=std::forward< E2 >(e2))
     Greater or equal.
     
    template<class E1 , class E2 , class E3 >
    auto where (E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< detail::conditional_ternary, E1, E2, E3 >
     Ternary selection.
     
    template<class T >
    auto nonzero (const T &arr)
     return vector of indices where T is not zero
     
    template<class T >
    auto where (const T &condition)
     return vector of indices where condition is true (equivalent to nonzero(condition))
     
    template<layout_type L = ::xt::layout_type::row_major, class T >
    auto argwhere (const T &arr)
     return vector of indices where arr is not zero
     
    template<class E >
    bool any (E &&e)
     Any.
     
    template<class E >
    bool all (E &&e)
     Any.
     
    template<class R , class E >
    auto cast (E &&e) noexcept -> detail::xfunction_type_t< typename detail::cast< R >::functor, E >
     Element-wise static_cast.
     
    template<class T , class B >
    auto sign (const xtl::xoptional< T, B > &e)
     
    template<class E , xtl::check_concept< is_xexpression< E > > = 0>
    auto value (E &&e) -> detail::value_expression_t< E >
     
    template<class E , xtl::check_concept< is_xexpression< E > > = 0>
    auto has_value (E &&e) -> detail::flag_expression_t< E >
     
    template<class VE , class FE >
    bool operator== (const xoptional_assembly_storage< VE, FE > &lhs, const xoptional_assembly_storage< VE, FE > &rhs)
     
    template<class VE , class FE >
    bool operator!= (const xoptional_assembly_storage< VE, FE > &lhs, const xoptional_assembly_storage< VE, FE > &rhs)
     
    template<class VE , class FE >
    bool operator< (const xoptional_assembly_storage< VE, FE > &lhs, const xoptional_assembly_storage< VE, FE > &rhs)
     
    template<class VE , class FE >
    bool operator<= (const xoptional_assembly_storage< VE, FE > &lhs, const xoptional_assembly_storage< VE, FE > &rhs)
     
    template<class VE , class FE >
    bool operator> (const xoptional_assembly_storage< VE, FE > &lhs, const xoptional_assembly_storage< VE, FE > &rhs)
     
    template<class VE , class FE >
    bool operator>= (const xoptional_assembly_storage< VE, FE > &lhs, const xoptional_assembly_storage< VE, FE > &rhs)
     
    template<class VE , class FE >
    void swap (xoptional_assembly_storage< VE, FE > &lhs, xoptional_assembly_storage< VE, FE > &rhs) noexcept
     
    template<class VE , class FE >
    xoptional_assembly_storage< VE, FE > optional_assembly_storage (const VE &value, const FE &flag)
     
    template<class VE , class FE >
    xoptional_assembly_storage< VE, FE > optional_assembly_storage (VE &value, FE &flag)
     
    template<class E , class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    auto pad (E &&e, const std::vector< std::vector< S > > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)
     Pad an array.
     
    template<class E , class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    auto pad (E &&e, const std::vector< S > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)
     Pad an array.
     
    template<class E , class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    auto pad (E &&e, S pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)
     Pad an array.
     
    template<class E , class S = typename std::decay_t<E>::size_type>
    auto tile (E &&e, std::initializer_list< S > reps)
     Tile an array.
     
    template<class E , class C , xtl::check_concept< xtl::negation< xtl::is_integral< C > > > = 0>
    auto tile (E &&e, const C &reps)
     
    template<class E , class S = typename std::decay_t<E>::size_type, xtl::check_concept< xtl::is_integral< S > > = 0>
    auto tile (E &&e, S reps)
     Tile an array.
     
    template<template< class... > class A, class... AX, class X , xtl::check_concept< is_evaluation_strategy< AX >..., is_evaluation_strategy< X > > = 0>
    auto operator| (const A< AX... > &args, const A< X > &rhs)
     
    template<class T >
    constexpr auto initial (T val)
     
    template<class F , class E , class R , xtl::check_concept< std::is_convertible< typename E::value_type, typename R::value_type > > = 0>
    void copy_to_reduced (F &, const E &e, R &result)
     
    template<class F , class E , class X , class O >
    auto reduce_immediate (F &&f, E &&e, X &&axes, O &&raw_options)
     
    template<class RF >
    auto make_xreducer_functor (RF &&reduce_func)
     
    template<class RF , class IF >
    auto make_xreducer_functor (RF &&reduce_func, IF &&init_func)
     
    template<class RF , class IF , class MF >
    auto make_xreducer_functor (RF &&reduce_func, IF &&init_func, MF &&merge_func)
     
    template<class F , class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, detail::is_xreducer_functors< F > > = 0>
    auto reduce (F &&f, E &&e, X &&axes, EVS &&options=EVS())
     Returns an xexpression applying the specified reducing function to an expression over the given axes.
     
    template<class F , class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, detail::is_xreducer_functors< F > > = 0>
    auto reduce (F &&f, E &&e, EVS &&options=EVS())
     
    template<class F , class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< detail::is_xreducer_functors< F > > = 0>
    auto reduce (F &&f, E &&e, const I(&axes)[N], EVS options=EVS())
     
    template<class T >
    xscalar< T & > xref (T &t)
     
    template<class T >
    xscalar< const T & > xcref (T &t)
     
    template<bool is_const, class CT >
    bool operator== (const xdummy_iterator< is_const, CT > &lhs, const xdummy_iterator< is_const, CT > &rhs) noexcept
     
    template<bool is_const, class CT >
    bool operator< (const xdummy_iterator< is_const, CT > &lhs, const xdummy_iterator< is_const, CT > &rhs) noexcept
     
    template<class CT >
    constexpr auto linear_begin (xscalar< CT > &c) noexcept -> decltype(c.dummy_begin())
     
    template<class CT >
    constexpr auto linear_end (xscalar< CT > &c) noexcept -> decltype(c.dummy_end())
     
    template<class CT >
    constexpr auto linear_begin (const xscalar< CT > &c) noexcept -> decltype(c.dummy_begin())
     
    template<class CT >
    constexpr auto linear_end (const xscalar< CT > &c) noexcept -> decltype(c.dummy_end())
     
    template<class E , class T >
    auto isin (E &&element, std::initializer_list< T > test_elements) noexcept
     isin
     
    template<class E , class F , class = typename std::enable_if_t<has_iterator_interface<F>::value>>
    auto isin (E &&element, F &&test_elements) noexcept
     isin
     
    template<class E , class I , class = typename std::enable_if_t<is_iterator<I>::value>>
    auto isin (E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept
     isin
     
    template<class E , class T >
    auto in1d (E &&element, std::initializer_list< T > test_elements) noexcept
     in1d
     
    template<class E , class F , class = typename std::enable_if_t<has_iterator_interface<F>::value>>
    auto in1d (E &&element, F &&test_elements) noexcept
     in1d
     
    template<class E , class I , class = typename std::enable_if_t<is_iterator<I>::value>>
    auto in1d (E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept
     in1d
     
    template<class E1 , class E2 >
    auto searchsorted (E1 &&a, E2 &&v, bool right=true)
     Find indices where elements should be inserted to maintain order.
     
    template<class S1 , class S2 >
    bool same_shape (const S1 &s1, const S2 &s2) noexcept
     Check if two objects have the same shape.
     
    template<class R , class T >
    constexpr R shape (T t)
     
    template<class R = std::size_t, class T , std::size_t N>
    xt::static_shape< R, N > shape (const T(&list)[N])
     Generate an xt::static_shape of the given size.
     
    template<class E , class S >
    bool has_shape (const E &e, std::initializer_list< S > shape) noexcept
     Check if an object has a certain shape.
     
    template<class E , class S , class = typename std::enable_if_t<has_iterator_interface<S>::value>>
    bool has_shape (const E &e, const S &shape)
     Check if an object has a certain shape.
     
    auto all () noexcept
     Returns a slice representing a full dimension, to be used as an argument of view function.
     
    auto ellipsis () noexcept
     Returns a slice representing all remaining dimensions, and selecting all in these dimensions.
     
    auto newaxis () noexcept
     Returns a slice representing a new axis of length one, to be used as an argument of view function.
     
    template<class T >
    detail::disable_integral_keep< T > keep (T &&indices)
     Create a non-contigous slice from a container of indices to keep.
     
    template<class R = std::ptrdiff_t, class T >
    detail::enable_integral_keep< T, R > keep (T i)
     
    template<class R = std::ptrdiff_t, class Arg0 , class Arg1 , class... Args>
    xkeep_slice< R > keep (Arg0 i0, Arg1 i1, Args... args)
     
    template<class T >
    detail::disable_integral_drop< T > drop (T &&indices)
     Create a non-contigous slice from a container of indices to drop.
     
    template<class R = std::ptrdiff_t, class T >
    detail::enable_integral_drop< T, R > drop (T i)
     
    template<class R = std::ptrdiff_t, class Arg0 , class Arg1 , class... Args>
    xdrop_slice< R > drop (Arg0 i0, Arg1 i1, Args... args)
     
    auto xnone ()
     
    template<class A , class B >
    auto range (A start_val, B stop_val)
     Select a range from start_val to stop_val (excluded).
     
    template<class A , class B , class C >
    auto range (A start_val, B stop_val, C step)
     Select a range from start_val to stop_val (excluded) with step You can use the shorthand _ syntax to select from the start or until the end.
     
    template<class S >
    disable_xslice< S, std::size_t > get_size (const S &) noexcept
     
    template<class S >
    auto get_size (const xslice< S > &slice) noexcept
     
    template<class S >
    disable_xslice< S, std::size_t > step_size (const S &, std::size_t) noexcept
     
    template<class S >
    disable_xslice< S, std::size_t > step_size (const S &, std::size_t, std::size_t) noexcept
     
    template<class S >
    auto step_size (const xslice< S > &slice, std::size_t idx) noexcept
     
    template<class S >
    auto step_size (const xslice< S > &slice, std::size_t idx, std::size_t n) noexcept
     
    template<class S , class I >
    disable_xslice< S, std::size_t > value (const S &s, I) noexcept
     
    template<class S , class I >
    auto value (const xslice< S > &slice, I i) noexcept
     
    template<class E , class SL >
    auto get_slice_implementation (E &e, SL &&slice, std::size_t index)
     
    template<class E >
    auto sort (const xexpression< E > &e, placeholders::xtuph)
     
    template<class E >
    auto sort (const xexpression< E > &e, std::ptrdiff_t axis=-1)
     Sort xexpression (optionally along axis) The sort is performed using the std::sort functions.
     
    template<class E >
    auto argsort (const xexpression< E > &e, placeholders::xtuph, sorting_method method=sorting_method::quick)
     
    template<class E >
    auto argsort (const xexpression< E > &e, std::ptrdiff_t axis=-1, sorting_method method=sorting_method::quick)
     Argsort xexpression (optionally along axis) Performs an indirect sort along the given axis.
     
    template<class E , class C , class R = detail::flatten_sort_result_type_t<E>, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    partition (const xexpression< E > &e, C kth_container, placeholders::xtuph)
     Partially sort xexpression.
     
    template<class E , class I , std::size_t N, class R = detail::flatten_sort_result_type_t<E>>
    partition (const xexpression< E > &e, const I(&kth_container)[N], placeholders::xtuph tag)
     
    template<class E , class R = detail::flatten_sort_result_type_t<E>>
    partition (const xexpression< E > &e, std::size_t kth, placeholders::xtuph tag)
     
    template<class E , class C , class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    auto partition (const xexpression< E > &e, C kth_container, std::ptrdiff_t axis=-1)
     
    template<class E , class T , std::size_t N>
    auto partition (const xexpression< E > &e, const T(&kth_container)[N], std::ptrdiff_t axis=-1)
     
    template<class E >
    auto partition (const xexpression< E > &e, std::size_t kth, std::ptrdiff_t axis=-1)
     
    template<class E , class C , class R = typename detail::linear_argsort_result_type<typename detail::sort_eval_type<E>::type>::type, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    argpartition (const xexpression< E > &e, C kth_container, placeholders::xtuph)
     Partially sort arguments.
     
    template<class E , class I , std::size_t N>
    auto argpartition (const xexpression< E > &e, const I(&kth_container)[N], placeholders::xtuph tag)
     
    template<class E >
    auto argpartition (const xexpression< E > &e, std::size_t kth, placeholders::xtuph tag)
     
    template<class E , class C , class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    auto argpartition (const xexpression< E > &e, C kth_container, std::ptrdiff_t axis=-1)
     
    template<class E , class I , std::size_t N>
    auto argpartition (const xexpression< E > &e, const I(&kth_container)[N], std::ptrdiff_t axis=-1)
     
    template<class E >
    auto argpartition (const xexpression< E > &e, std::size_t kth, std::ptrdiff_t axis=-1)
     
    template<class T = double, class E , class P >
    auto quantile (E &&e, const P &probas, std::ptrdiff_t axis, T alpha, T beta)
     Compute quantiles over the given axis.
     
    template<class T = double, class E , std::size_t N>
    auto quantile (E &&e, const T(&probas)[N], std::ptrdiff_t axis, T alpha, T beta)
     
    template<class T = double, class E , class P >
    auto quantile (E &&e, const P &probas, T alpha, T beta)
     Compute quantiles of the whole expression.
     
    template<class T = double, class E , std::size_t N>
    auto quantile (E &&e, const T(&probas)[N], T alpha, T beta)
     
    template<class T = double, class E , class P >
    auto quantile (E &&e, const P &probas, std::ptrdiff_t axis, quantile_method method=quantile_method::linear)
     Compute quantiles over the given axis.
     
    template<class T = double, class E , std::size_t N>
    auto quantile (E &&e, const T(&probas)[N], std::ptrdiff_t axis, quantile_method method=quantile_method::linear)
     
    template<class T = double, class E , class P >
    auto quantile (E &&e, const P &probas, quantile_method method=quantile_method::linear)
     Compute quantiles of the whole expression.
     
    template<class T = double, class E , std::size_t N>
    auto quantile (E &&e, const T(&probas)[N], quantile_method method=quantile_method::linear)
     
    template<class E >
    std::decay_t< E >::value_type median (E &&e)
     
    template<class E >
    auto median (E &&e, std::ptrdiff_t axis)
     Find the median along the specified axis.
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    auto argmin (const xexpression< E > &e)
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    auto argmin (const xexpression< E > &e, std::ptrdiff_t axis)
     Find position of minimal value in xexpression.
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    auto argmax (const xexpression< E > &e)
     
    template<layout_type L = ::xt::layout_type::row_major, class E >
    auto argmax (const xexpression< E > &e, std::ptrdiff_t axis)
     Find position of maximal value in xexpression By default, the returned index is into the flattened array.
     
    template<class E >
    auto unique (const xexpression< E > &e)
     Find unique elements of a xexpression.
     
    template<class E1 , class E2 >
    auto setdiff1d (const xexpression< E1 > &ar1, const xexpression< E2 > &ar2)
     Find the set difference of two xexpressions.
     
    template<class T , class A >
    bool operator== (const uvector< T, A > &lhs, const uvector< T, A > &rhs)
     
    template<class T , class A >
    bool operator!= (const uvector< T, A > &lhs, const uvector< T, A > &rhs)
     
    template<class T , class A >
    bool operator< (const uvector< T, A > &lhs, const uvector< T, A > &rhs)
     
    template<class T , class A >
    bool operator<= (const uvector< T, A > &lhs, const uvector< T, A > &rhs)
     
    template<class T , class A >
    bool operator> (const uvector< T, A > &lhs, const uvector< T, A > &rhs)
     
    template<class T , class A >
    bool operator>= (const uvector< T, A > &lhs, const uvector< T, A > &rhs)
     
    template<class T , class A >
    void swap (uvector< T, A > &lhs, uvector< T, A > &rhs) noexcept
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator== (const std::vector< T > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator== (const svector< T, N, A, Init > &lhs, const std::vector< T > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator== (const svector< T, N, A, Init > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator!= (const svector< T, N, A, Init > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator< (const svector< T, N, A, Init > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator<= (const svector< T, N, A, Init > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator> (const svector< T, N, A, Init > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    bool operator>= (const svector< T, N, A, Init > &lhs, const svector< T, N, A, Init > &rhs)
     
    template<class T , std::size_t N, class A , bool Init>
    void swap (svector< T, N, A, Init > &lhs, svector< T, N, A, Init > &rhs) noexcept
     
    template<class T , std::size_t N>
    bool operator== (const const_array< T, N > &lhs, const const_array< T, N > &rhs)
     
    template<class T , std::size_t N>
    bool operator!= (const const_array< T, N > &lhs, const const_array< T, N > &rhs)
     
    template<class T , std::size_t N>
    bool operator< (const const_array< T, N > &lhs, const const_array< T, N > &rhs)
     
    template<class T , std::size_t N>
    bool operator<= (const const_array< T, N > &lhs, const const_array< T, N > &rhs)
     
    template<class T , std::size_t N>
    bool operator> (const const_array< T, N > &lhs, const const_array< T, N > &rhs)
     
    template<class T , std::size_t N>
    bool operator>= (const const_array< T, N > &lhs, const const_array< T, N > &rhs)
     
    template<class T , std::ptrdiff_t TB, std::ptrdiff_t TE>
    bool operator== (const sequence_view< T, TB, TE > &lhs, const sequence_view< T, TB, TE > &rhs)
     
    template<class T , std::ptrdiff_t TB, std::ptrdiff_t TE>
    bool operator!= (const sequence_view< T, TB, TE > &lhs, const sequence_view< T, TB, TE > &rhs)
     
    template<class shape_type >
    std::size_t compute_size (const shape_type &shape) noexcept
     
    template<class offset_type , class S >
    offset_type data_offset (const S &strides) noexcept
     
    template<class offset_type , class S , class Arg , class... Args>
    offset_type data_offset (const S &strides, Arg arg, Args... args) noexcept
     Return the flat index for an array index.
     
    template<class offset_type , layout_type L = layout_type::dynamic, class S , class... Args>
    offset_type unchecked_data_offset (const S &strides, Args... args) noexcept
     
    template<class offset_type , class S , class It >
    offset_type element_offset (const S &strides, It first, It last) noexcept
     
    template<layout_type L = layout_type::dynamic, class shape_type , class strides_type >
    std::size_t compute_strides (const shape_type &shape, layout_type l, strides_type &strides)
     Compute the strides given the shape and the layout of an array.
     
    template<layout_type L = layout_type::dynamic, class shape_type , class strides_type , class backstrides_type >
    std::size_t compute_strides (const shape_type &shape, layout_type l, strides_type &strides, backstrides_type &backstrides)
     
    template<class shape_type , class strides_type >
    void adapt_strides (const shape_type &shape, strides_type &strides) noexcept
     
    template<class shape_type , class strides_type , class backstrides_type >
    void adapt_strides (const shape_type &shape, strides_type &strides, backstrides_type &backstrides) noexcept
     
    template<class S >
    unravel_from_strides (typename S::value_type index, const S &strides, layout_type l=layout_type::row_major)
     
    template<class S >
    get_strides_t< S > unravel_index (typename S::value_type index, const S &shape, layout_type l=layout_type::row_major)
     
    template<class S , class T >
    std::vector< get_strides_t< S > > unravel_indices (const T &indices, const S &shape, layout_type l=layout_type::row_major)
     
    +template<class S , class size_type >
    uninitialized_shape (size_type size)
     
    template<class S1 , class S2 >
    bool broadcast_shape (const S1 &input, S2 &output)
     
    +template<class S1 , class S2 >
    bool broadcastable (const S1 &s1, S2 &s2)
     
    template<class S , class... Args>
    bool in_bounds (const S &shape, Args &... args)
     Check if the index is within the bounds of the array.
     
    template<class S , class... Args>
    void normalize_periodic (const S &shape, Args &... args)
     Normalise an index of a periodic array.
     
    template<class C , class It , class size_type >
    It strided_data_end (const C &c, It begin, layout_type l, size_type offset)
     
    template<class E >
    auto strides (const E &e, stride_type type=stride_type::normal) noexcept
     Get strides of an object.
     
    template<class E >
    auto strides (const E &e, std::size_t axis, stride_type type=stride_type::normal) noexcept
     Get stride of an object along an axis.
     
    template<class T1 , class T2 >
    bool stride_match_condition (const T1 &stride, const T2 &shape, const T1 &data_size, bool zero_strides)
     
    template<class shape_type , class strides_type >
    bool do_strides_match (const shape_type &shape, const strides_type &strides, layout_type l, bool zero_strides)
     
    template<class S , class T >
    get_value_type_t< T > ravel_from_strides (const T &index, const S &strides)
     
    template<class S , class T >
    get_value_type_t< T > ravel_index (const T &index, const S &shape, layout_type l)
     
    template<class S , class stype >
    uninitialized_shape (stype size)
     
    template<class S1 , class S2 >
    bool broadcastable (const S1 &src_shape, const S2 &dst_shape)
     
    template<class S , class... Args>
    bool check_in_bounds (const S &shape, Args &... args)
     
    template<std::size_t I, class... Args>
    constexpr decltype(auto) argument (Args &&... args) noexcept
     
    template<class R , class F , class... S>
    apply (std::size_t index, F &&func, const std::tuple< S... > &s) noexcept(noexcept(func(std::get< 0 >(s))))
     
    template<class T , class S >
    void nested_copy (T &&iter, const S &s)
     
    template<class T , class S >
    void nested_copy (T &&iter, std::initializer_list< S > s)
     
    template<class C >
    bool resize_container (C &c, typename C::size_type size)
     
    template<class T , std::size_t N>
    bool resize_container (std::array< T, N > &a, typename std::array< T, N >::size_type size)
     
    template<std::size_t... I>
    bool resize_container (fixed_shape< I... > &a, std::size_t size)
     
    std::size_t normalize_axis (std::size_t dim, std::ptrdiff_t axis)
     
    template<class F , class... T>
    void for_each (F &&f, std::tuple< T... > &t) noexcept(noexcept(detail::for_each_impl< 0, F, T... >(std::forward< F >(f), t)))
     
    template<class F , class... T>
    void for_each (F &&f, const std::tuple< T... > &t) noexcept(noexcept(detail::for_each_impl< 0, F, T... >(std::forward< F >(f), t)))
     
    template<class E , class C >
    std::enable_if_t< !xtl::is_integral< std::decay_t< C > >::value &&xtl::is_signed< typename std::decay_t< C >::value_type >::value, rebind_container_t< std::size_t, std::decay_t< C > > > normalize_axis (E &expr, C &&axes)
     
    template<class C , class E >
    std::enable_if_t< !xtl::is_integral< std::decay_t< C > >::value &&std::is_unsigned< typename std::decay_t< C >::value_type >::value, C && > normalize_axis (E &expr, C &&axes)
     
    template<class R , class E , class C >
    auto forward_normalize (E &expr, C &&axes) -> std::enable_if_t< xtl::is_signed< std::decay_t< decltype(*std::begin(axes))> >::value, R >
     
    template<std::size_t I, template< typename... Args > class T, typename... Args>
    decltype(auto) get (T< Args... > &&v)
     
    template<std::size_t I, template< typename... Args > class T, typename... Args>
    decltype(auto) get (T< Args... > &v)
     
    template<std::size_t I, template< typename... Args > class T, typename... Args>
    decltype(auto) get (const T< Args... > &v)
     
    template<class T , std::size_t N>
    constexpr std::array< std::remove_cv_t< T >, N > to_array (T(&a)[N])
     
    template<class C >
    constexpr auto sequence_size (const C &c) -> decltype(c.size())
     
    template<class T , std::size_t N>
    constexpr std::size_t sequence_size (const T(&)[N])
     
    template<bool condition, class T , class U >
    auto conditional_cast (U &&u)
     Perform a type cast when a condition is true.
     
    template<class T , class AT , alloc_tracking::policy PT, class U , class AU , alloc_tracking::policy PU>
    bool operator== (const tracking_allocator< T, AT, PT > &, const tracking_allocator< U, AU, PU > &)
     
    template<class T , class AT , alloc_tracking::policy PT, class U , class AU , alloc_tracking::policy PU>
    bool operator!= (const tracking_allocator< T, AT, PT > &a, const tracking_allocator< U, AU, PU > &b)
     
    template<class R , class... Args>
    xvectorizer< R(*)(Args...), R > vectorize (R(*f)(Args...))
     
    template<class F , class R , class... Args>
    xvectorizer< F, R > vectorize (F &&f, R(*)(Args...))
     
    template<class F >
    auto vectorize (F &&f) -> decltype(vectorize(std::forward< F >(f), std::declval< detail::get_function_type< F > * >()))
     
    template<class... S>
    constexpr std::size_t integral_count ()
     
    template<class... S>
    constexpr std::size_t integral_count_before (std::size_t i)
     
    template<class... S>
    constexpr std::size_t integral_skip (std::size_t i)
     
    template<class... S>
    constexpr std::size_t newaxis_count ()
     
    template<class... S>
    constexpr std::size_t newaxis_count_before (std::size_t i)
     
    template<class... S>
    constexpr std::size_t newaxis_skip (std::size_t i)
     
    template<class S , class It >
    disable_xslice< S, std::size_t > get_slice_value (const S &s, It &) noexcept
     
    template<class S , class It >
    auto get_slice_value (const xslice< S > &slice, It &it) noexcept
     
    Reference
    template<class CT >
    bool operator== (const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
     Checks equality of the iterators.
     
    template<class CT >
    bool operator!= (const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
     Checks inequality of the iterators.
     
    template<class CT >
    bool operator== (const xaxis_slice_iterator< CT > &lhs, const xaxis_slice_iterator< CT > &rhs)
     Checks equality of the iterators.
     
    template<class CT >
    bool operator!= (const xaxis_slice_iterator< CT > &lhs, const xaxis_slice_iterator< CT > &rhs)
     Checks inequality of the iterators.
     
    Iterators
    template<class E >
    auto axis_begin (E &&e)
     Returns an iterator to the first element of the expression for axis 0.
     
    template<class E >
    auto axis_begin (E &&e, typename std::decay_t< E >::size_type axis)
     Returns an iterator to the first element of the expression for the specified axis.
     
    template<class E >
    auto axis_end (E &&e)
     Returns an iterator to the element following the last element of the expression for axis 0.
     
    template<class E >
    auto axis_end (E &&e, typename std::decay_t< E >::size_type axis)
     Returns an iterator to the element following the last element of the expression for the specified axis.
     
    template<class E >
    auto axis_slice_begin (E &&e)
     Returns an iterator to the first element of the expression for axis 0.
     
    template<class E >
    auto axis_slice_begin (E &&e, typename std::decay_t< E >::size_type axis)
     Returns an iterator to the first element of the expression for the specified axis.
     
    template<class E >
    auto axis_slice_end (E &&e)
     Returns an iterator to the element following the last element of the expression for axis 0.
     
    template<class E >
    auto axis_slice_end (E &&e, typename std::decay_t< E >::size_type axis)
     Returns an iterator to the element following the last element of the expression for the specified axis.
     
    Broadcasting
    template<class F , class... CT>
    bool operator== (const xfunction_iterator< F, CT... > &it1, const xfunction_iterator< F, CT... > &it2)
     
    template<class F , class... CT>
    bool operator< (const xfunction_iterator< F, CT... > &it1, const xfunction_iterator< F, CT... > &it2)
     
    template<class E , class... S>
    auto view (E &&e, S &&... slices)
     Constructs and returns a view on the specified xexpression.
     
    template<class E >
    auto row (E &&e, std::ptrdiff_t index)
     Constructs and returns a row (sliced view) on the specified expression.
     
    template<class E >
    auto col (E &&e, std::ptrdiff_t index)
     Constructs and returns a column (sliced view) on the specified expression.
     
    Computed assignement
    template<class E , class I >
    auto index_view (E &&e, I &&indices) noexcept
     creates an indexview from a container of indices.
     
    template<class E , std::size_t L>
    auto index_view (E &&e, const xindex(&indices)[L]) noexcept
     
    template<layout_type L = ::xt::layout_type::row_major, class E , class O >
    auto filter (E &&e, O &&condition) noexcept
     creates a view into e filtered by condition.
     
    template<class E , class C >
    auto filtration (E &&e, C &&condition) noexcept
     creates a filtration of e filtered by condition.
     
    Data
    template<class CTD , class CTM >
    xmasked_view< CTD, CTM > masked_view (CTD &&data, CTM &&mask)
     
    template<layout_type L = layout_type::dynamic, class E , class S , class X >
    auto strided_view (E &&e, S &&shape, X &&strides, std::size_t offset, layout_type layout) noexcept
     Construct a strided view from an xexpression, shape, strides and offset.
     
    template<class E >
    auto strided_view (E &&e, const xstrided_slice_vector &slices)
     Function to create a dynamic view from an xexpression and an xstrided_slice_vector.
     
    template<layout_type L = ::xt::layout_type::row_major, class E , class S >
    auto reshape_view (E &&e, S &&shape)
     
    template<layout_type L = ::xt::layout_type::row_major, class E , class S >
    auto reshape_view (E &&e, S &&shape, layout_type)
     Return a view on a container with a new shape.
     
    template<layout_type L = ::xt::layout_type::row_major, class E , class I , std::size_t N>
    auto reshape_view (E &&e, const I(&shape)[N], layout_type order)
     
    template<layout_type L = ::xt::layout_type::row_major, class E , class I , std::size_t N>
    auto reshape_view (E &&e, const I(&shape)[N])
     
    + + + +

    +Variables

    constexpr auto keep_dims = std::tuple<keep_dims_type>{}
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Downcast functions

    template<template< class > class B, class E >
    using is_crtp_base_of = detail::is_crtp_base_of_impl< B, std::decay_t< E > >
     
    template<class E >
    using is_xexpression = is_crtp_base_of< xexpression, E >
     
    template<class E , class R = void>
    using enable_xexpression = typename std::enable_if< is_xexpression< E >::value, R >::type
     
    template<class E , class R = void>
    using disable_xexpression = typename std::enable_if<!is_xexpression< E >::value, R >::type
     
    template<class... E>
    using has_xexpression = xtl::disjunction< is_xexpression< E >... >
     
    template<class E >
    using is_xsharable_expression = is_crtp_base_of< xsharable_expression, E >
     
    template<class E , class R = void>
    using enable_xsharable_expression = typename std::enable_if< is_xsharable_expression< E >::value, R >::type
     
    template<class E , class R = void>
    using disable_xsharable_expression = typename std::enable_if<!is_xsharable_expression< E >::value, R >::type
     
    template<class LHS , class RHS , class R = void>
    using enable_assignable_expression = typename std::enable_if< can_assign< LHS, RHS >::value, R >::type
     
    template<class LHS , class RHS , class R = void>
    using enable_not_assignable_expression = typename std::enable_if<!can_assign< LHS, RHS >::value, R >::type
     
    template<class E >
    using xclosure_t = typename xclosure< E >::type
     
    template<class E >
    using const_xclosure_t = typename const_xclosure< E >::type
     
    template<class... T>
    using xexpression_tag_t = typename xexpression_tag< T... >::type
     
    template<class E >
    xshared_expression< E > make_xshared (xexpression< E > &&expr)
     Helper function to create shared expression from any xexpression.
     
    template<class E >
    auto share (xexpression< E > &expr)
     Helper function to create shared expression from any xexpression.
     
    template<class E >
    auto share (xexpression< E > &&expr)
     Helper function to create shared expression from any xexpression.
     
    + + + + + + + + + + + + + + + + + + + + + + +

    Extended copy semantic

    template<class C , class Tag >
    using ravel_return_type_t = typename detail::ravel_return_type< C, Tag >::type
     
    template<class F , class IT >
    bool operator== (const xfunctor_iterator< F, IT > &lhs, const xfunctor_iterator< F, IT > &rhs)
     
    template<class F , class IT >
    bool operator< (const xfunctor_iterator< F, IT > &lhs, const xfunctor_iterator< F, IT > &rhs)
     
    template<class T >
    auto from_indices (const std::vector< T > &idx)
     Converts std::vector<index_type> (returned e.g.
     
    template<class T >
    auto flatten_indices (const std::vector< T > &idx)
     Converts std::vector<index_type> (returned e.g.
     
    template<class Tag = ravel_tensor_tag, class C , class S >
    ravel_return_type_t< C, Tag > ravel_indices (const C &idx, const S &shape, layout_type l=layout_type::row_major)
     Converts std::vector<index_type> (returned e.g.
     
    +

    Detailed Description

    +

    standard mathematical functions for xexpressions

    +

    functions to obtain xgenerators generating random numbers with given shape

    +

    Typedef Documentation

    + +

    ◆ all_xscalar

    + +
    +
    +
    +template<class... E>
    + + + + +
    using xt::all_xscalar = typedef detail::all_xscalar<E...>
    +
    + +

    Definition at line 334 of file xscalar.hpp.

    + +
    +
    + +

    ◆ allocator_type_t

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::allocator_type_t = typedef typename detail::allocator_type_impl<T>::type
    +
    + +

    Definition at line 57 of file xcontainer.hpp.

    + +
    +
    + +

    ◆ apply_cv_t

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using xt::apply_cv_t = typedef typename apply_cv<T, U>::type
    +
    + +

    Definition at line 588 of file xutils.hpp.

    + +
    +
    + +

    ◆ big_promote_value_type_t

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::big_promote_value_type_t = typedef typename big_promote_value_type<E>::type
    +
    + +

    Definition at line 195 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ bool_load_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::bool_load_type = typedef std::conditional_t<std::is_same<T, bool>::value, uint8_t, T>
    +
    + +

    Definition at line 296 of file xtensor_simd.hpp.

    + +
    +
    + +

    ◆ common_difference_type_t

    + +
    +
    +
    +template<class... Args>
    + + + + +
    using xt::common_difference_type_t = typedef typename common_difference_type<Args...>::type
    +
    + +

    Definition at line 91 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ common_size_type_t

    + +
    +
    +
    +template<class... Args>
    + + + + +
    using xt::common_size_type_t = typedef typename common_size_type<Args...>::type
    +
    + +

    Definition at line 72 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ common_tensor_type_t

    + +
    +
    +
    +template<class... C>
    + + + + +
    using xt::common_tensor_type_t = typedef typename common_tensor_type<C...>::type
    +
    + +

    Definition at line 182 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ common_value_type_t

    + +
    +
    +
    +template<class... C>
    + + + + +
    using xt::common_value_type_t = typedef typename common_value_type<C...>::type
    +
    + +

    Definition at line 53 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ const_xclosure_t

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::const_xclosure_t = typedef typename const_xclosure<E>::type
    +
    + +

    Definition at line 294 of file xexpression.hpp.

    + +
    +
    + +

    ◆ container_simd_return_type_t

    + +
    +
    +
    +template<class C , class T1 , class T2 >
    + + + + +
    using xt::container_simd_return_type_t = typedef typename container_simd_return_type<C, T1, T2>::type
    +
    + +

    Definition at line 330 of file xtensor_simd.hpp.

    + +
    +
    + +

    ◆ disable_assignable

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::disable_assignable = typedef typename std::enable_if<!is_assignable<E>::value, R>::type
    +
    + +

    Definition at line 163 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ disable_indexed_stepper_t

    + +
    +
    +
    +template<class T , class R = T>
    + + + + +
    using xt::disable_indexed_stepper_t = typedef typename disable_indexed_stepper<T, R>::type
    +
    + +

    Definition at line 241 of file xiterator.hpp.

    + +
    +
    + +

    ◆ disable_integral_t

    + +
    +
    +
    +template<class T , class R >
    + + + + +
    using xt::disable_integral_t = typedef std::enable_if_t<!xtl::is_integral<T>::value, R>
    +
    + +

    Definition at line 110 of file xutils.hpp.

    + +
    +
    + +

    ◆ disable_xcontainer_semantics

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::disable_xcontainer_semantics = typedef typename std::enable_if<!has_container_semantics<E>::value, R>::type
    +
    + +

    Definition at line 218 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ disable_xexpression

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::disable_xexpression = typedef typename std::enable_if<!is_xexpression<E>::value, R>::type
    +
    + +

    Definition at line 186 of file xexpression.hpp.

    + +
    +
    + +

    ◆ disable_xsharable_expression

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::disable_xsharable_expression = typedef typename std::enable_if<!is_xsharable_expression<E>::value, R>::type
    +
    + +

    Definition at line 198 of file xexpression.hpp.

    + +
    +
    + +

    ◆ disable_xslice

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::disable_xslice = typedef typename std::enable_if<!is_xslice<E>::value, R>::type
    +
    + +

    Definition at line 67 of file xslice.hpp.

    + +
    +
    + +

    ◆ disable_xview_semantics

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::disable_xview_semantics = typedef typename std::enable_if<!has_view_semantics<E>::value, R>::type
    +
    + +

    Definition at line 272 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ driven_align_mode_t

    + +
    +
    +
    +template<class A1 , class A2 >
    + + + + +
    using xt::driven_align_mode_t = typedef typename detail::driven_align_mode_impl<A1, A2>::type
    +
    + +

    Definition at line 238 of file xtensor_simd.hpp.

    + +
    +
    + +

    ◆ dynamic_shape

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::dynamic_shape = typedef svector<T, 4>
    +
    + +

    Definition at line 29 of file xshape.hpp.

    + +
    +
    + +

    ◆ enable_assignable

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::enable_assignable = typedef typename std::enable_if<is_assignable<E>::value, R>::type
    +
    + +

    Definition at line 160 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ enable_assignable_expression

    + +
    +
    +
    +template<class LHS , class RHS , class R = void>
    + + + + +
    using xt::enable_assignable_expression = typedef typename std::enable_if<can_assign<LHS, RHS>::value, R>::type
    +
    + +

    Definition at line 206 of file xexpression.hpp.

    + +
    +
    + +

    ◆ enable_indexed_stepper_t

    + +
    +
    +
    +template<class T , class R = T>
    + + + + +
    using xt::enable_indexed_stepper_t = typedef typename enable_indexed_stepper<T, R>::type
    +
    + +

    Definition at line 233 of file xiterator.hpp.

    + +
    +
    + +

    ◆ enable_not_assignable_expression

    + +
    +
    +
    +template<class LHS , class RHS , class R = void>
    + + + + +
    using xt::enable_not_assignable_expression = typedef typename std::enable_if<!can_assign<LHS, RHS>::value, R>::type
    +
    + +

    Definition at line 209 of file xexpression.hpp.

    + +
    +
    + +

    ◆ enable_xcontainer_semantics

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::enable_xcontainer_semantics = typedef typename std::enable_if<has_container_semantics<E>::value, R>::type
    +
    + +

    Definition at line 215 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ enable_xexpression

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::enable_xexpression = typedef typename std::enable_if<is_xexpression<E>::value, R>::type
    +
    + +

    Definition at line 183 of file xexpression.hpp.

    + +
    +
    + +

    ◆ enable_xsharable_expression

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::enable_xsharable_expression = typedef typename std::enable_if<is_xsharable_expression<E>::value, R>::type
    +
    + +

    Definition at line 195 of file xexpression.hpp.

    + +
    +
    + +

    ◆ enable_xview_semantics

    + +
    +
    +
    +template<class E , class R = void>
    + + + + +
    using xt::enable_xview_semantics = typedef typename std::enable_if<has_view_semantics<E>::value, R>::type
    +
    + +

    Definition at line 269 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ get_init_type_t

    + +
    +
    +
    +template<class V , class S >
    + + + + +
    using xt::get_init_type_t = typedef typename get_init_type<V, S>::type
    +
    + +

    Definition at line 247 of file xfixed.hpp.

    + +
    +
    + +

    ◆ get_slice_type

    + +
    +
    +
    +template<class E , class SL >
    + + + + +
    using xt::get_slice_type = typedef typename detail::get_slice_type_impl<E, std::remove_reference_t<SL> >::type
    +
    + +

    Definition at line 1037 of file xslice.hpp.

    + +
    +
    + +

    ◆ get_stepper

    + +
    +
    +
    +template<class V >
    + + + + +
    using xt::get_stepper = typedef typename detail::get_stepper_impl<V>::type
    +
    + +

    Definition at line 779 of file xview.hpp.

    + +
    +
    + +

    ◆ get_stepper_iterator

    + +
    +
    +
    +template<class C >
    + + + + +
    using xt::get_stepper_iterator = typedef typename detail::get_stepper_iterator_impl<C>::type
    +
    + +

    Definition at line 71 of file xiterator.hpp.

    + +
    +
    + +

    ◆ get_strides_t

    + +
    +
    +
    +template<class C >
    + + + + +
    using xt::get_strides_t = typedef typename get_strides_type<C>::type
    +
    + +

    Definition at line 924 of file xutils.hpp.

    + +
    +
    + +

    ◆ get_value_type_t

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::get_value_type_t = typedef typename get_value_type<T>::type
    +
    + +

    Definition at line 496 of file xutils.hpp.

    + +
    +
    + +

    ◆ has_container_semantics

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::has_container_semantics = typedef is_crtp_base_of<xcontainer_semantic, E>
    +
    + +

    Definition at line 212 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ has_fixed_rank_t

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::has_fixed_rank_t = typedef typename has_fixed_rank<std::decay_t<E> >::type
    +
    + +

    Definition at line 970 of file xutils.hpp.

    + +
    +
    + +

    ◆ has_rank_t

    + +
    +
    +
    +template<class E , size_t N>
    + + + + +
    using xt::has_rank_t = typedef typename has_rank<std::decay_t<E>, N>::type
    +
    + +

    Definition at line 983 of file xutils.hpp.

    + +
    +
    + +

    ◆ has_view_semantics

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::has_view_semantics = typedef is_crtp_base_of<xview_semantic, E>
    +
    + +

    Definition at line 266 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ has_xexpression

    + +
    +
    +
    +template<class... E>
    + + + + +
    using xt::has_xexpression = typedef xtl::disjunction<is_xexpression<E>...>
    +
    + +

    Definition at line 189 of file xexpression.hpp.

    + +
    +
    + +

    ◆ has_xslice

    + +
    +
    +
    +template<class... E>
    + + + + +
    using xt::has_xslice = typedef xtl::disjunction<is_xslice<E>...>
    +
    + +

    Definition at line 70 of file xslice.hpp.

    + +
    +
    + +

    ◆ inner_reference_t

    + +
    +
    +
    +template<class ST >
    + + + + +
    using xt::inner_reference_t = typedef typename inner_reference<ST>::type
    +
    + +

    Definition at line 941 of file xutils.hpp.

    + +
    +
    + +

    ◆ is_assignable

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::is_assignable = typedef is_crtp_base_of<xsemantic_base, E>
    +
    + +

    Definition at line 157 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ is_crtp_base_of

    + +
    +
    +
    +template<template< class > class B, class E >
    + + + + +
    using xt::is_crtp_base_of = typedef detail::is_crtp_base_of_impl<B, std::decay_t<E> >
    +
    + +

    Definition at line 177 of file xexpression.hpp.

    + +
    +
    + +

    ◆ is_xexpression

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::is_xexpression = typedef is_crtp_base_of<xexpression, E>
    +
    + +

    Definition at line 180 of file xexpression.hpp.

    + +
    +
    + +

    ◆ is_xscalar

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::is_xscalar = typedef detail::is_xscalar_impl<E>
    +
    + +

    Definition at line 318 of file xscalar.hpp.

    + +
    +
    + +

    ◆ is_xsharable_expression

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::is_xsharable_expression = typedef is_crtp_base_of<xsharable_expression, E>
    +
    + +

    Definition at line 192 of file xexpression.hpp.

    + +
    +
    + +

    ◆ is_xslice

    + +
    +
    +
    +template<class S >
    + + + + +
    using xt::is_xslice = typedef std::is_base_of<xslice<S>, S>
    +
    + +

    Definition at line 64 of file xslice.hpp.

    + +
    +
    + +

    ◆ nested_initializer_list_t

    + +
    +
    +
    +template<class T , std::size_t I>
    + + + + +
    using xt::nested_initializer_list_t = typedef typename nested_initializer_list<T, I>::type
    +
    + +

    Definition at line 314 of file xutils.hpp.

    + +
    +
    + +

    ◆ norm_type_t

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::norm_type_t = typedef typename norm_type<T>::type
    +
    + +

    Abbreviation of 'typename norm_type<T>::type'.

    + +

    Definition at line 167 of file xnorm.hpp.

    + +
    +
    + +

    ◆ ravel_return_type_t

    + +
    +
    +
    +template<class C , class Tag >
    + + + + +
    using xt::ravel_return_type_t = typedef typename detail::ravel_return_type<C, Tag>::type
    +
    + +

    Definition at line 951 of file xtensor.hpp.

    + +
    +
    + +

    ◆ rebind_container_t

    + +
    +
    +
    +template<class X , class C >
    + + + + +
    using xt::rebind_container_t = typedef typename rebind_container<X, C>::type
    +
    + +

    Definition at line 82 of file xutils.hpp.

    + +
    +
    + +

    ◆ remove_class_t

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::remove_class_t = typedef typename remove_class<T>::type
    +
    + +

    Definition at line 144 of file xutils.hpp.

    + +
    +
    + +

    ◆ select_expression_base_t

    + +
    +
    +
    +template<class D >
    + + + + +
    using xt::select_expression_base_t = typedef std:: conditional_t<detail::is_sharable<D>::value, xsharable_expression<D>, xexpression<D> >
    +
    + +

    Definition at line 43 of file xsemantic.hpp.

    + +
    +
    + +

    ◆ select_iterable_base_t

    + +
    +
    +
    +template<layout_type L1, layout_type L2, class T >
    + + + + +
    using xt::select_iterable_base_t = typedef typename select_iterable_base<L1, L2, T>::type
    +
    + +

    Definition at line 63 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ smart_ownership

    + +
    +
    + + + + +
    using xt::smart_ownership = typedef no_ownership
    +
    + +

    Definition at line 31 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ squared_norm_type_t

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::squared_norm_type_t = typedef typename squared_norm_type<T>::type
    +
    + +

    Abbreviation of 'typename squared_norm_type<T>::type'.

    + +

    Definition at line 200 of file xnorm.hpp.

    + +
    +
    + +

    ◆ static_shape

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::static_shape = typedef std::array<T, N>
    +
    + +

    Definition at line 32 of file xshape.hpp.

    + +
    +
    + +

    ◆ temporary_container_t

    + +
    +
    +
    +template<class C >
    + + + + +
    using xt::temporary_container_t = typedef typename temporary_container<C>::type
    +
    + +

    Definition at line 609 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ temporary_type_t

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::temporary_type_t = typedef typename temporary_type<T>::type
    +
    + +

    Definition at line 158 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ view_temporary_type_t

    + +
    +
    +
    +template<class E , class... SL>
    + + + + +
    using xt::view_temporary_type_t = typedef typename view_temporary_type<E, SL...>::type
    +
    + +

    Definition at line 92 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ void_t

    + +
    +
    +
    +template<class... T>
    + + + + +
    using xt::void_t = typedef typename make_void<T...>::type
    +
    + +

    Definition at line 95 of file xutils.hpp.

    + +
    +
    + +

    ◆ xarray

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >, class SA = std::allocator<typename std::vector<T, A>::size_type>>
    + + + + +
    xt::xarray
    +
    + +

    Alias template on xarray_container with default parameters for data container type and shape / strides container type.

    +

    This allows to write

    +
    xt::xarray<double> a = {{1., 2.}, {3., 4.}};
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +

    instead of the heavier syntax

    +
    xt::xarray_container<std::vector<double>, std::vector<std::size_t>> a = ...
    +
    Template Parameters
    + + + + + +
    TThe value type of the elements.
    LThe layout_type of the xarray_container (default: XTENSOR_DEFAULT_LAYOUT).
    AThe allocator of the container holding the elements.
    SAThe allocator of the containers holding the shape and the strides.
    +
    +
    + +

    Definition at line 82 of file xtensor_forward.hpp.

    + +
    +
    + +

    ◆ xarray_optional

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >, class BC = xtl::xdynamic_bitset<std::size_t>, class SA = std::allocator<typename std::vector<T, A>::size_type>>
    + + + + +
    xt::xarray_optional
    +
    + +

    Alias template on xarray_container for handling missing values.

    +
    Template Parameters
    + + + + + + +
    TThe value type of the elements.
    LThe layout_type of the container (default: XTENSOR_DEFAULT_LAYOUT).
    AThe allocator of the container holding the elements.
    BAThe allocator of the container holding the missing flags.
    SAThe allocator of the containers holding the shape and the strides.
    +
    +
    + +

    Definition at line 107 of file xtensor_forward.hpp.

    + +
    +
    + +

    ◆ xclosure_t

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::xclosure_t = typedef typename xclosure<E>::type
    +
    + +

    Definition at line 273 of file xexpression.hpp.

    + +
    +
    + +

    ◆ xcsv_tensor

    + +
    +
    +
    +template<class T , class A = std::allocator<T>>
    + + + + +
    using xt::xcsv_tensor = typedef xtensor_container<std::vector<T, A>, 2, layout_type::row_major>
    +
    + +

    Definition at line 31 of file xcsv.hpp.

    + +
    +
    + +

    ◆ xdynamic_slice

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::xdynamic_slice = typedef xtl::variant< T, xrange_adaptor<placeholders::xtuph, T, T>, xrange_adaptor<T, placeholders::xtuph, T>, xrange_adaptor<T, T, placeholders::xtuph>, xrange_adaptor<T, placeholders::xtuph, placeholders::xtuph>, xrange_adaptor<placeholders::xtuph, T, placeholders::xtuph>, xrange_adaptor<placeholders::xtuph, placeholders::xtuph, T>, xrange_adaptor<T, T, T>, xrange_adaptor<placeholders::xtuph, placeholders::xtuph, placeholders::xtuph>, xrange<T>, xstepped_range<T>, xkeep_slice<T>, xdrop_slice<T>, xall_tag, xellipsis_tag, xnewaxis_tag>
    +
    + +

    Definition at line 290 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ xdynamic_slice_vector

    + +
    +
    + + + + +
    using xt::xdynamic_slice_vector = typedef std::vector<xdynamic_slice<std::ptrdiff_t> >
    +
    + +

    Definition at line 314 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ xexpression_tag_t

    + +
    +
    +
    +template<class... T>
    + + + + +
    using xt::xexpression_tag_t = typedef typename xexpression_tag<T...>::type
    +
    + +

    Definition at line 390 of file xexpression.hpp.

    + +
    +
    + +

    ◆ xindex

    + +
    +
    + + + + +
    using xt::xindex = typedef dynamic_shape<std::size_t>
    +
    + +

    Definition at line 37 of file xshape.hpp.

    + +
    +
    + +

    ◆ xindex_type_t

    + +
    +
    +
    +template<class C >
    + + + + +
    using xt::xindex_type_t = typedef typename detail::index_type_impl<C>::type
    +
    + +

    Definition at line 99 of file xiterator.hpp.

    + +
    +
    + +

    ◆ xoffset_adaptor

    + +
    +
    +
    +template<class CT , class M , std::size_t I>
    + + + + +
    using xt::xoffset_adaptor = typedef xfunctor_adaptor<detail::offset_forwarder<M, I>, CT>
    +
    + +

    Definition at line 92 of file xoffset_view.hpp.

    + +
    +
    + +

    ◆ xoffset_view

    + +
    +
    +
    +template<class CT , class M , std::size_t I>
    + + + + +
    using xt::xoffset_view = typedef xfunctor_view<detail::offset_forwarder<M, I>, CT>
    +
    + +

    Definition at line 89 of file xoffset_view.hpp.

    + +
    +
    + +

    ◆ xshape

    + +
    +
    +
    +template<std::size_t... N>
    + + + + +
    xt::xshape
    +
    + +

    Alias template for fixed_shape allows for a shorter template shape definition in xtensor_fixed.

    + +

    Definition at line 153 of file xtensor_forward.hpp.

    + +
    +
    + +

    ◆ xstrided_slice

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::xstrided_slice = typedef xtl::variant< T, xrange_adaptor<placeholders::xtuph, T, T>, xrange_adaptor<T, placeholders::xtuph, T>, xrange_adaptor<T, T, placeholders::xtuph>, xrange_adaptor<T, placeholders::xtuph, placeholders::xtuph>, xrange_adaptor<placeholders::xtuph, T, placeholders::xtuph>, xrange_adaptor<placeholders::xtuph, placeholders::xtuph, T>, xrange_adaptor<T, T, T>, xrange_adaptor<placeholders::xtuph, placeholders::xtuph, placeholders::xtuph>, xrange<T>, xstepped_range<T>, xall_tag, xellipsis_tag, xnewaxis_tag>
    +
    + +

    Definition at line 318 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ xstrided_slice_vector

    + +
    +
    + +

    vector of slices used to build a xstrided_view

    + +

    Definition at line 343 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ xtensor

    + +
    +
    +
    +template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >>
    + + + + +
    xt::xtensor
    +
    + +

    Alias template on xtensor_container with default parameters for data container type.

    +

    This allows to write

    +
    xt::xtensor<double, 2> a = {{1., 2.}, {3., 4.}};
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +

    instead of the heavier syntax

    +
    Template Parameters
    + + + + + +
    TThe value type of the elements.
    NThe dimension of the tensor.
    LThe layout_type of the tensor (default: XTENSOR_DEFAULT_LAYOUT).
    AThe allocator of the containers holding the elements.
    +
    +
    + +

    Definition at line 137 of file xtensor_forward.hpp.

    + +
    +
    + +

    ◆ xtensor_fixed

    + +
    +
    +
    +template<class T , class FSH , layout_type L = ::xt::layout_type::row_major, bool Sharable = true>
    + + + + +
    xt::xtensor_fixed
    +
    + +

    Alias template on xfixed_container with default parameters for layout type.

    +

    This allows to write

    +
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xfixed.hpp:298
    +

    instead of the syntax

    +
    Template Parameters
    + + + + + +
    TThe value type of the elements.
    FSHA xshape template shape.
    LThe layout_type of the tensor (default: XTENSOR_DEFAULT_LAYOUT).
    SharableWhether the tensor can be used in a shared expression.
    +
    +
    + +

    Definition at line 182 of file xtensor_forward.hpp.

    + +
    +
    + +

    ◆ xtensor_optional

    + +
    +
    +
    +template<class T , std::size_t N, layout_type L = ::xt::layout_type::row_major, class A = std::allocator< T >, class BC = xtl::xdynamic_bitset<std::size_t>>
    + + + + +
    xt::xtensor_optional
    +
    + +

    Alias template on xtensor_container for handling missing values.

    +
    Template Parameters
    + + + + + + +
    TThe value type of the elements.
    NThe dimension of the tensor.
    LThe layout_type of the container (default: XTENSOR_DEFAULT_LAYOUT).
    AThe allocator of the containers holding the elements.
    BAThe allocator of the container holding the missing flags.
    +
    +
    + +

    Definition at line 200 of file xtensor_forward.hpp.

    + +
    +
    + +

    ◆ xtrivially_default_constructible

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::xtrivially_default_constructible = typedef std::is_trivially_default_constructible<T>
    +
    + +

    Definition at line 716 of file xutils.hpp.

    + +
    +
    + +

    ◆ xvalue_type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::xvalue_type = typedef detail::xvalue_type_impl<E>
    +
    + +

    Definition at line 37 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ xvalue_type_t

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::xvalue_type_t = typedef typename xvalue_type<E>::type
    +
    + +

    Definition at line 40 of file xexpression_traits.hpp.

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ histogram_algorithm

    + +
    +
    + + + + + +
    + + + + +
    enum class xt::histogram_algorithm
    +
    +strong
    +
    + +

    Defines different algorithms to be used in "histogram_bin_edges".

    + +

    Definition at line 280 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ layout_type

    + +
    +
    + + + + + +
    + + + + +
    enum class xt::layout_type
    +
    +strong
    +
    +

    layout_type enum for xcontainer based xexpressions

    + + + + + +
    Enumerator
    dynamic 

    dynamic layout_type: you can resize to row major, column major, or use custom strides

    +
    any 

    layout_type compatible with all others

    +
    row_major 

    row major layout_type

    +
    column_major 

    column major layout_type

    +
    + +

    Definition at line 23 of file xlayout.hpp.

    + +
    +
    + +

    ◆ pad_mode

    + +
    +
    + + + + + +
    + + + + +
    enum class xt::pad_mode
    +
    +strong
    +
    + +

    Defines different algorithms to be used in xt::pad:

    +
      +
    • constant: Pads with a constant value.
    • +
    • symmetric: Pads with the reflection of the vector mirrored along the edge of the array.
    • +
    • reflect: Pads with the reflection of the vector mirrored on the first and last values of the vector along each axis.
    • +
    • wrap: Pads with the wrap of the vector along the axis. The first values are used to pad the end and the end values are used to pad the beginning.
    • +
    • periodic : == wrap (pads with periodic repetitions of the vector).
    • +
    +

    OpenCV to xtensor:

      +
    • BORDER_CONSTANT == constant
    • +
    • BORDER_REFLECT == symmetric
    • +
    • BORDER_REFLECT_101 == reflect
    • +
    • BORDER_WRAP == wrap
    • +
    + +

    Definition at line 38 of file xpad.hpp.

    + +
    +
    + +

    ◆ sorting_method

    + +
    +
    + + + + + +
    + + + + +
    enum class xt::sorting_method
    +
    +strong
    +
    + +

    Sorting method.

    +

    Predefined methods for performing indirect sorting.

    See also
    argsort(const xexpression<E>&, std::ptrdiff_t, sorting_method)
    + + + +
    Enumerator
    quick 

    Faster method but with no guarantee on preservation of order of equal elements https://en.cppreference.com/w/cpp/algorithm/sort.

    +
    stable 

    Slower method but with guarantee on preservation of order of equal elements https://en.cppreference.com/w/cpp/algorithm/stable_sort.

    +
    + +

    Definition at line 278 of file xsort.hpp.

    + +
    +
    +

    Function Documentation

    + +

    ◆ accumulate() [1/2]

    + +
    +
    +
    +template<class F , class E , class EVS = evaluation_strategy::immediate_type, xtl::check_concept< is_evaluation_strategy< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::accumulate (F && f,
    E && e,
    EVS evaluation_strategy = EVS() 
    )
    +
    +inline
    +
    + +

    Accumulate and flatten array NOTE This function is not lazy!

    +
    Parameters
    + + + + +
    ffunctor to use for accumulation
    exexpression to be accumulated
    evaluation_strategyevaluation strategy of the accumulation
    +
    +
    +
    Returns
    returns xarray<T> filled with accumulated values
    + +

    Definition at line 344 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ accumulate() [2/2]

    + +
    +
    +
    +template<class F , class E , class EVS = evaluation_strategy::immediate_type>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::accumulate (F && f,
    E && e,
    std::ptrdiff_t axis,
    EVS evaluation_strategy = EVS() 
    )
    +
    +inline
    +
    + +

    Accumulate over axis NOTE This function is not lazy!

    +
    Parameters
    + + + + + +
    fFunctor to use for accumulation
    exexpression to accumulate
    axisAxis to perform accumulation over
    evaluation_strategyevaluation strategy of the accumulation
    +
    +
    +
    Returns
    returns xarray<T> filled with accumulated values
    + +

    Definition at line 363 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ adapt_strides() [1/2]

    + +
    +
    +
    +template<class shape_type , class strides_type >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::adapt_strides (const shape_type & shape,
    strides_type & strides 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 623 of file xstrides.hpp.

    + +
    +
    + +

    ◆ adapt_strides() [2/2]

    + +
    +
    +
    +template<class shape_type , class strides_type , class backstrides_type >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::adapt_strides (const shape_type & shape,
    strides_type & strides,
    backstrides_type & backstrides 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 633 of file xstrides.hpp.

    + +
    +
    + +

    ◆ all()

    + +
    +
    + + + + + +
    + + + + + + + +
    auto xt::all ()
    +
    +inlinenoexcept
    +
    + +

    Returns a slice representing a full dimension, to be used as an argument of view function.

    +
    See also
    view, strided_view
    + +

    Definition at line 234 of file xslice.hpp.

    + +
    +
    + +

    ◆ amax() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::amax (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 781 of file xmath.hpp.

    + +
    +
    + +

    ◆ amax() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::amax (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 781 of file xmath.hpp.

    + +
    +
    + +

    ◆ amax() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::amax (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 781 of file xmath.hpp.

    + +
    +
    + +

    ◆ amin() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::amin (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 799 of file xmath.hpp.

    + +
    +
    + +

    ◆ amin() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::amin (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 799 of file xmath.hpp.

    + +
    +
    + +

    ◆ amin() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::amin (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 799 of file xmath.hpp.

    + +
    +
    + +

    ◆ apply()

    + +
    +
    +
    +template<class R , class F , class... S>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    R xt::apply (std::size_t index,
    F && func,
    const std::tuple< S... > & s 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 291 of file xutils.hpp.

    + +
    +
    + +

    ◆ arange() [1/2]

    + +
    +
    +
    +template<class T , class S = T>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::arange (start,
    stop,
    step = 1 
    )
    +
    +inlinenoexcept
    +
    + +

    Generates numbers evenly spaced within given half-open interval [start, stop).

    +
    Parameters
    + + + + +
    startstart of the interval
    stopstop of the interval
    stepstepsize
    +
    +
    +
    Template Parameters
    + + +
    Tvalue_type of xexpression
    +
    +
    +
    Returns
    xgenerator that generates the values on access
    + +

    Definition at line 432 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ arange() [2/2]

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    auto xt::arange (stop)
    +
    +inlinenoexcept
    +
    + +

    Generate numbers evenly spaced within given half-open interval [0, stop) with a step size of 1.

    +
    Parameters
    + + +
    stopstop of the interval
    +
    +
    +
    Template Parameters
    + + +
    Tvalue_type of xexpression
    +
    +
    +
    Returns
    xgenerator that generates the values on access
    + +

    Definition at line 445 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ argmax()

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E >
    + + + + + +
    + + + + + + + + +
    auto xt::argmax (const xexpression< E > & e)
    +
    +inline
    +
    + +

    Definition at line 1264 of file xsort.hpp.

    + +
    +
    + +

    ◆ argmin() [1/2]

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E >
    + + + + + +
    + + + + + + + + +
    auto xt::argmin (const xexpression< E > & e)
    +
    +inline
    +
    + +

    Definition at line 1234 of file xsort.hpp.

    + +
    +
    + +

    ◆ argmin() [2/2]

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::argmin (const xexpression< E > & e,
    std::ptrdiff_t axis 
    )
    +
    +inline
    +
    + +

    Find position of minimal value in xexpression.

    +

    By default, the returned index is into the flattened array. If axis is specified, the indices are along the specified axis.

    +
    Parameters
    + + + +
    einput xexpression
    axisselect axis (optional)
    +
    +
    +
    Returns
    returns xarray with positions of minimal value
    + +

    Definition at line 1255 of file xsort.hpp.

    + +
    +
    + +

    ◆ argpartition() [1/5]

    + +
    +
    +
    +template<class E , class C , class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::argpartition (const xexpression< E > & e,
    kth_container,
    std::ptrdiff_t axis = -1 
    )
    +
    +inline
    +
    + +

    Definition at line 708 of file xsort.hpp.

    + +
    +
    + +

    ◆ argpartition() [2/5]

    + +
    +
    +
    +template<class E , class I , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::argpartition (const xexpression< E > & e,
    const I(&) kth_container[N],
    placeholders::xtuph tag 
    )
    +
    +inline
    +
    + +

    Definition at line 692 of file xsort.hpp.

    + +
    +
    + +

    ◆ argpartition() [3/5]

    + +
    +
    +
    +template<class E , class I , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::argpartition (const xexpression< E > & e,
    const I(&) kth_container[N],
    std::ptrdiff_t axis = -1 
    )
    +
    +inline
    +
    + +

    Definition at line 755 of file xsort.hpp.

    + +
    +
    + +

    ◆ argpartition() [4/5]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::argpartition (const xexpression< E > & e,
    std::size_t kth,
    placeholders::xtuph tag 
    )
    +
    +inline
    +
    + +

    Definition at line 702 of file xsort.hpp.

    + +
    +
    + +

    ◆ argpartition() [5/5]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::argpartition (const xexpression< E > & e,
    std::size_t kth,
    std::ptrdiff_t axis = -1 
    )
    +
    +inline
    +
    + +

    Definition at line 765 of file xsort.hpp.

    + +
    +
    + +

    ◆ argsort()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::argsort (const xexpression< E > & e,
    placeholders::xtuph ,
    sorting_method method = sorting_method::quick 
    )
    +
    +inline
    +
    + +

    Definition at line 430 of file xsort.hpp.

    + +
    +
    + +

    ◆ argument()

    + +
    +
    +
    +template<std::size_t I, class... Args>
    + + + + + +
    + + + + + + + + +
    constexpr decltype(auto) xt::argument (Args &&... args)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 262 of file xutils.hpp.

    + +
    +
    + +

    ◆ as_chunked() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    xchunked_view< E > xt::as_chunked (E && e)
    +
    +inline
    +
    + +

    Definition at line 289 of file xchunked_view.hpp.

    + +
    +
    + +

    ◆ as_chunked() [2/2]

    + +
    +
    +
    +template<class E , class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xchunked_view< E > xt::as_chunked (E && e,
    S && chunk_shape 
    )
    +
    +inline
    +
    + +

    Definition at line 283 of file xchunked_view.hpp.

    + +
    +
    + +

    ◆ assert_compatible_shape()

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::assert_compatible_shape (const xexpression< E1 > & e1,
    const xexpression< E2 > & e2 
    )
    +
    +inline
    +
    + +

    Definition at line 246 of file xassign.hpp.

    + +
    +
    + +

    ◆ assign_data()

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::assign_data (xexpression< E1 > & e1,
    const xexpression< E2 > & e2,
    bool trivial 
    )
    +
    +inline
    +
    + +

    Definition at line 208 of file xassign.hpp.

    + +
    +
    + +

    ◆ assign_xexpression()

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::assign_xexpression (xexpression< E1 > & e1,
    const xexpression< E2 > & e2 
    )
    +
    +inline
    +
    + +

    Definition at line 215 of file xassign.hpp.

    + +
    +
    + +

    ◆ average() [1/4]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::average (E && e,
    EVS ev = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2044 of file xmath.hpp.

    + +
    +
    + +

    ◆ average() [2/4]

    + +
    +
    +
    +template<class T = void, class E , class W , class X , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::average (E && e,
    W && weights,
    const X(&) axes[N],
    EVS ev = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2022 of file xmath.hpp.

    + +
    +
    + +

    ◆ average() [3/4]

    + +
    +
    +
    +template<class T = void, class E , class W , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::average (E && e,
    W && weights,
    EVS ev = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2030 of file xmath.hpp.

    + +
    +
    + +

    ◆ average() [4/4]

    + +
    +
    +
    +template<class T = void, class E , class W , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::is_integral< X > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::average (E && e,
    W && weights,
    axis,
    EVS ev = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2016 of file xmath.hpp.

    + +
    +
    + +

    ◆ axis_begin() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::axis_begin (E && e)
    +
    +inline
    +
    + +

    Returns an iterator to the first element of the expression for axis 0.

    +
    Parameters
    + + +
    ethe expession to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_iterator
    + +

    Definition at line 285 of file xaxis_iterator.hpp.

    + +
    +
    + +

    ◆ axis_begin() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::axis_begin (E && e,
    typename std::decay_t< E >::size_type axis 
    )
    +
    +inline
    +
    + +

    Returns an iterator to the first element of the expression for the specified axis.

    +
    Parameters
    + + + +
    ethe expession to iterate over
    axisthe axis to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_iterator
    + +

    Definition at line 299 of file xaxis_iterator.hpp.

    + +
    +
    + +

    ◆ axis_end() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::axis_end (E && e)
    +
    +inline
    +
    + +

    Returns an iterator to the element following the last element of the expression for axis 0.

    +
    Parameters
    + + +
    ethe expession to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_iterator
    + +

    Definition at line 313 of file xaxis_iterator.hpp.

    + +
    +
    + +

    ◆ axis_end() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::axis_end (E && e,
    typename std::decay_t< E >::size_type axis 
    )
    +
    +inline
    +
    + +

    Returns an iterator to the element following the last element of the expression for the specified axis.

    +
    Parameters
    + + + +
    ethe expression to iterate over
    axisthe axis to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_iterator
    + +

    Definition at line 334 of file xaxis_iterator.hpp.

    + +
    +
    + +

    ◆ axis_slice_begin() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::axis_slice_begin (E && e)
    +
    +inline
    +
    + +

    Returns an iterator to the first element of the expression for axis 0.

    +
    Parameters
    + + +
    ethe expession to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_slice_iterator
    + +

    Definition at line 299 of file xaxis_slice_iterator.hpp.

    + +
    +
    + +

    ◆ axis_slice_begin() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::axis_slice_begin (E && e,
    typename std::decay_t< E >::size_type axis 
    )
    +
    +inline
    +
    + +

    Returns an iterator to the first element of the expression for the specified axis.

    +
    Parameters
    + + + +
    ethe expession to iterate over
    axisthe axis to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_slice_iterator
    + +

    Definition at line 313 of file xaxis_slice_iterator.hpp.

    + +
    +
    + +

    ◆ axis_slice_end() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::axis_slice_end (E && e)
    +
    +inline
    +
    + +

    Returns an iterator to the element following the last element of the expression for axis 0.

    +
    Parameters
    + + +
    ethe expession to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_slice_iterator
    + +

    Definition at line 327 of file xaxis_slice_iterator.hpp.

    + +
    +
    + +

    ◆ axis_slice_end() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::axis_slice_end (E && e,
    typename std::decay_t< E >::size_type axis 
    )
    +
    +inline
    +
    + +

    Returns an iterator to the element following the last element of the expression for the specified axis.

    +
    Parameters
    + + + +
    ethe expression to iterate over
    axisthe axis to iterate over
    +
    +
    +
    Returns
    an instance of xaxis_slice_iterator
    + +

    Definition at line 347 of file xaxis_slice_iterator.hpp.

    + +
    +
    + +

    ◆ bin_items() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xt::xtensor< size_t, 1 > xt::bin_items (size_t N,
    E && weights 
    )
    +
    +inline
    +
    + +

    Get the number of items in each bin, given the fraction of items per bin.

    +

    The output is such that the total number of items of all bins is exactly "N".

    +
    Parameters
    + + + +
    Nthe number of items to distribute
    weightsfraction of items per bin: a 1D container whose size is the number of bins
    +
    +
    +
    Returns
    1D container with the number of items per bin
    + +

    Definition at line 566 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ bin_items() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xt::xtensor< size_t, 1 > xt::bin_items (size_t N,
    size_t bins 
    )
    +
    +inline
    +
    + +

    Get the number of items in each bin, with each bin having approximately the same number of items in it,under the constraint that the total number of items of all bins is exactly "N".

    +
    Parameters
    + + + +
    Nthe number of items to distribute
    binsthe number of bins
    +
    +
    +
    Returns
    1D container with the number of items per bin
    + +

    Definition at line 608 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ bincount() [1/2]

    + +
    +
    +
    +template<class E1 , class E2 , xtl::check_concept< is_xexpression< std::decay_t< E2 > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::bincount (E1 && data,
    E2 && weights,
    std::size_t minlength = 0 
    )
    +
    +inline
    +
    + +

    Count number of occurrences of each value in array of non-negative ints.

    +

    The number of bins (of size 1) is one larger than the largest value in x. If minlength is specified, there will be at least this number of bins in the output array (though it will be longer if necessary, depending on the contents of x). Each bin gives the number of occurrences of its index value in x. If weights is specified the input array is weighted by it, i.e. if a value n is found at position i, out[n] += weight[i] instead of out[n] += 1.

    +
    Parameters
    + + + + +
    datathe 1D container with integers to count into bins
    weightsa 1D container with the same number of elements as data
    minlengthThe minlength
    +
    +
    +
    Returns
    1D container with the bincount
    + +

    Definition at line 513 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ bincount() [2/2]

    + +
    +
    +
    +template<class E1 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::bincount (E1 && data,
    std::size_t minlength = 0 
    )
    +
    +inline
    +
    + +

    Definition at line 547 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ blockwise_reducer()

    + +
    +
    +
    +template<class E , class CS , class A , class O , class FF >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::blockwise_reducer (E && e,
    CS && chunk_shape,
    A && axes,
    O && raw_options,
    FF && functor 
    )
    +
    +inline
    +
    + +

    Definition at line 268 of file xblockwise_reducer.hpp.

    + +
    +
    + +

    ◆ broadcast() [1/2]

    + +
    +
    +
    +template<class E , class I , std::size_t L>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::broadcast (E && e,
    const I(&) s[L] 
    )
    +
    +inline
    +
    + +

    Definition at line 241 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ broadcast() [2/2]

    + +
    +
    +
    +template<class E , class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::broadcast (E && e,
    const S & s 
    )
    +
    +inline
    +
    + +

    Returns an xexpression broadcasting the given expression to a specified shape.

    +
    Template Parameters
    + + + +
    ethe xexpression to broadcast
    sthe specified shape to broadcast.
    +
    +
    +

    The returned expression either hold a const reference to e or a copy depending on whether e is an lvalue or an rvalue.

    + +

    Definition at line 233 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ broadcast_shape()

    + +
    +
    +
    +template<class S1 , class S2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::broadcast_shape (const S1 & input,
    S2 & output 
    )
    +
    +inline
    +
    + +

    Definition at line 734 of file xstrides.hpp.

    + +
    +
    + +

    ◆ broadcastable()

    + +
    +
    +
    +template<class S1 , class S2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::broadcastable (const S1 & src_shape,
    const S2 & dst_shape 
    )
    +
    +inline
    +
    + +

    Definition at line 779 of file xstrides.hpp.

    + +
    +
    + +

    ◆ check_access()

    + +
    +
    +
    +template<class S , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::check_access (const S & shape,
    Args... args 
    )
    +
    +inline
    +
    + +

    Definition at line 306 of file xexception.hpp.

    + +
    +
    + +

    ◆ check_axis_in_dim()

    + +
    +
    +
    +template<class A , class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::check_axis_in_dim (axis,
    dim,
    const char * subject = "Axis" 
    )
    +
    +inline
    +
    + +

    Definition at line 288 of file xexception.hpp.

    + +
    +
    + +

    ◆ check_dimension()

    + +
    +
    +
    +template<class S , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::check_dimension (const S & shape,
    Args...  
    )
    +
    +inline
    +
    + +

    Definition at line 271 of file xexception.hpp.

    + +
    +
    + +

    ◆ check_element_index()

    + +
    +
    +
    +template<class S , class It >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::check_element_index (const S & shape,
    It first,
    It last 
    )
    +
    +inline
    +
    + +

    Definition at line 244 of file xexception.hpp.

    + +
    +
    + +

    ◆ check_in_bounds()

    + +
    +
    +
    +template<class S , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::check_in_bounds (const S & shape,
    Args &... args 
    )
    +
    +inline
    +
    + +

    Definition at line 875 of file xstrides.hpp.

    + +
    +
    + +

    ◆ check_index() [1/3]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + +
    void xt::check_index (const S & )
    +
    +inline
    +
    + +

    Definition at line 208 of file xexception.hpp.

    + +
    +
    + +

    ◆ check_index() [2/3]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::check_index (const S & ,
    missing_type  
    )
    +
    +inline
    +
    + +

    Definition at line 213 of file xexception.hpp.

    + +
    +
    + +

    ◆ check_index() [3/3]

    + +
    +
    +
    +template<class S , class Arg , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::check_index (const S & shape,
    Arg arg,
    Args... args 
    )
    +
    +inline
    +
    + +

    Definition at line 218 of file xexception.hpp.

    + +
    +
    + +

    ◆ chunked_array()

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, class S >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    xchunked_array< xarray< xarray< T > > > xt::chunked_array (std::initializer_list< S > shape,
    std::initializer_list< S > chunk_shape,
    layout_type chunk_memory_layout = ::xt::layout_type::row_major 
    )
    +
    + +

    Definition at line 360 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ col()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::col (E && e,
    std::ptrdiff_t index 
    )
    +
    +inline
    +
    + +

    Constructs and returns a column (sliced view) on the specified expression.

    +

    Users should not directly construct the slices but call helper functions instead. This function is only allowed on expressions with two dimensions.

    Parameters
    + + + +
    ethe xexpression to adapt
    index0-based index of the column, negative indices will return the last columns in reverse order.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the expression has more than 2 dimensions.
    +
    +
    + +

    Definition at line 1937 of file xview.hpp.

    + +
    +
    + +

    ◆ compute_0d_table()

    + +
    +
    +
    +template<class P , class T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_0d_table (std::stringstream & out,
    P & ,
    const T & expr 
    )
    +
    + +

    Definition at line 25 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_1d_row()

    + +
    +
    +
    +template<class P >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_1d_row (std::stringstream & out,
    P & printer,
    const std::size_t & row_idx 
    )
    +
    + +

    Definition at line 35 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_1d_table()

    + +
    +
    +
    +template<class P , class T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_1d_table (std::stringstream & out,
    P & printer,
    const T & expr,
    const std::size_t & edgeitems 
    )
    +
    + +

    Definition at line 43 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_2d_element()

    + +
    +
    +
    +template<class P >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_2d_element (std::stringstream & out,
    P & printer,
    const std::string & idx_str,
    const std::size_t & row_idx,
    const std::size_t & column_idx 
    )
    +
    + +

    Definition at line 71 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_2d_row()

    + +
    +
    +
    +template<class P , class T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_2d_row (std::stringstream & out,
    P & printer,
    const T & expr,
    const std::size_t & edgeitems,
    const std::string & idx_str,
    const std::size_t & row_idx 
    )
    +
    + +

    Definition at line 86 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_2d_table()

    + +
    +
    +
    +template<class P , class T , class I >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_2d_table (std::stringstream & out,
    P & printer,
    const T & expr,
    const std::size_t & edgeitems,
    const std::vector< I > & idx 
    )
    +
    + +

    Definition at line 121 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_layout()

    + +
    +
    +
    +template<class... Args>
    + + + + + +
    + + + + + + + + +
    constexpr layout_type xt::compute_layout (Args... args)
    +
    +constexprnoexcept
    +
    + +

    Implementation of the following logical table:

    +
       | d | a | r | c |
    + --+---+---+---+---+
    + d | d | d | d | d |
    + a | d | a | r | c |
    + r | d | r | r | d |
    + c | d | c | d | c |
    + d = dynamic, a = any, r = row_major, c = column_major.
    +

    Using bitmasks to avoid nested if-else statements.

    +
    Parameters
    + + +
    argsthe input layouts.
    +
    +
    +
    Returns
    the output layout, computed with the previous logical table.
    + +

    Definition at line 88 of file xlayout.hpp.

    + +
    +
    + +

    ◆ compute_nd_row()

    + +
    +
    +
    +template<class P , class T , class I >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_nd_row (std::stringstream & out,
    P & printer,
    const T & expr,
    const std::size_t & edgeitems,
    const std::vector< I > & idx 
    )
    +
    + +

    Definition at line 183 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_nd_table()

    + +
    +
    +
    +template<class P , class T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_nd_table (std::stringstream & out,
    P & printer,
    const T & expr,
    const std::size_t & edgeitems 
    )
    +
    + +

    Definition at line 244 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_nd_table_impl()

    + +
    +
    +
    +template<class P , class T , class I >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::compute_nd_table_impl (std::stringstream & out,
    P & printer,
    const T & expr,
    const std::size_t & edgeitems,
    const std::vector< I > & idx 
    )
    +
    + +

    Definition at line 197 of file xmime.hpp.

    + +
    +
    + +

    ◆ compute_size()

    + +
    +
    +
    +template<class shape_type >
    + + + + + +
    + + + + + + + + +
    std::size_t xt::compute_size (const shape_type & shape)
    +
    +inlinenoexcept
    +
    + +

    Definition at line 347 of file xstrides.hpp.

    + +
    +
    + +

    ◆ compute_strides()

    + +
    +
    +
    +template<layout_type L = layout_type::dynamic, class shape_type , class strides_type , class backstrides_type >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::size_t xt::compute_strides (const shape_type & shape,
    layout_type l,
    strides_type & strides,
    backstrides_type & backstrides 
    )
    +
    +inline
    +
    + +

    Definition at line 573 of file xstrides.hpp.

    + +
    +
    + +

    ◆ computed_assign()

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::computed_assign (xexpression< E1 > & e1,
    const xexpression< E2 > & e2 
    )
    +
    +inline
    +
    + +

    Definition at line 232 of file xassign.hpp.

    + +
    +
    + +

    ◆ concatenate() [1/2]

    + +
    +
    +
    +template<std::size_t axis, class... CT, typename = std::enable_if_t<detail::all_fixed_shapes<CT...>::value>>
    + + + + + +
    + + + + + + + + +
    auto xt::concatenate (std::tuple< CT... > && t)
    +
    +inline
    +
    + +

    Definition at line 791 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ concatenate() [2/2]

    + +
    +
    +
    +template<class... CT>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::concatenate (std::tuple< CT... > && t,
    std::size_t axis = 0 
    )
    +
    +inline
    +
    + +

    Concatenates xexpressions along axis.

    +
    Parameters
    + + + +
    txtuple of xexpressions to concatenate
    axisaxis along which elements are concatenated
    +
    +
    +
    Returns
    xgenerator evaluating to concatenated elements
    +
    xt::xarray<double> a = {{1, 2, 3}};
    +
    xt::xarray<double> b = {{2, 3, 4}};
    +
    xt::xarray<double> c = xt::concatenate(xt::xtuple(a, b)); // => {{1, 2, 3},
    +
    // {2, 3, 4}}
    +
    xt::xarray<double> d = xt::concatenate(xt::xtuple(a, b), 1); // => {{1, 2, 3, 2, 3, 4}}
    +
    auto concatenate(std::tuple< CT... > &&t, std::size_t axis=0)
    Concatenates xexpressions along axis.
    Definition xbuilder.hpp:784
    +
    auto xtuple(Types &&... args)
    Creates tuples from arguments for concatenate and stack.
    Definition xbuilder.hpp:661
    +
    +

    Definition at line 784 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ conditional_cast()

    + +
    +
    +
    +template<bool condition, class T , class U >
    + + + + + +
    + + + + + + + + +
    auto xt::conditional_cast (U && u)
    +
    +inline
    +
    + +

    Perform a type cast when a condition is true.

    +

    If condition is true, return static_cast<T>(u), otherwise return u unchanged. This is useful when an unconditional static_cast would force undesired type conversions in some situations where an error or warning would be desired. The condition determines when the explicit cast is ok.

    + +

    Definition at line 757 of file xutils.hpp.

    + +
    +
    + +

    ◆ convolve()

    + +
    +
    +
    +template<class E1 , class E2 , class E3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::convolve (E1 && a,
    E2 && v,
    E3 mode 
    )
    +
    +inline
    +
    + +

    Definition at line 3307 of file xmath.hpp.

    + +
    +
    + +

    ◆ copy_to_reduced()

    + +
    +
    +
    +template<class F , class E , class R , xtl::check_concept< std::is_convertible< typename E::value_type, typename R::value_type > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::copy_to_reduced (F & f,
    const E & e,
    R & result 
    )
    +
    +inline
    +
    + +

    Definition at line 251 of file xreducer.hpp.

    + +
    +
    + +

    ◆ count_nonnan() [1/3]

    + +
    +
    +
    +template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonnan (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2609 of file xmath.hpp.

    + +
    +
    + +

    ◆ count_nonnan() [2/3]

    + +
    +
    +
    +template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonnan (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2583 of file xmath.hpp.

    + +
    +
    + +

    ◆ count_nonnan() [3/3]

    + +
    +
    +
    +template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonnan (E && e,
    X && axes,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2593 of file xmath.hpp.

    + +
    +
    + +

    ◆ count_nonzero() [1/4]

    + +
    +
    +
    +template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonzero (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2569 of file xmath.hpp.

    + +
    +
    + +

    ◆ count_nonzero() [2/4]

    + +
    +
    +
    +template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonzero (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2532 of file xmath.hpp.

    + +
    +
    + +

    ◆ count_nonzero() [3/4]

    + +
    +
    +
    +template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonzero (E && e,
    X && axes,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2547 of file xmath.hpp.

    + +
    +
    + +

    ◆ count_nonzero() [4/4]

    + +
    +
    +
    +template<class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< X > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::count_nonzero (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2563 of file xmath.hpp.

    + +
    +
    + +

    ◆ cov()

    + +
    +
    +
    +template<class E1 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::cov (const E1 & x,
    const E1 & y = E1() 
    )
    +
    +inline
    +
    + +

    Returns the covariance matrix.

    +
    Parameters
    + + + +
    xone or two dimensional array
    yoptional one-dimensional array to build covariance to x
    +
    +
    + +

    Definition at line 3196 of file xmath.hpp.

    + +
    +
    + +

    ◆ cumprod()

    + +
    +
    +
    +template<class T = void, class E >
    + + + + + +
    + + + + + + + + +
    auto xt::cumprod (E && e)
    +
    +inline
    +
    + +

    Definition at line 2331 of file xmath.hpp.

    + +
    +
    + +

    ◆ cumsum()

    + +
    +
    +
    +template<class T = void, class E >
    + + + + + +
    + + + + + + + + +
    auto xt::cumsum (E && e)
    +
    +inline
    +
    + +

    Definition at line 2296 of file xmath.hpp.

    + +
    +
    + +

    ◆ data_offset()

    + +
    +
    +
    +template<class offset_type , class S >
    + + + + + +
    + + + + + + + + +
    offset_type xt::data_offset (const S & strides)
    +
    +inlinenoexcept
    +
    + +

    Definition at line 447 of file xstrides.hpp.

    + +
    +
    + +

    ◆ default_assignable_layout()

    + +
    +
    + + + + + +
    + + + + + + + + +
    constexpr layout_type xt::default_assignable_layout (layout_type l)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 93 of file xlayout.hpp.

    + +
    +
    + +

    ◆ diag()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::diag (E && arr,
    int k = 0 
    )
    +
    +inline
    +
    + +

    xexpression with values of arr on the diagonal, zeroes otherwise

    +
    Parameters
    + + + +
    arrthe 1D input array of length n
    kthe offset of the considered diagonal
    +
    +
    +
    Returns
    xexpression function with shape n x n and arr on the diagonal
    +
    xt::xarray<double> a = {1, 5, 9};
    +
    auto b = xt::diag(a); // => {{1, 0, 0},
    +
    // {0, 5, 0},
    +
    // {0, 0, 9}}
    +
    auto diag(E &&arr, int k=0)
    xexpression with values of arr on the diagonal, zeroes otherwise
    +
    +

    Definition at line 1156 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ diagonal()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::diagonal (E && arr,
    int offset = 0,
    std::size_t axis_1 = 0,
    std::size_t axis_2 = 1 
    )
    +
    +inline
    +
    + +

    Returns the elements on the diagonal of arr If arr has more than two dimensions, then the axes specified by axis_1 and axis_2 are used to determine the 2-D sub-array whose diagonal is returned.

    +

    The shape of the resulting array can be determined by removing axis1 and axis2 and appending an index to the right equal to the size of the resulting diagonals.

    +
    Parameters
    + + + + + +
    arrthe input array
    offsetoffset of the diagonal from the main diagonal. Can be positive or negative.
    axis_1Axis to be used as the first axis of the 2-D sub-arrays from which the diagonals should be taken.
    axis_2Axis to be used as the second axis of the 2-D sub-arrays from which the diagonals should be taken.
    +
    +
    +
    Returns
    xexpression with values of the diagonal
    +
    xt::xarray<double> a = {{1, 2, 3},
    +
    {4, 5, 6}
    +
    {7, 8, 9}};
    +
    auto b = xt::diagonal(a); // => {1, 5, 9}
    +
    auto diagonal(E &&arr, int offset=0, std::size_t axis_1=0, std::size_t axis_2=1)
    Returns the elements on the diagonal of arr If arr has more than two dimensions, then the axes specif...
    +
    +

    Definition at line 1104 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ digitize()

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::digitize (E1 && data,
    E2 && bin_edges,
    bool right = false 
    )
    +
    +inline
    +
    + +

    Return the indices of the bins to which each value in input array belongs.

    +
    Parameters
    + + + + +
    dataThe data.
    bin_edgesThe bin-edges. It has to be 1-dimensional and monotonic.
    rightIndicating whether the intervals include the right or the left bin edge.
    +
    +
    +
    Returns
    Output array of indices, of same shape as x.
    + +

    Definition at line 36 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ do_strides_match()

    + +
    +
    +
    +template<class shape_type , class strides_type >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool xt::do_strides_match (const shape_type & shape,
    const strides_type & strides,
    layout_type l,
    bool zero_strides 
    )
    +
    +inline
    +
    + +

    Definition at line 588 of file xstrides.hpp.

    + +
    +
    + +

    ◆ drop() [1/3]

    + +
    +
    +
    +template<class R = std::ptrdiff_t, class Arg0 , class Arg1 , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    xdrop_slice< R > xt::drop (Arg0 i0,
    Arg1 i1,
    Args... args 
    )
    +
    +inline
    +
    + +

    Definition at line 544 of file xslice.hpp.

    + +
    +
    + +

    ◆ drop() [2/3]

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    detail::disable_integral_drop< T > xt::drop (T && indices)
    +
    +inline
    +
    + +

    Create a non-contigous slice from a container of indices to drop.

    +

    Note: this slice cannot be used in the xstrided_view!

    +
    +
    a.reshape({3, 3});
    +
    xt::view(a, xt::drop(0, 2); // => {{3, 4, 5}}
    +
    auto & reshape(S &&shape, layout_type layout=base_type::static_layout) &
    Reshapes the container and keeps old elements.
    +
    auto arange(T start, T stop, S step=1) noexcept
    Generates numbers evenly spaced within given half-open interval [start, stop).
    Definition xbuilder.hpp:432
    +
    detail::disable_integral_drop< T > drop(T &&indices)
    Create a non-contigous slice from a container of indices to drop.
    Definition xslice.hpp:529
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    +
    Parameters
    + + +
    indicesThe container of indices to drop
    +
    +
    +
    Returns
    instance of xdrop_slice
    + +

    Definition at line 529 of file xslice.hpp.

    + +
    +
    + +

    ◆ drop() [3/3]

    + +
    +
    +
    +template<class R = std::ptrdiff_t, class T >
    + + + + + +
    + + + + + + + + +
    detail::enable_integral_drop< T, R > xt::drop (i)
    +
    +inline
    +
    + +

    Definition at line 535 of file xslice.hpp.

    + +
    +
    + +

    ◆ dump_csv()

    + +
    +
    +
    +template<class E >
    + + + + + + + + + + + + + + + + + + +
    void xt::dump_csv (std::ostream & stream,
    const xexpression< E > & e 
    )
    +
    + +

    Dump tensor to CSV.

    +
    Parameters
    + + + +
    streamthe output stream to write the CSV encoded values
    ethe tensor expression to serialize
    +
    +
    + +

    Definition at line 210 of file xcsv.hpp.

    + +
    +
    + +

    ◆ dump_file()

    + +
    +
    +
    +template<class E >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::dump_file (std::ostream & stream,
    const xexpression< E > & e,
    const xcsv_config 
    )
    +
    + +

    Definition at line 269 of file xcsv.hpp.

    + +
    +
    + +

    ◆ dump_npy() [1/2]

    + +
    +
    +
    +template<typename E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::dump_npy (const std::string & filename,
    const xexpression< E > & e 
    )
    +
    +inline
    +
    + +

    Save xexpression to NumPy npy format.

    +
    Parameters
    + + + +
    filenameThe filename or path to dump the data
    ethe xexpression
    +
    +
    + +

    Definition at line 739 of file xnpy.hpp.

    + +
    +
    + +

    ◆ dump_npy() [2/2]

    + +
    +
    +
    +template<typename E >
    + + + + + +
    + + + + + + + + +
    std::string xt::dump_npy (const xexpression< E > & e)
    +
    +inline
    +
    + +

    Save xexpression to NumPy npy format in a string.

    +
    Parameters
    + + +
    ethe xexpression
    +
    +
    + +

    Definition at line 756 of file xnpy.hpp.

    + +
    +
    + +

    ◆ dynamic_view()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::dynamic_view (E && e,
    const xdynamic_slice_vector & slices 
    )
    +
    +inline
    +
    + +

    Definition at line 783 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ element_offset()

    + +
    +
    +
    +template<class offset_type , class S , class It >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    offset_type xt::element_offset (const S & strides,
    It first,
    It last 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 488 of file xstrides.hpp.

    + +
    +
    + +

    ◆ ellipsis()

    + +
    +
    + + + + + +
    + + + + + + + +
    auto xt::ellipsis ()
    +
    +inlinenoexcept
    +
    + +

    Returns a slice representing all remaining dimensions, and selecting all in these dimensions.

    +

    Ellipsis will expand to a series of all() slices, until the number of slices is equal to the number of dimensions of the source array.

    +

    Note: ellipsis can only be used in strided_view!

    +
    +
    auto v = xt::strided_view(a, {2, xt::ellipsis(), 2});
    +
    // equivalent to using {2, xt::all(), xt::all(), xt::all(), 2};
    +
    auto ellipsis() noexcept
    Returns a slice representing all remaining dimensions, and selecting all in these dimensions.
    Definition xslice.hpp:255
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    See also
    strided_view
    + +

    Definition at line 255 of file xslice.hpp.

    + +
    +
    + +

    ◆ empty() [1/4]

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, std::size_t... N>
    + + + + + +
    + + + + + + + + +
    xtensor_fixed< T, fixed_shape< N... >, L > xt::empty (const fixed_shape< N... > & )
    +
    +inline
    +
    + +

    Definition at line 109 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ empty() [2/4]

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, class I , std::size_t N>
    + + + + + +
    + + + + + + + + +
    xtensor< T, N, L > xt::empty (const I(&) shape[N])
    +
    +inline
    +
    + +

    Definition at line 102 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ empty() [3/4]

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, class S >
    + + + + + +
    + + + + + + + + +
    xarray< T, L > xt::empty (const S & shape)
    +
    +inline
    +
    + +

    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of with value_type T and shape.

    +

    Selects the best container match automatically from the supplied shape.

    +
      +
    • std::vectorxarray<T>
    • +
    • std::array or initializer_listxtensor<T, N>
    • +
    • xshape<N...>xtensor_fixed<T, xshape<N...>>
    • +
    +
    Parameters
    + + +
    shapeshape of the new xcontainer
    +
    +
    + +

    Definition at line 89 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ empty() [4/4]

    + +
    +
    +
    +template<class T , layout_type L = ::xt::layout_type::row_major, class ST , std::size_t N>
    + + + + + +
    + + + + + + + + +
    xtensor< T, N, L > xt::empty (const std::array< ST, N > & shape)
    +
    +inline
    +
    + +

    Definition at line 95 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ empty_like()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::empty_like (const xexpression< E > & e)
    +
    +inline
    +
    + +

    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of the same shape, value type and layout as the input xexpression e.

    +
    Parameters
    + + +
    ethe xexpression from which to extract shape, value type and layout.
    +
    +
    + +

    Definition at line 121 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ eye() [1/2]

    + +
    +
    +
    +template<class T = bool>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::eye (const std::vector< std::size_t > & shape,
    int k = 0 
    )
    +
    +inline
    +
    + +

    Generates an array with ones on the diagonal.

    +
    Parameters
    + + + +
    shapeshape of the resulting expression
    kindex of the diagonal. 0 (default) refers to the main diagonal, a positive value refers to an upper diagonal, and a negative value to a lower diagonal.
    +
    +
    +
    Template Parameters
    + + +
    Tvalue_type of xexpression
    +
    +
    +
    Returns
    xgenerator that generates the values on access
    + +

    Definition at line 403 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ eye() [2/2]

    + +
    +
    +
    +template<class T = bool>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::eye (std::size_t n,
    int k = 0 
    )
    +
    +inline
    +
    + +

    Generates a (n x n) array with ones on the diagonal.

    +
    Parameters
    + + + +
    nlength of the diagonal.
    kindex of the diagonal. 0 (default) refers to the main diagonal, a positive value refers to an upper diagonal, and a negative value to a lower diagonal.
    +
    +
    +
    Template Parameters
    + + +
    Tvalue_type of xexpression
    +
    +
    +
    Returns
    xgenerator that generates the values on access
    + +

    Definition at line 418 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ filter()

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E , class O >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::filter (E && e,
    O && condition 
    )
    +
    +inlinenoexcept
    +
    + +

    creates a view into e filtered by condition.

    +

    Returns a 1D view with the elements selected where condition evaluates to true. This is equivalent to

    {index_view(e, argwhere(condition));} 

    The returned view is not optimal if you just want to assign a scalar to the filtered elements. In that case, you should consider using the filtration function instead.

    +
    Template Parameters
    + + +
    Lthe traversal order
    +
    +
    +
    Parameters
    + + + +
    ethe underlying xexpression
    conditionxexpression with shape of e which selects indices
    +
    +
    +
    xarray<double> a = {{1,5,3}, {4,5,6}};
    +
    b = filter(a, a >= 5);
    +
    std::cout << b << std::endl; // {5, 5, 6}
    +
    auto filter(E &&e, O &&condition) noexcept
    creates a view into e filtered by condition.
    +
    See also
    filtration
    + +

    Definition at line 819 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ filtration()

    + +
    +
    +
    +template<class E , class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::filtration (E && e,
    C && condition 
    )
    +
    +inlinenoexcept
    +
    + +

    creates a filtration of e filtered by condition.

    +

    Returns a lazy filtration optimized for scalar assignment. Actually, scalar assignment and computed scalar assignments are the only available methods of the filtration, the filtration IS NOT an xexpression.

    +
    Parameters
    + + + +
    ethe xexpression to filter
    conditionthe filtering xexpression
    +
    +
    +
    xarray<double> a = {{1,5,3}, {4,5,6}};
    +
    filtration(a, a >= 5) += 2;
    +
    std::cout << a << std::endl; // {{1, 7, 3}, {4, 7, 8}}
    +
    auto filtration(E &&e, C &&condition) noexcept
    creates a filtration of e filtered by condition.
    +
    +

    Definition at line 844 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ flatnonzero()

    + +
    +
    +
    +template<layout_type L, class T >
    + + + + + +
    + + + + + + + + +
    auto xt::flatnonzero (const T & arr)
    +
    +inline
    +
    + +

    Return indices that are non-zero in the flattened version of arr.

    +

    Equivalent to nonzero(ravel<layout_type>(arr))[0];

    +
    Parameters
    + + +
    arrinput array
    +
    +
    +
    Returns
    indices that are non-zero in the flattened version of arr
    + +

    Definition at line 456 of file xmanipulation.hpp.

    + +
    +
    + +

    ◆ flatten_indices()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    auto xt::flatten_indices (const std::vector< T > & idx)
    +
    +inline
    +
    + +

    Converts std::vector<index_type> (returned e.g.

    +

    from xt::argwhere) to a flattened xtensor.

    +
    Parameters
    + + +
    idxa vector of indices
    +
    +
    +
    Returns
    xt::xtensor<typename index_type::value_type, 1> (e.g. xt::xtensor<size_t, 1>)
    + +

    Definition at line 890 of file xtensor.hpp.

    + +
    +
    + +

    ◆ for_each() [1/2]

    + +
    +
    +
    +template<class F , class... T>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::for_each (F && f,
    const std::tuple< T... > & t 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 193 of file xutils.hpp.

    + +
    +
    + +

    ◆ for_each() [2/2]

    + +
    +
    +
    +template<class F , class... T>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::for_each (F && f,
    std::tuple< T... > & t 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 168 of file xutils.hpp.

    + +
    +
    + +

    ◆ forward_normalize()

    + +
    +
    +
    +template<class R , class E , class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::forward_normalize (E & expr,
    C && axes 
    ) -> std::enable_if_t<xtl::is_signed<std::decay_t<decltype(*std::begin(axes))>>::value, R> +
    +
    +inline
    +
    + +

    Definition at line 413 of file xutils.hpp.

    + +
    +
    + +

    ◆ from_indices()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    auto xt::from_indices (const std::vector< T > & idx)
    +
    +inline
    +
    + +

    Converts std::vector<index_type> (returned e.g.

    +

    from xt::argwhere) to xtensor.

    +
    Parameters
    + + +
    idxvector of indices
    +
    +
    +
    Returns
    xt::xtensor<typename index_type::value_type, 2> (e.g. xt::xtensor<size_t, 2>)
    + +

    Definition at line 858 of file xtensor.hpp.

    + +
    +
    + +

    ◆ from_json()

    + +
    +
    +
    +template<template< typename U, typename V, typename... Args > class M, class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    enable_xcontainer_semantics< E > xt::from_json (const nlohmann::basic_json< M > & j,
    E & e 
    )
    +
    +inline
    +
    + +

    JSON deserialization of a xtensor expression with a container or a view semantics.

    +

    The from_json method is used by the nlohmann_json library for automatic serialization of user-defined types. The method is picked up by argument-dependent lookup.

    +

    Note: for converting a JSON object to a value, nlohmann_json requires the value type to be default constructible, which is typically not the case for expressions with a view semantics. In this case, from_json can be called directly.

    +
    Parameters
    + + + +
    ja const JSON object
    ean xexpression
    +
    +
    + +

    Definition at line 156 of file xjson.hpp.

    + +
    +
    + +

    ◆ full_like()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::full_like (const xexpression< E > & e,
    typename E::value_type fill_value 
    )
    +
    +inline
    +
    + +

    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with fill_value and of the same shape, value type and layout as the input xexpression e.

    +
    Parameters
    + + + +
    ethe xexpression from which to extract shape, value type and layout.
    fill_valuethe value used to set each element of the returned xcontainer.
    +
    +
    + +

    Definition at line 136 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ get() [1/3]

    + +
    +
    +
    +template<std::size_t I, template< typename... Args > class T, typename... Args>
    + + + + + + + + +
    decltype(auto) xt::get (const T< Args... > & v)
    +
    + +

    Definition at line 517 of file xutils.hpp.

    + +
    +
    + +

    ◆ get() [2/3]

    + +
    +
    +
    +template<std::size_t I, template< typename... Args > class T, typename... Args>
    + + + + + + + + +
    decltype(auto) xt::get (T< Args... > && v)
    +
    + +

    Definition at line 505 of file xutils.hpp.

    + +
    +
    + +

    ◆ get() [3/3]

    + +
    +
    +
    +template<std::size_t I, template< typename... Args > class T, typename... Args>
    + + + + + + + + +
    decltype(auto) xt::get (T< Args... > & v)
    +
    + +

    Definition at line 511 of file xutils.hpp.

    + +
    +
    + +

    ◆ get_backstrides()

    + +
    +
    +
    +template<class S , class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr T xt::get_backstrides (const S & shape,
    const T & strides 
    )
    +
    +constexprnoexcept
    +
    + +

    Definition at line 232 of file xfixed.hpp.

    + +
    +
    + +

    ◆ get_print_options()

    + +
    +
    + + + + + +
    + + + + + + + + +
    print_options::print_options_impl xt::get_print_options (std::ostream & out)
    +
    +inline
    +
    + +

    Definition at line 693 of file xio.hpp.

    + +
    +
    + +

    ◆ get_size() [1/2]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + +
    disable_xslice< S, std::size_t > xt::get_size (const S & )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 853 of file xslice.hpp.

    + +
    +
    + +

    ◆ get_size() [2/2]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + +
    auto xt::get_size (const xslice< S > & slice)
    +
    +inlinenoexcept
    +
    + +

    Definition at line 859 of file xslice.hpp.

    + +
    +
    + +

    ◆ get_slice_implementation()

    + +
    +
    +
    +template<class E , class SL >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::get_slice_implementation (E & e,
    SL && slice,
    std::size_t index 
    )
    +
    +inline
    +
    + +

    Definition at line 999 of file xslice.hpp.

    + +
    +
    + +

    ◆ get_slice_value() [1/2]

    + +
    +
    +
    +template<class S , class It >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    disable_xslice< S, std::size_t > xt::get_slice_value (const S & s,
    It &  
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 51 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ get_slice_value() [2/2]

    + +
    +
    +
    +template<class S , class It >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::get_slice_value (const xslice< S > & slice,
    It & it 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 57 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ get_strides()

    + +
    +
    +
    +template<layout_type L, class R , std::size_t... X>
    + + + + + +
    + + + + + + + + +
    constexpr R xt::get_strides (const fixed_shape< X... > & shape)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 226 of file xfixed.hpp.

    + +
    +
    + +

    ◆ has_shape()

    + +
    +
    +
    +template<class E , class S , class = typename std::enable_if_t<has_iterator_interface<S>::value>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::has_shape (const E & e,
    const S & shape 
    )
    +
    +inline
    +
    + +

    Check if an object has a certain shape.

    +
    Parameters
    + + + +
    aan array
    shapethe shape to test
    +
    +
    +
    Returns
    bool
    + +

    Definition at line 145 of file xshape.hpp.

    + +
    +
    + +

    ◆ has_value()

    + +
    +
    +
    +template<class E , xtl::check_concept< is_xexpression< E > > = 0>
    + + + + + +
    + + + + + + + + +
    auto xt::has_value (E && e) -> detail::flag_expression_t<E> +
    +
    +inline
    +
    + +

    Definition at line 1272 of file xoptional.hpp.

    + +
    +
    + +

    ◆ histogram() [1/6]

    + +
    +
    +
    +template<class R = double, class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram (E1 && data,
    E2 && bin_edges,
    bool density = false 
    )
    +
    +inline
    +
    + +

    Compute the histogram of a set of data.

    +
    Parameters
    + + + + +
    dataThe data.
    bin_edgesThe bin-edges.
    densityIf true the resulting integral is normalized to 1. [default: false]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bin_edges.size()-1.
    + +

    Definition at line 163 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram() [2/6]

    + +
    +
    +
    +template<class R = double, class E1 , class E2 , class E3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram (E1 && data,
    E2 && bin_edges,
    E3 && weights,
    bool density = false 
    )
    +
    +inline
    +
    + +

    Compute the histogram of a set of data.

    +
    Parameters
    + + + + + +
    dataThe data.
    bin_edgesThe bin-edges. It has to be 1-dimensional and monotonic.
    weightsWeight factors corresponding to each data-point.
    densityIf true the resulting integral is normalized to 1. [default: false]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bin_edges.size()-1.
    + +

    Definition at line 142 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram() [3/6]

    + +
    +
    +
    +template<class R = double, class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram (E1 && data,
    std::size_t bins,
    E2 && weights,
    bool density = false 
    )
    +
    +inline
    +
    + +

    Compute the histogram of a set of data.

    +
    Parameters
    + + + + + +
    dataThe data.
    binsThe number of bins.
    weightsWeight factors corresponding to each data-point.
    densityIf true the resulting integral is normalized to 1. [default: false]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bin_edges.size()-1.
    + +

    Definition at line 241 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram() [4/6]

    + +
    +
    +
    +template<class R = double, class E1 , class E2 , class E3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram (E1 && data,
    std::size_t bins,
    E2 && weights,
    E3 left,
    E3 right,
    bool density = false 
    )
    +
    +inline
    +
    + +

    Compute the histogram of a set of data.

    +
    Parameters
    + + + + + + + +
    dataThe data.
    binsThe number of bins.
    leftThe lower-most edge.
    rightThe upper-most edge.
    weightsWeight factors corresponding to each data-point.
    densityIf true the resulting integral is normalized to 1. [default: false]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bin_edges.size()-1.
    + +

    Definition at line 265 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram() [5/6]

    + +
    +
    +
    +template<class R = double, class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram (E1 && data,
    std::size_t bins,
    E2 left,
    E2 right,
    bool density = false 
    )
    +
    +inline
    +
    + +

    Compute the histogram of a set of data.

    +
    Parameters
    + + + + + + +
    dataThe data.
    binsThe number of bins.
    leftThe lower-most edge.
    rightThe upper-most edge.
    densityIf true the resulting integral is normalized to 1. [default: false]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bin_edges.size()-1.
    + +

    Definition at line 215 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram() [6/6]

    + +
    +
    +
    +template<class R = double, class E1 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram (E1 && data,
    std::size_t bins = 10,
    bool density = false 
    )
    +
    +inline
    +
    + +

    Compute the histogram of a set of data.

    +
    Parameters
    + + + + +
    dataThe data.
    binsThe number of bins. [default: 10]
    densityIf true the resulting integral is normalized to 1. [default: false]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bin_edges.size()-1.
    + +

    Definition at line 188 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram_bin_edges() [1/4]

    + +
    +
    +
    +template<class E1 , class E2 , class E3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram_bin_edges (E1 && data,
    E2 && weights,
    E3 left,
    E3 right,
    std::size_t bins = 10,
    histogram_algorithm mode = histogram_algorithm::automatic 
    )
    +
    +inline
    +
    + +

    Compute the bin-edges of a histogram of a set of data using different algorithms.

    +
    Parameters
    + + + + + + + +
    dataThe data.
    weightsWeight factors corresponding to each data-point.
    leftThe lower-most edge.
    rightThe upper-most edge.
    binsThe number of bins. [default: 10]
    modeThe type of algorithm to use. [default: "auto"]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bins+1.
    + +

    Definition at line 301 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram_bin_edges() [2/4]

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram_bin_edges (E1 && data,
    E2 && weights,
    std::size_t bins = 10,
    histogram_algorithm mode = histogram_algorithm::automatic 
    )
    +
    +inline
    +
    + +

    Compute the bin-edges of a histogram of a set of data using different algorithms.

    +
    Parameters
    + + + + + +
    dataThe data.
    weightsWeight factors corresponding to each data-point.
    binsThe number of bins. [default: 10]
    modeThe type of algorithm to use. [default: "auto"]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bins+1.
    + +

    Definition at line 418 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram_bin_edges() [3/4]

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram_bin_edges (E1 && data,
    E2 left,
    E2 right,
    std::size_t bins = 10,
    histogram_algorithm mode = histogram_algorithm::automatic 
    )
    +
    +inline
    +
    + +

    Compute the bin-edges of a histogram of a set of data using different algorithms.

    +
    Parameters
    + + + + + + +
    dataThe data.
    leftThe lower-most edge.
    rightThe upper-most edge.
    binsThe number of bins. [default: 10]
    modeThe type of algorithm to use. [default: "auto"]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bins+1.
    + +

    Definition at line 480 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ histogram_bin_edges() [4/4]

    + +
    +
    +
    +template<class E1 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::histogram_bin_edges (E1 && data,
    std::size_t bins = 10,
    histogram_algorithm mode = histogram_algorithm::automatic 
    )
    +
    +inline
    +
    + +

    Compute the bin-edges of a histogram of a set of data using different algorithms.

    +
    Parameters
    + + + + +
    dataThe data.
    binsThe number of bins. [default: 10]
    modeThe type of algorithm to use. [default: "auto"]
    +
    +
    +
    Returns
    An one-dimensional xarray<double>, length: bins+1.
    + +

    Definition at line 450 of file xhistogram.hpp.

    + +
    +
    + +

    ◆ hstack()

    + +
    +
    +
    +template<class... CT>
    + + + + + +
    + + + + + + + + +
    auto xt::hstack (std::tuple< CT... > && t)
    +
    +inline
    +
    + +

    Stack xexpressions in sequence horizontally (column wise).

    +

    This is equivalent to concatenation along the second axis, except for 1-D xexpressions where it concatenate along the first axis.

    +
    Parameters
    + + +
    txtuple of xexpressions to stack
    +
    +
    +
    Returns
    xgenerator evaluating to stacked elements
    + +

    Definition at line 858 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ in_bounds()

    + +
    +
    +
    +template<class S , class... Args>
    + + + + + + + + + + + + + + + + + + +
    bool xt::in_bounds (const S & shape,
    Args &... args 
    )
    +
    + +

    Check if the index is within the bounds of the array.

    +
    Parameters
    + + + +
    shapeShape of the array.
    argsArray index.
    +
    +
    +
    Returns
    true If the index is within the bounds of the array.
    +
    +false Otherwise.
    + +
    +
    + +

    ◆ index_view() [1/2]

    + +
    +
    +
    +template<class E , std::size_t L>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::index_view (E && e,
    const xindex(&) indices[L] 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 791 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ index_view() [2/2]

    + +
    +
    +
    +template<class E , class I >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::index_view (E && e,
    I && indices 
    )
    +
    +inlinenoexcept
    +
    + +

    creates an indexview from a container of indices.

    +

    Returns a 1D view with the elements at indices selected.

    +
    Parameters
    + + + +
    ethe underlying xexpression
    indicesthe indices to select
    +
    +
    +
    xarray<double> a = {{1,5,3}, {4,5,6}};
    +
    b = index_view(a, {{0, 0}, {1, 0}, {1, 1}});
    +
    std::cout << b << std::endl; // {1, 4, 5}
    +
    b += 100;
    +
    std::cout << a << std::endl; // {{101, 5, 3}, {104, 105, 6}}
    +
    auto index_view(E &&e, I &&indices) noexcept
    creates an indexview from a container of indices.
    +
    +

    Definition at line 784 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ info()

    + +
    +
    +
    +template<class T >
    + + + + + + + + +
    std::string xt::info (const T & t)
    +
    + +

    Definition at line 94 of file xinfo.hpp.

    + +
    +
    + +

    ◆ initial()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::initial (val)
    +
    +constexpr
    +
    + +

    Definition at line 65 of file xreducer.hpp.

    + +
    +
    + +

    ◆ integral_count()

    + +
    +
    +
    +template<class... S>
    + + + + + +
    + + + + + + + +
    constexpr std::size_t xt::integral_count ()
    +
    +constexpr
    +
    + +

    Definition at line 124 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ integral_count_before()

    + +
    +
    +
    +template<class... S>
    + + + + + +
    + + + + + + + + +
    constexpr std::size_t xt::integral_count_before (std::size_t i)
    +
    +constexpr
    +
    + +

    Definition at line 130 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ integral_skip()

    + +
    +
    +
    +template<class... S>
    + + + + + +
    + + + + + + + + +
    constexpr std::size_t xt::integral_skip (std::size_t i)
    +
    +constexpr
    +
    + +

    Definition at line 229 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ is_chunked() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + +
    constexpr bool xt::is_chunked ()
    +
    +constexpr
    +
    + +

    Definition at line 339 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ is_chunked() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    constexpr bool xt::is_chunked (const xexpression< E > & e)
    +
    +constexpr
    +
    + +

    Definition at line 333 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ keep() [1/3]

    + +
    +
    +
    +template<class R = std::ptrdiff_t, class Arg0 , class Arg1 , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    xkeep_slice< R > xt::keep (Arg0 i0,
    Arg1 i1,
    Args... args 
    )
    +
    +inline
    +
    + +

    Definition at line 420 of file xslice.hpp.

    + +
    +
    + +

    ◆ keep() [2/3]

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    detail::disable_integral_keep< T > xt::keep (T && indices)
    +
    +inline
    +
    + +

    Create a non-contigous slice from a container of indices to keep.

    +

    Note: this slice cannot be used in the xstrided_view!

    +
    +
    a.reshape({3, 3});
    +
    xt::view(a, xt::keep(0, 2); // => {{0, 1, 2}, {6, 7, 8}}
    +
    xt::view(a, xt::keep(1, 1, 1); // => {{3, 4, 5}, {3, 4, 5}, {3, 4, 5}}
    +
    detail::disable_integral_keep< T > keep(T &&indices)
    Create a non-contigous slice from a container of indices to keep.
    Definition xslice.hpp:405
    +
    Parameters
    + + +
    indicesThe indices container
    +
    +
    +
    Returns
    instance of xkeep_slice
    + +

    Definition at line 405 of file xslice.hpp.

    + +
    +
    + +

    ◆ keep() [3/3]

    + +
    +
    +
    +template<class R = std::ptrdiff_t, class T >
    + + + + + +
    + + + + + + + + +
    detail::enable_integral_keep< T, R > xt::keep (i)
    +
    +inline
    +
    + +

    Definition at line 411 of file xslice.hpp.

    + +
    +
    + +

    ◆ layout_remove_any()

    + +
    +
    + + + + + +
    + + + + + + + + +
    constexpr layout_type xt::layout_remove_any (const layout_type layout)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 98 of file xlayout.hpp.

    + +
    +
    + +

    ◆ linear_begin() [1/6]

    + +
    +
    +
    +template<class C >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_begin (C & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 421 of file xiterator.hpp.

    + +
    +
    + +

    ◆ linear_begin() [2/6]

    + +
    +
    +
    +template<class C >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_begin (const C & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 453 of file xiterator.hpp.

    + +
    +
    + +

    ◆ linear_begin() [3/6]

    + +
    +
    +
    +template<class CT , class X >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_begin (const xbroadcast< CT, X > & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 110 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ linear_begin() [4/6]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_begin (const xscalar< CT > & c) -> decltype(c.dummy_begin()) +
    +
    +constexprnoexcept
    +
    + +

    Definition at line 479 of file xscalar.hpp.

    + +
    +
    + +

    ◆ linear_begin() [5/6]

    + +
    +
    +
    +template<class CT , class X >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_begin (xbroadcast< CT, X > & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 98 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ linear_begin() [6/6]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_begin (xscalar< CT > & c) -> decltype(c.dummy_begin()) +
    +
    +constexprnoexcept
    +
    + +

    Definition at line 467 of file xscalar.hpp.

    + +
    +
    + +

    ◆ linear_end() [1/6]

    + +
    +
    +
    +template<class C >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_end (C & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 437 of file xiterator.hpp.

    + +
    +
    + +

    ◆ linear_end() [2/6]

    + +
    +
    +
    +template<class C >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_end (const C & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 469 of file xiterator.hpp.

    + +
    +
    + +

    ◆ linear_end() [3/6]

    + +
    +
    +
    +template<class CT , class X >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_end (const xbroadcast< CT, X > & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 116 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ linear_end() [4/6]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_end (const xscalar< CT > & c) -> decltype(c.dummy_end()) +
    +
    +constexprnoexcept
    +
    + +

    Definition at line 485 of file xscalar.hpp.

    + +
    +
    + +

    ◆ linear_end() [5/6]

    + +
    +
    +
    +template<class CT , class X >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_end (xbroadcast< CT, X > & c)
    +
    +constexprnoexcept
    +
    + +

    Definition at line 104 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ linear_end() [6/6]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::linear_end (xscalar< CT > & c) -> decltype(c.dummy_end()) +
    +
    +constexprnoexcept
    +
    + +

    Definition at line 473 of file xscalar.hpp.

    + +
    +
    + +

    ◆ linspace()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::linspace (start,
    stop,
    std::size_t num_samples = 50,
    bool endpoint = true 
    )
    +
    +inlinenoexcept
    +
    + +

    Generates num_samples evenly spaced numbers over given interval.

    +
    Parameters
    + + + + + +
    startstart of interval
    stopstop of interval
    num_samplesnumber of samples (defaults to 50)
    endpointif true, include endpoint (defaults to true)
    +
    +
    +
    Template Parameters
    + + +
    Tvalue_type of xexpression
    +
    +
    +
    Returns
    xgenerator that generates the values on access
    + +

    Definition at line 460 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ load_csv()

    + +
    +
    +
    +template<class T , class A = std::allocator<T>>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    xcsv_tensor< T, A > xt::load_csv (std::istream & stream,
    const char delimiter,
    const std::size_t skip_rows,
    const std::ptrdiff_t max_rows,
    const std::string comments 
    )
    +
    + +

    Load tensor from CSV.

    +

    Returns an xexpression for the parsed CSV

    Parameters
    + + + + + + +
    streamthe input stream containing the CSV encoded values
    delimiterthe character used to separate values. [default: ',']
    skip_rowsthe number of lines to skip from the beginning. [default: 0]
    max_rowsthe number of lines to read after skip_rows lines; the default is to read all the lines. [default: -1]
    commentsthe string used to indicate the start of a comment. [default: "#"]
    +
    +
    + +

    Definition at line 152 of file xcsv.hpp.

    + +
    +
    + +

    ◆ load_file()

    + +
    +
    +
    +template<class E >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::load_file (std::istream & stream,
    xexpression< E > & e,
    const xcsv_configconfig 
    )
    +
    + +

    Definition at line 257 of file xcsv.hpp.

    + +
    +
    + +

    ◆ load_npy() [1/2]

    + +
    +
    +
    +template<typename T , layout_type L = layout_type::dynamic>
    + + + + + +
    + + + + + + + + +
    auto xt::load_npy (const std::string & filename)
    +
    +inline
    +
    + +

    Loads a npy file (the NumPy storage format)

    +
    Parameters
    + + +
    filenameThe filename or path to the file
    +
    +
    +
    Template Parameters
    + + + +
    Tselect the type of the npy file (note: currently there is no dynamic casting if types do not match)
    Lselect layout_type::column_major if you stored data in Fortran format
    +
    +
    +
    Returns
    xarray with contents from npy file
    + +

    Definition at line 791 of file xnpy.hpp.

    + +
    +
    + +

    ◆ load_npy() [2/2]

    + +
    +
    +
    +template<typename T , layout_type L = layout_type::dynamic>
    + + + + + +
    + + + + + + + + +
    auto xt::load_npy (std::istream & stream)
    +
    +inline
    +
    + +

    Loads a npy file (the NumPy storage format)

    +
    Parameters
    + + +
    streamAn input stream from which to load the file
    +
    +
    +
    Template Parameters
    + + + +
    Tselect the type of the npy file (note: currently there is no dynamic casting if types do not match)
    Lselect layout_type::column_major if you stored data in Fortran format
    +
    +
    +
    Returns
    xarray with contents from npy file
    + +

    Definition at line 774 of file xnpy.hpp.

    + +
    +
    + +

    ◆ logspace()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::logspace (start,
    stop,
    std::size_t num_samples,
    base = 10,
    bool endpoint = true 
    )
    +
    +inlinenoexcept
    +
    + +

    Generates num_samples numbers evenly spaced on a log scale over given interval.

    +
    Parameters
    + + + + + + +
    startstart of interval (pow(base, start) is the first value).
    stopstop of interval (pow(base, stop) is the final value, except if endpoint = false)
    num_samplesnumber of samples (defaults to 50)
    basethe base of the log space.
    endpointif true, include endpoint (defaults to true)
    +
    +
    +
    Template Parameters
    + + +
    Tvalue_type of xexpression
    +
    +
    +
    Returns
    xgenerator that generates the values on access
    + +

    Definition at line 481 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ make_lambda_xfunction()

    + +
    +
    +
    +template<class F , class... E>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::make_lambda_xfunction (F && lambda,
    E &&... args 
    )
    +
    +inline
    +
    + +

    Create a xfunction from a lambda.

    +

    This function can be used to easily create performant xfunctions from lambdas:

    +
    template <class E1>
    +
    inline auto square(E1&& e1) noexcept
    +
    {
    +
    auto fnct = [](auto x) -> decltype(x * x) {
    +
    return x * x;
    +
    };
    +
    return make_lambda_xfunction(std::move(fnct), std::forward<E1>(e1));
    +
    }
    +
    auto square(E1 &&e1) noexcept
    Square power function, equivalent to e1 * e1.
    Definition xmath.hpp:1127
    +
    auto make_lambda_xfunction(F &&lambda, E &&... args)
    Create a xfunction from a lambda.
    Definition xmath.hpp:1084
    +

    Lambda function allow the reusal of a single arguments in multiple places (otherwise only correctly possible when using xshared_expressions). auto lambda functions are automatically vectorized with xsimd if possible (note that the trailing -> decltype(...) is mandatory for the feature detection to work).

    +
    Parameters
    + + + +
    lambdathe lambda to be vectorized
    argsforwarded arguments
    +
    +
    +
    Returns
    lazy xfunction
    + +

    Definition at line 1084 of file xmath.hpp.

    + +
    +
    + +

    ◆ make_xaccumulator_functor() [1/2]

    + +
    +
    +
    +template<class RF >
    + + + + + + + + +
    auto xt::make_xaccumulator_functor (RF && accumulate_func)
    +
    + +

    Definition at line 69 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ make_xaccumulator_functor() [2/2]

    + +
    +
    +
    +template<class RF , class IF >
    + + + + + + + + + + + + + + + + + + +
    auto xt::make_xaccumulator_functor (RF && accumulate_func,
    IF && init_func 
    )
    +
    + +

    Definition at line 76 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ make_xiterator_adaptor()

    + +
    +
    +
    +template<class C , class IG >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::make_xiterator_adaptor (C && container,
    IG iterator_getter 
    )
    +
    +inline
    +
    + +

    Definition at line 1275 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ make_xreducer_functor() [1/3]

    + +
    +
    +
    +template<class RF >
    + + + + + + + + +
    auto xt::make_xreducer_functor (RF && reduce_func)
    +
    + +

    Definition at line 691 of file xreducer.hpp.

    + +
    +
    + +

    ◆ make_xreducer_functor() [2/3]

    + +
    +
    +
    +template<class RF , class IF >
    + + + + + + + + + + + + + + + + + + +
    auto xt::make_xreducer_functor (RF && reduce_func,
    IF && init_func 
    )
    +
    + +

    Definition at line 698 of file xreducer.hpp.

    + +
    +
    + +

    ◆ make_xreducer_functor() [3/3]

    + +
    +
    +
    +template<class RF , class IF , class MF >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::make_xreducer_functor (RF && reduce_func,
    IF && init_func,
    MF && merge_func 
    )
    +
    + +

    Definition at line 705 of file xreducer.hpp.

    + +
    +
    + +

    ◆ make_xshared()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    xshared_expression< E > xt::make_xshared (xexpression< E > && expr)
    +
    +inline
    +
    + +

    Helper function to create shared expression from any xexpression.

    +
    Parameters
    + + +
    exprrvalue expression that will be shared
    +
    +
    +
    Returns
    xshared expression
    + +

    Definition at line 730 of file xexpression.hpp.

    + +
    +
    + +

    ◆ masked_view()

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xmasked_view< CTD, CTM > xt::masked_view (CTD && data,
    CTM && mask 
    )
    +
    +inline
    +
    + +

    Definition at line 597 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ mean() [1/2]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::mean (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1946 of file xmath.hpp.

    + +
    +
    + +

    ◆ mean() [2/2]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::mean (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1940 of file xmath.hpp.

    + +
    +
    + +

    ◆ median()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    std::decay_t< E >::value_type xt::median (E && e)
    +
    +inline
    +
    + +

    Definition at line 1093 of file xsort.hpp.

    + +
    +
    + +

    ◆ meshgrid()

    + +
    +
    +
    +template<class... E>
    + + + + + +
    + + + + + + + + +
    auto xt::meshgrid (E &&... e)
    +
    +inlinenoexcept
    +
    + +

    Return coordinate tensors from coordinate vectors.

    +

    Make N-D coordinate tensor expressions for vectorized evaluations of N-D scalar/vector fields over N-D grids, given one-dimensional coordinate arrays x1, x2,..., xn.

    +
    Parameters
    + + +
    exexpressions to concatenate
    +
    +
    +
    Returns
    tuple of xgenerator expressions.
    + +

    Definition at line 934 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [1/15]

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xarray_container< EC, L, SC, Tag > & expr)
    +
    + +

    Definition at line 313 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [2/15]

    + +
    +
    +
    +template<class CT , class X >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xbroadcast< CT, X > & expr)
    +
    + +

    Definition at line 376 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [3/15]

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xfixed_container< ET, S, L, SH, Tag > & expr)
    +
    + +

    Definition at line 331 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [4/15]

    + +
    +
    +
    +template<class F , class... CT>
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xfunction< F, CT... > & expr)
    +
    + +

    Definition at line 304 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [5/15]

    + +
    +
    +
    +template<class F , class CT >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xfunctor_view< F, CT > & expr)
    +
    + +

    Definition at line 295 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [6/15]

    + +
    +
    +
    +template<class F , class R , class S >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xgenerator< F, R, S > & expr)
    +
    + +

    Definition at line 385 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [7/15]

    + +
    +
    +
    +template<class T , class B >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xmasked_value< T, B > & v)
    +
    + +

    Definition at line 421 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [8/15]

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xmasked_view< CTD, CTM > & expr)
    +
    + +

    Definition at line 412 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [9/15]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xoptional_assembly< VE, FE > & expr)
    +
    + +

    Definition at line 349 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [10/15]

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xoptional_assembly_adaptor< VEC, FEC > & expr)
    +
    + +

    Definition at line 358 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [11/15]

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xreducer< F, CT, X, O > & expr)
    +
    + +

    Definition at line 340 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [12/15]

    + +
    +
    +
    +template<class CT >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xscalar< CT > & expr)
    +
    + +

    Definition at line 367 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [13/15]

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xstrided_view< CT, S, L, FST > & expr)
    +
    + +

    Definition at line 403 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [14/15]

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xtensor_container< EC, N, L, Tag > & expr)
    +
    + +

    Definition at line 322 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr() [15/15]

    + +
    +
    +
    +template<class CT , class... S>
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr (const xview< CT, S... > & expr)
    +
    + +

    Definition at line 394 of file xmime.hpp.

    + +
    +
    + +

    ◆ mime_bundle_repr_impl()

    + +
    +
    +
    +template<class E >
    + + + + + + + + +
    nlohmann::json xt::mime_bundle_repr_impl (const E & expr)
    +
    + +

    Definition at line 262 of file xmime.hpp.

    + +
    +
    + +

    ◆ multiindex_iterator_begin()

    + +
    +
    +
    +template<class S , class B , class E >
    + + + + + + + + + + + + + + + + + + +
    auto xt::multiindex_iterator_begin (B && roi_begin,
    E && roi_end 
    )
    +
    + +

    Definition at line 100 of file xmultiindex_iterator.hpp.

    + +
    +
    + +

    ◆ multiindex_iterator_end()

    + +
    +
    +
    +template<class S , class B , class E >
    + + + + + + + + + + + + + + + + + + +
    auto xt::multiindex_iterator_end (B && roi_begin,
    E && roi_end 
    )
    +
    + +

    Definition at line 109 of file xmultiindex_iterator.hpp.

    + +
    +
    + +

    ◆ nancumprod()

    + +
    +
    +
    +template<class T = void, class E >
    + + + + + +
    + + + + + + + + +
    auto xt::nancumprod (E && e)
    +
    +inline
    +
    + +

    Definition at line 2675 of file xmath.hpp.

    + +
    +
    + +

    ◆ nancumsum()

    + +
    +
    +
    +template<class T = void, class E >
    + + + + + +
    + + + + + + + + +
    auto xt::nancumsum (E && e)
    +
    +inline
    +
    + +

    Definition at line 2640 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmax() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanmax (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2479 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmax() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nanmax (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2479 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmax() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanmax (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2479 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmean() [1/2]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanmean (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2777 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmean() [2/2]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nanmean (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2765 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmin() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanmin (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2464 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmin() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nanmin (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2464 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanmin() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanmin (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2464 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanprod() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanprod (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2513 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanprod() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nanprod (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2513 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanprod() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanprod (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2513 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanstd() [1/2]

    + +
    +
    +
    +template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanstd (E && e,
    const A(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2879 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanstd() [2/2]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nanstd (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2794 of file xmath.hpp.

    + +
    +
    + +

    ◆ nansum() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nansum (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2496 of file xmath.hpp.

    + +
    +
    + +

    ◆ nansum() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nansum (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2496 of file xmath.hpp.

    + +
    +
    + +

    ◆ nansum() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nansum (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2496 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanvar() [1/2]

    + +
    +
    +
    +template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::nanvar (E && e,
    const A(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2889 of file xmath.hpp.

    + +
    +
    + +

    ◆ nanvar() [2/2]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::nanvar (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2787 of file xmath.hpp.

    + +
    +
    + +

    ◆ nested_copy() [1/2]

    + +
    +
    +
    +template<class T , class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::nested_copy (T && iter,
    const S & s 
    )
    +
    +inline
    +
    + +

    Definition at line 321 of file xutils.hpp.

    + +
    +
    + +

    ◆ nested_copy() [2/2]

    + +
    +
    +
    +template<class T , class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::nested_copy (T && iter,
    std::initializer_list< S > s 
    )
    +
    +inline
    +
    + +

    Definition at line 327 of file xutils.hpp.

    + +
    +
    + +

    ◆ newaxis()

    + +
    +
    + + + + + +
    + + + + + + + +
    auto xt::newaxis ()
    +
    +inlinenoexcept
    +
    + +

    Returns a slice representing a new axis of length one, to be used as an argument of view function.

    +
    See also
    view, strided_view
    + +

    Definition at line 300 of file xslice.hpp.

    + +
    +
    + +

    ◆ newaxis_count()

    + +
    +
    +
    +template<class... S>
    + + + + + +
    + + + + + + + +
    constexpr std::size_t xt::newaxis_count ()
    +
    +constexpr
    +
    + +

    Definition at line 174 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ newaxis_count_before()

    + +
    +
    +
    +template<class... S>
    + + + + + +
    + + + + + + + + +
    constexpr std::size_t xt::newaxis_count_before (std::size_t i)
    +
    +constexpr
    +
    + +

    Definition at line 180 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ newaxis_skip()

    + +
    +
    +
    +template<class... S>
    + + + + + +
    + + + + + + + + +
    constexpr std::size_t xt::newaxis_skip (std::size_t i)
    +
    +constexpr
    +
    + +

    Definition at line 277 of file xview_utils.hpp.

    + +
    +
    + +

    ◆ noalias()

    + +
    +
    +
    +template<class A >
    + + + + + +
    + + + + + + + + +
    noalias_proxy< xtl::closure_type_t< A > > xt::noalias (A && a)
    +
    +inlinenoexcept
    +
    + +

    Definition at line 224 of file xnoalias.hpp.

    + +
    +
    + +

    ◆ norm_l2()

    + +
    +
    +
    +template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::norm_l2 (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 522 of file xnorm.hpp.

    + +
    +
    + +

    ◆ norm_lp() [1/2]

    + +
    +
    +
    +template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::norm_lp (E && e,
    double p,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 614 of file xnorm.hpp.

    + +
    +
    + +

    ◆ norm_lp() [2/2]

    + +
    +
    +
    +template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::norm_lp (E && e,
    double p,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 608 of file xnorm.hpp.

    + +
    +
    + +

    ◆ norm_lp_to_p() [1/2]

    + +
    +
    +
    +template<class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::norm_lp_to_p (E && e,
    double p,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 581 of file xnorm.hpp.

    + +
    +
    + +

    ◆ norm_lp_to_p() [2/2]

    + +
    +
    +
    +template<class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_xexpression< E > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::norm_lp_to_p (E && e,
    double p,
    EVS es = EVS() 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 575 of file xnorm.hpp.

    + +
    +
    + +

    ◆ normalize_axis() [1/3]

    + +
    +
    +
    +template<class E , class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::enable_if_t< !xtl::is_integral< std::decay_t< C > >::value &&xtl::is_signed< typename std::decay_t< C >::value_type >::value, rebind_container_t< std::size_t, std::decay_t< C > > > xt::normalize_axis (E & expr,
    C && axes 
    )
    +
    +inline
    +
    + +

    Definition at line 372 of file xutils.hpp.

    + +
    +
    + +

    ◆ normalize_axis() [2/3]

    + +
    +
    +
    +template<class C , class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::enable_if_t< !xtl::is_integral< std::decay_t< C > >::value &&std::is_unsigned< typename std::decay_t< C >::value_type >::value, C && > xt::normalize_axis (E & expr,
    C && axes 
    )
    +
    +inline
    +
    + +

    Definition at line 398 of file xutils.hpp.

    + +
    +
    + +

    ◆ normalize_axis() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::size_t xt::normalize_axis (std::size_t dim,
    std::ptrdiff_t axis 
    )
    +
    +inline
    +
    + +

    Definition at line 362 of file xutils.hpp.

    + +
    +
    + +

    ◆ ones() [1/2]

    + +
    +
    +
    +template<class T , class I , std::size_t L>
    + + + + + +
    + + + + + + + + +
    auto xt::ones (const I(&) shape[L])
    +
    +inlinenoexcept
    +
    + +

    Definition at line 52 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ ones() [2/2]

    + +
    +
    +
    +template<class T , class S >
    + + + + + +
    + + + + + + + + +
    auto xt::ones (shape)
    +
    +inlinenoexcept
    +
    + +

    Returns an xexpression containing ones of the specified shape.

    +
    Template Parameters
    + + +
    shapethe shape of the returned expression.
    +
    +
    + +

    Definition at line 46 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ ones_like()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::ones_like (const xexpression< E > & e)
    +
    +inline
    +
    + +

    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with ones and of the same shape, value type and layout as the input xexpression e.

    +

    Note: contrary to ones(shape), this function returns a non-lazy, evaluated container! Use xt::ones<double>(e.shape()); for a lazy version.

    +
    Parameters
    + + +
    ethe xexpression from which to extract shape, value type and layout.
    +
    +
    + +

    Definition at line 169 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ operator!=() [1/9]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const const_array< T, N > & lhs,
    const const_array< T, N > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1611 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator!=() [2/9]

    + +
    +
    +
    +template<class T , std::ptrdiff_t TB, std::ptrdiff_t TE>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const sequence_view< T, TB, TE > & lhs,
    const sequence_view< T, TB, TE > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1930 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator!=() [3/9]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const svector< T, N, A, Init > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1379 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator!=() [4/9]

    + +
    +
    +
    +template<class T , class AT , alloc_tracking::policy PT, class U , class AU , alloc_tracking::policy PU>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const tracking_allocator< T, AT, PT > & a,
    const tracking_allocator< U, AU, PU > & b 
    )
    +
    +inline
    +
    + +

    Definition at line 843 of file xutils.hpp.

    + +
    +
    + +

    ◆ operator!=() [5/9]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const uvector< T, A > & lhs,
    const uvector< T, A > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 586 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator!=() [6/9]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const xaxis_iterator< CT > & lhs,
    const xaxis_iterator< CT > & rhs 
    )
    +
    +inline
    +
    + +

    Checks inequality of the iterators.

    +
    Returns
    true if the iterators are different, true otherwise
    + +

    Definition at line 267 of file xaxis_iterator.hpp.

    + +
    +
    + +

    ◆ operator!=() [7/9]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const xaxis_slice_iterator< CT > & lhs,
    const xaxis_slice_iterator< CT > & rhs 
    )
    +
    +inline
    +
    + +

    Checks inequality of the iterators.

    +
    Returns
    true if the iterators are different, true otherwise
    + +

    Definition at line 281 of file xaxis_slice_iterator.hpp.

    + +
    +
    + +

    ◆ operator!=() [8/9]

    + +
    +
    +
    +template<class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const xbuffer_adaptor_base< D > & lhs,
    const xbuffer_adaptor_base< D > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1001 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ operator!=() [9/9]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator!= (const xoptional_assembly_storage< VE, FE > & lhs,
    const xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    + +

    Definition at line 444 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ operator<() [1/10]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const const_array< T, N > & lhs,
    const const_array< T, N > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1617 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator<() [2/10]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const svector< T, N, A, Init > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1385 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator<() [3/10]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const uvector< T, A > & lhs,
    const uvector< T, A > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 592 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator<() [4/10]

    + +
    +
    +
    +template<class It , class BIt >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xbounded_iterator< It, BIt > & lhs,
    const xbounded_iterator< It, BIt > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1297 of file xiterator.hpp.

    + +
    +
    + +

    ◆ operator<() [5/10]

    + +
    +
    +
    +template<class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xbuffer_adaptor_base< D > & lhs,
    const xbuffer_adaptor_base< D > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1007 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ operator<() [6/10]

    + +
    +
    +
    +template<bool is_const, class CT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xdummy_iterator< is_const, CT > & lhs,
    const xdummy_iterator< is_const, CT > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1091 of file xscalar.hpp.

    + +
    +
    + +

    ◆ operator<() [7/10]

    + +
    +
    +
    +template<class F , class... CT>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xfunction_iterator< F, CT... > & it1,
    const xfunction_iterator< F, CT... > & it2 
    )
    +
    +inline
    +
    + +

    Definition at line 1022 of file xfunction.hpp.

    + +
    +
    + +

    ◆ operator<() [8/10]

    + +
    +
    +
    +template<class F , class IT >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xfunctor_iterator< F, IT > & lhs,
    const xfunctor_iterator< F, IT > & rhs 
    )
    +
    + +

    Definition at line 1579 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ operator<() [9/10]

    + +
    +
    +
    +template<class St , class S , layout_type L>
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xiterator< St, S, L > & lhs,
    const xiterator< St, S, L > & rhs 
    )
    +
    + +

    Definition at line 1217 of file xiterator.hpp.

    + +
    +
    + +

    ◆ operator<() [10/10]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator< (const xoptional_assembly_storage< VE, FE > & lhs,
    const xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    + +

    Definition at line 450 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ operator<<()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::ostream & xt::operator<< (std::ostream & out,
    const xexpression< E > & e 
    )
    +
    +inline
    +
    + +

    Definition at line 821 of file xio.hpp.

    + +
    +
    + +

    ◆ operator<=() [1/5]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator<= (const const_array< T, N > & lhs,
    const const_array< T, N > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1623 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator<=() [2/5]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator<= (const svector< T, N, A, Init > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1391 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator<=() [3/5]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator<= (const uvector< T, A > & lhs,
    const uvector< T, A > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 598 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator<=() [4/5]

    + +
    +
    +
    +template<class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator<= (const xbuffer_adaptor_base< D > & lhs,
    const xbuffer_adaptor_base< D > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1019 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ operator<=() [5/5]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator<= (const xoptional_assembly_storage< VE, FE > & lhs,
    const xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    + +

    Definition at line 456 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ operator==() [1/16]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const const_array< T, N > & lhs,
    const const_array< T, N > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1605 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator==() [2/16]

    + +
    +
    +
    +template<class T , std::ptrdiff_t TB, std::ptrdiff_t TE>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const sequence_view< T, TB, TE > & lhs,
    const sequence_view< T, TB, TE > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1924 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator==() [3/16]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const std::vector< T > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1361 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator==() [4/16]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const svector< T, N, A, Init > & lhs,
    const std::vector< T > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1367 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator==() [5/16]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const svector< T, N, A, Init > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1373 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator==() [6/16]

    + +
    +
    +
    +template<class T , class AT , alloc_tracking::policy PT, class U , class AU , alloc_tracking::policy PU>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const tracking_allocator< T, AT, PT > & ,
    const tracking_allocator< U, AU, PU > &  
    )
    +
    +inline
    +
    + +

    Definition at line 837 of file xutils.hpp.

    + +
    +
    + +

    ◆ operator==() [7/16]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const uvector< T, A > & lhs,
    const uvector< T, A > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 580 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator==() [8/16]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xaxis_iterator< CT > & lhs,
    const xaxis_iterator< CT > & rhs 
    )
    +
    +inline
    +
    + +

    Checks equality of the iterators.

    +
    Returns
    true if the iterators are equivalent, false otherwise
    + +

    Definition at line 257 of file xaxis_iterator.hpp.

    + +
    +
    + +

    ◆ operator==() [9/16]

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xaxis_slice_iterator< CT > & lhs,
    const xaxis_slice_iterator< CT > & rhs 
    )
    +
    +inline
    +
    + +

    Checks equality of the iterators.

    +
    Returns
    true if the iterators are equivalent, false otherwise
    + +

    Definition at line 271 of file xaxis_slice_iterator.hpp.

    + +
    +
    + +

    ◆ operator==() [10/16]

    + +
    +
    +
    +template<class It , class BIt >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xbounded_iterator< It, BIt > & lhs,
    const xbounded_iterator< It, BIt > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1291 of file xiterator.hpp.

    + +
    +
    + +

    ◆ operator==() [11/16]

    + +
    +
    +
    +template<class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xbuffer_adaptor_base< D > & lhs,
    const xbuffer_adaptor_base< D > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 994 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ operator==() [12/16]

    + +
    +
    +
    +template<bool is_const, class CT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xdummy_iterator< is_const, CT > & lhs,
    const xdummy_iterator< is_const, CT > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1085 of file xscalar.hpp.

    + +
    +
    + +

    ◆ operator==() [13/16]

    + +
    +
    +
    +template<class F , class... CT>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xfunction_iterator< F, CT... > & it1,
    const xfunction_iterator< F, CT... > & it2 
    )
    +
    +inline
    +
    + +

    Definition at line 1016 of file xfunction.hpp.

    + +
    +
    + +

    ◆ operator==() [14/16]

    + +
    +
    +
    +template<class F , class IT >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xfunctor_iterator< F, IT > & lhs,
    const xfunctor_iterator< F, IT > & rhs 
    )
    +
    + +

    Definition at line 1573 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ operator==() [15/16]

    + +
    +
    +
    +template<class St , class S , layout_type L>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xiterator< St, S, L > & lhs,
    const xiterator< St, S, L > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1211 of file xiterator.hpp.

    + +
    +
    + +

    ◆ operator==() [16/16]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator== (const xoptional_assembly_storage< VE, FE > & lhs,
    const xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    + +

    Definition at line 437 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ operator>() [1/5]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator> (const const_array< T, N > & lhs,
    const const_array< T, N > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1629 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator>() [2/5]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator> (const svector< T, N, A, Init > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1397 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator>() [3/5]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator> (const uvector< T, A > & lhs,
    const uvector< T, A > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 604 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator>() [4/5]

    + +
    +
    +
    +template<class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator> (const xbuffer_adaptor_base< D > & lhs,
    const xbuffer_adaptor_base< D > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1031 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ operator>() [5/5]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator> (const xoptional_assembly_storage< VE, FE > & lhs,
    const xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    + +

    Definition at line 463 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ operator>=() [1/5]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator>= (const const_array< T, N > & lhs,
    const const_array< T, N > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1635 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator>=() [2/5]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator>= (const svector< T, N, A, Init > & lhs,
    const svector< T, N, A, Init > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1403 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator>=() [3/5]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator>= (const uvector< T, A > & lhs,
    const uvector< T, A > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 610 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator>=() [4/5]

    + +
    +
    +
    +template<class D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator>= (const xbuffer_adaptor_base< D > & lhs,
    const xbuffer_adaptor_base< D > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 1043 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ operator>=() [5/5]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + + + + + + + + + + + + + + +
    bool xt::operator>= (const xoptional_assembly_storage< VE, FE > & lhs,
    const xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    + +

    Definition at line 470 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ operator|()

    + +
    +
    +
    +template<template< class... > class A, class... AX, class X , xtl::check_concept< is_evaluation_strategy< AX >..., is_evaluation_strategy< X > > = 0>
    + + + + + + + + + + + + + + + + + + +
    auto xt::operator| (const A< AX... > & args,
    const A< X > & rhs 
    )
    +
    + +

    Definition at line 37 of file xreducer.hpp.

    + +
    +
    + +

    ◆ optional_assembly_storage() [1/2]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xoptional_assembly_storage< VE, FE > xt::optional_assembly_storage (const VE & value,
    const FE & flag 
    )
    +
    +inline
    +
    + +

    Definition at line 559 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ optional_assembly_storage() [2/2]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xoptional_assembly_storage< VE, FE > xt::optional_assembly_storage (VE & value,
    FE & flag 
    )
    +
    +inline
    +
    + +

    Definition at line 565 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ pad() [1/3]

    + +
    +
    +
    +template<class E , class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::pad (E && e,
    const std::vector< S > & pad_width,
    pad_mode mode = pad_mode::constant,
    constant_value = 0 
    )
    +
    +inline
    +
    + +

    Pad an array.

    +
    Parameters
    + + + + + +
    eThe array.
    pad_widthNumber of values padded to the edges of each axis: {before, after}.
    modeThe type of algorithm to use. [default: xt::pad_mode::constant].
    constant_valueThe value to set the padded values for each axis (used in xt::pad_mode::constant).
    +
    +
    +
    Returns
    The padded array.
    + +

    Definition at line 217 of file xpad.hpp.

    + +
    +
    + +

    ◆ pad() [2/3]

    + +
    +
    +
    +template<class E , class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::pad (E && e,
    const std::vector< std::vector< S > > & pad_width,
    pad_mode mode = pad_mode::constant,
    constant_value = 0 
    )
    +
    +inline
    +
    + +

    Pad an array.

    +
    Parameters
    + + + + + +
    eThe array.
    pad_widthNumber of values padded to the edges of each axis: {{before_1, after_1}, ..., {before_N, after_N}}.
    modeThe type of algorithm to use. [default: xt::pad_mode::constant].
    constant_valueThe value to set the padded values for each axis (used in xt::pad_mode::constant).
    +
    +
    +
    Returns
    The padded array.
    + +

    Definition at line 75 of file xpad.hpp.

    + +
    +
    + +

    ◆ pad() [3/3]

    + +
    +
    +
    +template<class E , class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::pad (E && e,
    pad_width,
    pad_mode mode = pad_mode::constant,
    constant_value = 0 
    )
    +
    +inline
    +
    + +

    Pad an array.

    +
    Parameters
    + + + + + +
    eThe array.
    pad_widthNumber of values padded to the edges of each axis.
    modeThe type of algorithm to use. [default: xt::pad_mode::constant].
    constant_valueThe value to set the padded values for each axis (used in xt::pad_mode::constant).
    +
    +
    +
    Returns
    The padded array.
    + +

    Definition at line 235 of file xpad.hpp.

    + +
    +
    + +

    ◆ partition() [1/5]

    + +
    +
    +
    +template<class E , class C , class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::partition (const xexpression< E > & e,
    kth_container,
    std::ptrdiff_t axis = -1 
    )
    +
    +inline
    +
    + +

    Definition at line 600 of file xsort.hpp.

    + +
    +
    + +

    ◆ partition() [2/5]

    + +
    +
    +
    +template<class E , class I , std::size_t N, class R = detail::flatten_sort_result_type_t<E>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    R xt::partition (const xexpression< E > & e,
    const I(&) kth_container[N],
    placeholders::xtuph tag 
    )
    +
    +inline
    +
    + +

    Definition at line 584 of file xsort.hpp.

    + +
    +
    + +

    ◆ partition() [3/5]

    + +
    +
    +
    +template<class E , class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::partition (const xexpression< E > & e,
    const T(&) kth_container[N],
    std::ptrdiff_t axis = -1 
    )
    +
    +inline
    +
    + +

    Definition at line 617 of file xsort.hpp.

    + +
    +
    + +

    ◆ partition() [4/5]

    + +
    +
    +
    +template<class E , class R = detail::flatten_sort_result_type_t<E>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    R xt::partition (const xexpression< E > & e,
    std::size_t kth,
    placeholders::xtuph tag 
    )
    +
    +inline
    +
    + +

    Definition at line 594 of file xsort.hpp.

    + +
    +
    + +

    ◆ partition() [5/5]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::partition (const xexpression< E > & e,
    std::size_t kth,
    std::ptrdiff_t axis = -1 
    )
    +
    +inline
    +
    + +

    Definition at line 627 of file xsort.hpp.

    + +
    +
    + +

    ◆ pretty_print() [1/2]

    + +
    +
    +
    +template<class E , class F >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::ostream & xt::pretty_print (const xexpression< E > & e,
    F && func,
    std::ostream & out = std::cout 
    )
    +
    + +

    Definition at line 743 of file xio.hpp.

    + +
    +
    + +

    ◆ pretty_print() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + + + + + + + + + + + + + + +
    std::ostream & xt::pretty_print (const xexpression< E > & e,
    std::ostream & out = std::cout 
    )
    +
    + +

    Definition at line 778 of file xio.hpp.

    + +
    +
    + +

    ◆ prod() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::prod (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1860 of file xmath.hpp.

    + +
    +
    + +

    ◆ prod() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::prod (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1860 of file xmath.hpp.

    + +
    +
    + +

    ◆ prod() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::prod (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1860 of file xmath.hpp.

    + +
    +
    + +

    ◆ quantile() [1/4]

    + +
    +
    +
    +template<class T = double, class E , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::quantile (E && e,
    const T(&) probas[N],
    quantile_method method = quantile_method::linear 
    )
    +
    +inline
    +
    + +

    Definition at line 1083 of file xsort.hpp.

    + +
    +
    + +

    ◆ quantile() [2/4]

    + +
    +
    +
    +template<class T = double, class E , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::quantile (E && e,
    const T(&) probas[N],
    std::ptrdiff_t axis,
    quantile_method method = quantile_method::linear 
    )
    +
    +inline
    +
    + +

    Definition at line 1059 of file xsort.hpp.

    + +
    +
    + +

    ◆ quantile() [3/4]

    + +
    +
    +
    +template<class T = double, class E , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::quantile (E && e,
    const T(&) probas[N],
    std::ptrdiff_t axis,
    alpha,
    beta 
    )
    +
    +inline
    +
    + +

    Definition at line 945 of file xsort.hpp.

    + +
    +
    + +

    ◆ quantile() [4/4]

    + +
    +
    +
    +template<class T = double, class E , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::quantile (E && e,
    const T(&) probas[N],
    alpha,
    beta 
    )
    +
    +inline
    +
    + +

    Definition at line 967 of file xsort.hpp.

    + +
    +
    + +

    ◆ range() [1/2]

    + +
    +
    +
    +template<class A , class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::range (start_val,
    stop_val 
    )
    +
    +inline
    +
    + +

    Select a range from start_val to stop_val (excluded).

    +

    You can use the shorthand _ syntax to select from the start or until the end.

    +
    using namespace xt::placeholders; // to enable _ syntax
    +
    +
    range(3, _) // select from index 3 to the end
    +
    range(_, 5) // select from index 0 to 5 (excluded)
    +
    range(_, _) // equivalent to `all()`
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    See also
    view, strided_view
    + +

    Definition at line 818 of file xslice.hpp.

    + +
    +
    + +

    ◆ range() [2/2]

    + +
    +
    +
    +template<class A , class B , class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::range (start_val,
    stop_val,
    step 
    )
    +
    +inline
    +
    + +

    Select a range from start_val to stop_val (excluded) with step You can use the shorthand _ syntax to select from the start or until the end.

    +
    using namespace xt::placeholders; // to enable _ syntax
    +
    range(3, _, 5) // select from index 3 to the end with stepsize 5
    +
    See also
    view, strided_view
    + +

    Definition at line 839 of file xslice.hpp.

    + +
    +
    + +

    ◆ ravel_from_strides()

    + +
    +
    +
    +template<class S , class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    get_value_type_t< T > xt::ravel_from_strides (const T & index,
    const S & strides 
    )
    +
    +inline
    +
    + +

    Definition at line 684 of file xstrides.hpp.

    + +
    +
    + +

    ◆ ravel_index()

    + +
    +
    +
    +template<class S , class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    get_value_type_t< T > xt::ravel_index (const T & index,
    const S & shape,
    layout_type l 
    )
    +
    +inline
    +
    + +

    Definition at line 717 of file xstrides.hpp.

    + +
    +
    + +

    ◆ ravel_indices()

    + +
    +
    +
    +template<class Tag = ravel_tensor_tag, class C , class S >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ravel_return_type_t< C, Tag > xt::ravel_indices (const C & idx,
    const S & shape,
    layout_type l = layout_type::row_major 
    )
    +
    + +

    Converts std::vector<index_type> (returned e.g.

    +

    from xt::argwhere) to xtensor whereby the indices are ravelled. For 1-d input there is no conversion.

    +
    Parameters
    + + + + +
    idxvector of indices
    shapethe shape of the original array
    lthe layout type (row-major or column-major)
    +
    +
    +
    Returns
    xt::xtensor<typename index_type::value_type, 1> (e.g. xt::xtensor<size_t, 1>)
    + +

    Definition at line 965 of file xtensor.hpp.

    + +
    +
    + +

    ◆ reduce() [1/3]

    + +
    +
    +
    +template<class F , class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< detail::is_xreducer_functors< F > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::reduce (F && f,
    E && e,
    const I(&) axes[N],
    EVS options = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1065 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reduce() [2/3]

    + +
    +
    +
    +template<class F , class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, detail::is_xreducer_functors< F > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::reduce (F && f,
    E && e,
    EVS && options = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1034 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reduce() [3/3]

    + +
    +
    +
    +template<class F , class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, detail::is_xreducer_functors< F > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::reduce (F && f,
    E && e,
    X && axes,
    EVS && options = EVS() 
    )
    +
    +inline
    +
    + +

    Returns an xexpression applying the specified reducing function to an expression over the given axes.

    +
    Parameters
    + + + + + +
    fthe reducing function to apply.
    ethe xexpression to reduce.
    axesthe list of axes.
    optionsevaluation strategy to use (lazy (default), or immediate)
    +
    +
    +

    The returned expression either hold a const reference to e or a copy depending on whether e is an lvalue or an rvalue.

    + +

    Definition at line 1002 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reduce_immediate()

    + +
    +
    +
    +template<class F , class E , class X , class O >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::reduce_immediate (F && f,
    E && e,
    X && axes,
    O && raw_options 
    )
    +
    +inline
    +
    + +

    Definition at line 299 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reshape_view() [1/4]

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E , class I , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::reshape_view (E && e,
    const I(&) shape[N] 
    )
    +
    +inline
    +
    + +

    Definition at line 859 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ reshape_view() [2/4]

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E , class I , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::reshape_view (E && e,
    const I(&) shape[N],
    layout_type order 
    )
    +
    +inline
    +
    + +

    Definition at line 852 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ reshape_view() [3/4]

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E , class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::reshape_view (E && e,
    S && shape 
    )
    +
    +inline
    +
    + +

    Definition at line 811 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ reshape_view() [4/4]

    + +
    +
    +
    +template<layout_type L = ::xt::layout_type::row_major, class E , class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::reshape_view (E && e,
    S && shape,
    layout_type  
    )
    +
    +inline
    +
    + +

    Return a view on a container with a new shape.

    +
    Deprecated:
    +

    Note: if you resize the underlying container, this view becomes invalidated.

    +
    Parameters
    + + + + +
    exexpression to reshape
    shapenew shape
    ordertraversal order (optional)
    +
    +
    +
    Returns
    view on xexpression with new shape
    + +

    Definition at line 846 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ resize_container() [1/3]

    + +
    +
    +
    +template<class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::resize_container (C & c,
    typename C::size_type size 
    )
    +
    +inline
    +
    + +

    Definition at line 339 of file xutils.hpp.

    + +
    +
    + +

    ◆ resize_container() [2/3]

    + +
    +
    +
    +template<std::size_t... I>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::resize_container (xt::fixed_shape< I... > & a,
    std::size_t size 
    )
    +
    +inline
    +
    + +

    Definition at line 352 of file xutils.hpp.

    + +
    +
    + +

    ◆ resize_container() [3/3]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool xt::resize_container (std::array< T, N > & a,
    typename std::array< T, N >::size_type size 
    )
    +
    +inline
    +
    + +

    Definition at line 346 of file xutils.hpp.

    + +
    +
    + +

    ◆ row()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::row (E && e,
    std::ptrdiff_t index 
    )
    +
    +inline
    +
    + +

    Constructs and returns a row (sliced view) on the specified expression.

    +

    Users should not directly construct the slices but call helper functions instead. This function is only allowed on expressions with two dimensions.

    Parameters
    + + + +
    ethe xexpression to adapt
    index0-based index of the row, negative indices will return the last rows in reverse order.
    +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the expression has more than 2 dimensions.
    +
    +
    + +

    Definition at line 1922 of file xview.hpp.

    + +
    +
    + +

    ◆ scalar_computed_assign()

    + +
    +
    +
    +template<class E1 , class E2 , class F >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::scalar_computed_assign (xexpression< E1 > & e1,
    const E2 & e2,
    F && f 
    )
    +
    +inline
    +
    + +

    Definition at line 239 of file xassign.hpp.

    + +
    +
    + +

    ◆ searchsorted()

    + +
    +
    +
    +template<class E1 , class E2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::searchsorted (E1 && a,
    E2 && v,
    bool right = true 
    )
    +
    +inline
    +
    + +

    Find indices where elements should be inserted to maintain order.

    +
    Parameters
    + + + + +
    aInput array: sorted (array_like).
    vValues to insert into a (array_like).
    rightIf false, the index of the first suitable location found is given.
    +
    +
    +
    Returns
    Array of insertion points with the same shape as v.
    + +

    Definition at line 186 of file xset_operation.hpp.

    + +
    +
    + +

    ◆ sequence_size() [1/2]

    + +
    +
    +
    +template<class C >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::sequence_size (const C & c) -> decltype(c.size()) +
    +
    +constexpr
    +
    + +

    Definition at line 615 of file xutils.hpp.

    + +
    +
    + +

    ◆ sequence_size() [2/2]

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + +
    constexpr std::size_t xt::sequence_size (const  T(&)[N])
    +
    +constexpr
    +
    + +

    Definition at line 622 of file xutils.hpp.

    + +
    +
    + +

    ◆ shape() [1/2]

    + +
    +
    +
    +template<class R = std::size_t, class T , std::size_t N>
    + + + + + + + + +
    xt::static_shape< R, N > xt::shape (const T(&) aList[N])
    +
    + +

    Generate an xt::static_shape of the given size.

    + +

    Definition at line 221 of file xshape.hpp.

    + +
    +
    + +

    ◆ shape() [2/2]

    + +
    +
    +
    +template<class R , class T >
    + + + + + +
    + + + + + + + + +
    constexpr R xt::shape (t)
    +
    +constexpr
    +
    + +

    Definition at line 211 of file xshape.hpp.

    + +
    +
    + +

    ◆ share() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::share (xexpression< E > && expr)
    +
    +inline
    +
    + +

    Helper function to create shared expression from any xexpression.

    +
    Parameters
    + + +
    exprrvalue expression that will be shared
    +
    +
    +
    Returns
    xshared expression
    +
    See also
    make_xshared
    + +

    Definition at line 760 of file xexpression.hpp.

    + +
    +
    + +

    ◆ share() [2/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::share (xexpression< E > & expr)
    +
    +inline
    +
    + +

    Helper function to create shared expression from any xexpression.

    +
    Parameters
    + + +
    exprrvalue expression that will be shared
    +
    +
    +
    Returns
    xshared expression
    +
    See also
    make_xshared
    + +

    Definition at line 747 of file xexpression.hpp.

    + +
    +
    + +

    ◆ sign()

    + +
    +
    +
    +template<class T , class B >
    + + + + + +
    + + + + + + + + +
    auto xt::sign (const xtl::xoptional< T, B > & e)
    +
    +inline
    +
    + +

    Definition at line 1255 of file xoptional.hpp.

    + +
    +
    + +

    ◆ sort()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::sort (const xexpression< E > & e,
    placeholders::xtuph  
    )
    +
    +inline
    +
    + +

    Definition at line 223 of file xsort.hpp.

    + +
    +
    + +

    ◆ stack()

    + +
    +
    +
    +template<class... CT>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::stack (std::tuple< CT... > && t,
    std::size_t axis = 0 
    )
    +
    +inline
    +
    + +

    Stack xexpressions along axis.

    +

    Stacking always creates a new dimension along which elements are stacked.

    +
    Parameters
    + + + +
    txtuple of xexpressions to concatenate
    axisaxis along which elements are stacked
    +
    +
    +
    Returns
    xgenerator evaluating to stacked elements
    +
    xt::xarray<double> a = {1, 2, 3};
    +
    xt::xarray<double> b = {5, 6, 7};
    +
    xt::xarray<double> s = xt::stack(xt::xtuple(a, b)); // => {{1, 2, 3},
    +
    // {5, 6, 7}}
    +
    xt::xarray<double> t = xt::stack(xt::xtuple(a, b), 1); // => {{1, 5},
    +
    // {2, 6},
    +
    // {3, 7}}
    +
    auto stack(std::tuple< CT... > &&t, std::size_t axis=0)
    Stack xexpressions along axis.
    Definition xbuilder.hpp:837
    +
    +

    Definition at line 837 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ stddev() [1/2]

    + +
    +
    +
    +template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::stddev (E && e,
    const A(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2186 of file xmath.hpp.

    + +
    +
    + +

    ◆ stddev() [2/2]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::stddev (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2083 of file xmath.hpp.

    + +
    +
    + +

    ◆ step_size() [1/4]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    disable_xslice< S, std::size_t > xt::step_size (const S & ,
    std::size_t  
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 869 of file xslice.hpp.

    + +
    +
    + +

    ◆ step_size() [2/4]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    disable_xslice< S, std::size_t > xt::step_size (const S & ,
    std::size_t ,
    std::size_t  
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 875 of file xslice.hpp.

    + +
    +
    + +

    ◆ step_size() [3/4]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::step_size (const xslice< S > & slice,
    std::size_t idx 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 881 of file xslice.hpp.

    + +
    +
    + +

    ◆ step_size() [4/4]

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::step_size (const xslice< S > & slice,
    std::size_t idx,
    std::size_t n 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 887 of file xslice.hpp.

    + +
    +
    + +

    ◆ stride_match_condition()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool xt::stride_match_condition (const T1 & stride,
    const T2 & shape,
    const T1 & data_size,
    bool zero_strides 
    )
    +
    +inline
    +
    + +

    Definition at line 580 of file xstrides.hpp.

    + +
    +
    + +

    ◆ strided_data_end()

    + +
    +
    +
    +template<class C , class It , class size_type >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    It xt::strided_data_end (const C & c,
    It begin,
    layout_type l,
    size_type offset 
    )
    +
    + +

    Definition at line 170 of file xstrides.hpp.

    + +
    +
    + +

    ◆ strided_view() [1/2]

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::strided_view (E && e,
    const xstrided_slice_vectorslices 
    )
    +
    +inline
    +
    + +

    Function to create a dynamic view from an xexpression and an xstrided_slice_vector.

    +
    Parameters
    + + + +
    exexpression
    slicesthe slice vector
    +
    +
    +
    Returns
    initialized strided_view according to slices
    +
    xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}};
    + +
    sv.push_back(xt::range(0, 3, 2));
    +
    auto v = xt::strided_view(a, sv);
    +
    // ==> {{1, 3}}
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +

    You can also achieve the same with the following short-hand syntax:

    +
    xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}};
    +
    auto v = xt::strided_view(a, {xt::range(0, 1), xt::range(0, 3, 2)});
    +
    // ==> {{1, 3}}
    +
    +

    Definition at line 790 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ strided_view() [2/2]

    + +
    +
    +
    +template<layout_type L = layout_type::dynamic, class E , class S , class X >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::strided_view (E && e,
    S && shape,
    X && strides,
    std::size_t offset,
    layout_type layout 
    )
    +
    +inlinenoexcept
    +
    + +

    Construct a strided view from an xexpression, shape, strides and offset.

    +
    Parameters
    + + + + + + +
    exexpression
    shapethe shape of the view
    stridesthe new strides of the view
    offsetthe offset of the first element in the underlying container
    layoutthe new layout of the expression
    +
    +
    +
    Template Parameters
    + + + + + +
    Lthe static layout type of the view (default: dynamic)
    Etype of xexpression
    Sstrides type
    Xstrides type
    +
    +
    +
    Returns
    the view
    + +

    Definition at line 728 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ sum() [1/3]

    + +
    +
    +
    +template<class T = void, class E , class I , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::sum (E && e,
    const I(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1840 of file xmath.hpp.

    + +
    +
    + +

    ◆ sum() [2/3]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::sum (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1840 of file xmath.hpp.

    + +
    +
    + +

    ◆ sum() [3/3]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::is_integral< std::decay_t< X > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::sum (E && e,
    axis,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 1840 of file xmath.hpp.

    + +
    +
    + +

    ◆ swap() [1/6]

    + +
    +
    +
    +template<class T , std::size_t N, class A , bool Init>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::swap (svector< T, N, A, Init > & lhs,
    svector< T, N, A, Init > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1409 of file xstorage.hpp.

    + +
    +
    + +

    ◆ swap() [2/6]

    + +
    +
    +
    +template<class T , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::swap (uvector< T, A > & lhs,
    uvector< T, A > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 616 of file xstorage.hpp.

    + +
    +
    + +

    ◆ swap() [3/6]

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::swap (xbuffer_adaptor< CP, O, A > & lhs,
    xbuffer_adaptor< CP, O, A > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1067 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ swap() [4/6]

    + +
    +
    +
    +template<class I , class CI >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::swap (xiterator_adaptor< I, CI > & lhs,
    xiterator_adaptor< I, CI > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1135 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ swap() [5/6]

    + +
    +
    +
    +template<class C , class IG >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::swap (xiterator_owner_adaptor< C, IG > & lhs,
    xiterator_owner_adaptor< C, IG > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1238 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ swap() [6/6]

    + +
    +
    +
    +template<class VE , class FE >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void xt::swap (xoptional_assembly_storage< VE, FE > & lhs,
    xoptional_assembly_storage< VE, FE > & rhs 
    )
    +
    +noexcept
    +
    + +

    Definition at line 476 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ throw_broadcast_error()

    + +
    +
    +
    +template<class S1 , class S2 >
    + + + + + + + + + + + + + + + + + + +
    void xt::throw_broadcast_error (const S1 & lhs,
    const S2 & rhs 
    )
    +
    + +

    Definition at line 129 of file xexception.hpp.

    + +
    +
    + +

    ◆ throw_concatenate_error()

    + +
    +
    +
    +template<class S1 , class S2 >
    + + + + + + + + + + + + + + + + + + +
    void xt::throw_concatenate_error (const S1 & lhs,
    const S2 & rhs 
    )
    +
    + +

    Definition at line 149 of file xexception.hpp.

    + +
    +
    + +

    ◆ tile() [1/3]

    + +
    +
    +
    +template<class E , class C , xtl::check_concept< xtl::negation< xtl::is_integral< C > > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::tile (E && e,
    const C & reps 
    )
    +
    +inline
    +
    + +

    Definition at line 302 of file xpad.hpp.

    + +
    +
    + +

    ◆ tile() [2/3]

    + +
    +
    +
    +template<class E , class S = typename std::decay_t<E>::size_type, xtl::check_concept< xtl::is_integral< S > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::tile (E && e,
    reps 
    )
    +
    +inline
    +
    + +

    Tile an array.

    +
    Parameters
    + + + +
    eThe array.
    repsThe number of repetitions of A along the first axis.
    +
    +
    +
    Returns
    The tiled array.
    + +

    Definition at line 315 of file xpad.hpp.

    + +
    +
    + +

    ◆ tile() [3/3]

    + +
    +
    +
    +template<class E , class S = typename std::decay_t<E>::size_type>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::tile (E && e,
    std::initializer_list< S > reps 
    )
    +
    +inline
    +
    + +

    Tile an array.

    +
    Parameters
    + + + +
    eThe array.
    repsThe number of repetitions of A along each axis.
    +
    +
    +
    Returns
    The tiled array.
    + +

    Definition at line 296 of file xpad.hpp.

    + +
    +
    + +

    ◆ to_array()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + +
    constexpr std::array< std::remove_cv_t< T >, N > xt::to_array (T(&) a[N])
    +
    +constexpr
    +
    + +

    Definition at line 604 of file xutils.hpp.

    + +
    +
    + +

    ◆ to_json()

    + +
    +
    +
    +template<template< typename U, typename V, typename... Args > class M, class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    enable_xexpression< E > xt::to_json (nlohmann::basic_json< M > & j,
    const E & e 
    )
    +
    +inline
    +
    + +

    JSON serialization of an xtensor expression.

    +

    The to_json method is used by the nlohmann_json package for automatic serialization of user-defined types. The method is picked up by argument-dependent lookup.

    +
    Parameters
    + + + +
    ja JSON object
    ea const xexpression
    +
    +
    + +

    Definition at line 133 of file xjson.hpp.

    + +
    +
    + +

    ◆ tril()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::tril (E && arr,
    int k = 0 
    )
    +
    +inline
    +
    + +

    Extract lower triangular matrix from xexpression.

    +

    The parameter k selects the offset of the diagonal.

    +
    Parameters
    + + + +
    arrthe input array
    kthe diagonal above which to zero elements. 0 (default) selects the main diagonal, k < 0 is below the main diagonal, k > 0 above.
    +
    +
    +
    Returns
    xexpression containing lower triangle from arr, 0 otherwise
    + +

    Definition at line 1177 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ triu()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::triu (E && arr,
    int k = 0 
    )
    +
    +inline
    +
    + +

    Extract upper triangular matrix from xexpression.

    +

    The parameter k selects the offset of the diagonal.

    +
    Parameters
    + + + +
    arrthe input array
    kthe diagonal below which to zero elements. 0 (default) selects the main diagonal, k < 0 is below the main diagonal, k > 0 above.
    +
    +
    +
    Returns
    xexpression containing lower triangle from arr, 0 otherwise
    + +

    Definition at line 1203 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ type_name()

    + +
    +
    +
    +template<class T >
    + + + + + + + +
    static_string xt::type_name ()
    +
    + +

    Definition at line 68 of file xinfo.hpp.

    + +
    +
    + +

    ◆ type_to_string()

    + +
    +
    +
    +template<class T >
    + + + + + + + +
    std::string xt::type_to_string ()
    +
    + +

    Definition at line 87 of file xinfo.hpp.

    + +
    +
    + +

    ◆ unchecked_data_offset()

    + +
    +
    +
    +template<class offset_type , layout_type L = layout_type::dynamic, class S , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    offset_type xt::unchecked_data_offset (const S & strides,
    Args... args 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 480 of file xstrides.hpp.

    + +
    +
    + +

    ◆ uninitialized_shape()

    + +
    +
    +
    +template<class S , class stype >
    + + + + + +
    + + + + + + + + +
    S xt::uninitialized_shape (stype size)
    +
    +inline
    +
    + +

    Definition at line 726 of file xstrides.hpp.

    + +
    +
    + +

    ◆ unravel_from_strides()

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    S xt::unravel_from_strides (typename S::value_type index,
    const S & strides,
    layout_type l = layout_type::row_major 
    )
    +
    +inline
    +
    + +

    Definition at line 674 of file xstrides.hpp.

    + +
    +
    + +

    ◆ unravel_index()

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    get_strides_t< S > xt::unravel_index (typename S::value_type index,
    const S & shape,
    layout_type l = layout_type::row_major 
    )
    +
    +inline
    +
    + +

    Definition at line 690 of file xstrides.hpp.

    + +
    +
    + +

    ◆ unravel_indices()

    + +
    +
    +
    +template<class S , class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< get_strides_t< S > > xt::unravel_indices (const T & indices,
    const S & shape,
    layout_type l = layout_type::row_major 
    )
    +
    +inline
    +
    + +

    Definition at line 700 of file xstrides.hpp.

    + +
    +
    + +

    ◆ value() [1/3]

    + +
    +
    +
    +template<class S , class I >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    disable_xslice< S, std::size_t > xt::value (const S & s,
     
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 897 of file xslice.hpp.

    + +
    +
    + +

    ◆ value() [2/3]

    + +
    +
    +
    +template<class S , class I >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::value (const xslice< S > & slice,
    i 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 903 of file xslice.hpp.

    + +
    +
    + +

    ◆ value() [3/3]

    + +
    +
    +
    +template<class E , xtl::check_concept< is_xexpression< E > > = 0>
    + + + + + +
    + + + + + + + + +
    auto xt::value (E && e) -> detail::value_expression_t<E> +
    +
    +inline
    +
    + +

    Definition at line 1266 of file xoptional.hpp.

    + +
    +
    + +

    ◆ variance() [1/5]

    + +
    +
    +
    +template<class T = void, class E , class A , std::size_t N, class D , class EVS = std::tuple<evaluation_strategy::lazy_type>>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::variance (E && e,
    const A(&) axes[N],
    const D & ddof,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2212 of file xmath.hpp.

    + +
    +
    + +

    ◆ variance() [2/5]

    + +
    +
    +
    +template<class T = void, class E , class A , std::size_t N, class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::variance (E && e,
    const A(&) axes[N],
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2202 of file xmath.hpp.

    + +
    +
    + +

    ◆ variance() [3/5]

    + +
    +
    +
    +template<class T = void, class E , class D , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS >, xtl::is_integral< D > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::variance (E && e,
    const D & ddof,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2070 of file xmath.hpp.

    + +
    +
    + +

    ◆ variance() [4/5]

    + +
    +
    +
    +template<class T = void, class E , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::variance (E && e,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2077 of file xmath.hpp.

    + +
    +
    + +

    ◆ variance() [5/5]

    + +
    +
    +
    +template<class T = void, class E , class X , class EVS = std::tuple<evaluation_strategy::lazy_type>, xtl::check_concept< xtl::negation< is_reducer_options< X > >, xtl::negation< xtl::is_integral< std::decay_t< X > > >, is_reducer_options< EVS > > = 0>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::variance (E && e,
    X && axes,
    EVS es = EVS() 
    )
    +
    +inline
    +
    + +

    Definition at line 2148 of file xmath.hpp.

    + +
    +
    + +

    ◆ vectorize() [1/3]

    + +
    +
    +
    +template<class F >
    + + + + + +
    + + + + + + + + +
    auto xt::vectorize (F && f) -> decltype(vectorize(std::forward<F>(f), std::declval<detail::get_function_type<F>*>()))
    +
    +inline
    +
    + +

    Definition at line 97 of file xvectorize.hpp.

    + +
    +
    + +

    ◆ vectorize() [2/3]

    + +
    +
    +
    +template<class F , class R , class... Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xvectorizer< F, R > xt::vectorize (F && f,
    R(*)(Args...)  
    )
    +
    +inline
    +
    + +

    Definition at line 91 of file xvectorize.hpp.

    + +
    +
    + +

    ◆ vectorize() [3/3]

    + +
    +
    +
    +template<class R , class... Args>
    + + + + + +
    + + + + + + + + +
    xvectorizer< R(*)(Args...), R > xt::vectorize (R(*)(Args...) f)
    +
    +inline
    +
    + +

    Definition at line 85 of file xvectorize.hpp.

    + +
    +
    + +

    ◆ view()

    + +
    +
    +
    +template<class E , class... S>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::view (E && e,
    S &&... slices 
    )
    +
    +inline
    +
    + +

    Constructs and returns a view on the specified xexpression.

    +

    Users should not directly construct the slices but call helper functions instead.

    Parameters
    + + + +
    ethe xexpression to adapt
    slicesthe slices list describing the view. view accepts negative indices, in that case indexing is done in reverse order.
    +
    +
    +
    See also
    range, all, newaxis
    + +

    Definition at line 1834 of file xview.hpp.

    + +
    +
    + +

    ◆ vstack()

    + +
    +
    +
    +template<class... CT>
    + + + + + +
    + + + + + + + + +
    auto xt::vstack (std::tuple< CT... > && t)
    +
    +inline
    +
    + +

    Stack xexpressions in sequence vertically (row wise).

    +

    This is equivalent to concatenation along the first axis after 1-D arrays of shape (N) have been reshape to (1, N).

    +
    Parameters
    + + +
    txtuple of xexpressions to stack
    +
    +
    +
    Returns
    xgenerator evaluating to stacked elements
    + +

    Definition at line 894 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ xcref()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    xscalar< const T & > xt::xcref (T & t)
    +
    +inline
    +
    + +

    Definition at line 962 of file xscalar.hpp.

    + +
    +
    + +

    ◆ xnone()

    + +
    +
    + + + + + +
    + + + + + + + +
    auto xt::xnone ()
    +
    +inline
    +
    + +

    Definition at line 770 of file xslice.hpp.

    + +
    +
    + +

    ◆ xref()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    xscalar< T & > xt::xref (T & t)
    +
    +inline
    +
    + +

    Definition at line 956 of file xscalar.hpp.

    + +
    +
    + +

    ◆ xtuple()

    + +
    +
    +
    +template<class... Types>
    + + + + + +
    + + + + + + + + +
    auto xt::xtuple (Types &&... args)
    +
    +inline
    +
    + +

    Creates tuples from arguments for concatenate and stack.

    +

    Very similar to std::make_tuple.

    + +

    Definition at line 661 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ zeros() [1/2]

    + +
    +
    +
    +template<class T , class I , std::size_t L>
    + + + + + +
    + + + + + + + + +
    auto xt::zeros (const I(&) shape[L])
    +
    +inlinenoexcept
    +
    + +

    Definition at line 72 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ zeros() [2/2]

    + +
    +
    +
    +template<class T , class S >
    + + + + + +
    + + + + + + + + +
    auto xt::zeros (shape)
    +
    +inlinenoexcept
    +
    + +

    Returns an xexpression containing zeros of the specified shape.

    +
    Template Parameters
    + + +
    shapethe shape of the returned expression.
    +
    +
    + +

    Definition at line 66 of file xbuilder.hpp.

    + +
    +
    + +

    ◆ zeros_like()

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + + + + + +
    auto xt::zeros_like (const xexpression< E > & e)
    +
    +inline
    +
    + +

    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with zeros and of the same shape, value type and layout as the input xexpression e.

    +

    Note: contrary to zeros(shape), this function returns a non-lazy, allocated container! Use `xt::zeros<double>(e.shape()); for a lazy version.

    +
    Parameters
    + + +
    ethe xexpression from which to extract shape, value type and layout.
    +
    +
    + +

    Definition at line 154 of file xbuilder.hpp.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ keep_dims

    + +
    +
    + + + + + +
    + + + + +
    constexpr auto xt::keep_dims = std::tuple<keep_dims_type>{}
    +
    +constexpr
    +
    + +

    Definition at line 46 of file xreducer.hpp.

    + +
    +
    +
    +
    + + + + diff --git a/namespacext.js b/namespacext.js new file mode 100644 index 000000000..67a9e42a8 --- /dev/null +++ b/namespacext.js @@ -0,0 +1,664 @@ +var namespacext = +[ + [ "acquire_ownership", "structxt_1_1acquire__ownership.html", null ], + [ "aligned_array", "classxt_1_1aligned__array.html", null ], + [ "apply_cv", "structxt_1_1apply__cv.html", null ], + [ "big_promote_value_type", "structxt_1_1big__promote__value__type.html", null ], + [ "broadcast_error", "classxt_1_1broadcast__error.html", null ], + [ "buffer_inner_types", "structxt_1_1buffer__inner__types.html", null ], + [ "buffer_inner_types< xbuffer_adaptor< CP, O, A > >", "structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "buffer_inner_types< xiterator_adaptor< I, CI > >", "structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "buffer_inner_types< xiterator_owner_adaptor< C, IG > >", "structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "can_assign", "structxt_1_1can__assign.html", null ], + [ "can_assign< xstrided_view< CT, S, L, FST >, RHS >", "structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html", null ], + [ "check_strides_overlap", "structxt_1_1check__strides__overlap.html", null ], + [ "check_strides_overlap< layout_type::column_major >", "structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html", null ], + [ "check_strides_overlap< layout_type::row_major >", "structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html", null ], + [ "common_difference_type", "structxt_1_1common__difference__type.html", null ], + [ "common_difference_type<>", "structxt_1_1common__difference__type_3_4.html", null ], + [ "common_size_type", "structxt_1_1common__size__type.html", null ], + [ "common_size_type<>", "structxt_1_1common__size__type_3_4.html", null ], + [ "common_tensor_type", "structxt_1_1common__tensor__type.html", null ], + [ "common_value_type", "structxt_1_1common__value__type.html", null ], + [ "concatenate_error", "classxt_1_1concatenate__error.html", null ], + [ "conditional_cast_functor", "structxt_1_1conditional__cast__functor.html", null ], + [ "conditional_cast_functor< false, T >", "structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html", null ], + [ "conditional_cast_functor< true, T >", "structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html", null ], + [ "const_array", "structxt_1_1const__array.html", null ], + [ "const_value", "structxt_1_1const__value.html", null ], + [ "const_xclosure", "structxt_1_1const__xclosure.html", null ], + [ "const_xclosure< E, disable_xexpression< std::decay_t< E > > >", "structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html", null ], + [ "const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >", "structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html", null ], + [ "container_simd_return_type", "structxt_1_1container__simd__return__type.html", null ], + [ "decay_all", "structxt_1_1decay__all.html", null ], + [ "decay_all< S< X... > >", "structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "disable_indexed_stepper", "structxt_1_1disable__indexed__stepper.html", null ], + [ "driven_align_mode", "structxt_1_1driven__align__mode.html", null ], + [ "enable_indexed_stepper", "structxt_1_1enable__indexed__stepper.html", null ], + [ "filter_fixed_shape", "structxt_1_1filter__fixed__shape.html", null ], + [ "fixed_shape", "classxt_1_1fixed__shape.html", null ], + [ "fixed_xreducer_shape_type", "structxt_1_1fixed__xreducer__shape__type.html", null ], + [ "fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >", "structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html", null ], + [ "forbid_simd", "structxt_1_1forbid__simd.html", null ], + [ "forbid_simd< const std::vector< bool, A > >", "structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html", null ], + [ "forbid_simd< const xtl::xdynamic_bitset< B, A > >", "structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html", null ], + [ "forbid_simd< std::vector< bool, A > >", "structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html", null ], + [ "forbid_simd< xtl::xdynamic_bitset< B, A > >", "structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html", null ], + [ "get_init_type", "structxt_1_1get__init__type.html", null ], + [ "get_init_type< V, fixed_shape< X... > >", "structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "get_rank", "structxt_1_1get__rank.html", null ], + [ "get_rank< E, decltype((void) E::rank, void())>", "structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html", null ], + [ "get_strides_type", "structxt_1_1get__strides__type.html", null ], + [ "get_strides_type< fixed_shape< I... > >", "structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html", null ], + [ "get_strides_type< xbuffer_adaptor< CP, O, A > >", "structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "get_value_type", "structxt_1_1get__value__type.html", null ], + [ "get_value_type< T, void_t< typename T::value_type > >", "structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html", null ], + [ "has_assign_conversion", "structxt_1_1has__assign__conversion.html", null ], + [ "has_assign_to", "structxt_1_1has__assign__to.html", null ], + [ "has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >", "structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html", null ], + [ "has_data_interface", "structxt_1_1has__data__interface.html", null ], + [ "has_data_interface< E, void_t< decltype(std::declval< E >().data())> >", "structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html", null ], + [ "has_fixed_rank", "structxt_1_1has__fixed__rank.html", null ], + [ "has_iterator_interface", "structxt_1_1has__iterator__interface.html", null ], + [ "has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >", "structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html", null ], + [ "has_rank", "structxt_1_1has__rank.html", null ], + [ "has_sign_conversion", "structxt_1_1has__sign__conversion.html", null ], + [ "has_simd_apply", "structxt_1_1has__simd__apply.html", null ], + [ "has_simd_interface", "structxt_1_1has__simd__interface.html", null ], + [ "has_simd_interface< xfunction< F, CT... >, T >", "structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xfunctor_adaptor< F, CT >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xfunctor_applier_base< D >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xfunctor_view< F, CT >, T >", "structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html", null ], + [ "has_simd_interface< xtensor_view< EC, N, L, Tag > >", "structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "has_simd_type", "structxt_1_1has__simd__type.html", null ], + [ "has_storage_type", "structxt_1_1has__storage__type.html", null ], + [ "has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >", "structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html", null ], + [ "has_strides", "structxt_1_1has__strides.html", null ], + [ "has_strides< E, void_t< decltype(std::declval< E >().strides())> >", "structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html", null ], + [ "index_from_shape", "structxt_1_1index__from__shape.html", null ], + [ "initializer_dimension", "structxt_1_1initializer__dimension.html", null ], + [ "inner_aligned_mode", "structxt_1_1inner__aligned__mode.html", null ], + [ "inner_reference", "structxt_1_1inner__reference.html", null ], + [ "invalid_type", "structxt_1_1invalid__type.html", null ], + [ "is_chunked_t", "structxt_1_1is__chunked__t.html", null ], + [ "is_contiguous_container", "structxt_1_1is__contiguous__container.html", null ], + [ "is_contiguous_container< xiterator< St, S, L > >", "structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.html", null ], + [ "is_contiguous_container< xiterator_adaptor< I, CI > >", "structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "is_contiguous_container< xiterator_owner_adaptor< C, IG > >", "structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "is_evaluation_strategy", "structxt_1_1is__evaluation__strategy.html", null ], + [ "is_indexed_stepper", "structxt_1_1is__indexed__stepper.html", null ], + [ "is_indexed_stepper< xindexed_stepper< T, B > >", "structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html", null ], + [ "is_iterator", "structxt_1_1is__iterator.html", null ], + [ "is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >", "structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.html", null ], + [ "is_narrowing_conversion", "structxt_1_1is__narrowing__conversion.html", null ], + [ "is_not_xdummy_iterator", "structxt_1_1is__not__xdummy__iterator.html", null ], + [ "is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >", "structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html", null ], + [ "is_reducer_options", "structxt_1_1is__reducer__options.html", null ], + [ "is_reducer_options_impl", "structxt_1_1is__reducer__options__impl.html", null ], + [ "is_reducer_options_impl< std::tuple< X... > >", "structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html", null ], + [ "is_xoptional_expression", "structxt_1_1is__xoptional__expression.html", null ], + [ "is_xtensor_expression", "structxt_1_1is__xtensor__expression.html", null ], + [ "keep_dims_type", "structxt_1_1keep__dims__type.html", null ], + [ "linear_assigner", "classxt_1_1linear__assigner.html", null ], + [ "linear_assigner< false >", "classxt_1_1linear__assigner_3_01false_01_4.html", null ], + [ "make_invalid_type", "structxt_1_1make__invalid__type.html", null ], + [ "make_void", "structxt_1_1make__void.html", null ], + [ "meta_identity", "structxt_1_1meta__identity.html", null ], + [ "missing_type", "structxt_1_1missing__type.html", null ], + [ "nested_initializer_list", "structxt_1_1nested__initializer__list.html", null ], + [ "nested_initializer_list< T, 0 >", "structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html", null ], + [ "no_ownership", "structxt_1_1no__ownership.html", null ], + [ "noalias_proxy", "classxt_1_1noalias__proxy.html", null ], + [ "norm_type", "structxt_1_1norm__type.html", null ], + [ "numeric_constants", "structxt_1_1numeric__constants.html", null ], + [ "promote_shape", "structxt_1_1promote__shape.html", null ], + [ "promote_strides", "structxt_1_1promote__strides.html", null ], + [ "rebind_container", "structxt_1_1rebind__container.html", null ], + [ "rebind_container< X, C< T, A > >", "structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html", null ], + [ "rebind_container< X, C< T, N > >", "structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html", null ], + [ "rebind_container< X, svector< T, N, A, B > >", "structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html", null ], + [ "reducer_options", "structxt_1_1reducer__options.html", "structxt_1_1reducer__options" ], + [ "remove_class", "structxt_1_1remove__class.html", null ], + [ "remove_class< R(C::*)(Args...) const >", "structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html", null ], + [ "remove_class< R(C::*)(Args...)>", "structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html", null ], + [ "select_dim_mapping_type", "structxt_1_1select__dim__mapping__type.html", null ], + [ "select_dim_mapping_type< fixed_shape< I... > >", "structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html", null ], + [ "select_iterable_base", "structxt_1_1select__iterable__base.html", null ], + [ "select_layout", "structxt_1_1select__layout.html", null ], + [ "sequence_view", "classxt_1_1sequence__view.html", null ], + [ "squared_norm_type", "structxt_1_1squared__norm__type.html", null ], + [ "static_dimension", "structxt_1_1static__dimension.html", null ], + [ "static_string", "structxt_1_1static__string.html", null ], + [ "stepper_assigner", "classxt_1_1stepper__assigner.html", null ], + [ "stepper_tools", "structxt_1_1stepper__tools.html", null ], + [ "strided_loop_assigner", "classxt_1_1strided__loop__assigner.html", null ], + [ "svector", "classxt_1_1svector.html", null ], + [ "temporary_container", "structxt_1_1temporary__container.html", null ], + [ "temporary_container< xbuffer_adaptor< CP, O, A > >", "structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html", null ], + [ "temporary_container< xiterator_adaptor< I, CI > >", "structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html", null ], + [ "temporary_container< xiterator_owner_adaptor< C, IG > >", "structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html", null ], + [ "temporary_type", "structxt_1_1temporary__type.html", null ], + [ "temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >", "structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html", null ], + [ "temporary_type_from_tag", "structxt_1_1temporary__type__from__tag.html", null ], + [ "temporary_type_from_tag< xtensor_expression_tag, T >", "structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html", null ], + [ "tracking_allocator", "structxt_1_1tracking__allocator.html", "structxt_1_1tracking__allocator" ], + [ "transpose_error", "classxt_1_1transpose__error.html", null ], + [ "tuple_idx_of", "structxt_1_1tuple__idx__of.html", null ], + [ "tuple_idx_of_impl", "structxt_1_1tuple__idx__of__impl.html", null ], + [ "tuple_idx_of_impl< I, T, std::tuple< T, Types... > >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html", null ], + [ "tuple_idx_of_impl< I, T, std::tuple< U, Types... > >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html", null ], + [ "tuple_idx_of_impl< I, T, std::tuple<> >", "structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html", null ], + [ "uvector", "classxt_1_1uvector.html", null ], + [ "view_temporary_type", "structxt_1_1view__temporary__type.html", null ], + [ "xaccessible", "classxt_1_1xaccessible.html", "classxt_1_1xaccessible" ], + [ "xaccumulator_functor", "structxt_1_1xaccumulator__functor.html", null ], + [ "xall", "classxt_1_1xall.html", null ], + [ "xall_tag", "structxt_1_1xall__tag.html", null ], + [ "xarray_adaptor", "classxt_1_1xarray__adaptor.html", "classxt_1_1xarray__adaptor" ], + [ "xarray_container", "classxt_1_1xarray__container.html", "classxt_1_1xarray__container" ], + [ "xassign_traits", "classxt_1_1xassign__traits.html", null ], + [ "xaxis_iterator", "classxt_1_1xaxis__iterator.html", "classxt_1_1xaxis__iterator" ], + [ "xaxis_slice_iterator", "classxt_1_1xaxis__slice__iterator.html", "classxt_1_1xaxis__slice__iterator" ], + [ "xblockwise_reducer", "classxt_1_1xblockwise__reducer.html", null ], + [ "xbounded_iterator", "classxt_1_1xbounded__iterator.html", null ], + [ "xbroadcast", "classxt_1_1xbroadcast.html", "classxt_1_1xbroadcast" ], + [ "xbuffer_adaptor", "classxt_1_1xbuffer__adaptor.html", null ], + [ "xbuffer_adaptor_base", "classxt_1_1xbuffer__adaptor__base.html", null ], + [ "xchunk_iterator", "classxt_1_1xchunk__iterator.html", null ], + [ "xchunked_array", "classxt_1_1xchunked__array.html", null ], + [ "xchunked_assigner", "classxt_1_1xchunked__assigner.html", null ], + [ "xchunked_semantic", "classxt_1_1xchunked__semantic.html", null ], + [ "xchunked_view", "classxt_1_1xchunked__view.html", null ], + [ "xclosure", "structxt_1_1xclosure.html", null ], + [ "xclosure< E, disable_xexpression< std::decay_t< E > > >", "structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html", null ], + [ "xclosure< xshared_expression< E >, std::enable_if_t< true > >", "structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html", null ], + [ "xconst_accessible", "classxt_1_1xconst__accessible.html", "classxt_1_1xconst__accessible" ], + [ "xconst_iterable", "classxt_1_1xconst__iterable.html", "classxt_1_1xconst__iterable" ], + [ "xcontainer", "classxt_1_1xcontainer.html", "classxt_1_1xcontainer" ], + [ "xcontainer_inner_types", "structxt_1_1xcontainer__inner__types.html", null ], + [ "xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xbroadcast< CT, X > >", "structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xchunked_array< chunk_storage > >", "structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >", "structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfunction< F, CT... > >", "structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfunctor_adaptor< F, CT > >", "structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xfunctor_view< F, CT > >", "structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xgenerator< C, R, S > >", "structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xindex_view< CT, I > >", "structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xmasked_view< CTD, CTM > >", "structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xoptional_assembly< VE, FE > >", "structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >", "structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xreducer< F, CT, X, O > >", "structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xrepeat< CT, R > >", "structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xscalar< CT > >", "structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xstrided_view< CT, S, L, FST > >", "structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xcontainer_inner_types< xview< CT, S... > >", "structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html", null ], + [ "xcontainer_iterable_types", "structxt_1_1xcontainer__iterable__types.html", null ], + [ "xcontainer_semantic", "classxt_1_1xcontainer__semantic.html", "classxt_1_1xcontainer__semantic" ], + [ "xcontiguous_iterable", "classxt_1_1xcontiguous__iterable.html", "classxt_1_1xcontiguous__iterable" ], + [ "xcsv_config", "structxt_1_1xcsv__config.html", null ], + [ "xdrop_slice", "classxt_1_1xdrop__slice.html", null ], + [ "xdummy_iterator", "classxt_1_1xdummy__iterator.html", null ], + [ "xdynamic_view", "classxt_1_1xdynamic__view.html", "classxt_1_1xdynamic__view" ], + [ "xellipsis_tag", "structxt_1_1xellipsis__tag.html", null ], + [ "xexpression", "classxt_1_1xexpression.html", "classxt_1_1xexpression" ], + [ "xexpression_assigner", "classxt_1_1xexpression__assigner.html", null ], + [ "xexpression_assigner_base", "classxt_1_1xexpression__assigner__base.html", null ], + [ "xexpression_assigner_base< xoptional_expression_tag >", "classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html", null ], + [ "xexpression_assigner_base< xtensor_expression_tag >", "classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html", null ], + [ "xexpression_holder", "classxt_1_1xexpression__holder.html", null ], + [ "xexpression_tag", "structxt_1_1xexpression__tag.html", null ], + [ "xfiltration", "classxt_1_1xfiltration.html", "classxt_1_1xfiltration" ], + [ "xfixed_adaptor", "classxt_1_1xfixed__adaptor.html", "classxt_1_1xfixed__adaptor" ], + [ "xfixed_container", "classxt_1_1xfixed__container.html", "classxt_1_1xfixed__container" ], + [ "xfunction", "classxt_1_1xfunction.html", "classxt_1_1xfunction" ], + [ "xfunction_cache", "structxt_1_1xfunction__cache.html", null ], + [ "xfunction_iterator", "classxt_1_1xfunction__iterator.html", null ], + [ "xfunction_stepper", "classxt_1_1xfunction__stepper.html", null ], + [ "xfunctor_adaptor", "classxt_1_1xfunctor__adaptor.html", "classxt_1_1xfunctor__adaptor" ], + [ "xfunctor_applier_base", "classxt_1_1xfunctor__applier__base.html", "classxt_1_1xfunctor__applier__base" ], + [ "xfunctor_iterator", "classxt_1_1xfunctor__iterator.html", null ], + [ "xfunctor_stepper", "classxt_1_1xfunctor__stepper.html", null ], + [ "xfunctor_view", "classxt_1_1xfunctor__view.html", "classxt_1_1xfunctor__view" ], + [ "xfunctor_view_temporary_type", "structxt_1_1xfunctor__view__temporary__type.html", null ], + [ "xgenerator", "classxt_1_1xgenerator.html", "classxt_1_1xgenerator" ], + [ "xindex_view", "classxt_1_1xindex__view.html", "classxt_1_1xindex__view" ], + [ "xindexed_stepper", "classxt_1_1xindexed__stepper.html", null ], + [ "xinitial", "structxt_1_1xinitial.html", null ], + [ "xiterable", "classxt_1_1xiterable.html", "classxt_1_1xiterable" ], + [ "xiterable_inner_types", "structxt_1_1xiterable__inner__types.html", null ], + [ "xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >", "structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xarray_container< EC, L, SC, Tag > >", "structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xbroadcast< CT, X > >", "structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html", null ], + [ "xiterable_inner_types< xchunked_array< chunk_storage > >", "structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html", null ], + [ "xiterable_inner_types< xdynamic_view< CT, S, L, FST > >", "structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >", "structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >", "structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xfunction< F, CT... > >", "structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html", null ], + [ "xiterable_inner_types< xgenerator< C, R, S > >", "structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html", null ], + [ "xiterable_inner_types< xindex_view< CT, I > >", "structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html", null ], + [ "xiterable_inner_types< xmasked_view< CTD, CTM > >", "structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html", null ], + [ "xiterable_inner_types< xoptional_assembly< VE, FE > >", "structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html", null ], + [ "xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >", "structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html", null ], + [ "xiterable_inner_types< xreducer< F, CT, X, O > >", "structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html", null ], + [ "xiterable_inner_types< xrepeat< CT, R > >", "structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html", null ], + [ "xiterable_inner_types< xscalar< CT > >", "structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html", null ], + [ "xiterable_inner_types< xstrided_view< CT, S, L, FST > >", "structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html", null ], + [ "xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xtensor_container< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xtensor_view< EC, N, L, Tag > >", "structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html", null ], + [ "xiterable_inner_types< xview< CT, S... > >", "structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html", null ], + [ "xiterator", "classxt_1_1xiterator.html", null ], + [ "xiterator_adaptor", "classxt_1_1xiterator__adaptor.html", null ], + [ "xiterator_owner_adaptor", "classxt_1_1xiterator__owner__adaptor.html", null ], + [ "xkeep_slice", "classxt_1_1xkeep__slice.html", null ], + [ "xmasked_value", "classxt_1_1xmasked__value.html", null ], + [ "xmasked_view", "classxt_1_1xmasked__view.html", "classxt_1_1xmasked__view" ], + [ "xmasked_view_stepper", "classxt_1_1xmasked__view__stepper.html", null ], + [ "xmultiindex_iterator", "classxt_1_1xmultiindex__iterator.html", null ], + [ "xnewaxis", "classxt_1_1xnewaxis.html", null ], + [ "xnewaxis_tag", "structxt_1_1xnewaxis__tag.html", null ], + [ "xoptional_assembly", "classxt_1_1xoptional__assembly.html", "classxt_1_1xoptional__assembly" ], + [ "xoptional_assembly_adaptor", "classxt_1_1xoptional__assembly__adaptor.html", "classxt_1_1xoptional__assembly__adaptor" ], + [ "xoptional_assembly_base", "classxt_1_1xoptional__assembly__base.html", "classxt_1_1xoptional__assembly__base" ], + [ "xoptional_assembly_linear_iterator", "classxt_1_1xoptional__assembly__linear__iterator.html", null ], + [ "xoptional_assembly_linear_iterator_traits", "structxt_1_1xoptional__assembly__linear__iterator__traits.html", null ], + [ "xoptional_assembly_stepper", "classxt_1_1xoptional__assembly__stepper.html", null ], + [ "xoptional_assembly_storage", "classxt_1_1xoptional__assembly__storage.html", null ], + [ "xoptional_comparable", "structxt_1_1xoptional__comparable.html", null ], + [ "xoptional_expression_tag", "structxt_1_1xoptional__expression__tag.html", null ], + [ "xproxy_inner_types", "structxt_1_1xproxy__inner__types.html", null ], + [ "xrange", "classxt_1_1xrange.html", null ], + [ "xrange_adaptor", "structxt_1_1xrange__adaptor.html", null ], + [ "xreducer", "classxt_1_1xreducer.html", "classxt_1_1xreducer" ], + [ "xreducer_functors", "structxt_1_1xreducer__functors.html", null ], + [ "xreducer_shape_type", "structxt_1_1xreducer__shape__type.html", null ], + [ "xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html", null ], + [ "xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html", null ], + [ "xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >", "structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html", null ], + [ "xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >", "structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html", null ], + [ "xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >", "structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html", null ], + [ "xreducer_stepper", "classxt_1_1xreducer__stepper.html", null ], + [ "xrepeat", "classxt_1_1xrepeat.html", "classxt_1_1xrepeat" ], + [ "xrepeat_stepper", "classxt_1_1xrepeat__stepper.html", null ], + [ "xscalar", "classxt_1_1xscalar.html", "classxt_1_1xscalar" ], + [ "xscalar_stepper", "classxt_1_1xscalar__stepper.html", null ], + [ "xsemantic_base", "classxt_1_1xsemantic__base.html", "classxt_1_1xsemantic__base" ], + [ "xsharable_expression", "classxt_1_1xsharable__expression.html", null ], + [ "xshared_expression", "classxt_1_1xshared__expression.html", "classxt_1_1xshared__expression" ], + [ "xslice", "classxt_1_1xslice.html", null ], + [ "xstepped_range", "classxt_1_1xstepped__range.html", null ], + [ "xstepper", "classxt_1_1xstepper.html", null ], + [ "xstrided_container", "classxt_1_1xstrided__container.html", "classxt_1_1xstrided__container" ], + [ "xstrided_view", "classxt_1_1xstrided__view.html", "classxt_1_1xstrided__view" ], + [ "xstrided_view_base", "classxt_1_1xstrided__view__base.html", "classxt_1_1xstrided__view__base" ], + [ "xtensor_adaptor", "classxt_1_1xtensor__adaptor.html", "classxt_1_1xtensor__adaptor" ], + [ "xtensor_container", "classxt_1_1xtensor__container.html", "classxt_1_1xtensor__container" ], + [ "xtensor_expression_tag", "structxt_1_1xtensor__expression__tag.html", null ], + [ "xtensor_view", "classxt_1_1xtensor__view.html", "classxt_1_1xtensor__view" ], + [ "xvectorizer", "classxt_1_1xvectorizer.html", null ], + [ "xview", "classxt_1_1xview.html", "classxt_1_1xview" ], + [ "xview_semantic", "classxt_1_1xview__semantic.html", "classxt_1_1xview__semantic" ], + [ "xview_shape_type", "structxt_1_1xview__shape__type.html", null ], + [ "xview_shape_type< fixed_shape< I... >, S... >", "structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html", null ], + [ "xview_shape_type< std::array< I, L >, S... >", "structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html", null ], + [ "xview_stepper", "classxt_1_1xview__stepper.html", null ], + [ "norm_type_t", "namespacext.html#aed30dc278eedd175bd6b1b4c86327f47", null ], + [ "squared_norm_type_t", "namespacext.html#aad4d0a4c530e5cca24206775b38a96fb", null ], + [ "xarray", "namespacext.html#a26ed1046ec70cca4784f7eb14ad7c7e0", null ], + [ "xarray_optional", "namespacext.html#a2a43cfb1b205ffea56a580218ff20455", null ], + [ "xarray_pointer", "group__xt__xadapt.html#gab482c333e050233e9a190366730b552c", null ], + [ "xshape", "namespacext.html#a02b500aab287ebecb4ad1520d2c0972f", null ], + [ "xstrided_slice_vector", "namespacext.html#a6e111c2e160e2edb6a2139d16c66d65a", null ], + [ "xtensor", "namespacext.html#a29d0a2d76c0f69cf43aa3b4f55a7a26d", null ], + [ "xtensor_fixed", "namespacext.html#a85d9917ae5dc2260d2889b7120b69d59", null ], + [ "xtensor_optional", "namespacext.html#a125645152bc5adb33f0fa248e24a9868", null ], + [ "xtensor_pointer", "group__xt__xadapt.html#gafda572717f1f939d87e173e781280e6e", null ], + [ "histogram_algorithm", "namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8", [ + [ "automatic", "namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8a2bd9c0ed00116be1258e0cc66617d7c8", null ], + [ "linspace", "namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8aa79a06c0a0ee0d16a811e8a6e684e7a9", null ], + [ "logspace", "namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8a384f804929e6c2bc2bd9f74b83e66438", null ], + [ "uniform", "namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8aa489ffed938ef1b9e86889bc413501ee", null ] + ] ], + [ "layout_type", "namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6", [ + [ "dynamic", "namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6ab72f3bd391ba731a35708bfd8cd8a68f", null ], + [ "any", "namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a100b8cad7cf2a56f6df78f171f97a1ec", null ], + [ "row_major", "namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a641fabb8e5e7d1d0333e2c9c384f959c", null ], + [ "column_major", "namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a8c23f260f0ec1479d3bfaf3a1305a347", null ] + ] ], + [ "pad_mode", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7", [ + [ "constant", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7a617ac08757d38a5a7ed91c224f0e90a0", null ], + [ "symmetric", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7afeca3c730601be7fd57f1f0b668b4637", null ], + [ "reflect", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7ac361ee72f1559105051ffb9bac309c5a", null ], + [ "wrap", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7accfc59a528a109fa4204e8ea06e8b68b", null ], + [ "periodic", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7ae6ffdec5e14fce371eb7ae99edebbbee", null ], + [ "edge", "namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7a09039bd1628a3c1b25fda3134a4fe050", null ] + ] ], + [ "quantile_method", "group__xt__xsort.html#ga2afe52f60aa76f33b0b883a78cabc1ed", [ + [ "interpolated_inverted_cdf", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda7f20bc9a8cd4acd58c1d9b46821e9242", null ], + [ "hazen", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaf4b08e7cc0a94bb8f4e9969eeb532039", null ], + [ "weibull", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda17198fea0bd47a1170b57db7db9e6060", null ], + [ "linear", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda9a932b3cb396238423eb2f33ec17d6aa", null ], + [ "median_unbiased", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaeddf62d602ae684d91d6f586f5e5cbaf", null ], + [ "normal_unbiased", "group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edad1056b777fd87429ccb7a8a55db32545", null ] + ] ], + [ "sorting_method", "namespacext.html#ac4aea058f50a232746da4591e8956623", [ + [ "quick", "namespacext.html#ac4aea058f50a232746da4591e8956623a1df3746a4728276afdc24f828186f73a", null ], + [ "stable", "namespacext.html#ac4aea058f50a232746da4591e8956623af40faf6384fc85a33d3b05a9d41c012b", null ] + ] ], + [ "stride_type", "group__xt__xstrides.html#ga743568032eda84a9d0df401f20317b7d", [ + [ "internal", "group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dad1efad72dc5b17dc66a46767c32fff40", null ], + [ "normal", "group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dafea087517c26fadd409bd4b9dc642555", null ], + [ "bytes", "group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7da4b3a6218bb3e3a7303e8a171a60fcf92", null ] + ] ], + [ "abs", "group__basic__functions.html#ga5a8df8c0823f064b710b90fdc73384f7", null ], + [ "accumulate", "namespacext.html#a75bd621231562feb074486e7213ee86f", null ], + [ "accumulate", "namespacext.html#a89df2e50fff4b65f615aacfcdbb9ff74", null ], + [ "acos", "group__trigo__functions.html#gaef1a134c51ccdb072964383887b838c7", null ], + [ "acosh", "group__hyper__functions.html#ga982a251110da20b8dae705367b3ddd7e", null ], + [ "adapt", "group__xt__xadapt.html#ga80782b35941520fa1d729ed6224cba72", null ], + [ "adapt", "group__xt__xadapt.html#ga2eeb31313c7f9661f62d8ae6a6005013", null ], + [ "adapt", "group__xt__xadapt.html#ga6d665539130b96871327cb7a4aa8b2e0", null ], + [ "adapt", "group__xt__xadapt.html#ga9481e907df524526bc4fd7b77a7c6dcc", null ], + [ "adapt", "group__xt__xadapt.html#ga5d6037b3273754077e434c1dd12d897c", null ], + [ "adapt", "group__xt__xadapt.html#gad7037a00f2c9e7679805e3b0b3515299", null ], + [ "adapt", "group__xt__xadapt.html#ga4170776d38583fd9bedf66df77f3d328", null ], + [ "adapt", "group__xt__xadapt.html#ga7ce00acd98d8aa752d44779e68b0c97c", null ], + [ "adapt", "group__xt__xadapt.html#ga4a46bac84f94e0d22a5000df7008e7da", null ], + [ "adapt_smart_ptr", "group__xt__xadapt.html#ga4addfb25502247a072b944240b67fd3f", null ], + [ "adapt_smart_ptr", "group__xt__xadapt.html#ga9b942dfcc4b69cd9883c99b803b003aa", null ], + [ "adapt_smart_ptr", "group__xt__xadapt.html#gabe827f240de5a66f559ae57fadd19aad", null ], + [ "adapt_smart_ptr", "group__xt__xadapt.html#ga399f6121a1ebe2bf8b338e731bdc2c4e", null ], + [ "all", "namespacext.html#a1607ba0be938e3d0a9acecee22eb2efe", null ], + [ "all", "group__logical__operators.html#ga8da84f179efb13f3d860c5950b5c626e", null ], + [ "allclose", "group__classif__functions.html#ga07beaa8c1b5c159ac3f6c0c09ab1e05c", null ], + [ "amax", "group__basic__functions.html#ga2087e1dd9e331edc470b4b78343f33af", null ], + [ "amin", "group__basic__functions.html#gaab0c337a9aefb746fb8a8b6cfcb511ed", null ], + [ "angle", "group__xt__xcomplex.html#gad2d3e146e64f9cb63d1b66e7d0d43867", null ], + [ "any", "group__logical__operators.html#gadf5680cca336e22d483b0bfa188db592", null ], + [ "arange", "namespacext.html#a156656dea2a291a2b0978a2b02d7f0f7", null ], + [ "arange", "namespacext.html#ab7170425dd9da8585aefbd0eb79af4ec", null ], + [ "arg", "group__xt__xcomplex.html#ga79e6cc463f0aeee688d90dcd320cd672", null ], + [ "argmax", "group__xt__xsort.html#ga258b6c4df6acf24de4bec48be87f0218", null ], + [ "argmin", "namespacext.html#af262fae4388b98687913a18fe321f88d", null ], + [ "argpartition", "group__xt__xsort.html#gac5d19a520cca302691a677d806cae666", null ], + [ "argsort", "group__xt__xsort.html#gaa3ce074f31b6284b63b0d5240820e50a", null ], + [ "argwhere", "group__logical__operators.html#ga8e8213a0ec55abe31dc046b6a03379d7", null ], + [ "as_strided", "group__xt__xeval.html#ga67df3a5e9f6d3f55dceea48706539b46", null ], + [ "asin", "group__trigo__functions.html#gabdab214ece01511604c914f91b81fdb1", null ], + [ "asinh", "group__hyper__functions.html#ga0893b951ad8fb1b23b97f0dae14651de", null ], + [ "atan", "group__trigo__functions.html#gab62818bfe16f2dd284b39bea1a345383", null ], + [ "atan2", "group__trigo__functions.html#gaba0008974d39d88ec21dff058a642ca0", null ], + [ "atanh", "group__hyper__functions.html#gaf99552b5a0d06bfd92f42f272e7af623", null ], + [ "atleast_1d", "group__xt__xmanipulation.html#ga220444924c684f9f2afbc3384a8ff09e", null ], + [ "atleast_2d", "group__xt__xmanipulation.html#gae2392e470cec79a918e975987d431c54", null ], + [ "atleast_3d", "group__xt__xmanipulation.html#gaf9edf6c754946e30b77d9617852ed15c", null ], + [ "atleast_Nd", "group__xt__xmanipulation.html#ga66c613dc60a31ca07c28b45337ee59b7", null ], + [ "average", "group__red__functions.html#gac71fc60e960526979d68aece67232f82", null ], + [ "axis_begin", "namespacext.html#a10d6b6dddf20a721f48bec57deee85c1", null ], + [ "axis_begin", "namespacext.html#aeff80d8045ec5b2276cb70d3171890ef", null ], + [ "axis_end", "namespacext.html#a8febb08b64e215650861f319845e0ba8", null ], + [ "axis_end", "namespacext.html#a6a9d61065999823b0947aac4741a5255", null ], + [ "axis_slice_begin", "namespacext.html#ac347d148c68881cdf4f5dbc488dc02bf", null ], + [ "axis_slice_begin", "namespacext.html#a2a64b30629191a33452d47762e67386b", null ], + [ "axis_slice_end", "namespacext.html#af214429c748c24ec2f26271be60ff9ea", null ], + [ "axis_slice_end", "namespacext.html#a79a091d187f0ba564daabc12be1725ca", null ], + [ "bin_items", "namespacext.html#a79e3638cd1a9a294abe0d95b9425049d", null ], + [ "bin_items", "namespacext.html#a17da83b8f903ed63f70997ff399b70a3", null ], + [ "bincount", "namespacext.html#aed5ac7b9e3af63f34daf465b902d0108", null ], + [ "broadcast", "namespacext.html#a0879929fad639a3a4256a702b9beba62", null ], + [ "cast", "group__casting__operators.html#ga8d57e20151af53f5ffec3afa6f834cf4", null ], + [ "cbrt", "group__pow__functions.html#gad5ff49e786eca533425d6f230c945184", null ], + [ "ceil", "group__nearint__functions.html#ga06d485029e29f092e60af3afabd0d154", null ], + [ "chunked_array", "group__xt__xchunked__array.html#ga2dae3e469de3f3ec7b0d4fc49f82de5c", null ], + [ "chunked_array", "group__xt__xchunked__array.html#ga7f77d42d689828b2d8e8cdd57c28ee9b", null ], + [ "chunked_array", "group__xt__xchunked__array.html#ga8c408e717c7725211a42114adb4557b2", null ], + [ "clip", "group__basic__functions.html#ga951c830ac7329af2e6de1194821c09c4", null ], + [ "col", "namespacext.html#a5772db4fd8ebf31bc242dd1c2d2ddd1b", null ], + [ "compute_layout", "namespacext.html#a27b28c7951a0991e2e8d39422c2b46b2", null ], + [ "compute_strides", "group__xt__xstrides.html#ga3b03c8046a44a3bf2d4800c7296ecefd", null ], + [ "concatenate", "namespacext.html#a28c746e1a420f706892d9aff3ad0dd30", null ], + [ "conditional_cast", "namespacext.html#af155a86146879d345b8acaa16d48c748", null ], + [ "conj", "group__xt__xcomplex.html#ga77874ddd5efaa90065d692ee4a6049a2", null ], + [ "cos", "group__trigo__functions.html#gabf9e140b22bb15dc6add351a7dc06d58", null ], + [ "cosh", "group__hyper__functions.html#ga4073cdc98201789ff723069156b4d34b", null ], + [ "cov", "namespacext.html#af462add746658517456f484f2e80f609", null ], + [ "cube", "group__pow__functions.html#ga0d98743e330f7ef3474bd706e186ac44", null ], + [ "cumprod", "group__acc__functions.html#ga17f752dbaca06608f974c3514509fa7b", null ], + [ "cumsum", "group__acc__functions.html#gaae1630a06b4975a5a759f2215e738123", null ], + [ "data_offset", "group__xt__xstrides.html#ga3bcc575a1a2870d78b96ff674e700ec7", null ], + [ "deg2rad", "group__basic__functions.html#ga1bc991dd9cc5f66575ab91f87b140577", null ], + [ "degrees", "group__basic__functions.html#ga4450fb9262604f2ed230e479092e7fdb", null ], + [ "diag", "namespacext.html#ad848dae0258c3e5755ff7ee55e7c7b30", null ], + [ "diagonal", "namespacext.html#a96ad98d837a74211cc0e5f07b85c2414", null ], + [ "diff", "group__red__functions.html#gab421eb4d3565597848ec53dad1b0d6c6", null ], + [ "digitize", "namespacext.html#a80fb5a6e58dafe175544508ea913cff0", null ], + [ "drop", "namespacext.html#ac42340652d19c99dbd62db9ba399f801", null ], + [ "dump_csv", "namespacext.html#a809a1475d6c06e6209878b293ca0aa4d", null ], + [ "dump_npy", "namespacext.html#abbb704b012b5b4a60523e183342660a8", null ], + [ "dump_npy", "namespacext.html#a6d48f3428b263994fcfb707ca476847e", null ], + [ "ellipsis", "namespacext.html#a7674e27693c74603e341cbf7beb91e7b", null ], + [ "empty", "namespacext.html#af6f56a2111bfe2e7898ddb56dcdedc0e", null ], + [ "empty_like", "namespacext.html#abda9d7634e3a60172e626271a0e50bae", null ], + [ "equal", "group__comparison__operators.html#ga4c778acba0a9407a9093505fad0506d2", null ], + [ "erf", "group__err__functions.html#ga996f61e9186110b7daa859da0a8d2755", null ], + [ "erfc", "group__err__functions.html#ga6af9a81a9ca2bab66e744167c9683920", null ], + [ "eval", "group__xt__xeval.html#ga60f1ff0460adb785f2d4055d0863551b", null ], + [ "exp", "group__exp__functions.html#gae0c736d69056d124184aada09007e70b", null ], + [ "exp2", "group__exp__functions.html#ga212886f718828e83aaf07cdabf60aeab", null ], + [ "expand_dims", "group__xt__xmanipulation.html#gabe8cb55041a20cb995a15c599b7a2bc2", null ], + [ "expm1", "group__exp__functions.html#ga1646ca23b54f4a72d4bbe46f1182921c", null ], + [ "eye", "namespacext.html#a3702c94500428b6c0c24a493ea020606", null ], + [ "eye", "namespacext.html#af1633ad856dcd79570c229d95b09cf19", null ], + [ "fabs", "group__basic__functions.html#ga6548f786920ac988f0e655576b3a3c82", null ], + [ "fdim", "group__basic__functions.html#gaa68f33844e1bb457b87880b7433506d3", null ], + [ "filter", "namespacext.html#ae36e1cf727c1a3ea6c7889f149c0737b", null ], + [ "filtration", "namespacext.html#a588bc1e3b2c1f7c9b8238dddaf05a9df", null ], + [ "flatnonzero", "namespacext.html#afe8bacc1aed492dc936c80bc58730463", null ], + [ "flatten", "group__xt__xmanipulation.html#ga10a975d3b718bfaf8ecf1db8072a0a0c", null ], + [ "flatten_indices", "namespacext.html#a5c1acf7068270be8ab0ef904dd0f5a54", null ], + [ "flip", "group__xt__xmanipulation.html#gad4b24c51356470db0a22b0c6c7d7611d", null ], + [ "flip", "group__xt__xmanipulation.html#ga4bf31ad3a5950024a3825118f9f6a4e7", null ], + [ "floor", "group__nearint__functions.html#ga651ff45bf2ffda746e6602773925ca5c", null ], + [ "fma", "group__basic__functions.html#ga0f88cbfba7ddc6b5e8a1c74e422a0409", null ], + [ "fmax", "group__basic__functions.html#ga782cdb54181f69e99679e1045cb53323", null ], + [ "fmin", "group__basic__functions.html#gab8eb77690d6d7b651f61a961b0b4e472", null ], + [ "fmod", "group__basic__functions.html#ga51fa6991b9bc8878a763212346d6449b", null ], + [ "from_indices", "namespacext.html#ade2d67c70b0ec6af8294f4b7f201a722", null ], + [ "from_json", "namespacext.html#a3d553d1a9a0e27ad8c9054389c1e2c59", null ], + [ "full_like", "namespacext.html#a682f65e5eb55b03cbef5fbd25bbdc349", null ], + [ "greater", "group__comparison__operators.html#ga7c7efdc8246d1ae40ab7f6a8cffe0958", null ], + [ "greater_equal", "group__comparison__operators.html#ga68a359635b6a5d0940f97c7586a61ea3", null ], + [ "has_shape", "namespacext.html#a4453a49484a5833cbf48e51eff2ed3df", null ], + [ "has_shape", "group__xt__xshape.html#ga56d28aa1be818adaecee7803249dad7d", null ], + [ "histogram", "namespacext.html#a0a5ba67f2a11ee24ccf629105d12e407", null ], + [ "histogram", "namespacext.html#a95e9ea74b2e3f62bb682798bd5d7414d", null ], + [ "histogram", "namespacext.html#a8545490885a4a8466344d954bd5326c1", null ], + [ "histogram", "namespacext.html#aaadf08c80728a3d2ace5739f3350f908", null ], + [ "histogram", "namespacext.html#a60449f18cbf62c0a104cf72e53f7948d", null ], + [ "histogram", "namespacext.html#ad8379adac71c1af9b9bc50f835d9536f", null ], + [ "histogram_bin_edges", "namespacext.html#a53ca89b6c48fc35c9a293c2d81f66288", null ], + [ "histogram_bin_edges", "namespacext.html#aa3d16282168b4675fdc93c5563eb5324", null ], + [ "histogram_bin_edges", "namespacext.html#a5abbd094554988573b2c3cce9e521aab", null ], + [ "histogram_bin_edges", "namespacext.html#a49105a6754699f6ab1073e9868782ec8", null ], + [ "hsplit", "group__xt__xmanipulation.html#gaf342a194380b6c7bbc7f2c89f4e88317", null ], + [ "hstack", "namespacext.html#aacc647d8af519da1d2126ec96a97849f", null ], + [ "hypot", "group__pow__functions.html#ga9b55bcc865f0dd82fd679e01c3838526", null ], + [ "imag", "group__xt__xcomplex.html#ga155e369dcf03bd465609d279b82f6da8", null ], + [ "in1d", "group__logical__operators.html#ga3aab6400780394dfb5d0d938c19f1f63", null ], + [ "in1d", "group__logical__operators.html#ga835cd37cf9a3142a7836509b4f082a64", null ], + [ "in1d", "group__logical__operators.html#gab1bbf85dbe7bc76561321466d657bed4", null ], + [ "in_bounds", "namespacext.html#a42f9ded8fbe013b13c186ae66474912d", null ], + [ "index_view", "namespacext.html#abb28cb642ab427195ca6120d59f34f76", null ], + [ "interp", "group__basic__functions.html#gaa909fc5959dbb290c47c9698d5076ed3", null ], + [ "interp", "group__basic__functions.html#ga47e1576710edcbb14d2ccf4df7d62ec3", null ], + [ "isclose", "group__classif__functions.html#ga94330518c2d0f78691dc8bb4b27eb72a", null ], + [ "isfinite", "group__classif__functions.html#ga177a09c77ac16a253588403fe7cbeaec", null ], + [ "isin", "group__logical__operators.html#ga84c1d8a7eaaa5d9f7e0484b9dfc0c646", null ], + [ "isin", "group__logical__operators.html#gaaef46d45350e3699429eff9ca45755f7", null ], + [ "isin", "group__logical__operators.html#gac71ec22119ac398c4c737d48197e5399", null ], + [ "isinf", "group__classif__functions.html#ga94db88dbac47fd2e3cce71c568332554", null ], + [ "isnan", "group__classif__functions.html#ga41ec7bcedb794bccf3535bac9c3142ab", null ], + [ "keep", "namespacext.html#aa6a85c9e08914989d4e79bc78da35ab7", null ], + [ "left_shift", "group__bitwise__operators.html#ga2cd49affcc3745f02fbb43f1bed16ed1", null ], + [ "less", "group__comparison__operators.html#ga2c830ecb583258f639e710642dbf0d7c", null ], + [ "less_equal", "group__comparison__operators.html#ga9e84bf652cf6e810f974a8bcb51f1511", null ], + [ "lgamma", "group__err__functions.html#ga5216029cd6e56b81f5145041540d043e", null ], + [ "linspace", "namespacext.html#a84b4f2192981c30e7ee35fba2b164cb2", null ], + [ "load_csv", "namespacext.html#a1a7ff9a44466a0de5525ac507db04e6a", null ], + [ "load_npy", "namespacext.html#a2466a03b0fed69ae73a2e01490af1fec", null ], + [ "load_npy", "namespacext.html#a09f40ac64487910bfee944c044c9739c", null ], + [ "log", "group__exp__functions.html#gaaeb73f780e08001206f1f9ed9db161e1", null ], + [ "log10", "group__exp__functions.html#gae6585ff00a0cf0fdcdf659639e8d1ca0", null ], + [ "log1p", "group__exp__functions.html#ga08b8fa80ab57f38bb87e8c01b943d7f7", null ], + [ "log2", "group__exp__functions.html#gae08fcbd5914db4f5b2649f5333375d95", null ], + [ "logspace", "namespacext.html#ae448d7eb5de30ef12ca38ca7d6d15356", null ], + [ "make_lambda_xfunction", "namespacext.html#a259a5c38335a33c4a6f8aff517494efb", null ], + [ "make_xshared", "namespacext.html#ab3cc0ff08a76f5d91bcb294a06f8c784", null ], + [ "maximum", "group__basic__functions.html#ga72354e9ca3d4446608c32d77d78fc721", null ], + [ "mean", "group__red__functions.html#gad0919b7cd9e5d8907363a2a146c1ec09", null ], + [ "median", "group__xt__xsort.html#gae6a650f8da9d0066e26ecda36ee293e4", null ], + [ "meshgrid", "namespacext.html#a513e9f91fb23575e3e35eff04c628e19", null ], + [ "minimum", "group__basic__functions.html#ga6ba20f491bf0a014df5a219461ac8c98", null ], + [ "minmax", "group__red__functions.html#gab752be31d54ec7e45daef9a5d3868030", null ], + [ "moveaxis", "group__xt__xmanipulation.html#ga2d8bcbb846f2efae57cf6fb4aa24625a", null ], + [ "nan_to_num", "group__nan__functions.html#gae82e0b56454b586ec1ffbf57d6d2122f", null ], + [ "nancumprod", "group__nan__functions.html#ga4fb43a2f434821dfec8464e84ad05de7", null ], + [ "nancumsum", "group__nan__functions.html#ga48eab6816103340e288db50e05f00e60", null ], + [ "nanmax", "group__nan__functions.html#ga0e300ce1d00beec93e45d7aa0e308ceb", null ], + [ "nanmean", "group__nan__functions.html#ga5ff43d5bf500e85b384c2c08d2ababe9", null ], + [ "nanmin", "group__nan__functions.html#gaaade983a5b6b9406608d54f3ba37a264", null ], + [ "nanprod", "group__nan__functions.html#gad63669d7342cc68dae7b15f3c49ca1c2", null ], + [ "nanstd", "group__nan__functions.html#ga21421ea090897548b9199c1fdb3049be", null ], + [ "nansum", "group__nan__functions.html#gadbfe228ebc452fabfdbf4067274a471a", null ], + [ "nanvar", "group__nan__functions.html#ga3c3fdce46c4143d595e11db1646f7d89", null ], + [ "nearbyint", "group__nearint__functions.html#ga297d1cfd2029ec779f3b2caf20cae56f", null ], + [ "newaxis", "namespacext.html#a534914903c805a597a5fac60e60e7c43", null ], + [ "nonzero", "group__logical__operators.html#ga9f570271ba6f20a0d6a5880fa4ae83cb", null ], + [ "norm", "group__xt__xcomplex.html#gad3afef5ff535998e5dd0d95a979c54bf", null ], + [ "norm_induced_l1", "group__red__functions.html#ga6756e0125ea6eaf41da4d72c863222ad", null ], + [ "norm_induced_linf", "group__red__functions.html#ga32553e96de228c6a760ea1e7eac51dbd", null ], + [ "norm_l0", "group__red__functions.html#gad29e1eba5e05138bd5db7bfc577215f1", null ], + [ "norm_l1", "group__red__functions.html#ga75c1f16a4c45c0ded05f6a50f8245385", null ], + [ "norm_l2", "group__red__functions.html#ga612264ac7b3ed369ebe6da569e2bf7f5", null ], + [ "norm_l2", "group__red__functions.html#gad8d838a048615ed661350fcd7af66d06", null ], + [ "norm_linf", "group__red__functions.html#gad3987362169c6b7f82dc4acaa012c65f", null ], + [ "norm_lp", "group__red__functions.html#ga4f5622197f95e83dafec8394265fd750", null ], + [ "norm_lp_to_p", "group__red__functions.html#gaa1062bcc8bc659e9a09a5816626d5575", null ], + [ "norm_sq", "group__red__functions.html#ga243ff01254cf5c1bcfe3ef6b6b67331d", null ], + [ "normalize_periodic", "group__xt__xstrides.html#gafa51177b0954ec061327dab5d8055ddb", null ], + [ "not_equal", "group__comparison__operators.html#ga014ea335af4e1334f9d95ca6f9b9f6ce", null ], + [ "ones", "namespacext.html#a498ae15885758184e0ee9def889b6bfb", null ], + [ "ones_like", "namespacext.html#a40664e859ef008b427ea6d8a013ebb96", null ], + [ "operator!", "group__logical__operators.html#ga669c5968e594e618cd199674074c32e4", null ], + [ "operator!=", "namespacext.html#aafb4918c6aea49e7968e4ed024a70a99", null ], + [ "operator!=", "namespacext.html#a1e99b6c54f3a5fca29006d1b114e356d", null ], + [ "operator!=", "group__comparison__operators.html#gaae699c5c8cda32f45372da2daee9a9b4", null ], + [ "operator%", "group__arithmetic__operators.html#gaa3c78e8ff8a284881563ccbdd64bf145", null ], + [ "operator&", "group__bitwise__operators.html#ga0084d8f6f0f513d35a35e79f7fffc2fb", null ], + [ "operator&&", "group__logical__operators.html#ga95f7645635520ba70e7d0d9b0e989205", null ], + [ "operator*", "group__arithmetic__operators.html#gaee209a211df9c1fdd671fe786c01eca6", null ], + [ "operator+", "group__arithmetic__operators.html#ga4f6fda1324731f7d8c7bedfd786fd711", null ], + [ "operator+", "group__arithmetic__operators.html#ga3a0012dd54e6eddb1dc1499bda3835fc", null ], + [ "operator-", "group__arithmetic__operators.html#gae9984fddddb53d90fcef38c017ebb5c9", null ], + [ "operator-", "group__arithmetic__operators.html#gadcc7da6c96325690024067869af4e3bf", null ], + [ "operator/", "group__arithmetic__operators.html#ga5c9e3cca169a86ea0974e67d562f7f8c", null ], + [ "operator<", "group__comparison__operators.html#ga2adbdc9609fe51aa3e50955fe039ba67", null ], + [ "operator<<", "group__bitwise__operators.html#gaa7b48fdbaa2c12656338470eb3cc5c8e", null ], + [ "operator<=", "group__comparison__operators.html#gaf7b3cb0fe146e5a95a750a1291bfdcca", null ], + [ "operator==", "namespacext.html#a49dd71cabe349f77ec771f01fc46aeb3", null ], + [ "operator==", "namespacext.html#aa8afbf971ca9887515e974de1775cf03", null ], + [ "operator==", "group__comparison__operators.html#gaa82e19b7daac1f55388a62f89cd5f9c7", null ], + [ "operator>", "group__comparison__operators.html#ga3addaced4bd7bdacea4a842d9d6c850a", null ], + [ "operator>=", "group__comparison__operators.html#gaa40baca1e4f53789261cd3e8736a98ef", null ], + [ "operator>>", "group__bitwise__operators.html#gace6ce969d4a7bdee37e410309448df92", null ], + [ "operator^", "group__bitwise__operators.html#ga85c9a2b613116854aa104a4005f2a0f4", null ], + [ "operator|", "group__bitwise__operators.html#gac1e3650f1eae70c7ab951cce7df0b7ac", null ], + [ "operator||", "group__logical__operators.html#gab0fb5db8b5da410253c08053a1c9c518", null ], + [ "operator~", "group__bitwise__operators.html#ga61f9831f1f2da86982f23d8e4e45e3db", null ], + [ "pad", "namespacext.html#abd5658ce24f2035e2175546c9ca6ec59", null ], + [ "pad", "namespacext.html#a030cc6fd43c1f7a452a4ed069881a4fa", null ], + [ "pad", "namespacext.html#ad10c047180a5ce9129d25c180369ad00", null ], + [ "partition", "group__xt__xsort.html#ga6177ff3c8d30606b88a0bbcacd8dcf4e", null ], + [ "pow", "group__pow__functions.html#ga9cf15362f1892675576f2298c01e2b6b", null ], + [ "pow", "group__pow__functions.html#ga726d449a0411dabbe7451c38cec235ae", null ], + [ "prod", "group__red__functions.html#ga90d729a5dc08b66740997ad3e7fdb0c1", null ], + [ "quantile", "group__xt__xsort.html#gaa8159912f652b20d4477c0187dfb301f", null ], + [ "quantile", "group__xt__xsort.html#ga632a72d1def84debe56b68d79a451f11", null ], + [ "quantile", "group__xt__xsort.html#ga7dd83e71409830d5211608257f18e361", null ], + [ "quantile", "group__xt__xsort.html#gae3b1b26f618ece7324455223330d5780", null ], + [ "rad2deg", "group__basic__functions.html#gab8884e81107ab3012f7604fa1826bca3", null ], + [ "radians", "group__basic__functions.html#ga9bdbff83a3137d687d749c710fa466fb", null ], + [ "range", "namespacext.html#a12df38a6d4e688b6df1a4641930c6181", null ], + [ "range", "namespacext.html#ad1605028ad21316d7118d9c2c56b93a4", null ], + [ "ravel", "group__xt__xmanipulation.html#ga52d3b08fa67fe8c498e4271fca338e28", null ], + [ "ravel_indices", "namespacext.html#ab42ce054ae7c59ee974c25680a09218d", null ], + [ "real", "group__xt__xcomplex.html#ga40dd460909cc5b81f23947646eebd543", null ], + [ "reduce", "namespacext.html#a2bf61f96fdc4316d3eefa8dff6174ece", null ], + [ "remainder", "group__basic__functions.html#ga2322bc87a5871e26173db4b2383e1db8", null ], + [ "repeat", "group__xt__xmanipulation.html#ga0061839371ca8e1f29c37e812dee9ad1", null ], + [ "repeat", "group__xt__xmanipulation.html#ga86b343ba5d1f6150c418475a00e3d3c3", null ], + [ "repeat", "group__xt__xmanipulation.html#ga7aba37875778e4c7a786cbe6ec909ef2", null ], + [ "reshape_view", "namespacext.html#a7bda1677287d8bee76befd8c427e3898", null ], + [ "right_shift", "group__bitwise__operators.html#ga2eab76876895cd0cae2a667e513c9f92", null ], + [ "rint", "group__nearint__functions.html#gaad503e7c9ee485a6b623770c8f43bde0", null ], + [ "roll", "group__xt__xmanipulation.html#ga2211d25aea0f9a27855fb602419a365b", null ], + [ "roll", "group__xt__xmanipulation.html#ga957635620a4f4c19c4ee0546c69fcb1d", null ], + [ "rot90", "group__xt__xmanipulation.html#gab5a947902290cc80a26e8d091428497e", null ], + [ "round", "group__nearint__functions.html#gaa8b6a7ec9f215261ace43466d4ae6f0b", null ], + [ "row", "namespacext.html#a445fa98828eab51048b87fc29d8e88ad", null ], + [ "same_shape", "group__xt__xshape.html#ga3c10cfb8271fbf79932a98edc5491ac7", null ], + [ "searchsorted", "namespacext.html#a7f2dbcb81b8a765fe3972a7490d62618", null ], + [ "setdiff1d", "group__xt__xsort.html#gab6eedcadc051be2d6e3ad7890a5c2d90", null ], + [ "shape", "namespacext.html#ad761751bf328e1bedb307676ab8e7c8f", null ], + [ "share", "namespacext.html#ad90d6213ecfc3ae99eba87429935a38a", null ], + [ "share", "namespacext.html#a39563f02e935d00d2df74796f2e19fb0", null ], + [ "sign", "group__basic__functions.html#gad678caa2e599d095ad40e2b32bf4eb37", null ], + [ "sin", "group__trigo__functions.html#gad8638d83d6874334a912c892b9d8a9c5", null ], + [ "sinh", "group__hyper__functions.html#ga43507ff72c11c17061fd4ae7716c11d5", null ], + [ "sort", "group__xt__xsort.html#gae455f4aaacbc04bebc76451907003ee3", null ], + [ "split", "group__xt__xmanipulation.html#gaad5c56f6a09fb0a6ebaa2ec6cf22cf5c", null ], + [ "sqrt", "group__pow__functions.html#ga2ac4c9ab16cee0b95b444191419c2802", null ], + [ "square", "group__pow__functions.html#ga6e5fca6d456f46a946b4a9707e1d442f", null ], + [ "squeeze", "group__xt__xmanipulation.html#ga2734defabe45fcb86ed9545c1b033134", null ], + [ "squeeze", "group__xt__xmanipulation.html#gadcffbf0452884112fd3bcf7e7077fd6f", null ], + [ "stack", "namespacext.html#a120ce2e841c6d13c8688cd12128fe942", null ], + [ "stddev", "group__red__functions.html#ga0c8291754c7c050cbfac3f6eeeaa1f77", null ], + [ "strided_view", "namespacext.html#ae5c7088d2beee486998238fbc29ee7b9", null ], + [ "strided_view", "namespacext.html#aca6714111810062b91a1c9e31bd69b26", null ], + [ "strides", "group__xt__xstrides.html#ga1ddf9b85add66ccc98661073a78cd953", null ], + [ "strides", "group__xt__xstrides.html#ga651f61121a205e14993c06c52c6d2503", null ], + [ "sum", "group__red__functions.html#ga018d66d27aae0df9558107d684380436", null ], + [ "swapaxes", "group__xt__xmanipulation.html#gaed086f2e402aa1e927f745fceae54018", null ], + [ "tan", "group__trigo__functions.html#gae6d7aef2bb82c074da4a500ca5eadc7b", null ], + [ "tanh", "group__hyper__functions.html#ga1b22c94cc8d9750ca8153d9b5bbb6c86", null ], + [ "tgamma", "group__err__functions.html#gabe9c5e1fc33af3db795c8b3655321f02", null ], + [ "tile", "namespacext.html#ad5270a2924bb17bc641c5846355149bc", null ], + [ "tile", "namespacext.html#a65ddcadd66cb7d479944b1da073f2ce9", null ], + [ "to_json", "namespacext.html#aafd7842df1c7034546b2a84bff7fd97b", null ], + [ "transpose", "group__xt__xmanipulation.html#ga620b1159b15601a1fd9b2ddaa746225e", null ], + [ "transpose", "group__xt__xmanipulation.html#gae8b37193755be9f7e4c0161a6d9f9b6b", null ], + [ "trapz", "group__red__functions.html#ga681c9cbfe336a5a7892633f189098c3d", null ], + [ "trapz", "group__red__functions.html#ga99e0a7ad0979b3ceeaf99d75fd30af9d", null ], + [ "tril", "namespacext.html#ab524d3db6722f5d0e09347aedcf63837", null ], + [ "trim_zeros", "group__xt__xmanipulation.html#ga938cc86961805cf29a1f68394922d9f7", null ], + [ "triu", "namespacext.html#a5ca4a423657a4a9c4ec4852dd344164b", null ], + [ "trunc", "group__nearint__functions.html#ga1bf2a5edfa5f687938657e37064ddc74", null ], + [ "unique", "group__xt__xsort.html#ga2b46eaf022e2fcd9e82ae5223fdd3ed5", null ], + [ "unwrap", "group__basic__functions.html#gaeb6f80a96d7a1da033b737b34acaeb74", null ], + [ "variance", "group__red__functions.html#ga7001a4fe6acde5968aa526166659a5fa", null ], + [ "view", "namespacext.html#aedc2027ff309134dff5b0720699c5ffa", null ], + [ "vsplit", "group__xt__xmanipulation.html#gad25f3a38510304cf1e3489748a43812c", null ], + [ "vstack", "namespacext.html#a87a9e875318fc87aba41154dddee7c60", null ], + [ "where", "group__logical__operators.html#gad36802fb44a519f60e8c2d20ab5b6ef8", null ], + [ "where", "group__logical__operators.html#gabe2a59ff19cc1341bdaf0f833793cbd5", null ], + [ "xtuple", "namespacext.html#ae0a17e1fea8041f69a66d80928359150", null ], + [ "zeros", "namespacext.html#a700dc20edb5a81d66d5f89d350dca46f", null ], + [ "zeros_like", "namespacext.html#a68f9dd4af039df60663af606046a3b73", null ] +]; \ No newline at end of file diff --git a/nav_f.png b/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/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/nav_g.png b/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@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/navtree.css b/navtree.css new file mode 100644 index 000000000..69211d4a7 --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 000000000..93dd3d462 --- /dev/null +++ b/navtree.js @@ -0,0 +1,559 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 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 + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=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) +{ + 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'; + 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, true); + } + } + 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('memtitle') || + 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',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, setFocus) +{ + 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, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } +} + +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 + } +} + +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'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + 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); + }); + } 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); + } + }); + } +} + +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(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +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); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(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 + + + + + + +xtensor: Related Pages + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     Deprecated List
    +
    +
    +
    + + + + diff --git a/plus.svg b/plus.svg new file mode 100644 index 000000000..075201655 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 000000000..0c65bfe94 --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 000000000..aaeb6fc0a --- /dev/null +++ b/resize.js @@ -0,0 +1,155 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 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 + */ +var once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + 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 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + 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 + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.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(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + 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 = readSetting('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); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..f5014540d --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,63 @@ +var searchData= +[ + ['a_20shape_20array_0',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['abs_1',['abs',['../group__basic__functions.html#ga5a8df8c0823f064b710b90fdc73384f7',1,'xt']]], + ['abs_5ffun_2',['abs_fun',['../structxt_1_1math_1_1abs__fun.html',1,'xt::math']]], + ['accumulate_3',['accumulate',['../namespacext.html#a75bd621231562feb074486e7213ee86f',1,'xt::accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())'],['../namespacext.html#a89df2e50fff4b65f615aacfcdbb9ff74',1,'xt::accumulate(F &&f, E &&e, std::ptrdiff_t axis, EVS evaluation_strategy=EVS())']]], + ['accumulating_20functions_4',['accumulating functions',['../group__acc__functions.html',1,'']]], + ['acos_5',['acos',['../group__trigo__functions.html#gaef1a134c51ccdb072964383887b838c7',1,'xt']]], + ['acos_5ffun_6',['acos_fun',['../structxt_1_1math_1_1acos__fun.html',1,'xt::math']]], + ['acosh_7',['acosh',['../group__hyper__functions.html#ga982a251110da20b8dae705367b3ddd7e',1,'xt']]], + ['acosh_5ffun_8',['acosh_fun',['../structxt_1_1math_1_1acosh__fun.html',1,'xt::math']]], + ['acquire_5fownership_9',['acquire_ownership',['../structxt_1_1acquire__ownership.html',1,'xt']]], + ['adapt_10',['adapt',['../group__xt__xadapt.html#gad7037a00f2c9e7679805e3b0b3515299',1,'xt::adapt(P &&pointer, typename A::size_type size, O ownership, layout_type l=L, const A &alloc=A())'],['../group__xt__xadapt.html#ga2eeb31313c7f9661f62d8ae6a6005013',1,'xt::adapt(C &&container, layout_type l=L)'],['../group__xt__xadapt.html#ga9481e907df524526bc4fd7b77a7c6dcc',1,'xt::adapt(C &&pointer, const fixed_shape< X... > &)'],['../group__xt__xadapt.html#ga4a46bac84f94e0d22a5000df7008e7da',1,'xt::adapt(T(&c_array)[N], SC &&shape, SS &&strides)'],['../group__xt__xadapt.html#ga7ce00acd98d8aa752d44779e68b0c97c',1,'xt::adapt(T(&c_array)[N], const SC &shape, layout_type l=L)'],['../group__xt__xadapt.html#ga4170776d38583fd9bedf66df77f3d328',1,'xt::adapt(P &&pointer, typename A::size_type size, O ownership, SC &&shape, SS &&strides, const A &alloc=A())'],['../group__xt__xadapt.html#ga5d6037b3273754077e434c1dd12d897c',1,'xt::adapt(P &&pointer, typename A::size_type size, O ownership, const SC &shape, layout_type l=L, const A &alloc=A())'],['../group__xt__xadapt.html#ga6d665539130b96871327cb7a4aa8b2e0',1,'xt::adapt(C &&container, SC &&shape, SS &&strides)'],['../group__xt__xadapt.html#ga80782b35941520fa1d729ed6224cba72',1,'xt::adapt(C &&container, const SC &shape, layout_type l=L)']]], + ['adapt_5fsmart_5fptr_11',['adapt_smart_ptr',['../group__xt__xadapt.html#ga9b942dfcc4b69cd9883c99b803b003aa',1,'xt::adapt_smart_ptr(P &&data_ptr, const SC &shape, D &&smart_ptr, layout_type l=L)'],['../group__xt__xadapt.html#gabe827f240de5a66f559ae57fadd19aad',1,'xt::adapt_smart_ptr(P &&smart_ptr, const I(&shape)[N], layout_type l=L)'],['../group__xt__xadapt.html#ga4addfb25502247a072b944240b67fd3f',1,'xt::adapt_smart_ptr(P &&data_ptr, const I(&shape)[N], D &&smart_ptr, layout_type l=L)'],['../group__xt__xadapt.html#ga399f6121a1ebe2bf8b338e731bdc2c4e',1,'xt::adapt_smart_ptr(P &&smart_ptr, const SC &shape, layout_type l=L)']]], + ['adaptors_20of_20stl_20like_20containers_12',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['aligned_5fallocator_13',['aligned_allocator',['../classxt__simd_1_1aligned__allocator.html',1,'xt_simd']]], + ['aligned_5farray_14',['aligned_array',['../classxt_1_1aligned__array.html',1,'xt']]], + ['aligned_5fmode_15',['aligned_mode',['../structxt__simd_1_1aligned__mode.html',1,'xt_simd']]], + ['all_16',['all',['../group__logical__operators.html#ga8da84f179efb13f3d860c5950b5c626e',1,'xt::all(E &&e)'],['../namespacext.html#a1607ba0be938e3d0a9acecee22eb2efe',1,'xt::all() noexcept']]], + ['allclose_17',['allclose',['../group__classif__functions.html#ga07beaa8c1b5c159ac3f6c0c09ab1e05c',1,'xt']]], + ['allocator_5falignment_18',['allocator_alignment',['../structxt__simd_1_1allocator__alignment.html',1,'xt_simd']]], + ['amax_19',['amax',['../group__basic__functions.html#ga2087e1dd9e331edc470b4b78343f33af',1,'xt']]], + ['amin_20',['amin',['../group__basic__functions.html#gaab0c337a9aefb746fb8a8b6cfcb511ed',1,'xt']]], + ['and_20flat_20indices_21',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['and_20gamma_20functions_22',['Error and gamma functions',['../group__err__functions.html',1,'']]], + ['angle_23',['angle',['../group__xt__xcomplex.html#gad2d3e146e64f9cb63d1b66e7d0d43867',1,'xt']]], + ['any_24',['any',['../group__logical__operators.html#gadf5680cca336e22d483b0bfa188db592',1,'xt::any(E &&e)'],['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a100b8cad7cf2a56f6df78f171f97a1ec',1,'xt::any']]], + ['apply_5fcv_25',['apply_cv',['../structxt_1_1apply__cv.html',1,'xt']]], + ['arange_26',['arange',['../namespacext.html#a156656dea2a291a2b0978a2b02d7f0f7',1,'xt::arange(T start, T stop, S step=1) noexcept'],['../namespacext.html#ab7170425dd9da8585aefbd0eb79af4ec',1,'xt::arange(T stop) noexcept']]], + ['arg_27',['arg',['../group__xt__xcomplex.html#ga79e6cc463f0aeee688d90dcd320cd672',1,'xt']]], + ['arg_5ffun_28',['arg_fun',['../structxt_1_1math_1_1arg__fun.html',1,'xt::math']]], + ['argmax_29',['argmax',['../group__xt__xsort.html#ga258b6c4df6acf24de4bec48be87f0218',1,'xt']]], + ['argmin_30',['argmin',['../namespacext.html#af262fae4388b98687913a18fe321f88d',1,'xt']]], + ['argpartition_31',['argpartition',['../group__xt__xsort.html#gac5d19a520cca302691a677d806cae666',1,'xt']]], + ['argsort_32',['argsort',['../group__xt__xsort.html#gaa3ce074f31b6284b63b0d5240820e50a',1,'xt']]], + ['argwhere_33',['argwhere',['../group__logical__operators.html#ga8e8213a0ec55abe31dc046b6a03379d7',1,'xt']]], + ['arithmetic_20operators_34',['Arithmetic operators',['../group__arithmetic__operators.html',1,'']]], + ['array_35',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['array_20indices_20and_20flat_20indices_36',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['as_5fstrided_37',['as_strided',['../group__xt__xeval.html#ga67df3a5e9f6d3f55dceea48706539b46',1,'xt']]], + ['asin_38',['asin',['../group__trigo__functions.html#gabdab214ece01511604c914f91b81fdb1',1,'xt']]], + ['asin_5ffun_39',['asin_fun',['../structxt_1_1math_1_1asin__fun.html',1,'xt::math']]], + ['asinh_40',['asinh',['../group__hyper__functions.html#ga0893b951ad8fb1b23b97f0dae14651de',1,'xt']]], + ['asinh_5ffun_41',['asinh_fun',['../structxt_1_1math_1_1asinh__fun.html',1,'xt::math']]], + ['assign_42',['assign',['../classxt_1_1xsemantic__base.html#aa4abcce752e16fea81c590cfdb48d099',1,'xt::xsemantic_base']]], + ['assign_5ftemporary_43',['assign_temporary',['../classxt_1_1xview__semantic.html#abaa88fce8540e36bf148047aa3110af9',1,'xt::xview_semantic::assign_temporary()'],['../classxt_1_1xcontainer__semantic.html#aa6fec519f074fe655cd20aa1fd028dd3',1,'xt::xcontainer_semantic::assign_temporary()']]], + ['at_44',['at',['../classxt_1_1xfunctor__applier__base.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xfunctor_applier_base::at(Args... args) -> reference'],['../classxt_1_1xfunctor__applier__base.html#a340069d14699c36602889101dd1f932a',1,'xt::xfunctor_applier_base::at(Args... args) const -> const_reference'],['../classxt_1_1xmasked__view.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xmasked_view::at(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a340069d14699c36602889101dd1f932a',1,'xt::xmasked_view::at(Args... args) const -> const_reference'],['../classxt_1_1xfunction.html#a340069d14699c36602889101dd1f932a',1,'xt::xfunction::at()'],['../classxt_1_1xcontainer.html#a340069d14699c36602889101dd1f932a',1,'xt::xcontainer::at()'],['../classxt_1_1xscalar.html#a340069d14699c36602889101dd1f932a',1,'xt::xscalar::at()'],['../classxt_1_1xcontainer.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xcontainer::at()'],['../classxt_1_1xscalar.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xscalar::at()'],['../classxt_1_1xconst__accessible.html#a340069d14699c36602889101dd1f932a',1,'xt::xconst_accessible::at()'],['../classxt_1_1xaccessible.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xaccessible::at()'],['../classxt_1_1xoptional__assembly__base.html#a73dd5d1abc3eeb977466ea06cbd010a6',1,'xt::xoptional_assembly_base::at(Args... args) -> reference'],['../classxt_1_1xoptional__assembly__base.html#ab6aeecb3fd2184aa49cf51142487ae31',1,'xt::xoptional_assembly_base::at(Args... args) const -> const_reference'],['../classxt_1_1xaccessible.html#a340069d14699c36602889101dd1f932a',1,'xt::xaccessible::at()']]], + ['atan_45',['atan',['../group__trigo__functions.html#gab62818bfe16f2dd284b39bea1a345383',1,'xt']]], + ['atan2_46',['atan2',['../group__trigo__functions.html#gaba0008974d39d88ec21dff058a642ca0',1,'xt']]], + ['atan2_5ffun_47',['atan2_fun',['../structxt_1_1math_1_1atan2__fun.html',1,'xt::math']]], + ['atan_5ffun_48',['atan_fun',['../structxt_1_1math_1_1atan__fun.html',1,'xt::math']]], + ['atanh_49',['atanh',['../group__hyper__functions.html#gaf99552b5a0d06bfd92f42f272e7af623',1,'xt']]], + ['atanh_5ffun_50',['atanh_fun',['../structxt_1_1math_1_1atanh__fun.html',1,'xt::math']]], + ['atleast_5f1d_51',['atleast_1d',['../group__xt__xmanipulation.html#ga220444924c684f9f2afbc3384a8ff09e',1,'xt']]], + ['atleast_5f2d_52',['atleast_2d',['../group__xt__xmanipulation.html#gae2392e470cec79a918e975987d431c54',1,'xt']]], + ['atleast_5f3d_53',['atleast_3d',['../group__xt__xmanipulation.html#gaf9edf6c754946e30b77d9617852ed15c',1,'xt']]], + ['atleast_5fnd_54',['atleast_Nd',['../group__xt__xmanipulation.html#ga66c613dc60a31ca07c28b45337ee59b7',1,'xt']]], + ['average_55',['average',['../group__red__functions.html#gac71fc60e960526979d68aece67232f82',1,'xt']]], + ['axis_5fbegin_56',['axis_begin',['../namespacext.html#aeff80d8045ec5b2276cb70d3171890ef',1,'xt::axis_begin(E &&e, typename std::decay_t< E >::size_type axis)'],['../namespacext.html#a10d6b6dddf20a721f48bec57deee85c1',1,'xt::axis_begin(E &&e)']]], + ['axis_5fend_57',['axis_end',['../namespacext.html#a8febb08b64e215650861f319845e0ba8',1,'xt::axis_end(E &&e)'],['../namespacext.html#a6a9d61065999823b0947aac4741a5255',1,'xt::axis_end(E &&e, typename std::decay_t< E >::size_type axis)']]], + ['axis_5fslice_5fbegin_58',['axis_slice_begin',['../namespacext.html#ac347d148c68881cdf4f5dbc488dc02bf',1,'xt::axis_slice_begin(E &&e)'],['../namespacext.html#a2a64b30629191a33452d47762e67386b',1,'xt::axis_slice_begin(E &&e, typename std::decay_t< E >::size_type axis)']]], + ['axis_5fslice_5fend_59',['axis_slice_end',['../namespacext.html#af214429c748c24ec2f26271be60ff9ea',1,'xt::axis_slice_end(E &&e)'],['../namespacext.html#a79a091d187f0ba564daabc12be1725ca',1,'xt::axis_slice_end(E &&e, typename std::decay_t< E >::size_type axis)']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..0f67d3af5 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['back_0',['back',['../classxt_1_1xscalar.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xscalar::back() const'],['../classxt_1_1xscalar.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xscalar::back()'],['../classxt_1_1xmasked__view.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xmasked_view::back() const'],['../classxt_1_1xmasked__view.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xmasked_view::back()'],['../classxt_1_1xfunctor__applier__base.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xfunctor_applier_base::back()'],['../classxt_1_1xconst__accessible.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xconst_accessible::back()'],['../classxt_1_1xaccessible.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xaccessible::back()'],['../classxt_1_1xoptional__assembly__base.html#a30a6a24dfa921de015892bddeef5e731',1,'xt::xoptional_assembly_base::back()'],['../classxt_1_1xoptional__assembly__base.html#a8d17eac6565a38c69ce3597b087daa24',1,'xt::xoptional_assembly_base::back() const'],['../classxt_1_1xaccessible.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xaccessible::back()'],['../classxt_1_1xcontainer.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xcontainer::back()'],['../classxt_1_1xcontainer.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xcontainer::back() const'],['../classxt_1_1xfunction.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xfunction::back()'],['../classxt_1_1xfunctor__applier__base.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xfunctor_applier_base::back()']]], + ['backstrides_1',['backstrides',['../classxt_1_1xcontainer.html#a238a7ac8797b8afa4906e6445483aa1d',1,'xt::xcontainer::backstrides()'],['../classxt_1_1xfunctor__applier__base.html#a31682644280a7cb1f47f306e2fa832fe',1,'xt::xfunctor_applier_base::backstrides()'],['../classxt_1_1xmasked__view.html#a11f6663bf33dc7e1afbce7f6132e58fe',1,'xt::xmasked_view::backstrides()'],['../classxt_1_1xoptional__assembly__base.html#a0af0bee6bcff1b475520937f31b84bd5',1,'xt::xoptional_assembly_base::backstrides()'],['../classxt_1_1xstrided__view__base.html#a736dcfe2b1e0a157f89a7a4c6445edd9',1,'xt::xstrided_view_base::backstrides()'],['../classxt_1_1xstrided__view.html#a736dcfe2b1e0a157f89a7a4c6445edd9',1,'xt::xstrided_view::backstrides()']]], + ['basic_20functions_2',['Basic functions',['../group__basic__functions.html',1,'']]], + ['begin_3',['begin',['../classxt_1_1xconst__iterable.html#a6ab0e76125fa876b97b53a813a3d4713',1,'xt::xconst_iterable::begin()'],['../classxt_1_1xiterable.html#a095cfd6ccf0bb5696073af2c8536f8e9',1,'xt::xiterable::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a6ab0e76125fa876b97b53a813a3d4713',1,'xt::xiterable::begin() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a3b0ee4efcc6ed36094e02631279cb3ce',1,'xt::xcontiguous_iterable::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#aa93641d4488c4ddb95274b41df89401f',1,'xt::xcontiguous_iterable::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#aa37724c4f2fe4ed455f37a2a485dcebc',1,'xt::xcontiguous_iterable::begin() const noexcept -> select_const_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#ac598e11fd3eb83a2dcb5c74582ffd95a',1,'xt::xcontiguous_iterable::begin() noexcept -> select_iterator< L >'],['../classxt_1_1xiterable.html#a4123b26a873b7ed680b13ef557cd3c3c',1,'xt::xiterable::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#aa92f6e2edb798a381d131475e463bf31',1,'xt::xiterable::begin() noexcept -> layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a095cfd6ccf0bb5696073af2c8536f8e9',1,'xt::xconst_iterable::begin()'],['../classxt_1_1xoptional__assembly__base.html#aa92f6e2edb798a381d131475e463bf31',1,'xt::xoptional_assembly_base::begin()'],['../classxt_1_1xfunctor__applier__base.html#a20fda1464f7c57d2bedac80130bc1b8a',1,'xt::xfunctor_applier_base::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a3ab9bf54021db8cea2150113376a271c',1,'xt::xfunctor_applier_base::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a20bbfc1e10a26d6754e31ecaca3791db',1,'xt::xfunctor_applier_base::begin() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#acbbbfb5117f8a5cbbf6d884c99209aed',1,'xt::xfunctor_applier_base::begin() noexcept'],['../classxt_1_1xoptional__assembly__base.html#a095cfd6ccf0bb5696073af2c8536f8e9',1,'xt::xoptional_assembly_base::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a6ab0e76125fa876b97b53a813a3d4713',1,'xt::xoptional_assembly_base::begin() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a4123b26a873b7ed680b13ef557cd3c3c',1,'xt::xoptional_assembly_base::begin(const S &shape) noexcept -> broadcast_iterator< S, L >']]], + ['between_20array_20indices_20and_20flat_20indices_4',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['big_5fpromote_5fvalue_5ftype_5',['big_promote_value_type',['../structxt_1_1big__promote__value__type.html',1,'xt']]], + ['bin_5fitems_6',['bin_items',['../namespacext.html#a17da83b8f903ed63f70997ff399b70a3',1,'xt::bin_items(size_t N, size_t bins)'],['../namespacext.html#a79e3638cd1a9a294abe0d95b9425049d',1,'xt::bin_items(size_t N, E &&weights)']]], + ['bincount_7',['bincount',['../namespacext.html#aed5ac7b9e3af63f34daf465b902d0108',1,'xt']]], + ['bit_5fand_5fassign_8',['bit_and_assign',['../classxt_1_1xsemantic__base.html#a491f436cebf5ae09254782e8e39e07e4',1,'xt::xsemantic_base']]], + ['bit_5for_5fassign_9',['bit_or_assign',['../classxt_1_1xsemantic__base.html#a8f36e2f2e9869cb21ccb197f234838ec',1,'xt::xsemantic_base']]], + ['bit_5fxor_5fassign_10',['bit_xor_assign',['../classxt_1_1xsemantic__base.html#a2ecc711c54c031f9fae4f959ba54c756',1,'xt::xsemantic_base']]], + ['bitwise_20operators_11',['Bitwise operators',['../group__bitwise__operators.html',1,'']]], + ['broadcast_12',['broadcast',['../namespacext.html#a0879929fad639a3a4256a702b9beba62',1,'xt']]], + ['broadcast_5ferror_13',['broadcast_error',['../classxt_1_1broadcast__error.html',1,'xt']]], + ['broadcast_5fshape_14',['broadcast_shape',['../classxt_1_1xreducer.html#a20c55f56bcedfe9f3e3662253a922073',1,'xt::xreducer::broadcast_shape()'],['../classxt_1_1xstrided__view.html#a6a79ebace6f36cfb560248f093b7dfa2',1,'xt::xstrided_view::broadcast_shape()'],['../classxt_1_1xdynamic__view.html#a6a79ebace6f36cfb560248f093b7dfa2',1,'xt::xdynamic_view::broadcast_shape()'],['../classxt_1_1xview.html#a4fb1f607e8b93152ef8426c5ef524c3e',1,'xt::xview::broadcast_shape()'],['../classxt_1_1xstrided__view__base.html#a6a79ebace6f36cfb560248f093b7dfa2',1,'xt::xstrided_view_base::broadcast_shape()'],['../classxt_1_1xrepeat.html#a2610f596c5e9b7475d30aa36132a93be',1,'xt::xrepeat::broadcast_shape()'],['../classxt_1_1xoptional__assembly__base.html#a98fdda9ecaf31ce8310614ad46aee9cd',1,'xt::xoptional_assembly_base::broadcast_shape()'],['../classxt_1_1xindex__view.html#ac341559ffeb015df5070beec5596d2a9',1,'xt::xindex_view::broadcast_shape()'],['../classxt_1_1xgenerator.html#ae6b7796ce3f5e9aa5333e6c066013b24',1,'xt::xgenerator::broadcast_shape()'],['../classxt_1_1xfunctor__applier__base.html#ada44e2d571b044340c22c3c16137aa73',1,'xt::xfunctor_applier_base::broadcast_shape()'],['../classxt_1_1xfunction.html#a2ef3340ac01fdce40b012db3ca48d2ef',1,'xt::xfunction::broadcast_shape()'],['../classxt_1_1xcontainer.html#a689eeba5b9b1b4e8943c335d39ecc240',1,'xt::xcontainer::broadcast_shape()'],['../classxt_1_1xbroadcast.html#ad91b61dbfe7d500131c6f001aa0461e6',1,'xt::xbroadcast::broadcast_shape()']]], + ['buffer_5finner_5ftypes_15',['buffer_inner_types',['../structxt_1_1buffer__inner__types.html',1,'xt']]], + ['buffer_5finner_5ftypes_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_16',['buffer_inner_types< xbuffer_adaptor< CP, O, A > >',['../structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html',1,'xt']]], + ['buffer_5finner_5ftypes_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_17',['buffer_inner_types< xiterator_adaptor< I, CI > >',['../structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html',1,'xt']]], + ['buffer_5finner_5ftypes_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_18',['buffer_inner_types< xiterator_owner_adaptor< C, IG > >',['../structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html',1,'xt']]], + ['bytes_19',['bytes',['../group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7da4b3a6218bb3e3a7303e8a171a60fcf92',1,'xt']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..f01c3e9b2 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['rad2deg_0',['rad2deg',['../group__basic__functions.html#gab8884e81107ab3012f7604fa1826bca3',1,'xt::rad2deg()'],['../structxt_1_1math_1_1rad2deg.html',1,'xt::math::rad2deg']]], + ['radians_1',['radians',['../group__basic__functions.html#ga9bdbff83a3137d687d749c710fa466fb',1,'xt']]], + ['range_2',['range',['../namespacext.html#a12df38a6d4e688b6df1a4641930c6181',1,'xt::range(A start_val, B stop_val)'],['../namespacext.html#ad1605028ad21316d7118d9c2c56b93a4',1,'xt::range(A start_val, B stop_val, C step)']]], + ['ravel_3',['ravel',['../group__xt__xmanipulation.html#ga52d3b08fa67fe8c498e4271fca338e28',1,'xt']]], + ['ravel_5findices_4',['ravel_indices',['../namespacext.html#ab42ce054ae7c59ee974c25680a09218d',1,'xt']]], + ['rbegin_5',['rbegin',['../classxt_1_1xoptional__assembly__base.html#a7bc86e4fb6f2f55c74e33836a32739eb',1,'xt::xoptional_assembly_base::rbegin()'],['../classxt_1_1xiterable.html#a3671f77843974f6962cd425318c0ef00',1,'xt::xiterable::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a52be134ecb3d529fddf7e8ba888a59a0',1,'xt::xiterable::rbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#a81666e7d863a7679298d37a373cd1395',1,'xt::xfunctor_applier_base::rbegin()'],['../classxt_1_1xoptional__assembly__base.html#a66bef4e8cff9bf584e71f0ac7ba828ad',1,'xt::xoptional_assembly_base::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a52be134ecb3d529fddf7e8ba888a59a0',1,'xt::xoptional_assembly_base::rbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a3671f77843974f6962cd425318c0ef00',1,'xt::xoptional_assembly_base::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#af72e9e4372c87685b932899a7a411b2f',1,'xt::xcontiguous_iterable::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a2464771d6d90297666b1e7e40ff21f70',1,'xt::xcontiguous_iterable::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a34ab77bf7e6f44cf32100dfa19016985',1,'xt::xcontiguous_iterable::rbegin() const noexcept -> select_const_reverse_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a9baaf955c445124c0ce0b15e46e9ea67',1,'xt::xcontiguous_iterable::rbegin() noexcept -> select_reverse_iterator< L >'],['../classxt_1_1xiterable.html#a66bef4e8cff9bf584e71f0ac7ba828ad',1,'xt::xiterable::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a7bc86e4fb6f2f55c74e33836a32739eb',1,'xt::xiterable::rbegin() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a3671f77843974f6962cd425318c0ef00',1,'xt::xconst_iterable::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a52be134ecb3d529fddf7e8ba888a59a0',1,'xt::xconst_iterable::rbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#aff09d88c2dfc4cb00850f42c8f695337',1,'xt::xfunctor_applier_base::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a683da35bece5497aead059605a406235',1,'xt::xfunctor_applier_base::rbegin() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#abacad02a84f1b459e87948192e2c5d05',1,'xt::xfunctor_applier_base::rbegin() noexcept']]], + ['real_6',['real',['../group__xt__xcomplex.html#ga40dd460909cc5b81f23947646eebd543',1,'xt']]], + ['rebind_7',['rebind',['../structxt_1_1tracking__allocator_1_1rebind.html',1,'xt::tracking_allocator']]], + ['rebind_5fcontainer_8',['rebind_container',['../structxt_1_1rebind__container.html',1,'xt']]], + ['rebind_5fcontainer_3c_20x_2c_20c_3c_20t_2c_20a_20_3e_20_3e_9',['rebind_container< X, C< T, A > >',['../structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html',1,'xt']]], + ['rebind_5fcontainer_3c_20x_2c_20c_3c_20t_2c_20n_20_3e_20_3e_10',['rebind_container< X, C< T, N > >',['../structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html',1,'xt']]], + ['rebind_5fcontainer_3c_20x_2c_20svector_3c_20t_2c_20n_2c_20a_2c_20b_20_3e_20_3e_11',['rebind_container< X, svector< T, N, A, B > >',['../structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html',1,'xt']]], + ['reduce_12',['reduce',['../namespacext.html#a2bf61f96fdc4316d3eefa8dff6174ece',1,'xt']]], + ['reducer_5foptions_13',['reducer_options',['../structxt_1_1reducer__options.html',1,'xt']]], + ['reducing_20functions_14',['reducing functions',['../group__red__functions.html',1,'']]], + ['remainder_15',['remainder',['../group__basic__functions.html#ga2322bc87a5871e26173db4b2383e1db8',1,'xt']]], + ['remainder_5ffun_16',['remainder_fun',['../structxt_1_1math_1_1remainder__fun.html',1,'xt::math']]], + ['remove_5fclass_17',['remove_class',['../structxt_1_1remove__class.html',1,'xt']]], + ['remove_5fclass_3c_20r_28c_3a_3a_2a_29_28args_2e_2e_2e_29_20const_20_3e_18',['remove_class< R(C::*)(Args...) const >',['../structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html',1,'xt']]], + ['remove_5fclass_3c_20r_28c_3a_3a_2a_29_28args_2e_2e_2e_29_3e_19',['remove_class< R(C::*)(Args...)>',['../structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html',1,'xt']]], + ['rend_20',['rend',['../classxt_1_1xfunctor__applier__base.html#a367facbe0356cf7de42ed9cd1e60a163',1,'xt::xfunctor_applier_base::rend(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a8201e2518627bdc8e1fb6f33653aacbb',1,'xt::xfunctor_applier_base::rend() noexcept'],['../classxt_1_1xfunctor__applier__base.html#a20631d9fd8aaa1e5a95393c31537ef81',1,'xt::xfunctor_applier_base::rend() const noexcept'],['../classxt_1_1xoptional__assembly__base.html#a634cb122a80a40c5c38ff2b4527e3f26',1,'xt::xoptional_assembly_base::rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#ade7cb42ea93353d00bbb739743be090d',1,'xt::xoptional_assembly_base::rend() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a92e4a1b212968fcc8a8240be122fe8e4',1,'xt::xoptional_assembly_base::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#af04d43d598e8933225287e044c12d4c6',1,'xt::xoptional_assembly_base::rend() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a0fca0441c61348b6eb092456e123b869',1,'xt::xcontiguous_iterable::rend()'],['../classxt_1_1xfunctor__applier__base.html#a23da38db60689cea813d3995b7b93de2',1,'xt::xfunctor_applier_base::rend()'],['../classxt_1_1xconst__iterable.html#ade7cb42ea93353d00bbb739743be090d',1,'xt::xconst_iterable::rend() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a634cb122a80a40c5c38ff2b4527e3f26',1,'xt::xconst_iterable::rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#af04d43d598e8933225287e044c12d4c6',1,'xt::xiterable::rend() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xiterable.html#a92e4a1b212968fcc8a8240be122fe8e4',1,'xt::xiterable::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#ad8f400de36b11a40a49517ebe2f2f1fa',1,'xt::xcontiguous_iterable::rend()'],['../classxt_1_1xiterable.html#a634cb122a80a40c5c38ff2b4527e3f26',1,'xt::xiterable::rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#ade7cb42ea93353d00bbb739743be090d',1,'xt::xiterable::rend() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a3b9ef9be65f2c10776ee7055f4067bed',1,'xt::xcontiguous_iterable::rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#ab805bb1e5bd7b9a0d22fe8fcda0ffeb8',1,'xt::xcontiguous_iterable::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >']]], + ['repeat_21',['repeat',['../group__xt__xmanipulation.html#ga7aba37875778e4c7a786cbe6ec909ef2',1,'xt::repeat(E &&e, std::vector< std::size_t > &&repeats, std::size_t axis)'],['../group__xt__xmanipulation.html#ga0061839371ca8e1f29c37e812dee9ad1',1,'xt::repeat(E &&e, const std::vector< std::size_t > &repeats, std::size_t axis)'],['../group__xt__xmanipulation.html#ga86b343ba5d1f6150c418475a00e3d3c3',1,'xt::repeat(E &&e, std::size_t repeats, std::size_t axis)']]], + ['reshape_22',['reshape',['../classxt_1_1xoptional__assembly__base.html#adcf1eb03fa74eac4bfd3c1c53647e841',1,'xt::xoptional_assembly_base::reshape()'],['../classxt_1_1xstrided__container.html#ade4f89e605eb5ade6b47507eb411702b',1,'xt::xstrided_container::reshape()'],['../classxt_1_1xfixed__container.html#ab5b58143fbfe4d0b7c0ea353526b286f',1,'xt::xfixed_container::reshape()'],['../classxt_1_1xfixed__adaptor.html#a5fe78e6500ce0bddc63c8b7de09b8031',1,'xt::xfixed_adaptor::reshape()'],['../classxt_1_1xgenerator.html#a8d78d70b368a9010ded32ee263299b8b',1,'xt::xgenerator::reshape()']]], + ['reshape_5fview_23',['reshape_view',['../namespacext.html#a7bda1677287d8bee76befd8c427e3898',1,'xt']]], + ['resize_24',['resize',['../classxt_1_1xstrided__container.html#af38c6e8082f27cfbaa445767c14c0110',1,'xt::xstrided_container::resize()'],['../classxt_1_1xfixed__container.html#a1c6d4565311f46f74edd7bfbbf6a2616',1,'xt::xfixed_container::resize()'],['../classxt_1_1xstrided__container.html#ac157fa05a058950206b21ed403d969fe',1,'xt::xstrided_container::resize(S &&shape, layout_type l)'],['../classxt_1_1xstrided__container.html#a9853404ceb5a3d42430c43508abb671b',1,'xt::xstrided_container::resize(S &&shape, const strides_type &strides)'],['../classxt_1_1xoptional__assembly__base.html#a6679efb40275d9066e15627f79430759',1,'xt::xoptional_assembly_base::resize()'],['../classxt_1_1xfixed__container.html#a591c135ebc74e8067d19a7503c635280',1,'xt::xfixed_container::resize(ST &&shape, layout_type l) const'],['../classxt_1_1xfixed__container.html#a311dfc919ead913eb8c6f27b241619fb',1,'xt::xfixed_container::resize(ST &&shape, const strides_type &strides) const'],['../classxt_1_1xfixed__adaptor.html#a75fb0edc455232657d609bd9d79d6544',1,'xt::xfixed_adaptor::resize(ST &&shape, bool force=false) const'],['../classxt_1_1xfixed__adaptor.html#a10c880b192785a2108d5ab7047c1bed6',1,'xt::xfixed_adaptor::resize(ST &&shape, layout_type l) const'],['../classxt_1_1xfixed__adaptor.html#a656b75b805c1645d3c562a5797d7adb9',1,'xt::xfixed_adaptor::resize(ST &&shape, const strides_type &strides) const'],['../classxt_1_1xoptional__assembly__base.html#ad75f3602dcf419d0d35af7121da5e802',1,'xt::xoptional_assembly_base::resize(const S &shape, bool force=false)'],['../classxt_1_1xoptional__assembly__base.html#a346e0ff791f6279005d0229311e62b75',1,'xt::xoptional_assembly_base::resize(const S &shape, layout_type l)']]], + ['revert_5fsimd_5ftraits_25',['revert_simd_traits',['../structxt__simd_1_1revert__simd__traits.html',1,'xt_simd']]], + ['right_5fshift_26',['right_shift',['../group__bitwise__operators.html#ga2eab76876895cd0cae2a667e513c9f92',1,'xt']]], + ['rint_27',['rint',['../group__nearint__functions.html#gaad503e7c9ee485a6b623770c8f43bde0',1,'xt']]], + ['rint_5ffun_28',['rint_fun',['../structxt_1_1math_1_1rint__fun.html',1,'xt::math']]], + ['roll_29',['roll',['../group__xt__xmanipulation.html#ga2211d25aea0f9a27855fb602419a365b',1,'xt::roll(E &&e, std::ptrdiff_t shift)'],['../group__xt__xmanipulation.html#ga957635620a4f4c19c4ee0546c69fcb1d',1,'xt::roll(E &&e, std::ptrdiff_t shift, std::ptrdiff_t axis)']]], + ['rot90_30',['rot90',['../group__xt__xmanipulation.html#gab5a947902290cc80a26e8d091428497e',1,'xt']]], + ['round_31',['round',['../group__nearint__functions.html#gaa8b6a7ec9f215261ace43466d4ae6f0b',1,'xt']]], + ['round_5ffun_32',['round_fun',['../structxt_1_1math_1_1round__fun.html',1,'xt::math']]], + ['row_33',['row',['../namespacext.html#a445fa98828eab51048b87fc29d8e88ad',1,'xt']]], + ['row_5fmajor_34',['row_major',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a641fabb8e5e7d1d0333e2c9c384f959c',1,'xt']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..5cc9c8cdf --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,57 @@ +var searchData= +[ + ['same_5fshape_0',['same_shape',['../group__xt__xshape.html#ga3c10cfb8271fbf79932a98edc5491ac7',1,'xt']]], + ['searchsorted_1',['searchsorted',['../namespacext.html#a7f2dbcb81b8a765fe3972a7490d62618',1,'xt']]], + ['select_5fdim_5fmapping_5ftype_2',['select_dim_mapping_type',['../structxt_1_1select__dim__mapping__type.html',1,'xt']]], + ['select_5fdim_5fmapping_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_20_3e_3',['select_dim_mapping_type< fixed_shape< I... > >',['../structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html',1,'xt']]], + ['select_5fdim_5fmapping_5ftype_3c_20inner_5fshape_5ftype_20_3e_4',['select_dim_mapping_type< inner_shape_type >',['../structxt_1_1select__dim__mapping__type.html',1,'xt']]], + ['select_5fiterable_5fbase_5',['select_iterable_base',['../structxt_1_1select__iterable__base.html',1,'xt']]], + ['select_5flayout_6',['select_layout',['../structxt_1_1select__layout.html',1,'xt']]], + ['sequence_5fview_7',['sequence_view',['../classxt_1_1sequence__view.html',1,'xt']]], + ['setdiff1d_8',['setdiff1d',['../group__xt__xsort.html#gab6eedcadc051be2d6e3ad7890a5c2d90',1,'xt']]], + ['shape_9',['shape',['../classxt_1_1xreducer.html#aaf23386e8c796f997a2e80c71e57e74c',1,'xt::xreducer::shape()'],['../classxt_1_1xgenerator.html#a72035cb01c8e3ead3dedcd013fe59737',1,'xt::xgenerator::shape()'],['../classxt_1_1xoptional__assembly__base.html#a58bcff261d17d4b7e5b89a9d4ac6a362',1,'xt::xoptional_assembly_base::shape(size_type index) const'],['../classxt_1_1xoptional__assembly__base.html#a574aec951fe205155709a7871055ec75',1,'xt::xoptional_assembly_base::shape() const noexcept'],['../classxt_1_1xmasked__view.html#a3e501b72ae46be33e45dd249ac6e369c',1,'xt::xmasked_view::shape()'],['../classxt_1_1xindex__view.html#a47f560d67ba251afd96c617e6c6e2a0e',1,'xt::xindex_view::shape(size_type index) const'],['../classxt_1_1xindex__view.html#ad124eaa3959093d86deab646c4a2fb18',1,'xt::xindex_view::shape() const noexcept'],['../classxt_1_1xcontainer.html#a69d345a40906cb982d205357520792fc',1,'xt::xcontainer::shape()'],['../classxt_1_1xrepeat.html#abbeb6ae19bc34035323c7577c65f0d84',1,'xt::xrepeat::shape()'],['../classxt_1_1xstrided__view__base.html#a7f03137aa8b79f042dd1eb5b769f5256',1,'xt::xstrided_view_base::shape()'],['../classxt_1_1xview.html#a4f26067384dd1d379fcd476127386966',1,'xt::xview::shape()'],['../classxt_1_1xbroadcast.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xbroadcast::shape()'],['../classxt_1_1xdynamic__view.html#a7f03137aa8b79f042dd1eb5b769f5256',1,'xt::xdynamic_view::shape()'],['../classxt_1_1xfunction.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xfunction::shape()'],['../classxt_1_1xgenerator.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xgenerator::shape()'],['../classxt_1_1xrepeat.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xrepeat::shape()'],['../classxt_1_1xstrided__view.html#a7f03137aa8b79f042dd1eb5b769f5256',1,'xt::xstrided_view::shape()'],['../classxt_1_1xfunction.html#a41f3d01620f13c854d163235d03e534d',1,'xt::xfunction::shape()'],['../classxt_1_1xfunctor__applier__base.html#a982e33a6deafe2b8f8048ce8c91956b3',1,'xt::xfunctor_applier_base::shape()'],['../classxt_1_1xbroadcast.html#ab55ff6c03aac9708dd319a0936a3fd18',1,'xt::xbroadcast::shape()'],['../classxt_1_1xconst__accessible.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xconst_accessible::shape()'],['../namespacext.html#ad761751bf328e1bedb307676ab8e7c8f',1,'xt::shape()']]], + ['shape_20array_10',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['share_11',['share',['../namespacext.html#a39563f02e935d00d2df74796f2e19fb0',1,'xt::share(xexpression< E > &expr)'],['../namespacext.html#ad90d6213ecfc3ae99eba87429935a38a',1,'xt::share(xexpression< E > &&expr)']]], + ['sign_12',['sign',['../group__basic__functions.html#gad678caa2e599d095ad40e2b32bf4eb37',1,'xt']]], + ['sign_5ffun_13',['sign_fun',['../structxt_1_1math_1_1sign__fun.html',1,'xt::math']]], + ['sign_5fimpl_14',['sign_impl',['../structxt_1_1math_1_1sign__impl.html',1,'xt::math']]], + ['sign_5fimpl_3c_20xtl_3a_3axoptional_3c_20t_2c_20b_20_3e_20_3e_15',['sign_impl< xtl::xoptional< T, B > >',['../structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html',1,'xt::math']]], + ['simd_5fcondition_16',['simd_condition',['../structxt__simd_1_1simd__condition.html',1,'xt_simd']]], + ['simd_5ftraits_17',['simd_traits',['../structxt__simd_1_1simd__traits.html',1,'xt_simd']]], + ['sin_18',['sin',['../group__trigo__functions.html#gad8638d83d6874334a912c892b9d8a9c5',1,'xt']]], + ['sin_5ffun_19',['sin_fun',['../structxt_1_1math_1_1sin__fun.html',1,'xt::math']]], + ['sinh_20',['sinh',['../group__hyper__functions.html#ga43507ff72c11c17061fd4ae7716c11d5',1,'xt']]], + ['sinh_5ffun_21',['sinh_fun',['../structxt_1_1math_1_1sinh__fun.html',1,'xt::math']]], + ['size_22',['size',['../classxt_1_1xrepeat.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xrepeat::size()'],['../classxt_1_1xfunction.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xfunction::size()'],['../classxt_1_1xbroadcast.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xbroadcast::size()'],['../classxt_1_1xoptional__assembly__base.html#a21f778be8956cf3c7c72aa37169a0d2a',1,'xt::xoptional_assembly_base::size()'],['../classxt_1_1xindex__view.html#a9c3f7c72cb0e1172b75bb256e92e6b94',1,'xt::xindex_view::size()'],['../classxt_1_1xconst__accessible.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xconst_accessible::size()'],['../classxt_1_1xmasked__view.html#a9b8f0d6d6f4fd32f161ffbae9828a7e2',1,'xt::xmasked_view::size()'],['../classxt_1_1xfunctor__applier__base.html#ae971620a3e942d234f19e65a10005e45',1,'xt::xfunctor_applier_base::size()'],['../classxt_1_1xcontainer.html#a1c0a41d160789e55b7bdfd797b3af1cb',1,'xt::xcontainer::size()']]], + ['slices_23',['slices',['../classxt_1_1xview.html#a10687f1d5229c3d4f0b0af8766d9d64b',1,'xt::xview']]], + ['sort_24',['sort',['../group__xt__xsort.html#gae455f4aaacbc04bebc76451907003ee3',1,'xt']]], + ['sorting_20functions_25',['Sorting functions.',['../group__xt__xsort.html',1,'']]], + ['sorting_5fmethod_26',['sorting_method',['../namespacext.html#ac4aea058f50a232746da4591e8956623',1,'xt']]], + ['split_27',['split',['../group__xt__xmanipulation.html#gaad5c56f6a09fb0a6ebaa2ec6cf22cf5c',1,'xt']]], + ['sqrt_28',['sqrt',['../group__pow__functions.html#ga2ac4c9ab16cee0b95b444191419c2802',1,'xt']]], + ['sqrt_5ffun_29',['sqrt_fun',['../structxt_1_1math_1_1sqrt__fun.html',1,'xt::math']]], + ['square_30',['square',['../group__pow__functions.html#ga6e5fca6d456f46a946b4a9707e1d442f',1,'xt']]], + ['squared_5fnorm_5ftype_31',['squared_norm_type',['../structxt_1_1squared__norm__type.html',1,'xt']]], + ['squared_5fnorm_5ftype_5ft_32',['squared_norm_type_t',['../namespacext.html#aad4d0a4c530e5cca24206775b38a96fb',1,'xt']]], + ['squeeze_33',['squeeze',['../group__xt__xmanipulation.html#ga2734defabe45fcb86ed9545c1b033134',1,'xt::squeeze(E &&e)'],['../group__xt__xmanipulation.html#gadcffbf0452884112fd3bcf7e7077fd6f',1,'xt::squeeze(E &&e, S &&axis, Tag check_policy)']]], + ['stable_34',['stable',['../namespacext.html#ac4aea058f50a232746da4591e8956623af40faf6384fc85a33d3b05a9d41c012b',1,'xt']]], + ['stack_35',['stack',['../namespacext.html#a120ce2e841c6d13c8688cd12128fe942',1,'xt']]], + ['static_5fdimension_36',['static_dimension',['../structxt_1_1static__dimension.html',1,'xt']]], + ['static_5fstring_37',['static_string',['../structxt_1_1static__string.html',1,'xt']]], + ['stddev_38',['stddev',['../group__red__functions.html#ga0c8291754c7c050cbfac3f6eeeaa1f77',1,'xt']]], + ['stepper_5fassigner_39',['stepper_assigner',['../classxt_1_1stepper__assigner.html',1,'xt']]], + ['stepper_5ftools_40',['stepper_tools',['../structxt_1_1stepper__tools.html',1,'xt']]], + ['stl_20like_20containers_41',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['storage_42',['storage',['../classxt_1_1xdynamic__view.html#aeec822654cdb1a74d861e819b1c98730',1,'xt::xdynamic_view::storage()'],['../classxt_1_1xcontainer.html#a19d0a91c82d0c35e414cf160751a9cb5',1,'xt::xcontainer::storage() noexcept'],['../classxt_1_1xcontainer.html#a75322e16f42222403daa18be69efa7d7',1,'xt::xcontainer::storage() const noexcept'],['../classxt_1_1xstrided__view__base.html#aeec822654cdb1a74d861e819b1c98730',1,'xt::xstrided_view_base::storage() noexcept'],['../classxt_1_1xstrided__view__base.html#a8b2e5b2c411cc06b834960f23dea39e7',1,'xt::xstrided_view_base::storage() const noexcept'],['../classxt_1_1xview.html#a2f5a08aebb5d391e488dcd60f2c90f67',1,'xt::xview::storage()'],['../classxt_1_1xdynamic__view.html#a8b2e5b2c411cc06b834960f23dea39e7',1,'xt::xdynamic_view::storage()'],['../classxt_1_1xstrided__view.html#aeec822654cdb1a74d861e819b1c98730',1,'xt::xstrided_view::storage() noexcept'],['../classxt_1_1xstrided__view.html#a8b2e5b2c411cc06b834960f23dea39e7',1,'xt::xstrided_view::storage() const noexcept']]], + ['stride_5ftype_43',['stride_type',['../group__xt__xstrides.html#ga743568032eda84a9d0df401f20317b7d',1,'xt']]], + ['strided_5floop_5fassigner_44',['strided_loop_assigner',['../classxt_1_1strided__loop__assigner.html',1,'xt']]], + ['strided_5fview_45',['strided_view',['../namespacext.html#ae5c7088d2beee486998238fbc29ee7b9',1,'xt::strided_view(E &&e, const xstrided_slice_vector &slices)'],['../namespacext.html#aca6714111810062b91a1c9e31bd69b26',1,'xt::strided_view(E &&e, S &&shape, X &&strides, std::size_t offset, layout_type layout) noexcept']]], + ['strides_46',['strides',['../classxt_1_1xstrided__view.html#a60cc5bdc36e03dd0b339e89e16d4080c',1,'xt::xstrided_view::strides()'],['../group__xt__xstrides.html#ga1ddf9b85add66ccc98661073a78cd953',1,'xt::strides(const E &e, std::size_t axis, stride_type type=stride_type::normal) noexcept'],['../group__xt__xstrides.html#ga651f61121a205e14993c06c52c6d2503',1,'xt::strides(const E &e, stride_type type=stride_type::normal) noexcept'],['../classxt_1_1xview.html#aec0c5b2cd004781631cabe77e7f00d63',1,'xt::xview::strides()'],['../classxt_1_1xstrided__view__base.html#a60cc5bdc36e03dd0b339e89e16d4080c',1,'xt::xstrided_view_base::strides()'],['../classxt_1_1xoptional__assembly__base.html#aa1afe87047106cd980f036335b978199',1,'xt::xoptional_assembly_base::strides()'],['../classxt_1_1xmasked__view.html#a0cc1342c4e640acb9f726ccbb1a74da7',1,'xt::xmasked_view::strides()'],['../classxt_1_1xfunctor__applier__base.html#aee81935fb3b87f6e71e49e5410236645',1,'xt::xfunctor_applier_base::strides()'],['../classxt_1_1xcontainer.html#a521fff0ce57a45da819d7e313b3133b4',1,'xt::xcontainer::strides()']]], + ['sum_47',['sum',['../group__red__functions.html#ga018d66d27aae0df9558107d684380436',1,'xt']]], + ['support_20functions_20swich_20between_20array_20indices_20and_20flat_20indices_48',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['support_20functions_20to_20get_20check_20a_20shape_20array_49',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['svector_50',['svector',['../classxt_1_1svector.html',1,'xt']]], + ['svector_3c_20size_5ftype_20_3e_51',['svector< size_type >',['../classxt_1_1svector.html',1,'xt']]], + ['swapaxes_52',['swapaxes',['../group__xt__xmanipulation.html#gaed086f2e402aa1e927f745fceae54018',1,'xt']]], + ['swich_20between_20array_20indices_20and_20flat_20indices_53',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..9a99eb8ca --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['tan_0',['tan',['../group__trigo__functions.html#gae6d7aef2bb82c074da4a500ca5eadc7b',1,'xt']]], + ['tan_5ffun_1',['tan_fun',['../structxt_1_1math_1_1tan__fun.html',1,'xt::math']]], + ['tanh_2',['tanh',['../group__hyper__functions.html#ga1b22c94cc8d9750ca8153d9b5bbb6c86',1,'xt']]], + ['tanh_5ffun_3',['tanh_fun',['../structxt_1_1math_1_1tanh__fun.html',1,'xt::math']]], + ['temporary_5fcontainer_4',['temporary_container',['../structxt_1_1temporary__container.html',1,'xt']]], + ['temporary_5fcontainer_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_5',['temporary_container< xbuffer_adaptor< CP, O, A > >',['../structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html',1,'xt']]], + ['temporary_5fcontainer_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_6',['temporary_container< xiterator_adaptor< I, CI > >',['../structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html',1,'xt']]], + ['temporary_5fcontainer_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_7',['temporary_container< xiterator_owner_adaptor< C, IG > >',['../structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html',1,'xt']]], + ['temporary_5ftype_8',['temporary_type',['../structxt_1_1temporary__type.html',1,'xt']]], + ['temporary_5ftype_3c_20t_2c_20void_5ft_3c_20typename_20std_3a_3adecay_5ft_3c_20t_20_3e_3a_3atemporary_5ftype_20_3e_20_3e_9',['temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >',['../structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html',1,'xt']]], + ['temporary_5ftype_5ffrom_5ftag_10',['temporary_type_from_tag',['../structxt_1_1temporary__type__from__tag.html',1,'xt']]], + ['temporary_5ftype_5ffrom_5ftag_3c_20xtensor_5fexpression_5ftag_2c_20t_20_3e_11',['temporary_type_from_tag< xtensor_expression_tag, T >',['../structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html',1,'xt']]], + ['tgamma_12',['tgamma',['../group__err__functions.html#gabe9c5e1fc33af3db795c8b3655321f02',1,'xt']]], + ['tgamma_5ffun_13',['tgamma_fun',['../structxt_1_1math_1_1tgamma__fun.html',1,'xt::math']]], + ['threshold_14',['threshold',['../classxt_1_1print__options_1_1threshold.html',1,'xt::print_options']]], + ['tile_15',['tile',['../namespacext.html#ad5270a2924bb17bc641c5846355149bc',1,'xt::tile(E &&e, S reps)'],['../namespacext.html#a65ddcadd66cb7d479944b1da073f2ce9',1,'xt::tile(E &&e, std::initializer_list< S > reps)']]], + ['to_20get_20check_20a_20shape_20array_16',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['to_5fjson_17',['to_json',['../namespacext.html#aafd7842df1c7034546b2a84bff7fd97b',1,'xt']]], + ['tracking_5fallocator_18',['tracking_allocator',['../structxt_1_1tracking__allocator.html',1,'xt']]], + ['transpose_19',['transpose',['../group__xt__xmanipulation.html#gae8b37193755be9f7e4c0161a6d9f9b6b',1,'xt::transpose(E &&e, S &&permutation, Tag check_policy)'],['../group__xt__xmanipulation.html#ga620b1159b15601a1fd9b2ddaa746225e',1,'xt::transpose(E &&e) noexcept']]], + ['transpose_5ferror_20',['transpose_error',['../classxt_1_1transpose__error.html',1,'xt']]], + ['trapz_21',['trapz',['../group__red__functions.html#ga99e0a7ad0979b3ceeaf99d75fd30af9d',1,'xt::trapz(const xexpression< T > &y, double dx=1.0, std::ptrdiff_t axis=-1)'],['../group__red__functions.html#ga681c9cbfe336a5a7892633f189098c3d',1,'xt::trapz(const xexpression< T > &y, const xexpression< E > &x, std::ptrdiff_t axis=-1)']]], + ['trigonometric_20function_22',['Trigonometric function',['../group__trigo__functions.html',1,'']]], + ['tril_23',['tril',['../namespacext.html#ab524d3db6722f5d0e09347aedcf63837',1,'xt']]], + ['trim_5fzeros_24',['trim_zeros',['../group__xt__xmanipulation.html#ga938cc86961805cf29a1f68394922d9f7',1,'xt']]], + ['triu_25',['triu',['../namespacext.html#a5ca4a423657a4a9c4ec4852dd344164b',1,'xt']]], + ['trunc_26',['trunc',['../group__nearint__functions.html#ga1bf2a5edfa5f687938657e37064ddc74',1,'xt']]], + ['trunc_5ffun_27',['trunc_fun',['../structxt_1_1math_1_1trunc__fun.html',1,'xt::math']]], + ['tuple_5fidx_5fof_28',['tuple_idx_of',['../structxt_1_1tuple__idx__of.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_29',['tuple_idx_of_impl',['../structxt_1_1tuple__idx__of__impl.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_3c_20i_2c_20t_2c_20std_3a_3atuple_3c_20t_2c_20types_2e_2e_2e_20_3e_20_3e_30',['tuple_idx_of_impl< I, T, std::tuple< T, Types... > >',['../structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_3c_20i_2c_20t_2c_20std_3a_3atuple_3c_20u_2c_20types_2e_2e_2e_20_3e_20_3e_31',['tuple_idx_of_impl< I, T, std::tuple< U, Types... > >',['../structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_3c_20i_2c_20t_2c_20std_3a_3atuple_3c_3e_20_3e_32',['tuple_idx_of_impl< I, T, std::tuple<> >',['../structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html',1,'xt']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..79f7e5077 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['unaligned_5fmode_0',['unaligned_mode',['../structxt__simd_1_1unaligned__mode.html',1,'xt_simd']]], + ['unchecked_1',['unchecked',['../classxt_1_1xmasked__view.html#a430cf3c34d4e7ac88d55522fcef881ff',1,'xt::xmasked_view::unchecked()'],['../classxt_1_1xstrided__view.html#a4ed93202e4e30f980c2967c00e6044c4',1,'xt::xstrided_view::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xstrided__view.html#a4a944cdaddacef0710cc4e601d95a1c8',1,'xt::xstrided_view::unchecked(Args... args) -> reference'],['../classxt_1_1xview.html#a8860cdb3a358dfee3af68fafdb5c7010',1,'xt::xview::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xview.html#afc28e491c5db09bcfe54e5eea176a5ec',1,'xt::xview::unchecked(Args... args) -> reference'],['../classxt_1_1xstrided__view__base.html#a4ed93202e4e30f980c2967c00e6044c4',1,'xt::xstrided_view_base::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xstrided__view__base.html#a4a944cdaddacef0710cc4e601d95a1c8',1,'xt::xstrided_view_base::unchecked(Args... args) -> reference'],['../classxt_1_1xrepeat.html#af545974287e021de5253fcfd602d2f6a',1,'xt::xrepeat::unchecked()'],['../classxt_1_1xreducer.html#a55be3ba3c0268968d7c6efef7621e3e4',1,'xt::xreducer::unchecked()'],['../classxt_1_1xoptional__assembly__base.html#a53735c2da40556583e93ec94c618b325',1,'xt::xoptional_assembly_base::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xoptional__assembly__base.html#afca63e0308421875f479c8373eea66d3',1,'xt::xoptional_assembly_base::unchecked(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a1f080554ead02ec72ee2e53691b2d793',1,'xt::xmasked_view::unchecked()'],['../classxt_1_1xgenerator.html#af95208893a8690ab495c3ac4f570d590',1,'xt::xgenerator::unchecked()'],['../classxt_1_1xfunctor__applier__base.html#a5b9d6e6df937ed2b534d8a68c0d4ceff',1,'xt::xfunctor_applier_base::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xfunctor__applier__base.html#ad86eba7c460e85d7e6bd558091531376',1,'xt::xfunctor_applier_base::unchecked(Args... args) -> reference'],['../classxt_1_1xfunction.html#ab99bdf99fd4e28328b2f4a24d6f763c2',1,'xt::xfunction::unchecked()'],['../classxt_1_1xcontainer.html#aa493271826c9bc5298a556949755e84a',1,'xt::xcontainer::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xcontainer.html#ac47ed05e4abb19044244cb26307cf8dc',1,'xt::xcontainer::unchecked(Args... args) -> reference'],['../classxt_1_1xbroadcast.html#aecb99b5176966ab47f4dfe2b66385d56',1,'xt::xbroadcast::unchecked()'],['../classxt_1_1xindex__view.html#a9ff5247ea89e3a5ed114685960edd042',1,'xt::xindex_view::unchecked(size_type idx) const'],['../classxt_1_1xindex__view.html#aa6c15d2a26e0a3a993332606bb3d8ddc',1,'xt::xindex_view::unchecked(size_type idx)']]], + ['unique_2',['unique',['../group__xt__xsort.html#ga2b46eaf022e2fcd9e82ae5223fdd3ed5',1,'xt']]], + ['unwrap_3',['unwrap',['../group__basic__functions.html#gaeb6f80a96d7a1da033b737b34acaeb74',1,'xt']]], + ['use_5fcount_4',['use_count',['../classxt_1_1xshared__expression.html#ade23a460bdd1eb6102372076493f719e',1,'xt::xshared_expression']]], + ['uvector_5',['uvector',['../classxt_1_1uvector.html',1,'xt']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..5c166a209 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['valid_0',['valid',['../structxt_1_1convolve__mode_1_1valid.html',1,'xt::convolve_mode']]], + ['value_1',['value',['../classxt_1_1xmasked__view.html#a888a7481ce4e40148e55a280dd2d721e',1,'xt::xmasked_view::value() noexcept'],['../classxt_1_1xmasked__view.html#a8c5a06d1b2b6f5aa3f08ac36dc6956f8',1,'xt::xmasked_view::value() const noexcept'],['../classxt_1_1xoptional__assembly__base.html#a5b5b3c3f0201b416989eb3cc388c9ea2',1,'xt::xoptional_assembly_base::value() noexcept'],['../classxt_1_1xoptional__assembly__base.html#ad6761e5fda241e0eed545c4b545d9f1c',1,'xt::xoptional_assembly_base::value() const noexcept']]], + ['variance_2',['variance',['../group__red__functions.html#ga7001a4fe6acde5968aa526166659a5fa',1,'xt']]], + ['view_3',['view',['../namespacext.html#aedc2027ff309134dff5b0720699c5ffa',1,'xt']]], + ['view_5ftemporary_5ftype_4',['view_temporary_type',['../structxt_1_1view__temporary__type.html',1,'xt']]], + ['visible_5',['visible',['../classxt_1_1xmasked__view.html#a420f33aa357210c322d5d34f06c6b81e',1,'xt::xmasked_view::visible() noexcept'],['../classxt_1_1xmasked__view.html#ae0e58b3d80d80523a86ee38b97550c68',1,'xt::xmasked_view::visible() const noexcept']]], + ['vsplit_6',['vsplit',['../group__xt__xmanipulation.html#gad25f3a38510304cf1e3489748a43812c',1,'xt']]], + ['vstack_7',['vstack',['../namespacext.html#a87a9e875318fc87aba41154dddee7c60',1,'xt']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 000000000..089100675 --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['weibull_0',['weibull',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda17198fea0bd47a1170b57db7db9e6060',1,'xt']]], + ['where_1',['where',['../group__logical__operators.html#gabe2a59ff19cc1341bdaf0f833793cbd5',1,'xt::where(E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< detail::conditional_ternary, E1, E2, E3 >'],['../group__logical__operators.html#gad36802fb44a519f60e8c2d20ab5b6ef8',1,'xt::where(const T &condition)']]] +]; diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 000000000..e8527f41c --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,438 @@ +var searchData= +[ + ['xaccessible_0',['xaccessible',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_1',['xaccessible< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_2',['xaccessible< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_3',['xaccessible< xchunked_array< chunk_storage > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_4',['xaccessible< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_5',['xaccessible< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_6',['xaccessible< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_7',['xaccessible< xfunctor_adaptor< F, CT > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_8',['xaccessible< xfunctor_view< F, CT > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_9',['xaccessible< xmasked_view< CTD, CTM > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_10',['xaccessible< xreducer< F, CT, X, O > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xscalar_3c_20ct_20_3e_20_3e_11',['xaccessible< xscalar< CT > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_12',['xaccessible< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_13',['xaccessible< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_14',['xaccessible< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_15',['xaccessible< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_16',['xaccessible< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_17',['xaccessible< xview< CT, S... > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccumulator_5ffunctor_18',['xaccumulator_functor',['../structxt_1_1xaccumulator__functor.html',1,'xt']]], + ['xall_19',['xall',['../classxt_1_1xall.html',1,'xt']]], + ['xall_5ftag_20',['xall_tag',['../structxt_1_1xall__tag.html',1,'xt']]], + ['xarray_21',['xarray',['../namespacext.html#a26ed1046ec70cca4784f7eb14ad7c7e0',1,'xt']]], + ['xarray_5fadaptor_22',['xarray_adaptor',['../classxt_1_1xarray__adaptor.html#a7f70baf14dbcdfeffa82a4dc56d995e4',1,'xt::xarray_adaptor::xarray_adaptor(const storage_type &storage)'],['../classxt_1_1xarray__adaptor.html#a04e029bca1b4fbf0bb361898b93182fc',1,'xt::xarray_adaptor::xarray_adaptor(D &&storage, const shape_type &shape, layout_type l=L)'],['../classxt_1_1xarray__adaptor.html#a32fe6b670e042fff5d9a1f7c4d99c125',1,'xt::xarray_adaptor::xarray_adaptor(D &&storage, const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xarray__adaptor.html#acc36cdfcb52803d3996a97569929eb72',1,'xt::xarray_adaptor::xarray_adaptor(storage_type &&storage)'],['../classxt_1_1xarray__adaptor.html',1,'xt::xarray_adaptor< EC, L, SC, Tag >']]], + ['xarray_5fadaptor_5fbase_3c_20ec_2c_20l_2c_20sc_2c_20xoptional_5fexpression_5ftag_20_3e_23',['xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >',['../structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xarray_5fadaptor_5foptional_5ftraits_24',['xarray_adaptor_optional_traits',['../structxt_1_1extension_1_1xarray__adaptor__optional__traits.html',1,'xt::extension']]], + ['xarray_5fcontainer_25',['xarray_container',['../classxt_1_1xarray__container.html',1,'xt::xarray_container< EC, L, SC, Tag >'],['../classxt_1_1xarray__container.html#aad2ebb4b2fa3a2a3a33a8a57b6bfe60a',1,'xt::xarray_container::xarray_container(const xexpression< E > &e)'],['../classxt_1_1xarray__container.html#a44069c72b35f79263d7e24b6de2c4262',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 5 > t)'],['../classxt_1_1xarray__container.html#aaac4e823fd41ff9e9801a3cd8b1b5f6c',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 4 > t)'],['../classxt_1_1xarray__container.html#aa7107f45d9ee3d9bb7a4a65f7c240edb',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 3 > t)'],['../classxt_1_1xarray__container.html#a23f21da84072d9319fc8c826d98fb1de',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 2 > t)'],['../classxt_1_1xarray__container.html#a9cd19d110d8063589c6f6c08a44af6ad',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 1 > t)'],['../classxt_1_1xarray__container.html#a77e6553e8d27386c45f4fe7e80017e5c',1,'xt::xarray_container::xarray_container(const value_type &t)'],['../classxt_1_1xarray__container.html#a9e8b9a74e75fd76352d23346fa69a5c6',1,'xt::xarray_container::xarray_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)'],['../classxt_1_1xarray__container.html#a020df69d60ce91531bc3cf31af0b97ce',1,'xt::xarray_container::xarray_container(const shape_type &shape, const strides_type &strides, const_reference value)'],['../classxt_1_1xarray__container.html#a0ca205f5f86d10d73b87b1d3ea7e6297',1,'xt::xarray_container::xarray_container(const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xarray__container.html#a72aad798502aefff1285aa6f46941e9c',1,'xt::xarray_container::xarray_container(const shape_type &shape, const_reference value, layout_type l=L)'],['../classxt_1_1xarray__container.html#a6b738f9e83ff453355414de037099d8c',1,'xt::xarray_container::xarray_container(const shape_type &shape, layout_type l=L)'],['../classxt_1_1xarray__container.html#ae5c1e535231ddffdb7783d1445ffd66d',1,'xt::xarray_container::xarray_container()']]], + ['xarray_5fcontainer_5fbase_26',['xarray_container_base',['../structxt_1_1extension_1_1xarray__container__base.html',1,'xt::extension']]], + ['xarray_5fcontainer_5fbase_3c_20ec_2c_20l_2c_20sc_2c_20xoptional_5fexpression_5ftag_20_3e_27',['xarray_container_base< EC, L, SC, xoptional_expression_tag >',['../structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xarray_5fcontainer_5fbase_3c_20ec_2c_20l_2c_20sc_2c_20xtensor_5fexpression_5ftag_20_3e_28',['xarray_container_base< EC, L, SC, xtensor_expression_tag >',['../structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['xarray_5fcontainer_5foptional_5ftraits_29',['xarray_container_optional_traits',['../structxt_1_1extension_1_1xarray__container__optional__traits.html',1,'xt::extension']]], + ['xarray_5foptional_30',['xarray_optional',['../namespacext.html#a2a43cfb1b205ffea56a580218ff20455',1,'xt']]], + ['xarray_5foptional_5ftraits_31',['xarray_optional_traits',['../structxt_1_1extension_1_1xarray__optional__traits.html',1,'xt::extension']]], + ['xarray_5fpointer_32',['xarray_pointer',['../group__xt__xadapt.html#gab482c333e050233e9a190366730b552c',1,'xt']]], + ['xassign_5ftraits_33',['xassign_traits',['../classxt_1_1xassign__traits.html',1,'xt']]], + ['xaxis_5fiterator_34',['xaxis_iterator',['../classxt_1_1xaxis__iterator.html#aacf91594c4a97e2811691d5678a95e4e',1,'xt::xaxis_iterator::xaxis_iterator(CTA &&e, size_type axis, size_type index, size_type offset)'],['../classxt_1_1xaxis__iterator.html#a27574105e56e37a1986b8cb5a141a9ea',1,'xt::xaxis_iterator::xaxis_iterator(CTA &&e, size_type axis)'],['../classxt_1_1xaxis__iterator.html',1,'xt::xaxis_iterator< CT >']]], + ['xaxis_5fslice_5fiterator_35',['xaxis_slice_iterator',['../classxt_1_1xaxis__slice__iterator.html#a0817357b924fd7c356a2a2f252fcb323',1,'xt::xaxis_slice_iterator::xaxis_slice_iterator(CTA &&e, size_type axis, size_type index, size_type offset)'],['../classxt_1_1xaxis__slice__iterator.html#af741f5bf73967431bc0aba068da8fada',1,'xt::xaxis_slice_iterator::xaxis_slice_iterator(CTA &&e, size_type axis)'],['../classxt_1_1xaxis__slice__iterator.html',1,'xt::xaxis_slice_iterator< CT >']]], + ['xblockwise_5freducer_36',['xblockwise_reducer',['../classxt_1_1xblockwise__reducer.html',1,'xt']]], + ['xbounded_5fiterator_37',['xbounded_iterator',['../classxt_1_1xbounded__iterator.html',1,'xt']]], + ['xbroadcast_38',['xbroadcast',['../classxt_1_1xbroadcast.html',1,'xt::xbroadcast< CT, X >'],['../classxt_1_1xbroadcast.html#aebbad01548cd2a4f5955c20f813b6314',1,'xt::xbroadcast::xbroadcast(CTA &&e, const S &s)'],['../classxt_1_1xbroadcast.html#ad96d515ec253f2745da1ccd7cbf44c97',1,'xt::xbroadcast::xbroadcast(CTA &&e, shape_type &&s)']]], + ['xbroadcast_5fbase_39',['xbroadcast_base',['../structxt_1_1extension_1_1xbroadcast__base.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_40',['xbroadcast_base_impl',['../structxt_1_1extension_1_1xbroadcast__base__impl.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20x_20_3e_41',['xbroadcast_base_impl< xexpression_tag_t< CT >, CT, X >',['../structxt_1_1extension_1_1xbroadcast__base__impl.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_42',['xbroadcast_base_impl< xoptional_expression_tag, CT, X >',['../structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_43',['xbroadcast_base_impl< xtensor_expression_tag, CT, X >',['../structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xbroadcast_5foptional_44',['xbroadcast_optional',['../classxt_1_1extension_1_1xbroadcast__optional.html',1,'xt::extension']]], + ['xbuffer_5fadaptor_45',['xbuffer_adaptor',['../classxt_1_1xbuffer__adaptor.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_46',['xbuffer_adaptor_base',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_47',['xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_48',['xbuffer_adaptor_base< xiterator_adaptor< I, CI > >',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_49',['xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xchunk_5fiterator_50',['xchunk_iterator',['../classxt_1_1xchunk__iterator.html',1,'xt']]], + ['xchunked_5farray_51',['xchunked_array',['../classxt_1_1xchunked__array.html',1,'xt']]], + ['xchunked_5fassigner_52',['xchunked_assigner',['../classxt_1_1xchunked__assigner.html',1,'xt']]], + ['xchunked_5fsemantic_53',['xchunked_semantic',['../classxt_1_1xchunked__semantic.html',1,'xt']]], + ['xchunked_5fsemantic_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_54',['xchunked_semantic< xchunked_array< chunk_storage > >',['../classxt_1_1xchunked__semantic.html',1,'xt']]], + ['xchunked_5fview_55',['xchunked_view',['../classxt_1_1xchunked__view.html',1,'xt']]], + ['xchunked_5fview_3c_20const_20std_3a_3adecay_5ft_3c_20ct_20_3e_20_26_20_3e_56',['xchunked_view< const std::decay_t< CT > & >',['../classxt_1_1xchunked__view.html',1,'xt']]], + ['xclosure_57',['xclosure',['../structxt_1_1xclosure.html',1,'xt']]], + ['xclosure_3c_20e_2c_20disable_5fxexpression_3c_20std_3a_3adecay_5ft_3c_20e_20_3e_20_3e_20_3e_58',['xclosure< E, disable_xexpression< std::decay_t< E > > >',['../structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html',1,'xt']]], + ['xclosure_3c_20xshared_5fexpression_3c_20e_20_3e_2c_20std_3a_3aenable_5fif_5ft_3c_20true_20_3e_20_3e_59',['xclosure< xshared_expression< E >, std::enable_if_t< true > >',['../structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html',1,'xt']]], + ['xconst_5faccessible_60',['xconst_accessible',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_61',['xconst_accessible< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_62',['xconst_accessible< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_63',['xconst_accessible< xbroadcast< CT, X > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_64',['xconst_accessible< xchunked_array< chunk_storage > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_65',['xconst_accessible< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_66',['xconst_accessible< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_67',['xconst_accessible< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_68',['xconst_accessible< xfunction< F, CT... > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_69',['xconst_accessible< xfunctor_adaptor< F, CT > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_70',['xconst_accessible< xfunctor_view< F, CT > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_71',['xconst_accessible< xgenerator< F, R, S > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_72',['xconst_accessible< xmasked_view< CTD, CTM > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_73',['xconst_accessible< xreducer< F, CT, X, O > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_74',['xconst_accessible< xrepeat< CT, R > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xscalar_3c_20ct_20_3e_20_3e_75',['xconst_accessible< xscalar< CT > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_76',['xconst_accessible< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_77',['xconst_accessible< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_78',['xconst_accessible< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_79',['xconst_accessible< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_80',['xconst_accessible< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_81',['xconst_accessible< xview< CT, S... > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5fiterable_82',['xconst_iterable',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_83',['xconst_iterable< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_84',['xconst_iterable< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_85',['xconst_iterable< xbroadcast< CT, X > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_86',['xconst_iterable< xchunked_array< chunk_storage > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_87',['xconst_iterable< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_88',['xconst_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_89',['xconst_iterable< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_90',['xconst_iterable< xfunction< F, CT... > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_91',['xconst_iterable< xgenerator< F, R, S > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_92',['xconst_iterable< xindex_view< CT, I > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_93',['xconst_iterable< xmasked_view< CTD, CTM > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_94',['xconst_iterable< xoptional_assembly< VE, FE > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_95',['xconst_iterable< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_96',['xconst_iterable< xreducer< F, CT, X, O > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_97',['xconst_iterable< xrepeat< CT, R > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xscalar_3c_20ct_20_3e_20_3e_98',['xconst_iterable< xscalar< CT > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_99',['xconst_iterable< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_100',['xconst_iterable< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_101',['xconst_iterable< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xcontainer_102',['xcontainer',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_103',['xcontainer< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_104',['xcontainer< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_105',['xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_106',['xcontainer< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_107',['xcontainer< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_108',['xcontainer< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_109',['xcontainer< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_110',['xcontainer_inner_types',['../structxt_1_1xcontainer__inner__types.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_111',['xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_112',['xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_113',['xcontainer_inner_types< xbroadcast< CT, X > >',['../structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_114',['xcontainer_inner_types< xchunked_array< chunk_storage > >',['../structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_115',['xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >',['../structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_116',['xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_117',['xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_118',['xcontainer_inner_types< xfunction< F, CT... > >',['../structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_119',['xcontainer_inner_types< xfunctor_adaptor< F, CT > >',['../structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_120',['xcontainer_inner_types< xfunctor_view< F, CT > >',['../structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xgenerator_3c_20c_2c_20r_2c_20s_20_3e_20_3e_121',['xcontainer_inner_types< xgenerator< C, R, S > >',['../structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_122',['xcontainer_inner_types< xindex_view< CT, I > >',['../structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_123',['xcontainer_inner_types< xmasked_view< CTD, CTM > >',['../structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_124',['xcontainer_inner_types< xoptional_assembly< VE, FE > >',['../structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_125',['xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >',['../structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_126',['xcontainer_inner_types< xreducer< F, CT, X, O > >',['../structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_127',['xcontainer_inner_types< xrepeat< CT, R > >',['../structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xscalar_3c_20ct_20_3e_20_3e_128',['xcontainer_inner_types< xscalar< CT > >',['../structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_129',['xcontainer_inner_types< xstrided_view< CT, S, L, FST > >',['../structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_130',['xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_131',['xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_132',['xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_133',['xcontainer_inner_types< xview< CT, S... > >',['../structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_134',['xcontainer_iterable_types',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_135',['xcontainer_iterable_types< xarray_adaptor< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_136',['xcontainer_iterable_types< xarray_container< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_137',['xcontainer_iterable_types< xfixed_adaptor< EC, S, L, SH, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_138',['xcontainer_iterable_types< xfixed_container< ET, S, L, SH, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_139',['xcontainer_iterable_types< xtensor_adaptor< EC, N, L, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_140',['xcontainer_iterable_types< xtensor_container< EC, N, L, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_141',['xcontainer_iterable_types< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5foptional_5fbase_142',['xcontainer_optional_base',['../classxt_1_1extension_1_1xcontainer__optional__base.html',1,'xt::extension']]], + ['xcontainer_5fsemantic_143',['xcontainer_semantic',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_144',['xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_145',['xcontainer_semantic< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_146',['xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_147',['xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_148',['xcontainer_semantic< xfunctor_adaptor< F, CT > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_149',['xcontainer_semantic< xoptional_assembly< VE, FE > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_150',['xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_151',['xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_152',['xcontainer_semantic< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontiguous_5fiterable_153',['xcontiguous_iterable',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_154',['xcontiguous_iterable< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_155',['xcontiguous_iterable< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_156',['xcontiguous_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_157',['xcontiguous_iterable< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_158',['xcontiguous_iterable< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_159',['xcontiguous_iterable< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_160',['xcontiguous_iterable< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcsv_5fconfig_161',['xcsv_config',['../structxt_1_1xcsv__config.html',1,'xt']]], + ['xdrop_5fslice_162',['xdrop_slice',['../classxt_1_1xdrop__slice.html',1,'xt']]], + ['xdummy_5fiterator_163',['xdummy_iterator',['../classxt_1_1xdummy__iterator.html',1,'xt']]], + ['xdynamic_5fview_164',['xdynamic_view',['../classxt_1_1xdynamic__view.html',1,'xt']]], + ['xdynamic_5fview_5fbase_165',['xdynamic_view_base',['../structxt_1_1extension_1_1xdynamic__view__base.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_166',['xdynamic_view_base_impl',['../structxt_1_1extension_1_1xdynamic__view__base__impl.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_167',['xdynamic_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >',['../structxt_1_1extension_1_1xdynamic__view__base__impl.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_168',['xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_169',['xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xdynamic_5fview_5foptional_170',['xdynamic_view_optional',['../classxt_1_1extension_1_1xdynamic__view__optional.html',1,'xt::extension']]], + ['xellipsis_5ftag_171',['xellipsis_tag',['../structxt_1_1xellipsis__tag.html',1,'xt']]], + ['xexpression_172',['xexpression',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_173',['xexpression< xbroadcast< CT, X > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_174',['xexpression< xfunction< F, CT... > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_175',['xexpression< xgenerator< F, R, S > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_176',['xexpression< xreducer< F, CT, X, O > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_177',['xexpression< xrepeat< CT, R > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xscalar_3c_20ct_20_3e_20_3e_178',['xexpression< xscalar< CT > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xshared_5fexpression_3c_20e_20_3e_20_3e_179',['xexpression< xshared_expression< E > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_5fassigner_180',['xexpression_assigner',['../classxt_1_1xexpression__assigner.html',1,'xt']]], + ['xexpression_5fassigner_5fbase_181',['xexpression_assigner_base',['../classxt_1_1xexpression__assigner__base.html',1,'xt']]], + ['xexpression_5fassigner_5fbase_3c_20xoptional_5fexpression_5ftag_20_3e_182',['xexpression_assigner_base< xoptional_expression_tag >',['../classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html',1,'xt']]], + ['xexpression_5fassigner_5fbase_3c_20xtensor_5fexpression_5ftag_20_3e_183',['xexpression_assigner_base< xtensor_expression_tag >',['../classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html',1,'xt']]], + ['xexpression_5fholder_184',['xexpression_holder',['../classxt_1_1xexpression__holder.html',1,'xt']]], + ['xexpression_5ftag_185',['xexpression_tag',['../structxt_1_1xexpression__tag.html',1,'xt']]], + ['xfiltration_186',['xfiltration',['../classxt_1_1xfiltration.html#a70544dbbc899cd02b70dc5c473bffd02',1,'xt::xfiltration::xfiltration()'],['../classxt_1_1xfiltration.html',1,'xt::xfiltration< ECT, CCT >']]], + ['xfixed_5fadaptor_187',['xfixed_adaptor',['../classxt_1_1xfixed__adaptor.html#ab8855d521c67f4885638ab9d9108b36b',1,'xt::xfixed_adaptor::xfixed_adaptor(D &&data)'],['../classxt_1_1xfixed__adaptor.html#adb3ce51eb417f3407c5b95d271c3f39c',1,'xt::xfixed_adaptor::xfixed_adaptor(const storage_type &data)'],['../classxt_1_1xfixed__adaptor.html',1,'xt::xfixed_adaptor< EC, S, L, SH, Tag >'],['../classxt_1_1xfixed__adaptor.html#a4d68ba3b03788fbe1b70a7d6dce4040c',1,'xt::xfixed_adaptor::xfixed_adaptor()']]], + ['xfixed_5fcontainer_188',['xfixed_container',['../classxt_1_1xfixed__container.html#a41af8b86cc7d6df8d5713c29e404d4ab',1,'xt::xfixed_container::xfixed_container()'],['../classxt_1_1xfixed__container.html',1,'xt::xfixed_container< ET, S, L, SH, Tag >'],['../classxt_1_1xfixed__container.html#a0ddc275300f31caf95233120272df975',1,'xt::xfixed_container::xfixed_container(const xexpression< E > &e)'],['../classxt_1_1xfixed__container.html#a5b52ede597fcbbe1904d878b01b46877',1,'xt::xfixed_container::xfixed_container(nested_initializer_list_t< value_type, N > t)'],['../classxt_1_1xfixed__container.html#a004eaea5e4f5ef36e227b2673c11b4cd',1,'xt::xfixed_container::xfixed_container(const inner_shape_type &shape, layout_type l=L)']]], + ['xfunction_189',['xfunction',['../classxt_1_1xfunction.html#a08a95dc45143b002b300a6634774940d',1,'xt::xfunction::xfunction()'],['../classxt_1_1xfunction.html',1,'xt::xfunction< F, CT >'],['../classxt_1_1xfunction.html#a63fa0bf1c338ba8ff119d97dc08de3b8',1,'xt::xfunction::xfunction()']]], + ['xfunction_5fbase_190',['xfunction_base',['../structxt_1_1extension_1_1xfunction__base.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_191',['xfunction_base_impl',['../structxt_1_1extension_1_1xfunction__base__impl.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_2e_2e_2e_20_3e_2c_20f_2c_20ct_2e_2e_2e_20_3e_192',['xfunction_base_impl< xexpression_tag_t< CT... >, F, CT... >',['../structxt_1_1extension_1_1xfunction__base__impl.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20ct_2e_2e_2e_20_3e_193',['xfunction_base_impl< xoptional_expression_tag, F, CT... >',['../structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20f_2c_20ct_2e_2e_2e_20_3e_194',['xfunction_base_impl< xtensor_expression_tag, F, CT... >',['../structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html',1,'xt::extension']]], + ['xfunction_5fcache_195',['xfunction_cache',['../structxt_1_1xfunction__cache.html',1,'xt']]], + ['xfunction_5fcache_3c_20detail_3a_3apromote_5findex_3c_20typename_20std_3a_3adecay_5ft_3c_20ct_20_3e_3a_3ashape_5ftype_2e_2e_2e_20_3e_20_3e_196',['xfunction_cache< detail::promote_index< typename std::decay_t< CT >::shape_type... > >',['../structxt_1_1xfunction__cache.html',1,'xt']]], + ['xfunction_5fiterator_197',['xfunction_iterator',['../classxt_1_1xfunction__iterator.html',1,'xt']]], + ['xfunction_5foptional_5fbase_198',['xfunction_optional_base',['../classxt_1_1extension_1_1xfunction__optional__base.html',1,'xt::extension']]], + ['xfunction_5fstepper_199',['xfunction_stepper',['../classxt_1_1xfunction__stepper.html',1,'xt']]], + ['xfunctor_5fadaptor_200',['xfunctor_adaptor',['../classxt_1_1xfunctor__adaptor.html',1,'xt']]], + ['xfunctor_5fapplier_5fbase_201',['xfunctor_applier_base',['../classxt_1_1xfunctor__applier__base.html#a41aab520408c7c729ae637b19d09be2b',1,'xt::xfunctor_applier_base::xfunctor_applier_base(undecay_expression) noexcept'],['../classxt_1_1xfunctor__applier__base.html#ac3b9ef5e95e61582edaff797f2ec7e1b',1,'xt::xfunctor_applier_base::xfunctor_applier_base(Func &&, E &&) noexcept'],['../classxt_1_1xfunctor__applier__base.html',1,'xt::xfunctor_applier_base< D >']]], + ['xfunctor_5fapplier_5fbase_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_202',['xfunctor_applier_base< xfunctor_adaptor< F, CT > >',['../classxt_1_1xfunctor__applier__base.html',1,'xt']]], + ['xfunctor_5fapplier_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_203',['xfunctor_applier_base< xfunctor_view< F, CT > >',['../classxt_1_1xfunctor__applier__base.html',1,'xt']]], + ['xfunctor_5fiterator_204',['xfunctor_iterator',['../classxt_1_1xfunctor__iterator.html',1,'xt']]], + ['xfunctor_5fstepper_205',['xfunctor_stepper',['../classxt_1_1xfunctor__stepper.html',1,'xt']]], + ['xfunctor_5fview_206',['xfunctor_view',['../classxt_1_1xfunctor__view.html',1,'xt']]], + ['xfunctor_5fview_5fbase_207',['xfunctor_view_base',['../structxt_1_1extension_1_1xfunctor__view__base.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_208',['xfunctor_view_base_impl',['../structxt_1_1extension_1_1xfunctor__view__base__impl.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20f_2c_20ct_20_3e_209',['xfunctor_view_base_impl< xexpression_tag_t< CT >, F, CT >',['../structxt_1_1extension_1_1xfunctor__view__base__impl.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20ct_20_3e_210',['xfunctor_view_base_impl< xoptional_expression_tag, F, CT >',['../structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20f_2c_20ct_20_3e_211',['xfunctor_view_base_impl< xtensor_expression_tag, F, CT >',['../structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xfunctor_5fview_5foptional_212',['xfunctor_view_optional',['../classxt_1_1extension_1_1xfunctor__view__optional.html',1,'xt::extension']]], + ['xfunctor_5fview_5ftemporary_5ftype_213',['xfunctor_view_temporary_type',['../structxt_1_1xfunctor__view__temporary__type.html',1,'xt']]], + ['xgenerator_214',['xgenerator',['../classxt_1_1xgenerator.html#a6f07eda985bc0f0e510a44afa3b8899d',1,'xt::xgenerator::xgenerator()'],['../classxt_1_1xgenerator.html',1,'xt::xgenerator< F, R, S >']]], + ['xgenerator_5fbase_215',['xgenerator_base',['../structxt_1_1extension_1_1xgenerator__base.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_216',['xgenerator_base_impl',['../structxt_1_1extension_1_1xgenerator__base__impl.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20r_20_3e_2c_20f_2c_20r_2c_20s_20_3e_217',['xgenerator_base_impl< xexpression_tag_t< R >, F, R, S >',['../structxt_1_1extension_1_1xgenerator__base__impl.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20r_2c_20s_20_3e_218',['xgenerator_base_impl< xoptional_expression_tag, F, R, S >',['../structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20f_2c_20r_2c_20s_20_3e_219',['xgenerator_base_impl< xtensor_expression_tag, F, R, S >',['../structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html',1,'xt::extension']]], + ['xgenerator_5foptional_220',['xgenerator_optional',['../classxt_1_1extension_1_1xgenerator__optional.html',1,'xt::extension']]], + ['xindex_5fview_221',['xindex_view',['../classxt_1_1xindex__view.html',1,'xt::xindex_view< CT, I >'],['../classxt_1_1xindex__view.html#a0306275ff45341e84fe63836010c7ad5',1,'xt::xindex_view::xindex_view()']]], + ['xindex_5fview_5fbase_222',['xindex_view_base',['../structxt_1_1extension_1_1xindex__view__base.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_223',['xindex_view_base_impl',['../structxt_1_1extension_1_1xindex__view__base__impl.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20i_20_3e_224',['xindex_view_base_impl< xexpression_tag_t< CT >, CT, I >',['../structxt_1_1extension_1_1xindex__view__base__impl.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20i_20_3e_225',['xindex_view_base_impl< xoptional_expression_tag, CT, I >',['../structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20i_20_3e_226',['xindex_view_base_impl< xtensor_expression_tag, CT, I >',['../structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html',1,'xt::extension']]], + ['xindex_5fview_5foptional_227',['xindex_view_optional',['../classxt_1_1extension_1_1xindex__view__optional.html',1,'xt::extension']]], + ['xindexed_5fstepper_228',['xindexed_stepper',['../classxt_1_1xindexed__stepper.html',1,'xt']]], + ['xinitial_229',['xinitial',['../structxt_1_1xinitial.html',1,'xt']]], + ['xiterable_230',['xiterable',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_231',['xiterable< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_232',['xiterable< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_233',['xiterable< xchunked_array< chunk_storage > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_234',['xiterable< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_235',['xiterable< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_236',['xiterable< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_237',['xiterable< xindex_view< CT, I > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_238',['xiterable< xmasked_view< CTD, CTM > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_239',['xiterable< xoptional_assembly< VE, FE > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_240',['xiterable< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xscalar_3c_20ct_20_3e_20_3e_241',['xiterable< xscalar< CT > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_242',['xiterable< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_243',['xiterable< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_244',['xiterable< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_5finner_5ftypes_245',['xiterable_inner_types',['../structxt_1_1xiterable__inner__types.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_246',['xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_247',['xiterable_inner_types< xarray_container< EC, L, SC, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_248',['xiterable_inner_types< xbroadcast< CT, X > >',['../structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_249',['xiterable_inner_types< xchunked_array< chunk_storage > >',['../structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_250',['xiterable_inner_types< xdynamic_view< CT, S, L, FST > >',['../structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_251',['xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_252',['xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_253',['xiterable_inner_types< xfunction< F, CT... > >',['../structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xgenerator_3c_20c_2c_20r_2c_20s_20_3e_20_3e_254',['xiterable_inner_types< xgenerator< C, R, S > >',['../structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_255',['xiterable_inner_types< xindex_view< CT, I > >',['../structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_256',['xiterable_inner_types< xmasked_view< CTD, CTM > >',['../structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_257',['xiterable_inner_types< xoptional_assembly< VE, FE > >',['../structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_258',['xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >',['../structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_259',['xiterable_inner_types< xreducer< F, CT, X, O > >',['../structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_260',['xiterable_inner_types< xrepeat< CT, R > >',['../structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xscalar_3c_20ct_20_3e_20_3e_261',['xiterable_inner_types< xscalar< CT > >',['../structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_262',['xiterable_inner_types< xstrided_view< CT, S, L, FST > >',['../structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_263',['xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_264',['xiterable_inner_types< xtensor_container< EC, N, L, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_265',['xiterable_inner_types< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_266',['xiterable_inner_types< xview< CT, S... > >',['../structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html',1,'xt']]], + ['xiterator_267',['xiterator',['../classxt_1_1xiterator.html',1,'xt']]], + ['xiterator_5fadaptor_268',['xiterator_adaptor',['../classxt_1_1xiterator__adaptor.html',1,'xt']]], + ['xiterator_5fowner_5fadaptor_269',['xiterator_owner_adaptor',['../classxt_1_1xiterator__owner__adaptor.html',1,'xt']]], + ['xkeep_5fslice_270',['xkeep_slice',['../classxt_1_1xkeep__slice.html',1,'xt']]], + ['xmasked_5fvalue_271',['xmasked_value',['../classxt_1_1xmasked__value.html',1,'xt']]], + ['xmasked_5fview_272',['xmasked_view',['../classxt_1_1xmasked__view.html',1,'xt::xmasked_view< CTD, CTM >'],['../classxt_1_1xmasked__view.html#a9c3d8a13f687279e628800050a8d4048',1,'xt::xmasked_view::xmasked_view()']]], + ['xmasked_5fview_5fstepper_273',['xmasked_view_stepper',['../classxt_1_1xmasked__view__stepper.html',1,'xt']]], + ['xmultiindex_5fiterator_274',['xmultiindex_iterator',['../classxt_1_1xmultiindex__iterator.html',1,'xt']]], + ['xnewaxis_275',['xnewaxis',['../classxt_1_1xnewaxis.html',1,'xt']]], + ['xnewaxis_5ftag_276',['xnewaxis_tag',['../structxt_1_1xnewaxis__tag.html',1,'xt']]], + ['xoptional_5fassembly_277',['xoptional_assembly',['../classxt_1_1xoptional__assembly.html#a16611b26c4241fdbbc7e6afcc8a09780',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 5 > t)'],['../classxt_1_1xoptional__assembly.html#ace216a4aee450e4bd52f50b791091d99',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 4 > t)'],['../classxt_1_1xoptional__assembly.html#a251ff352299adb4dd685ae71755c112f',1,'xt::xoptional_assembly::xoptional_assembly(const xexpression< E > &e)'],['../classxt_1_1xoptional__assembly.html#a13b42b1a2ff43f41688d9e9dfecb70ab',1,'xt::xoptional_assembly::xoptional_assembly()'],['../classxt_1_1xoptional__assembly.html#a9148277e3915fdc930d875a7ad4b1156',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, layout_type l=base_type::static_layout)'],['../classxt_1_1xoptional__assembly.html#af86f39ed88264ad627dcc09454b02d3e',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, const value_type &value, layout_type l=base_type::static_layout)'],['../classxt_1_1xoptional__assembly.html#af53e6578e2720b3de87db901d4ef63c0',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xoptional__assembly.html#a91d71b9f5a1c0df8f7f10568a667149c',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, const strides_type &strides, const value_type &value)'],['../classxt_1_1xoptional__assembly.html#a3ded488b5944690be387afa5e35165fb',1,'xt::xoptional_assembly::xoptional_assembly(const VE &ve)'],['../classxt_1_1xoptional__assembly.html#aa525cc23b8a082ca1caf3fafcd321c88',1,'xt::xoptional_assembly::xoptional_assembly(VE &&ve)'],['../classxt_1_1xoptional__assembly.html#a18157a685aad00bd30890b9fe0484628',1,'xt::xoptional_assembly::xoptional_assembly(OVE &&ove, OFE &&ofe)'],['../classxt_1_1xoptional__assembly.html#ae5c0585bcb1ec14efb01b993aa17c9d7',1,'xt::xoptional_assembly::xoptional_assembly(const value_type &value)'],['../classxt_1_1xoptional__assembly.html#a2454d878267c2ac27179ef2ca365d48e',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 1 > t)'],['../classxt_1_1xoptional__assembly.html#ae13345d56e1c0e1b2a21290a66c8aa46',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 2 > t)'],['../classxt_1_1xoptional__assembly.html#a61dd51f2bf58adb62310d475253fc5b5',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 3 > t)'],['../classxt_1_1xoptional__assembly.html',1,'xt::xoptional_assembly< VE, FE >']]], + ['xoptional_5fassembly_5fadaptor_278',['xoptional_assembly_adaptor',['../classxt_1_1xoptional__assembly__adaptor.html#a49ed47cb40d83d823a72f7907f4b4430',1,'xt::xoptional_assembly_adaptor::xoptional_assembly_adaptor()'],['../classxt_1_1xoptional__assembly__adaptor.html',1,'xt::xoptional_assembly_adaptor< VEC, FEC >']]], + ['xoptional_5fassembly_5fbase_279',['xoptional_assembly_base',['../classxt_1_1xoptional__assembly__base.html',1,'xt']]], + ['xoptional_5fassembly_5fbase_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_280',['xoptional_assembly_base< xoptional_assembly< VE, FE > >',['../classxt_1_1xoptional__assembly__base.html',1,'xt']]], + ['xoptional_5fassembly_5fbase_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_281',['xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xoptional__assembly__base.html',1,'xt']]], + ['xoptional_5fassembly_5flinear_5fiterator_282',['xoptional_assembly_linear_iterator',['../classxt_1_1xoptional__assembly__linear__iterator.html',1,'xt']]], + ['xoptional_5fassembly_5flinear_5fiterator_5ftraits_283',['xoptional_assembly_linear_iterator_traits',['../structxt_1_1xoptional__assembly__linear__iterator__traits.html',1,'xt']]], + ['xoptional_5fassembly_5fstepper_284',['xoptional_assembly_stepper',['../classxt_1_1xoptional__assembly__stepper.html',1,'xt']]], + ['xoptional_5fassembly_5fstorage_285',['xoptional_assembly_storage',['../classxt_1_1xoptional__assembly__storage.html',1,'xt']]], + ['xoptional_5fcomparable_286',['xoptional_comparable',['../structxt_1_1xoptional__comparable.html',1,'xt']]], + ['xoptional_5fempty_5fbase_287',['xoptional_empty_base',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20t_3a_3aderived_5ftype_20_3e_288',['xoptional_empty_base< T::derived_type >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_289',['xoptional_empty_base< xbroadcast< CT, X > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_290',['xoptional_empty_base< xdynamic_view< CT, S, L, FST > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_291',['xoptional_empty_base< xfunction< F, CT... > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_292',['xoptional_empty_base< xfunctor_view< F, CT > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_293',['xoptional_empty_base< xgenerator< F, R, S > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_294',['xoptional_empty_base< xindex_view< CT, I > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_295',['xoptional_empty_base< xreducer< F, CT, X, O > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xrepeat_3c_20ct_2c_20x_20_3e_20_3e_296',['xoptional_empty_base< xrepeat< CT, X > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xscalar_3c_20ct_20_3e_20_3e_297',['xoptional_empty_base< xscalar< CT > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_298',['xoptional_empty_base< xstrided_view< CT, S, L, FST > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_299',['xoptional_empty_base< xview< CT, S... > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fexpression_5ftag_300',['xoptional_expression_tag',['../structxt_1_1xoptional__expression__tag.html',1,'xt']]], + ['xproxy_5finner_5ftypes_301',['xproxy_inner_types',['../structxt_1_1xproxy__inner__types.html',1,'xt']]], + ['xrange_302',['xrange',['../classxt_1_1xrange.html',1,'xt']]], + ['xrange_5fadaptor_303',['xrange_adaptor',['../structxt_1_1xrange__adaptor.html',1,'xt']]], + ['xreducer_304',['xreducer',['../classxt_1_1xreducer.html#ac1a504813c1a2d91e1aa5c871bee7a77',1,'xt::xreducer::xreducer()'],['../classxt_1_1xreducer.html',1,'xt::xreducer< F, CT, X, O >']]], + ['xreducer_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20ct_2c_20x_2c_20o_20_3e_305',['xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >',['../structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html',1,'xt::extension']]], + ['xreducer_5ffunctors_306',['xreducer_functors',['../structxt_1_1xreducer__functors.html',1,'xt']]], + ['xreducer_5foptional_307',['xreducer_optional',['../classxt_1_1extension_1_1xreducer__optional.html',1,'xt::extension']]], + ['xreducer_5fshape_5ftype_308',['xreducer_shape_type',['../structxt_1_1xreducer__shape__type.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20fixed_5fshape_3c_20j_2e_2e_2e_20_3e_2c_20o_20_3e_309',['xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >',['../structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3afalse_5ftype_20_3e_310',['xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >',['../structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3atrue_5ftype_20_3e_311',['xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >',['../structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20std_3a_3aarray_3c_20i1_2c_20n1_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3afalse_5ftype_20_3e_312',['xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >',['../structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20std_3a_3aarray_3c_20i1_2c_20n1_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3atrue_5ftype_20_3e_313',['xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >',['../structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20typename_20xexpression_5ftype_3a_3ashape_5ftype_2c_20std_3a_3adecay_5ft_3c_20x_20_3e_2c_20keep_5fdims_20_3e_314',['xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t< X >, keep_dims >',['../structxt_1_1xreducer__shape__type.html',1,'xt']]], + ['xreducer_5fstepper_315',['xreducer_stepper',['../classxt_1_1xreducer__stepper.html',1,'xt']]], + ['xrepeat_316',['xrepeat',['../classxt_1_1xrepeat.html',1,'xt::xrepeat< CT, R >'],['../classxt_1_1xrepeat.html#a8597732ef22eb32ab54d780d1410386f',1,'xt::xrepeat::xrepeat()']]], + ['xrepeat_5fbase_317',['xrepeat_base',['../structxt_1_1extension_1_1xrepeat__base.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_318',['xrepeat_base_impl',['../structxt_1_1extension_1_1xrepeat__base__impl.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20x_20_3e_319',['xrepeat_base_impl< xexpression_tag_t< CT >, CT, X >',['../structxt_1_1extension_1_1xrepeat__base__impl.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_320',['xrepeat_base_impl< xoptional_expression_tag, CT, X >',['../structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_321',['xrepeat_base_impl< xtensor_expression_tag, CT, X >',['../structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xrepeat_5foptional_322',['xrepeat_optional',['../classxt_1_1extension_1_1xrepeat__optional.html',1,'xt::extension']]], + ['xrepeat_5fstepper_323',['xrepeat_stepper',['../classxt_1_1xrepeat__stepper.html',1,'xt']]], + ['xscalar_324',['xscalar',['../classxt_1_1xscalar.html',1,'xt']]], + ['xscalar_5fbase_325',['xscalar_base',['../structxt_1_1extension_1_1xscalar__base.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_326',['xscalar_base_impl',['../structxt_1_1extension_1_1xscalar__base__impl.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_3c_20get_5fexpression_5ftag_5ft_3c_20std_3a_3adecay_5ft_3c_20ct_20_3e_20_3e_2c_20ct_20_3e_327',['xscalar_base_impl< get_expression_tag_t< std::decay_t< CT > >, CT >',['../structxt_1_1extension_1_1xscalar__base__impl.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_20_3e_328',['xscalar_base_impl< xoptional_expression_tag, CT >',['../structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_20_3e_329',['xscalar_base_impl< xtensor_expression_tag, CT >',['../structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xscalar_5foptional_5fbase_330',['xscalar_optional_base',['../classxt_1_1extension_1_1xscalar__optional__base.html',1,'xt::extension']]], + ['xscalar_5foptional_5ftraits_331',['xscalar_optional_traits',['../structxt_1_1extension_1_1xscalar__optional__traits.html',1,'xt::extension']]], + ['xscalar_5fstepper_332',['xscalar_stepper',['../classxt_1_1xscalar__stepper.html',1,'xt']]], + ['xsemantic_5fbase_333',['xsemantic_base',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_334',['xsemantic_base< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_335',['xsemantic_base< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_336',['xsemantic_base< xchunked_array< chunk_storage > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_337',['xsemantic_base< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_338',['xsemantic_base< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_339',['xsemantic_base< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_340',['xsemantic_base< xfunctor_adaptor< F, CT > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_341',['xsemantic_base< xfunctor_view< F, CT > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_342',['xsemantic_base< xindex_view< CT, I > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_343',['xsemantic_base< xmasked_view< CTD, CTM > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_344',['xsemantic_base< xoptional_assembly< VE, FE > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_345',['xsemantic_base< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_346',['xsemantic_base< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_347',['xsemantic_base< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_348',['xsemantic_base< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_349',['xsemantic_base< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_350',['xsemantic_base< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_351',['xsemantic_base< xview< CT, S... > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xshape_352',['xshape',['../namespacext.html#a02b500aab287ebecb4ad1520d2c0972f',1,'xt']]], + ['xsharable_5fexpression_353',['xsharable_expression',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_354',['xsharable_expression< xbroadcast< CT, X > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_355',['xsharable_expression< xfunction< F, CT... > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_356',['xsharable_expression< xgenerator< F, R, S > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_357',['xsharable_expression< xreducer< F, CT, X, O > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_358',['xsharable_expression< xrepeat< CT, R > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xscalar_3c_20ct_20_3e_20_3e_359',['xsharable_expression< xscalar< CT > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xshared_5fexpression_360',['xshared_expression',['../classxt_1_1xshared__expression.html',1,'xt::xshared_expression< E >'],['../classxt_1_1xshared__expression.html#a0eee9f39b506cc2e83b9b4c6dda150cf',1,'xt::xshared_expression::xshared_expression()']]], + ['xslice_361',['xslice',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xall_3c_20t_20_3e_20_3e_362',['xslice< xall< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xdrop_5fslice_3c_20t_20_3e_20_3e_363',['xslice< xdrop_slice< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xfake_5fslice_3c_20t_20_3e_20_3e_364',['xslice< xfake_slice< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xkeep_5fslice_3c_20t_20_3e_20_3e_365',['xslice< xkeep_slice< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xnewaxis_3c_20t_20_3e_20_3e_366',['xslice< xnewaxis< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xrange_3c_20t_20_3e_20_3e_367',['xslice< xrange< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xstepped_5frange_3c_20t_20_3e_20_3e_368',['xslice< xstepped_range< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xstepped_5frange_369',['xstepped_range',['../classxt_1_1xstepped__range.html',1,'xt']]], + ['xstepper_370',['xstepper',['../classxt_1_1xstepper.html',1,'xt']]], + ['xstrided_5fcontainer_371',['xstrided_container',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_372',['xstrided_container< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_373',['xstrided_container< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_374',['xstrided_container< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_375',['xstrided_container< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_376',['xstrided_container< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fslice_5fvector_377',['xstrided_slice_vector',['../namespacext.html#a6e111c2e160e2edb6a2139d16c66d65a',1,'xt']]], + ['xstrided_5fview_378',['xstrided_view',['../classxt_1_1xstrided__view.html#aeaca42937cad665d96b797421f114cca',1,'xt::xstrided_view::xstrided_view()'],['../classxt_1_1xstrided__view.html',1,'xt::xstrided_view< CT, S, L, FST >']]], + ['xstrided_5fview_3c_20ct_2c_20shape_5ftype_20_3e_379',['xstrided_view< CT, shape_type >',['../classxt_1_1xstrided__view.html',1,'xt']]], + ['xstrided_5fview_5fbase_380',['xstrided_view_base',['../structxt_1_1extension_1_1xstrided__view__base.html',1,'xt::extension::xstrided_view_base< CT, S, L, FST >'],['../classxt_1_1xstrided__view__base.html',1,'xt::xstrided_view_base< D >'],['../classxt_1_1xstrided__view__base.html#a395bfaa7afcaf17190eaccebd998e1c4',1,'xt::xstrided_view_base::xstrided_view_base()']]], + ['xstrided_5fview_5fbase_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_381',['xstrided_view_base< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xstrided__view__base.html',1,'xt']]], + ['xstrided_5fview_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_382',['xstrided_view_base< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xstrided__view__base.html',1,'xt']]], + ['xstrided_5fview_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_383',['xstrided_view_base< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xstrided__view__base.html',1,'xt']]], + ['xstrided_5fview_5fbase_5fimpl_384',['xstrided_view_base_impl',['../structxt_1_1extension_1_1xstrided__view__base__impl.html',1,'xt::extension']]], + ['xstrided_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_385',['xstrided_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >',['../structxt_1_1extension_1_1xstrided__view__base__impl.html',1,'xt::extension']]], + ['xstrided_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_386',['xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xstrided_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_387',['xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xstrided_5fview_5foptional_388',['xstrided_view_optional',['../classxt_1_1extension_1_1xstrided__view__optional.html',1,'xt::extension']]], + ['xt_389',['xt',['../namespacext.html',1,'']]], + ['xt_5fxchunked_5farray_390',['Xt_xchunked_array',['../group__xt__xchunked__array.html',1,'']]], + ['xt_5fxcomplex_391',['Xt_xcomplex',['../group__xt__xcomplex.html',1,'']]], + ['xt_5fxeval_392',['Xt_xeval',['../group__xt__xeval.html',1,'']]], + ['xt_5fxfunctor_5fview_393',['Xt_xfunctor_view',['../group__xt__xfunctor__view.html',1,'']]], + ['xt_5fxmanipulation_394',['Xt_xmanipulation',['../group__xt__xmanipulation.html',1,'']]], + ['xtensor_395',['xtensor',['../namespacext.html#a29d0a2d76c0f69cf43aa3b4f55a7a26d',1,'xt']]], + ['xtensor_5fadaptor_396',['xtensor_adaptor',['../classxt_1_1xtensor__adaptor.html#adf38d3f009485bbd13e05a33f3e126ed',1,'xt::xtensor_adaptor::xtensor_adaptor()'],['../classxt_1_1xtensor__adaptor.html',1,'xt::xtensor_adaptor< EC, N, L, Tag >'],['../classxt_1_1xtensor__adaptor.html#a08d8af6b5afb2cf0fdd0fa05ac254066',1,'xt::xtensor_adaptor::xtensor_adaptor(D &&storage, const shape_type &shape, layout_type l=L)'],['../classxt_1_1xtensor__adaptor.html#ada04f10997a9bf3cb9d41ad0a57a071b',1,'xt::xtensor_adaptor::xtensor_adaptor(const storage_type &storage)'],['../classxt_1_1xtensor__adaptor.html#aecf238db1fe9fda0797db5c10ced651b',1,'xt::xtensor_adaptor::xtensor_adaptor(storage_type &&storage)']]], + ['xtensor_5fadaptor_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xoptional_5fexpression_5ftag_20_3e_397',['xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >',['../structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fadaptor_5foptional_5ftraits_398',['xtensor_adaptor_optional_traits',['../structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html',1,'xt::extension']]], + ['xtensor_5fcontainer_399',['xtensor_container',['../classxt_1_1xtensor__container.html',1,'xt::xtensor_container< EC, N, L, Tag >'],['../classxt_1_1xtensor__container.html#aa3a7016797e330568a8b4e5efb6f1c4b',1,'xt::xtensor_container::xtensor_container()'],['../classxt_1_1xtensor__container.html#a5d15ba6d111b6a3aa8403f69d4810c21',1,'xt::xtensor_container::xtensor_container(nested_initializer_list_t< value_type, N > t)'],['../classxt_1_1xtensor__container.html#aed68730c6dae5a8155b2c67140a63368',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, layout_type l=L)'],['../classxt_1_1xtensor__container.html#a76f048f11c76d405e2e93007e74e2c41',1,'xt::xtensor_container::xtensor_container(const xexpression< E > &e)'],['../classxt_1_1xtensor__container.html#ad82e5654ec5c9f23d5801aa5e84d4ddc',1,'xt::xtensor_container::xtensor_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)'],['../classxt_1_1xtensor__container.html#ad411469d4cd09d58528f489dd380de9e',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, const strides_type &strides, const_reference value)'],['../classxt_1_1xtensor__container.html#a27c45be9ad2e0da1a8ad0576c756f39e',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xtensor__container.html#a56f009f40f5acb09f157345a1a174508',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, const_reference value, layout_type l=L)']]], + ['xtensor_5fcontainer_5fbase_400',['xtensor_container_base',['../structxt_1_1extension_1_1xtensor__container__base.html',1,'xt::extension']]], + ['xtensor_5fcontainer_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xoptional_5fexpression_5ftag_20_3e_401',['xtensor_container_base< EC, N, L, xoptional_expression_tag >',['../structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fcontainer_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xtensor_5fexpression_5ftag_20_3e_402',['xtensor_container_base< EC, N, L, xtensor_expression_tag >',['../structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fcontainer_5foptional_5ftraits_403',['xtensor_container_optional_traits',['../structxt_1_1extension_1_1xtensor__container__optional__traits.html',1,'xt::extension']]], + ['xtensor_5fempty_5fbase_404',['xtensor_empty_base',['../structxt_1_1extension_1_1xtensor__empty__base.html',1,'xt::extension']]], + ['xtensor_5fexpression_5ftag_405',['xtensor_expression_tag',['../structxt_1_1xtensor__expression__tag.html',1,'xt']]], + ['xtensor_5ffixed_406',['xtensor_fixed',['../namespacext.html#a85d9917ae5dc2260d2889b7120b69d59',1,'xt']]], + ['xtensor_5foptional_407',['xtensor_optional',['../namespacext.html#a125645152bc5adb33f0fa248e24a9868',1,'xt']]], + ['xtensor_5foptional_5ftraits_408',['xtensor_optional_traits',['../structxt_1_1extension_1_1xtensor__optional__traits.html',1,'xt::extension']]], + ['xtensor_5fpointer_409',['xtensor_pointer',['../group__xt__xadapt.html#gafda572717f1f939d87e173e781280e6e',1,'xt']]], + ['xtensor_5fview_410',['xtensor_view',['../classxt_1_1xtensor__view.html',1,'xt::xtensor_view< EC, N, L, Tag >'],['../classxt_1_1xtensor__view.html#afd854308ee21d8738686c64a14363481',1,'xt::xtensor_view::xtensor_view(D &&storage, const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xtensor__view.html#a70a1388809ad0d8d2869c56f2957fb73',1,'xt::xtensor_view::xtensor_view(D &&storage, const shape_type &shape, layout_type l=L)'],['../classxt_1_1xtensor__view.html#ad26a102ac5d777f6d1b3dfad5a0ef1fa',1,'xt::xtensor_view::xtensor_view(const storage_type &storage)'],['../classxt_1_1xtensor__view.html#a3245a15af4f5a46b7315d4f14a1657d8',1,'xt::xtensor_view::xtensor_view(storage_type &&storage)']]], + ['xtensor_5fview_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xoptional_5fexpression_5ftag_20_3e_411',['xtensor_view_base< EC, N, L, xoptional_expression_tag >',['../structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fview_5foptional_5ftraits_412',['xtensor_view_optional_traits',['../structxt_1_1extension_1_1xtensor__view__optional__traits.html',1,'xt::extension']]], + ['xtuple_413',['xtuple',['../namespacext.html#ae0a17e1fea8041f69a66d80928359150',1,'xt']]], + ['xvectorizer_414',['xvectorizer',['../classxt_1_1xvectorizer.html',1,'xt']]], + ['xview_415',['xview',['../classxt_1_1xview.html#a05ff5fb7b81610a17123a91729525c5c',1,'xt::xview::xview()'],['../classxt_1_1xview.html',1,'xt::xview< CT, S >']]], + ['xview_5fbase_416',['xview_base',['../structxt_1_1extension_1_1xview__base.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_417',['xview_base_impl',['../structxt_1_1extension_1_1xview__base__impl.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20s_2e_2e_2e_20_3e_418',['xview_base_impl< xexpression_tag_t< CT >, CT, S... >',['../structxt_1_1extension_1_1xview__base__impl.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20s_2e_2e_2e_20_3e_419',['xview_base_impl< xoptional_expression_tag, CT, S... >',['../structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20s_2e_2e_2e_20_3e_420',['xview_base_impl< xtensor_expression_tag, CT, S... >',['../structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html',1,'xt::extension']]], + ['xview_5foptional_421',['xview_optional',['../classxt_1_1extension_1_1xview__optional.html',1,'xt::extension']]], + ['xview_5fsemantic_422',['xview_semantic',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_423',['xview_semantic< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_424',['xview_semantic< xfunctor_view< F, CT > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_425',['xview_semantic< xindex_view< CT, I > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_426',['xview_semantic< xmasked_view< CTD, CTM > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_427',['xview_semantic< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_428',['xview_semantic< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_429',['xview_semantic< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_430',['xview_semantic< xview< CT, S... > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fshape_5ftype_431',['xview_shape_type',['../structxt_1_1xview__shape__type.html',1,'xt']]], + ['xview_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20s_2e_2e_2e_20_3e_432',['xview_shape_type< fixed_shape< I... >, S... >',['../structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html',1,'xt']]], + ['xview_5fshape_5ftype_3c_20std_3a_3aarray_3c_20i_2c_20l_20_3e_2c_20s_2e_2e_2e_20_3e_433',['xview_shape_type< std::array< I, L >, S... >',['../structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html',1,'xt']]], + ['xview_5fstepper_434',['xview_stepper',['../classxt_1_1xview__stepper.html',1,'xt']]] +]; diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 000000000..477950168 --- /dev/null +++ b/search/all_17.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['zeros_0',['zeros',['../namespacext.html#a700dc20edb5a81d66d5f89d350dca46f',1,'xt']]], + ['zeros_5flike_1',['zeros_like',['../namespacext.html#a68f9dd4af039df60663af606046a3b73',1,'xt']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..5b3f543e2 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,65 @@ +var searchData= +[ + ['can_5fassign_0',['can_assign',['../structxt_1_1can__assign.html',1,'xt']]], + ['can_5fassign_3c_20ct_2c_20rhs_20_3e_1',['can_assign< CT, RHS >',['../structxt_1_1can__assign.html',1,'xt']]], + ['can_5fassign_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_2c_20rhs_20_3e_2',['can_assign< xstrided_view< CT, S, L, FST >, RHS >',['../structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html',1,'xt']]], + ['cast_3',['cast',['../group__casting__operators.html#ga8d57e20151af53f5ffec3afa6f834cf4',1,'xt']]], + ['casting_20operators_4',['Casting operators',['../group__casting__operators.html',1,'']]], + ['cbegin_5',['cbegin',['../classxt_1_1xfunctor__applier__base.html#a8ff3057fce404b976998dda117b669b4',1,'xt::xfunctor_applier_base::cbegin() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#a358932daa1dd93cc97016f99f24b9be6',1,'xt::xfunctor_applier_base::cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a8e90c4de11331d25fcf27944833280af',1,'xt::xconst_iterable::cbegin() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a212ee6280ccfa5814e4f2c16d1880a84',1,'xt::xconst_iterable::cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a68fed899dcdd91ba8ffe1438f329e0fc',1,'xt::xcontiguous_iterable::cbegin() const noexcept -> select_const_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#aa38da69077754acd8e5daf5f010b8591',1,'xt::xcontiguous_iterable::cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >']]], + ['cbrt_6',['cbrt',['../group__pow__functions.html#gad5ff49e786eca533425d6f230c945184',1,'xt']]], + ['cbrt_5ffun_7',['cbrt_fun',['../structxt_1_1math_1_1cbrt__fun.html',1,'xt::math']]], + ['ceil_8',['ceil',['../group__nearint__functions.html#ga06d485029e29f092e60af3afabd0d154',1,'xt']]], + ['ceil_5ffun_9',['ceil_fun',['../structxt_1_1math_1_1ceil__fun.html',1,'xt::math']]], + ['cend_10',['cend',['../classxt_1_1xconst__iterable.html#abc45bc962caf2ab0978a775836c6b3b8',1,'xt::xconst_iterable::cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a6b266693e1dfec18e39baf2d3b34c20e',1,'xt::xconst_iterable::cend() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a2f1e2287962220db88240b3a0e5cf196',1,'xt::xcontiguous_iterable::cend()'],['../classxt_1_1xfunctor__applier__base.html#a8f40de3c5e5d01ed40bab3060d1ad8e9',1,'xt::xfunctor_applier_base::cend()'],['../classxt_1_1xcontiguous__iterable.html#a93eb3f286ccab925d621ef1b87e6d126',1,'xt::xcontiguous_iterable::cend()'],['../classxt_1_1xfunctor__applier__base.html#a3eb421464069330b8305abdb39b43f24',1,'xt::xfunctor_applier_base::cend()']]], + ['check_20a_20shape_20array_11',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['check_5fstrides_5ffunctor_12',['check_strides_functor',['../structxt_1_1strided__assign__detail_1_1check__strides__functor.html',1,'xt::strided_assign_detail']]], + ['check_5fstrides_5foverlap_13',['check_strides_overlap',['../structxt_1_1check__strides__overlap.html',1,'xt']]], + ['check_5fstrides_5foverlap_3c_20layout_5ftype_3a_3acolumn_5fmajor_20_3e_14',['check_strides_overlap< layout_type::column_major >',['../structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html',1,'xt']]], + ['check_5fstrides_5foverlap_3c_20layout_5ftype_3a_3arow_5fmajor_20_3e_15',['check_strides_overlap< layout_type::row_major >',['../structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html',1,'xt']]], + ['chunked_5farray_16',['chunked_array',['../group__xt__xchunked__array.html#ga2dae3e469de3f3ec7b0d4fc49f82de5c',1,'xt::chunked_array(const xexpression< E > &e, layout_type chunk_memory_layout=::xt::layout_type::row_major)'],['../group__xt__xchunked__array.html#ga7f77d42d689828b2d8e8cdd57c28ee9b',1,'xt::chunked_array(const xexpression< E > &e, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)'],['../group__xt__xchunked__array.html#ga8c408e717c7725211a42114adb4557b2',1,'xt::chunked_array(S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)']]], + ['clamp_5ffun_17',['clamp_fun',['../structxt_1_1math_1_1clamp__fun.html',1,'xt::math']]], + ['classification_20functions_18',['Classification functions',['../group__classif__functions.html',1,'']]], + ['clip_19',['clip',['../group__basic__functions.html#ga951c830ac7329af2e6de1194821c09c4',1,'xt']]], + ['col_20',['col',['../namespacext.html#a5772db4fd8ebf31bc242dd1c2d2ddd1b',1,'xt']]], + ['column_5fmajor_21',['column_major',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a8c23f260f0ec1479d3bfaf3a1305a347',1,'xt']]], + ['common_5fdifference_5ftype_22',['common_difference_type',['../structxt_1_1common__difference__type.html',1,'xt']]], + ['common_5fdifference_5ftype_3c_3e_23',['common_difference_type<>',['../structxt_1_1common__difference__type_3_4.html',1,'xt']]], + ['common_5fsize_5ftype_24',['common_size_type',['../structxt_1_1common__size__type.html',1,'xt']]], + ['common_5fsize_5ftype_3c_3e_25',['common_size_type<>',['../structxt_1_1common__size__type_3_4.html',1,'xt']]], + ['common_5ftensor_5ftype_26',['common_tensor_type',['../structxt_1_1common__tensor__type.html',1,'xt']]], + ['common_5fvalue_5ftype_27',['common_value_type',['../structxt_1_1common__value__type.html',1,'xt']]], + ['comparison_20operators_28',['Comparison operators',['../group__comparison__operators.html',1,'']]], + ['compute_5flayout_29',['compute_layout',['../namespacext.html#a27b28c7951a0991e2e8d39422c2b46b2',1,'xt']]], + ['compute_5fstrides_30',['compute_strides',['../group__xt__xstrides.html#ga3b03c8046a44a3bf2d4800c7296ecefd',1,'xt']]], + ['concatenate_31',['concatenate',['../namespacext.html#a28c746e1a420f706892d9aff3ad0dd30',1,'xt']]], + ['concatenate_5ferror_32',['concatenate_error',['../classxt_1_1concatenate__error.html',1,'xt']]], + ['conditional_5fcast_33',['conditional_cast',['../namespacext.html#af155a86146879d345b8acaa16d48c748',1,'xt']]], + ['conditional_5fcast_5ffunctor_34',['conditional_cast_functor',['../structxt_1_1conditional__cast__functor.html',1,'xt']]], + ['conditional_5fcast_5ffunctor_3c_20false_2c_20t_20_3e_35',['conditional_cast_functor< false, T >',['../structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html',1,'xt']]], + ['conditional_5fcast_5ffunctor_3c_20true_2c_20t_20_3e_36',['conditional_cast_functor< true, T >',['../structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html',1,'xt']]], + ['conj_37',['conj',['../group__xt__xcomplex.html#ga77874ddd5efaa90065d692ee4a6049a2',1,'xt']]], + ['conj_5fimpl_5ffun_38',['conj_impl_fun',['../structxt_1_1math_1_1conj__impl__fun.html',1,'xt::math']]], + ['conjunction_39',['conjunction',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20has_5fdata_5finterface_3c_20std_3a_3adecay_5ft_3c_20e_20_3e_20_3e_2c_20xtl_3a_3anegation_3c_20is_5fflat_5fexpression_5fadaptor_3c_20st_20_3e_20_3e_20_3e_40',['conjunction< has_data_interface< std::decay_t< E > >, xtl::negation< is_flat_expression_adaptor< ST > > >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20has_5fsimd_5ftype_3c_20t_20_3e_2c_20has_5fsimd_5fapply_3c_20f_2c_20xt_5fsimd_3a_3asimd_5ftype_3c_20t_20_3e_20_3e_2c_20has_5fsimd_5finterface_3c_20std_3a_3adecay_5ft_3c_20ct_20_3e_2c_20t_20_3e_2e_2e_2e_20_3e_41',['conjunction< has_simd_type< T >, has_simd_apply< F, xt_simd::simd_type< T > >, has_simd_interface< std::decay_t< CT >, T >... >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20has_5fsimd_5ftype_3c_20t_20_3e_2c_20has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20d_20_3e_3a_3axexpression_5ftype_20_3e_2c_20detail_3a_3ahas_5fsimd_5finterface_5fimpl_3c_20xfunctor_5fapplier_5fbase_3c_20d_20_3e_2c_20t_20_3e_20_3e_42',['conjunction< has_simd_type< T >, has_simd_interface< xfunctor_applier_base< D >::xexpression_type >, detail::has_simd_interface_impl< xfunctor_applier_base< D >, T > >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20xtl_3a_3adisjunction_3c_20is_5fxtensor_5fexpression_3c_20e_20_3e_2c_20is_5fxoptional_5fexpression_3c_20e_20_3e_20_3e_2e_2e_2e_20_3e_43',['conjunction< xtl::disjunction< is_xtensor_expression< E >, is_xoptional_expression< E > >... >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['const_5farray_44',['const_array',['../structxt_1_1const__array.html',1,'xt']]], + ['const_5fvalue_45',['const_value',['../structxt_1_1const__value.html',1,'xt']]], + ['const_5fxclosure_46',['const_xclosure',['../structxt_1_1const__xclosure.html',1,'xt']]], + ['const_5fxclosure_3c_20e_2c_20disable_5fxexpression_3c_20std_3a_3adecay_5ft_3c_20e_20_3e_20_3e_20_3e_47',['const_xclosure< E, disable_xexpression< std::decay_t< E > > >',['../structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html',1,'xt']]], + ['const_5fxclosure_3c_20xshared_5fexpression_3c_20e_20_3e_20_26_2c_20std_3a_3aenable_5fif_5ft_3c_20true_20_3e_20_3e_48',['const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >',['../structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html',1,'xt']]], + ['container_5falignment_49',['container_alignment',['../structxt__simd_1_1container__alignment.html',1,'xt_simd']]], + ['container_5fsimd_5freturn_5ftype_50',['container_simd_return_type',['../structxt_1_1container__simd__return__type.html',1,'xt']]], + ['containers_51',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['cos_52',['cos',['../group__trigo__functions.html#gabf9e140b22bb15dc6add351a7dc06d58',1,'xt']]], + ['cos_5ffun_53',['cos_fun',['../structxt_1_1math_1_1cos__fun.html',1,'xt::math']]], + ['cosh_54',['cosh',['../group__hyper__functions.html#ga4073cdc98201789ff723069156b4d34b',1,'xt']]], + ['cosh_5ffun_55',['cosh_fun',['../structxt_1_1math_1_1cosh__fun.html',1,'xt::math']]], + ['cov_56',['cov',['../namespacext.html#af462add746658517456f484f2e80f609',1,'xt']]], + ['crbegin_57',['crbegin',['../classxt_1_1xfunctor__applier__base.html#a69f77212c23e7a9e20b3774a2e59d3cc',1,'xt::xfunctor_applier_base::crbegin()'],['../classxt_1_1xcontiguous__iterable.html#a74bc69cf0cbfcb235ec3ca8fe75b962a',1,'xt::xcontiguous_iterable::crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#ab363ab0f7faf25ed137b432eeaca6f43',1,'xt::xcontiguous_iterable::crbegin() const noexcept -> select_const_reverse_iterator< L >'],['../classxt_1_1xconst__iterable.html#a6fdbad0911ef9a473a18f109eb33a7ba',1,'xt::xconst_iterable::crbegin()'],['../classxt_1_1xfunctor__applier__base.html#afb3b6d645d6ef28238b50f032f3477f6',1,'xt::xfunctor_applier_base::crbegin()'],['../classxt_1_1xconst__iterable.html#a425b0d85a0ffbb1752c6f45f211c471b',1,'xt::xconst_iterable::crbegin()']]], + ['crend_58',['crend',['../classxt_1_1xcontiguous__iterable.html#a0b849e0972151523dd2bf988fe90c7da',1,'xt::xcontiguous_iterable::crend()'],['../classxt_1_1xfunctor__applier__base.html#ae9c21d7315862c7b30de7f21d5d47bf3',1,'xt::xfunctor_applier_base::crend()'],['../classxt_1_1xcontiguous__iterable.html#aec3659b2356b81494ebfcb5a4bc0482e',1,'xt::xcontiguous_iterable::crend()'],['../classxt_1_1xconst__iterable.html#a851fb3a86aacc069921e8719ec2a21e9',1,'xt::xconst_iterable::crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a804a4b52bdfa60d1855f9081fb11fb13',1,'xt::xconst_iterable::crend() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#a9424de315b89fd06b19590443bc20629',1,'xt::xfunctor_applier_base::crend()']]], + ['cube_59',['cube',['../group__pow__functions.html#ga0d98743e330f7ef3474bd706e186ac44',1,'xt']]], + ['cumprod_60',['cumprod',['../group__acc__functions.html#ga17f752dbaca06608f974c3514509fa7b',1,'xt']]], + ['cumsum_61',['cumsum',['../group__acc__functions.html#gaae1630a06b4975a5a759f2215e738123',1,'xt']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..e6bbb1b40 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['data_0',['data',['../classxt_1_1xcontainer.html#a71249b300db5d1bbab81c1cf6a5843b2',1,'xt::xcontainer::data() noexcept'],['../classxt_1_1xcontainer.html#a4a86bf768a1595ab704198ed8171b07c',1,'xt::xcontainer::data() const noexcept'],['../classxt_1_1xstrided__view__base.html#ad19027df5f748eba80386ae9330fca79',1,'xt::xstrided_view_base::data() noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >'],['../classxt_1_1xstrided__view__base.html#a61c10852dc6045824b3ce20e7516a73f',1,'xt::xstrided_view_base::data() const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >'],['../classxt_1_1xview.html#a22a0d9389c703c1e7e1c38f682b272b7',1,'xt::xview::data()'],['../classxt_1_1xstrided__view.html#ad19027df5f748eba80386ae9330fca79',1,'xt::xstrided_view::data() noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >'],['../classxt_1_1xstrided__view.html#a61c10852dc6045824b3ce20e7516a73f',1,'xt::xstrided_view::data() const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >']]], + ['data_5foffset_1',['data_offset',['../group__xt__xstrides.html#ga3bcc575a1a2870d78b96ff674e700ec7',1,'xt::data_offset()'],['../classxt_1_1xstrided__view.html#ab4fb45717672e9ff1681c360d8199ed5',1,'xt::xstrided_view::data_offset()'],['../classxt_1_1xview.html#a7108799d49ca9fce6494af0e97a10b29',1,'xt::xview::data_offset()'],['../classxt_1_1xstrided__view__base.html#ab4fb45717672e9ff1681c360d8199ed5',1,'xt::xstrided_view_base::data_offset()'],['../classxt_1_1xcontainer.html#a8a1a7ab7c076ce9b48301c42b825a83c',1,'xt::xcontainer::data_offset()']]], + ['decay_5fall_2',['decay_all',['../structxt_1_1decay__all.html',1,'xt']]], + ['decay_5fall_3c_20s_3c_20x_2e_2e_2e_20_3e_20_3e_3',['decay_all< S< X... > >',['../structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html',1,'xt']]], + ['deg2rad_4',['deg2rad',['../structxt_1_1math_1_1deg2rad.html',1,'xt::math::deg2rad'],['../group__basic__functions.html#ga1bc991dd9cc5f66575ab91f87b140577',1,'xt::deg2rad(E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >']]], + ['degrees_5',['degrees',['../group__basic__functions.html#ga4450fb9262604f2ed230e479092e7fdb',1,'xt']]], + ['deprecated_20list_6',['Deprecated List',['../deprecated.html',1,'']]], + ['derived_5fcast_7',['derived_cast',['../classxt_1_1xexpression.html#abf1d99fb093b7bab105ea3d8c4d8a548',1,'xt::xexpression::derived_cast() &&noexcept'],['../classxt_1_1xexpression.html#a96fe8ebe879202c5a053ae5e0067b231',1,'xt::xexpression::derived_cast() &noexcept'],['../classxt_1_1xexpression.html#ab08a20008d390c970283c26f9f882483',1,'xt::xexpression::derived_cast() const &noexcept']]], + ['diag_8',['diag',['../namespacext.html#ad848dae0258c3e5755ff7ee55e7c7b30',1,'xt']]], + ['diagonal_9',['diagonal',['../namespacext.html#a96ad98d837a74211cc0e5f07b85c2414',1,'xt']]], + ['diff_10',['diff',['../group__red__functions.html#gab421eb4d3565597848ec53dad1b0d6c6',1,'xt']]], + ['digitize_11',['digitize',['../namespacext.html#a80fb5a6e58dafe175544508ea913cff0',1,'xt']]], + ['dimension_12',['dimension',['../classxt_1_1xconst__accessible.html#a4b1a7ad9b1f0863c672782e53eed3042',1,'xt::xconst_accessible::dimension()'],['../classxt_1_1xoptional__assembly__base.html#a89f917b17d7b6ded98b95ba5f9c52de2',1,'xt::xoptional_assembly_base::dimension()'],['../classxt_1_1xindex__view.html#afeaa3f6f6c150f659935d1a625497203',1,'xt::xindex_view::dimension()'],['../classxt_1_1xfunction.html#a55ade0ce540d29ce39f0ca051946ff96',1,'xt::xfunction::dimension()'],['../classxt_1_1xcontainer.html#a2a8d4b0a73c42555c56b87384b251f2d',1,'xt::xcontainer::dimension()']]], + ['disable_5findexed_5fstepper_13',['disable_indexed_stepper',['../structxt_1_1disable__indexed__stepper.html',1,'xt']]], + ['divides_5fassign_14',['divides_assign',['../classxt_1_1xsemantic__base.html#a8390681df5ceb96cc3fe307bcb6f5878',1,'xt::xsemantic_base']]], + ['driven_5falign_5fmode_15',['driven_align_mode',['../structxt_1_1driven__align__mode.html',1,'xt']]], + ['drop_16',['drop',['../namespacext.html#ac42340652d19c99dbd62db9ba399f801',1,'xt']]], + ['dump_5fcsv_17',['dump_csv',['../namespacext.html#a809a1475d6c06e6209878b293ca0aa4d',1,'xt']]], + ['dump_5fnpy_18',['dump_npy',['../namespacext.html#abbb704b012b5b4a60523e183342660a8',1,'xt::dump_npy(const std::string &filename, const xexpression< E > &e)'],['../namespacext.html#a6d48f3428b263994fcfb707ca476847e',1,'xt::dump_npy(const xexpression< E > &e)']]], + ['dynamic_19',['dynamic',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6ab72f3bd391ba731a35708bfd8cd8a68f',1,'xt']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..14770f256 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['edge_5fitems_0',['edge_items',['../classxt_1_1print__options_1_1edge__items.html',1,'xt::print_options']]], + ['element_1',['element',['../classxt_1_1xmasked__view.html#ae44c90a8ceb326570ea97116ecc5dd2f',1,'xt::xmasked_view::element()'],['../classxt_1_1xindex__view.html#a4bdd94010df7af626590d532b2febefb',1,'xt::xindex_view::element()'],['../classxt_1_1xgenerator.html#a78b35b4322ef73b541653bc0e009c058',1,'xt::xgenerator::element()'],['../classxt_1_1xfunctor__applier__base.html#a173b3e1e7c31df616b7e978462fece33',1,'xt::xfunctor_applier_base::element(IT first, IT last) const -> const_reference'],['../classxt_1_1xfunctor__applier__base.html#a94f49676b373d866812ee9a128cdc3e8',1,'xt::xfunctor_applier_base::element(IT first, IT last) -> reference'],['../classxt_1_1xfunction.html#a31d1e0136cb9cfd071120e47b10ecaea',1,'xt::xfunction::element()'],['../classxt_1_1xcontainer.html#a9d3b8aa16501359595778305cdb6c3b4',1,'xt::xcontainer::element(It first, It last) const -> const_reference'],['../classxt_1_1xcontainer.html#ac2d91aa6cdb9d2970b5505d55f462b61',1,'xt::xcontainer::element(It first, It last) -> reference'],['../classxt_1_1xbroadcast.html#a0c5eeee79d7da9ebbe4bab731e7bdbdf',1,'xt::xbroadcast::element()'],['../classxt_1_1xindex__view.html#a49787050a31b9c40a75f6644c6ee4c10',1,'xt::xindex_view::element()'],['../classxt_1_1xmasked__view.html#a9ac6b54e4c97bd60b65a6c02d5823380',1,'xt::xmasked_view::element()'],['../classxt_1_1xoptional__assembly__base.html#a1878f869c91ab899acc2fc560990538c',1,'xt::xoptional_assembly_base::element(It first, It last) -> reference'],['../classxt_1_1xoptional__assembly__base.html#afe8cc2e4841489d3f1af56dbab957af3',1,'xt::xoptional_assembly_base::element(It first, It last) const -> const_reference'],['../classxt_1_1xreducer.html#aa6b950db4c421bef297b1b1d76047b23',1,'xt::xreducer::element()'],['../classxt_1_1xrepeat.html#a38462b0a1711572653036bb3f77e4d2a',1,'xt::xrepeat::element()'],['../classxt_1_1xstrided__view__base.html#a76377f2b31c5086bd56c169f39ab8e6b',1,'xt::xstrided_view_base::element(It first, It last) -> reference'],['../classxt_1_1xstrided__view__base.html#a0410b18c9448ceb36193b2b740d0419a',1,'xt::xstrided_view_base::element(It first, It last) const -> const_reference'],['../classxt_1_1xstrided__view.html#a76377f2b31c5086bd56c169f39ab8e6b',1,'xt::xstrided_view::element(It first, It last) -> reference'],['../classxt_1_1xstrided__view.html#a0410b18c9448ceb36193b2b740d0419a',1,'xt::xstrided_view::element(It first, It last) const -> const_reference']]], + ['ellipsis_2',['ellipsis',['../namespacext.html#a7674e27693c74603e341cbf7beb91e7b',1,'xt']]], + ['empty_3',['empty',['../namespacext.html#af6f56a2111bfe2e7898ddb56dcdedc0e',1,'xt']]], + ['empty_5flike_4',['empty_like',['../namespacext.html#abda9d7634e3a60172e626271a0e50bae',1,'xt']]], + ['enable_5findexed_5fstepper_5',['enable_indexed_stepper',['../structxt_1_1enable__indexed__stepper.html',1,'xt']]], + ['end_6',['end',['../classxt_1_1xcontiguous__iterable.html#a18eb1a595021e73f682b8443ea50f1ec',1,'xt::xcontiguous_iterable::end() noexcept -> select_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a8e0a8bdffdcfd3c5bc80f358a6931f9f',1,'xt::xcontiguous_iterable::end() const noexcept -> select_const_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#ad75c7cb209c82c2d3ea6fa9e696f329e',1,'xt::xcontiguous_iterable::end(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a11d0a0ce2bbaef8f6dda78febe364fec',1,'xt::xcontiguous_iterable::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a74906f6a3242a5a2b001e6a534007589',1,'xt::xiterable::end() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xiterable.html#a8ca771d1dda2e42203cfdaaebfeba601',1,'xt::xiterable::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a76c73882716f9e9915dab847639db2da',1,'xt::xoptional_assembly_base::end() noexcept -> layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a9b56f37894a5055ffe49a46c857b7111',1,'xt::xoptional_assembly_base::end(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a74906f6a3242a5a2b001e6a534007589',1,'xt::xoptional_assembly_base::end() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a8ca771d1dda2e42203cfdaaebfeba601',1,'xt::xoptional_assembly_base::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a9b56f37894a5055ffe49a46c857b7111',1,'xt::xiterable::end(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a76c73882716f9e9915dab847639db2da',1,'xt::xiterable::end() noexcept -> layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a8ca771d1dda2e42203cfdaaebfeba601',1,'xt::xconst_iterable::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a74906f6a3242a5a2b001e6a534007589',1,'xt::xconst_iterable::end() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#a51190ea53109af3cdceebf66f8d10cbc',1,'xt::xfunctor_applier_base::end(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#ab31ad55714884efed4c525ae1018339e',1,'xt::xfunctor_applier_base::end() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#a1ede7d79cffaf8f76e8b6895a7877759',1,'xt::xfunctor_applier_base::end() noexcept'],['../classxt_1_1xfunctor__applier__base.html#aba04a5d73546572558aa9bbb6e4eca36',1,'xt::xfunctor_applier_base::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >']]], + ['equal_7',['equal',['../group__comparison__operators.html#ga4c778acba0a9407a9093505fad0506d2',1,'xt::equal()'],['../classxt_1_1xaxis__slice__iterator.html#abb5ffe172da06056aa31e3f18b821b88',1,'xt::xaxis_slice_iterator::equal()'],['../classxt_1_1xaxis__iterator.html#ab4e285d56b758b9c9f95d4c63f39093c',1,'xt::xaxis_iterator::equal()']]], + ['erf_8',['erf',['../group__err__functions.html#ga996f61e9186110b7daa859da0a8d2755',1,'xt']]], + ['erf_5ffun_9',['erf_fun',['../structxt_1_1math_1_1erf__fun.html',1,'xt::math']]], + ['erfc_10',['erfc',['../group__err__functions.html#ga6af9a81a9ca2bab66e744167c9683920',1,'xt']]], + ['erfc_5ffun_11',['erfc_fun',['../structxt_1_1math_1_1erfc__fun.html',1,'xt::math']]], + ['error_20and_20gamma_20functions_12',['Error and gamma functions',['../group__err__functions.html',1,'']]], + ['eval_13',['eval',['../group__xt__xeval.html#ga60f1ff0460adb785f2d4055d0863551b',1,'xt']]], + ['exp_14',['exp',['../group__exp__functions.html#gae0c736d69056d124184aada09007e70b',1,'xt']]], + ['exp2_15',['exp2',['../group__exp__functions.html#ga212886f718828e83aaf07cdabf60aeab',1,'xt']]], + ['exp2_5ffun_16',['exp2_fun',['../structxt_1_1math_1_1exp2__fun.html',1,'xt::math']]], + ['exp_5ffun_17',['exp_fun',['../structxt_1_1math_1_1exp__fun.html',1,'xt::math']]], + ['expand_5fdims_18',['expand_dims',['../group__xt__xmanipulation.html#gabe8cb55041a20cb995a15c599b7a2bc2',1,'xt']]], + ['expm1_19',['expm1',['../group__exp__functions.html#ga1646ca23b54f4a72d4bbe46f1182921c',1,'xt']]], + ['expm1_5ffun_20',['expm1_fun',['../structxt_1_1math_1_1expm1__fun.html',1,'xt::math']]], + ['exponential_20functions_21',['Exponential functions',['../group__exp__functions.html',1,'']]], + ['expression_22',['expression',['../classxt_1_1xdynamic__view.html#a94e4948a88657428eb50b1a92c4c2a43',1,'xt::xdynamic_view::expression()'],['../classxt_1_1xstrided__view.html#a94e4948a88657428eb50b1a92c4c2a43',1,'xt::xstrided_view::expression() const noexcept'],['../classxt_1_1xstrided__view.html#af4ec4a5c434d543b6c664f4572c849d4',1,'xt::xstrided_view::expression() noexcept'],['../classxt_1_1xdynamic__view.html#af4ec4a5c434d543b6c664f4572c849d4',1,'xt::xdynamic_view::expression()'],['../classxt_1_1xview.html#a9c5da820e15f25932c740862e0f3150f',1,'xt::xview::expression()'],['../classxt_1_1xstrided__view__base.html#a94e4948a88657428eb50b1a92c4c2a43',1,'xt::xstrided_view_base::expression() const noexcept'],['../classxt_1_1xstrided__view__base.html#af4ec4a5c434d543b6c664f4572c849d4',1,'xt::xstrided_view_base::expression() noexcept'],['../classxt_1_1xrepeat.html#a54a644b7c615e8f1bca91c0f4ac5a714',1,'xt::xrepeat::expression()'],['../classxt_1_1xreducer.html#a35efc1a78c0ad4a52cef8dca2a472a83',1,'xt::xreducer::expression()'],['../classxt_1_1xindex__view.html#abad555c9ed25f834763760c88a236325',1,'xt::xindex_view::expression()'],['../classxt_1_1xbroadcast.html#a11fafd46c5300907473db9afddfb5969',1,'xt::xbroadcast::expression()'],['../classxt_1_1xfunctor__applier__base.html#a5c676f9bf0dcbba9c63d589d2a417abd',1,'xt::xfunctor_applier_base::expression() noexcept'],['../classxt_1_1xfunctor__applier__base.html#a62a9deb497e7420aed40dcd2bcac02bc',1,'xt::xfunctor_applier_base::expression() const noexcept'],['../classxt_1_1xview.html#a5ecd9f1273f10421fdd4c5d64c262585',1,'xt::xview::expression()'],['../classxt_1_1xindex__view.html#ab19a3dd1a9b7f67c557ee57bc189d319',1,'xt::xindex_view::expression()']]], + ['expression_5ftag_5fand_23',['expression_tag_and',['../structxt_1_1extension_1_1expression__tag__and.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t_20_3e_24',['expression_tag_and< T >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t_2c_20t_20_3e_25',['expression_tag_and< T, T >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t_2c_20xtensor_5fexpression_5ftag_20_3e_26',['expression_tag_and< T, xtensor_expression_tag >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t1_2c_20expression_5ftag_5fand_3c_20t_2e_2e_2e_20_3e_3a_3atype_20_3e_27',['expression_tag_and< T1, expression_tag_and< T... >::type >',['../structxt_1_1extension_1_1expression__tag__and.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t1_2c_20t_2e_2e_2e_20_3e_28',['expression_tag_and< T1, T... >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20xtensor_5fexpression_5ftag_2c_20t_20_3e_29',['expression_tag_and< xtensor_expression_tag, T >',['../structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20xtensor_5fexpression_5ftag_2c_20xtensor_5fexpression_5ftag_20_3e_30',['expression_tag_and< xtensor_expression_tag, xtensor_expression_tag >',['../structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_3e_31',['expression_tag_and<>',['../structxt_1_1extension_1_1expression__tag__and_3_4.html',1,'xt::extension']]], + ['eye_32',['eye',['../namespacext.html#a3702c94500428b6c0c24a493ea020606',1,'xt::eye(const std::vector< std::size_t > &shape, int k=0)'],['../namespacext.html#af1633ad856dcd79570c229d95b09cf19',1,'xt::eye(std::size_t n, int k=0)']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..936a65b65 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['fabs_0',['fabs',['../group__basic__functions.html#ga6548f786920ac988f0e655576b3a3c82',1,'xt']]], + ['fabs_5ffun_1',['fabs_fun',['../structxt_1_1math_1_1fabs__fun.html',1,'xt::math']]], + ['fdim_2',['fdim',['../group__basic__functions.html#gaa68f33844e1bb457b87880b7433506d3',1,'xt']]], + ['fdim_5ffun_3',['fdim_fun',['../structxt_1_1math_1_1fdim__fun.html',1,'xt::math']]], + ['fill_4',['fill',['../classxt_1_1xoptional__assembly__base.html#a6b2d66863b5c7e149d54f75d3911d34d',1,'xt::xoptional_assembly_base::fill()'],['../classxt_1_1xmasked__view.html#a4c949ee680c72512a1d9f02b60536428',1,'xt::xmasked_view::fill()'],['../classxt_1_1xindex__view.html#aeecb2ec9572eac54def9d4f9934a86fd',1,'xt::xindex_view::fill()'],['../classxt_1_1xcontainer.html#af6898b9f125926922986af040eb90240',1,'xt::xcontainer::fill()'],['../classxt_1_1xstrided__view.html#a2e8596cc0e323e5d8e884c5f88b00b8b',1,'xt::xstrided_view::fill()'],['../classxt_1_1xview.html#a76141e6f7f637ae7e070d860a08fc678',1,'xt::xview::fill()']]], + ['filter_5',['filter',['../namespacext.html#ae36e1cf727c1a3ea6c7889f149c0737b',1,'xt']]], + ['filter_5ffixed_5fshape_6',['filter_fixed_shape',['../structxt_1_1filter__fixed__shape.html',1,'xt']]], + ['filtration_7',['filtration',['../namespacext.html#a588bc1e3b2c1f7c9b8238dddaf05a9df',1,'xt']]], + ['fixed_5fshape_8',['fixed_shape',['../classxt_1_1fixed__shape.html',1,'xt']]], + ['fixed_5fxreducer_5fshape_5ftype_9',['fixed_xreducer_shape_type',['../structxt_1_1fixed__xreducer__shape__type.html',1,'xt']]], + ['fixed_5fxreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20fixed_5fshape_3c_20j_2e_2e_2e_20_3e_20_3e_10',['fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >',['../structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html',1,'xt']]], + ['flat_11',['flat',['../classxt_1_1xoptional__assembly__base.html#a2ab81721e7b9e8986206742c4baddf71',1,'xt::xoptional_assembly_base::flat(size_type args) const'],['../classxt_1_1xoptional__assembly__base.html#abdea1fd8c021f170b2b34fbfae36f2db',1,'xt::xoptional_assembly_base::flat(size_type args)'],['../classxt_1_1xfunction.html#a8313f6caaa7e9229c10e3d221a8ab77b',1,'xt::xfunction::flat()'],['../classxt_1_1xcontainer.html#a58f5504c365d5e9c0ff9783c60e586af',1,'xt::xcontainer::flat(size_type i) const'],['../classxt_1_1xcontainer.html#a416ecf1f18ce38fae7f93d98d0c238e6',1,'xt::xcontainer::flat(size_type i)']]], + ['flat_20indices_12',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['flatnonzero_13',['flatnonzero',['../namespacext.html#afe8bacc1aed492dc936c80bc58730463',1,'xt']]], + ['flatten_14',['flatten',['../group__xt__xmanipulation.html#ga10a975d3b718bfaf8ecf1db8072a0a0c',1,'xt']]], + ['flatten_5findices_15',['flatten_indices',['../namespacext.html#a5c1acf7068270be8ab0ef904dd0f5a54',1,'xt']]], + ['flip_16',['flip',['../group__xt__xmanipulation.html#ga4bf31ad3a5950024a3825118f9f6a4e7',1,'xt::flip(E &&e, std::size_t axis)'],['../group__xt__xmanipulation.html#gad4b24c51356470db0a22b0c6c7d7611d',1,'xt::flip(E &&e)']]], + ['floating_20point_20operations_17',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['floor_18',['floor',['../group__nearint__functions.html#ga651ff45bf2ffda746e6602773925ca5c',1,'xt']]], + ['floor_5ffun_19',['floor_fun',['../structxt_1_1math_1_1floor__fun.html',1,'xt::math']]], + ['fma_20',['fma',['../group__basic__functions.html#ga0f88cbfba7ddc6b5e8a1c74e422a0409',1,'xt']]], + ['fma_5ffun_21',['fma_fun',['../structxt_1_1math_1_1fma__fun.html',1,'xt::math']]], + ['fmax_22',['fmax',['../group__basic__functions.html#ga782cdb54181f69e99679e1045cb53323',1,'xt']]], + ['fmax_5ffun_23',['fmax_fun',['../structxt_1_1math_1_1fmax__fun.html',1,'xt::math']]], + ['fmin_24',['fmin',['../group__basic__functions.html#gab8eb77690d6d7b651f61a961b0b4e472',1,'xt']]], + ['fmin_5ffun_25',['fmin_fun',['../structxt_1_1math_1_1fmin__fun.html',1,'xt::math']]], + ['fmod_26',['fmod',['../group__basic__functions.html#ga51fa6991b9bc8878a763212346d6449b',1,'xt']]], + ['fmod_5ffun_27',['fmod_fun',['../structxt_1_1math_1_1fmod__fun.html',1,'xt::math']]], + ['forbid_5fsimd_28',['forbid_simd',['../structxt_1_1forbid__simd.html',1,'xt']]], + ['forbid_5fsimd_3c_20const_20std_3a_3avector_3c_20bool_2c_20a_20_3e_20_3e_29',['forbid_simd< const std::vector< bool, A > >',['../structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html',1,'xt']]], + ['forbid_5fsimd_3c_20const_20xtl_3a_3axdynamic_5fbitset_3c_20b_2c_20a_20_3e_20_3e_30',['forbid_simd< const xtl::xdynamic_bitset< B, A > >',['../structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html',1,'xt']]], + ['forbid_5fsimd_3c_20std_3a_3avector_3c_20bool_2c_20a_20_3e_20_3e_31',['forbid_simd< std::vector< bool, A > >',['../structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html',1,'xt']]], + ['forbid_5fsimd_3c_20xtl_3a_3axdynamic_5fbitset_3c_20b_2c_20a_20_3e_20_3e_32',['forbid_simd< xtl::xdynamic_bitset< B, A > >',['../structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html',1,'xt']]], + ['from_5findices_33',['from_indices',['../namespacext.html#ade2d67c70b0ec6af8294f4b7f201a722',1,'xt']]], + ['from_5fjson_34',['from_json',['../namespacext.html#a3d553d1a9a0e27ad8c9054389c1e2c59',1,'xt']]], + ['from_5fshape_35',['from_shape',['../classxt_1_1xarray__container.html#ab23fb8ed1e93061e427ef9da391336a0',1,'xt::xarray_container::from_shape()'],['../classxt_1_1xoptional__assembly.html#a04719a5f78f5bba3faa0f9a8d6aa393d',1,'xt::xoptional_assembly::from_shape()']]], + ['front_36',['front',['../classxt_1_1xconst__accessible.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xconst_accessible::front()'],['../classxt_1_1xscalar.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xscalar::front()'],['../classxt_1_1xmasked__view.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xmasked_view::front() const'],['../classxt_1_1xmasked__view.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xmasked_view::front()'],['../classxt_1_1xfunctor__applier__base.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xfunctor_applier_base::front() const'],['../classxt_1_1xfunctor__applier__base.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xfunctor_applier_base::front()'],['../classxt_1_1xfunction.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xfunction::front()'],['../classxt_1_1xcontainer.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xcontainer::front() const'],['../classxt_1_1xcontainer.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xcontainer::front()'],['../classxt_1_1xaccessible.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xaccessible::front()'],['../classxt_1_1xoptional__assembly__base.html#aacfa0f794bd3a92bf3ad57833861f73e',1,'xt::xoptional_assembly_base::front() const'],['../classxt_1_1xoptional__assembly__base.html#a0e191af3d00801e0018161ab739fc6d2',1,'xt::xoptional_assembly_base::front()'],['../classxt_1_1xaccessible.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xaccessible::front()'],['../classxt_1_1xscalar.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xscalar::front()']]], + ['full_37',['full',['../structxt_1_1convolve__mode_1_1full.html',1,'xt::convolve_mode::full'],['../structxt_1_1check__policy_1_1full.html',1,'xt::check_policy::full']]], + ['full_5flike_38',['full_like',['../namespacext.html#a682f65e5eb55b03cbef5fbd25bbdc349',1,'xt']]], + ['function_39',['Trigonometric function',['../group__trigo__functions.html',1,'']]], + ['functions_40',['functions',['../group__acc__functions.html',1,'accumulating functions'],['../group__basic__functions.html',1,'Basic functions'],['../group__classif__functions.html',1,'Classification functions'],['../group__err__functions.html',1,'Error and gamma functions'],['../group__exp__functions.html',1,'Exponential functions'],['../group__hyper__functions.html',1,'Hyperbolic functions'],['../group__nan__functions.html',1,'nan functions'],['../group__pow__functions.html',1,'Power functions'],['../group__red__functions.html',1,'reducing functions'],['../group__xt__xsort.html',1,'Sorting functions.']]], + ['functions_20swich_20between_20array_20indices_20and_20flat_20indices_41',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['functions_20to_20get_20check_20a_20shape_20array_42',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..796869186 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['gamma_20functions_0',['Error and gamma functions',['../group__err__functions.html',1,'']]], + ['get_20check_20a_20shape_20array_1',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['get_5fexpression_5ftag_2',['get_expression_tag',['../structxt_1_1extension_1_1get__expression__tag.html',1,'xt::extension']]], + ['get_5fexpression_5ftag_3c_20xtl_3a_3axoptional_3c_20t_2c_20b_20_3e_20_3e_3',['get_expression_tag< xtl::xoptional< T, B > >',['../structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html',1,'xt::extension']]], + ['get_5fexpression_5ftag_5fimpl_4',['get_expression_tag_impl',['../structxt_1_1extension_1_1get__expression__tag__impl.html',1,'xt::extension']]], + ['get_5fexpression_5ftag_5fimpl_3c_20e_2c_20void_5ft_3c_20typename_20std_3a_3adecay_5ft_3c_20e_20_3e_3a_3aexpression_5ftag_20_3e_20_3e_5',['get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >',['../structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de048c22abe806a8cb61aa0c08ab63f2de.html',1,'xt::extension']]], + ['get_5finit_5ftype_6',['get_init_type',['../structxt_1_1get__init__type.html',1,'xt']]], + ['get_5finit_5ftype_3c_20v_2c_20fixed_5fshape_3c_20x_2e_2e_2e_20_3e_20_3e_7',['get_init_type< V, fixed_shape< X... > >',['../structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html',1,'xt']]], + ['get_5frank_8',['get_rank',['../structxt_1_1get__rank.html',1,'xt']]], + ['get_5frank_3c_20e_2c_20decltype_28_28void_29_20e_3a_3arank_2c_20void_28_29_29_3e_9',['get_rank< E, decltype((void) E::rank, void())>',['../structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html',1,'xt']]], + ['get_5fstrides_5ftype_10',['get_strides_type',['../structxt_1_1get__strides__type.html',1,'xt']]], + ['get_5fstrides_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_20_3e_11',['get_strides_type< fixed_shape< I... > >',['../structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html',1,'xt']]], + ['get_5fstrides_5ftype_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_12',['get_strides_type< xbuffer_adaptor< CP, O, A > >',['../structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html',1,'xt']]], + ['get_5fvalue_5ftype_13',['get_value_type',['../structxt_1_1get__value__type.html',1,'xt']]], + ['get_5fvalue_5ftype_3c_20t_2c_20void_5ft_3c_20typename_20t_3a_3avalue_5ftype_20_3e_20_3e_14',['get_value_type< T, void_t< typename T::value_type > >',['../structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html',1,'xt']]], + ['greater_15',['greater',['../group__comparison__operators.html#ga7c7efdc8246d1ae40ab7f6a8cffe0958',1,'xt']]], + ['greater_5fequal_16',['greater_equal',['../group__comparison__operators.html#ga68a359635b6a5d0940f97c7586a61ea3',1,'xt']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..8c966f4c1 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['has_5fassign_5fconversion_0',['has_assign_conversion',['../structxt_1_1has__assign__conversion.html',1,'xt']]], + ['has_5fassign_5fto_1',['has_assign_to',['../structxt_1_1has__assign__to.html',1,'xt']]], + ['has_5fassign_5fto_3c_20e1_2c_20e2_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20const_20e2_20_26_20_3e_28_29_2eassign_5fto_28std_3a_3adeclval_3c_20e1_20_26_20_3e_28_29_29_29_3e_20_3e_2',['has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >',['../structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html',1,'xt']]], + ['has_5fdata_5finterface_3',['has_data_interface',['../structxt_1_1has__data__interface.html',1,'xt']]], + ['has_5fdata_5finterface_3c_20e_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20e_20_3e_28_29_2edata_28_29_29_3e_20_3e_4',['has_data_interface< E, void_t< decltype(std::declval< E >().data())> >',['../structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html',1,'xt']]], + ['has_5ffixed_5frank_5',['has_fixed_rank',['../structxt_1_1has__fixed__rank.html',1,'xt']]], + ['has_5fiterator_5finterface_6',['has_iterator_interface',['../structxt_1_1has__iterator__interface.html',1,'xt']]], + ['has_5fiterator_5finterface_3c_20e_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20e_20_3e_28_29_2ebegin_28_29_29_3e_20_3e_7',['has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >',['../structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html',1,'xt']]], + ['has_5flinear_5fassign_8',['has_linear_assign',['../classxt_1_1xbroadcast.html#afa95389819f8e9168213041757730903',1,'xt::xbroadcast::has_linear_assign()'],['../classxt_1_1xfunctor__applier__base.html#a9ded44a42136f6472c91f0d60462d7a5',1,'xt::xfunctor_applier_base::has_linear_assign()'],['../classxt_1_1xcontainer.html#a5720f32fcd8bc068a5489eddcf7bd8b1',1,'xt::xcontainer::has_linear_assign()'],['../classxt_1_1xfunction.html#a7007affb74eb4e8e6dfbba267f6de5ba',1,'xt::xfunction::has_linear_assign()'],['../classxt_1_1xgenerator.html#ab1a2913449b319eede92915d0b410c0d',1,'xt::xgenerator::has_linear_assign()'],['../classxt_1_1xindex__view.html#a436dfb313bdf3ce42a16cfa2a5c9f98f',1,'xt::xindex_view::has_linear_assign()'],['../classxt_1_1xoptional__assembly__base.html#a7e2c9d6439909805db95ebe75339fc06',1,'xt::xoptional_assembly_base::has_linear_assign()'],['../classxt_1_1xreducer.html#a6dc809c4eefc124d5bfb4d579afea715',1,'xt::xreducer::has_linear_assign()'],['../classxt_1_1xrepeat.html#a1cf9569d72c1fb3af6e2e29252b9f03b',1,'xt::xrepeat::has_linear_assign()'],['../classxt_1_1xstrided__view__base.html#a5264e47f30486f83a313b654d3dd7199',1,'xt::xstrided_view_base::has_linear_assign()'],['../classxt_1_1xview.html#a1249c703f1c218ce7998627aa91c10a6',1,'xt::xview::has_linear_assign()'],['../classxt_1_1xstrided__view.html#a5264e47f30486f83a313b654d3dd7199',1,'xt::xstrided_view::has_linear_assign()']]], + ['has_5frank_9',['has_rank',['../structxt_1_1has__rank.html',1,'xt']]], + ['has_5fshape_10',['has_shape',['../group__xt__xshape.html#ga56d28aa1be818adaecee7803249dad7d',1,'xt::has_shape(const E &e, std::initializer_list< S > shape) noexcept'],['../namespacext.html#a4453a49484a5833cbf48e51eff2ed3df',1,'xt::has_shape(const E &e, const S &shape)']]], + ['has_5fsign_5fconversion_11',['has_sign_conversion',['../structxt_1_1has__sign__conversion.html',1,'xt']]], + ['has_5fsimd_5fapply_12',['has_simd_apply',['../structxt_1_1has__simd__apply.html',1,'xt']]], + ['has_5fsimd_5finterface_13',['has_simd_interface',['../structxt_1_1has__simd__interface.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_2c_20t_20_3e_14',['has_simd_interface< xfunction< F, CT... >, T >',['../structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_2c_20t_20_3e_15',['has_simd_interface< xfunctor_adaptor< F, CT >, T >',['../structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20d_20_3e_2c_20t_20_3e_16',['has_simd_interface< xfunctor_applier_base< D >, T >',['../structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_2c_20t_20_3e_17',['has_simd_interface< xfunctor_applier_base< xfunctor_adaptor< F, CT > >, T >',['../structxt_1_1has__simd__interface.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_2c_20t_20_3e_18',['has_simd_interface< xfunctor_applier_base< xfunctor_view< F, CT > >, T >',['../structxt_1_1has__simd__interface.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_2c_20t_20_3e_19',['has_simd_interface< xfunctor_view< F, CT >, T >',['../structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_20',['has_simd_interface< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['has_5fsimd_5ftype_21',['has_simd_type',['../structxt_1_1has__simd__type.html',1,'xt']]], + ['has_5fstorage_5ftype_22',['has_storage_type',['../structxt_1_1has__storage__type.html',1,'xt']]], + ['has_5fstorage_5ftype_3c_20t_2c_20void_5ft_3c_20typename_20xcontainer_5finner_5ftypes_3c_20t_20_3e_3a_3astorage_5ftype_20_3e_20_3e_23',['has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >',['../structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html',1,'xt']]], + ['has_5fstrides_24',['has_strides',['../structxt_1_1has__strides.html',1,'xt']]], + ['has_5fstrides_3c_20e_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20e_20_3e_28_29_2estrides_28_29_29_3e_20_3e_25',['has_strides< E, void_t< decltype(std::declval< E >().strides())> >',['../structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html',1,'xt']]], + ['has_5fvalue_26',['has_value',['../classxt_1_1xoptional__assembly__base.html#a4501b171b337744f6c013a9a46c6414b',1,'xt::xoptional_assembly_base::has_value() const noexcept'],['../classxt_1_1xoptional__assembly__base.html#af274b99476f869609568a3e09fcf3c55',1,'xt::xoptional_assembly_base::has_value() noexcept']]], + ['hazen_27',['hazen',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaf4b08e7cc0a94bb8f4e9969eeb532039',1,'xt']]], + ['histogram_28',['histogram',['../namespacext.html#a95e9ea74b2e3f62bb682798bd5d7414d',1,'xt::histogram(E1 &&data, E2 &&bin_edges, E3 &&weights, bool density=false)'],['../namespacext.html#a0a5ba67f2a11ee24ccf629105d12e407',1,'xt::histogram(E1 &&data, E2 &&bin_edges, bool density=false)'],['../namespacext.html#ad8379adac71c1af9b9bc50f835d9536f',1,'xt::histogram(E1 &&data, std::size_t bins=10, bool density=false)'],['../namespacext.html#a60449f18cbf62c0a104cf72e53f7948d',1,'xt::histogram(E1 &&data, std::size_t bins, E2 left, E2 right, bool density=false)'],['../namespacext.html#a8545490885a4a8466344d954bd5326c1',1,'xt::histogram(E1 &&data, std::size_t bins, E2 &&weights, bool density=false)'],['../namespacext.html#aaadf08c80728a3d2ace5739f3350f908',1,'xt::histogram(E1 &&data, std::size_t bins, E2 &&weights, E3 left, E3 right, bool density=false)']]], + ['histogram_5falgorithm_29',['histogram_algorithm',['../namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8',1,'xt']]], + ['histogram_5fbin_5fedges_30',['histogram_bin_edges',['../namespacext.html#a53ca89b6c48fc35c9a293c2d81f66288',1,'xt::histogram_bin_edges(E1 &&data, E2 &&weights, E3 left, E3 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)'],['../namespacext.html#aa3d16282168b4675fdc93c5563eb5324',1,'xt::histogram_bin_edges(E1 &&data, E2 &&weights, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)'],['../namespacext.html#a49105a6754699f6ab1073e9868782ec8',1,'xt::histogram_bin_edges(E1 &&data, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)'],['../namespacext.html#a5abbd094554988573b2c3cce9e521aab',1,'xt::histogram_bin_edges(E1 &&data, E2 left, E2 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)']]], + ['hsplit_31',['hsplit',['../group__xt__xmanipulation.html#gaf342a194380b6c7bbc7f2c89f4e88317',1,'xt']]], + ['hstack_32',['hstack',['../namespacext.html#aacc647d8af519da1d2126ec96a97849f',1,'xt']]], + ['hyperbolic_20functions_33',['Hyperbolic functions',['../group__hyper__functions.html',1,'']]], + ['hypot_34',['hypot',['../group__pow__functions.html#ga9b55bcc865f0dd82fd679e01c3838526',1,'xt']]], + ['hypot_5ffun_35',['hypot_fun',['../structxt_1_1math_1_1hypot__fun.html',1,'xt::math']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..5e50c179c --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['idx_5ftools_0',['idx_tools',['../structxt_1_1strided__assign__detail_1_1idx__tools.html',1,'xt::strided_assign_detail']]], + ['idx_5ftools_3c_20layout_5ftype_3a_3acolumn_5fmajor_20_3e_1',['idx_tools< layout_type::column_major >',['../structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html',1,'xt::strided_assign_detail']]], + ['idx_5ftools_3c_20layout_5ftype_3a_3arow_5fmajor_20_3e_2',['idx_tools< layout_type::row_major >',['../structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html',1,'xt::strided_assign_detail']]], + ['imag_3',['imag',['../group__xt__xcomplex.html#ga155e369dcf03bd465609d279b82f6da8',1,'xt']]], + ['immediate_5ftype_4',['immediate_type',['../structxt_1_1evaluation__strategy_1_1immediate__type.html',1,'xt::evaluation_strategy']]], + ['in1d_5',['in1d',['../group__logical__operators.html#ga835cd37cf9a3142a7836509b4f082a64',1,'xt::in1d(E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept'],['../group__logical__operators.html#ga3aab6400780394dfb5d0d938c19f1f63',1,'xt::in1d(E &&element, F &&test_elements) noexcept'],['../group__logical__operators.html#gab1bbf85dbe7bc76561321466d657bed4',1,'xt::in1d(E &&element, std::initializer_list< T > test_elements) noexcept']]], + ['in_5fbounds_6',['in_bounds',['../namespacext.html#a42f9ded8fbe013b13c186ae66474912d',1,'xt::in_bounds()'],['../classxt_1_1xfunction.html#ace939a65a328afe7ef9241d4cc84b881',1,'xt::xfunction::in_bounds()'],['../classxt_1_1xoptional__assembly__base.html#a109b7cd1df5661aaacc763e2c914795d',1,'xt::xoptional_assembly_base::in_bounds()'],['../classxt_1_1xconst__accessible.html#ace939a65a328afe7ef9241d4cc84b881',1,'xt::xconst_accessible::in_bounds()']]], + ['index_5ffrom_5fshape_7',['index_from_shape',['../structxt_1_1index__from__shape.html',1,'xt']]], + ['index_5fview_8',['index_view',['../namespacext.html#abb28cb642ab427195ca6120d59f34f76',1,'xt']]], + ['indices_20and_20flat_20indices_9',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['initial_5ftester_10',['initial_tester',['../structxt_1_1reducer__options_1_1initial__tester.html',1,'xt::reducer_options']]], + ['initial_5ftester_3c_20const_20xinitial_3c_20x_20_3e_20_3e_11',['initial_tester< const xinitial< X > >',['../structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html',1,'xt::reducer_options']]], + ['initial_5ftester_3c_20xinitial_3c_20x_20_3e_20_3e_12',['initial_tester< xinitial< X > >',['../structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html',1,'xt::reducer_options']]], + ['initializer_5fdimension_13',['initializer_dimension',['../structxt_1_1initializer__dimension.html',1,'xt']]], + ['inner_5faligned_5fmode_14',['inner_aligned_mode',['../structxt_1_1inner__aligned__mode.html',1,'xt']]], + ['inner_5freference_15',['inner_reference',['../structxt_1_1inner__reference.html',1,'xt']]], + ['integer_20floating_20point_20operations_16',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['internal_17',['internal',['../group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dad1efad72dc5b17dc66a46767c32fff40',1,'xt']]], + ['interp_18',['interp',['../group__basic__functions.html#gaa909fc5959dbb290c47c9698d5076ed3',1,'xt::interp(const E1 &x, const E2 &xp, const E3 &fp)'],['../group__basic__functions.html#ga47e1576710edcbb14d2ccf4df7d62ec3',1,'xt::interp(const E1 &x, const E2 &xp, const E3 &fp, T left, T right)']]], + ['interpolated_5finverted_5fcdf_19',['interpolated_inverted_cdf',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda7f20bc9a8cd4acd58c1d9b46821e9242',1,'xt']]], + ['invalid_5ftype_20',['invalid_type',['../structxt_1_1invalid__type.html',1,'xt']]], + ['is_5fbatch_5fbool_21',['is_batch_bool',['../structxt__simd_1_1is__batch__bool.html',1,'xt_simd']]], + ['is_5fbatch_5fcomplex_22',['is_batch_complex',['../structxt__simd_1_1is__batch__complex.html',1,'xt_simd']]], + ['is_5fchunked_5ft_23',['is_chunked_t',['../structxt_1_1is__chunked__t.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_24',['is_contiguous_container',['../structxt_1_1is__contiguous__container.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20i_20_3e_25',['is_contiguous_container< I >',['../structxt_1_1is__contiguous__container.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20ig_3a_3aiterator_20_3e_26',['is_contiguous_container< IG::iterator >',['../structxt_1_1is__contiguous__container.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20xiterator_3c_20st_2c_20s_2c_20l_20_3e_20_3e_27',['is_contiguous_container< xiterator< St, S, L > >',['../structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_28',['is_contiguous_container< xiterator_adaptor< I, CI > >',['../structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_29',['is_contiguous_container< xiterator_owner_adaptor< C, IG > >',['../structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html',1,'xt']]], + ['is_5fevaluation_5fstrategy_30',['is_evaluation_strategy',['../structxt_1_1is__evaluation__strategy.html',1,'xt']]], + ['is_5findexed_5fstepper_31',['is_indexed_stepper',['../structxt_1_1is__indexed__stepper.html',1,'xt']]], + ['is_5findexed_5fstepper_3c_20xindexed_5fstepper_3c_20t_2c_20b_20_3e_20_3e_32',['is_indexed_stepper< xindexed_stepper< T, B > >',['../structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html',1,'xt']]], + ['is_5fiterator_33',['is_iterator',['../structxt_1_1is__iterator.html',1,'xt']]], + ['is_5fiterator_3c_20e_2c_20void_5ft_3c_20decltype_28_2astd_3a_3adeclval_3c_20const_20e_20_3e_28_29_2c_20std_3a_3adeclval_3c_20const_20e_20_3e_28_29_3d_3dstd_3a_3adeclval_3c_20const_20e_20_3e_28_29_2c_20std_3a_3adeclval_3c_20const_20e_20_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20const_20e_20_3e_28_29_2c_2b_2b_28_2astd_3a_3adeclval_3c_20e_20_2a_20_3e_28_29_29_2c_28_2astd_3a_3adeclval_3c_20e_20_2a_20_3e_28_29_29_2b_2b_2c_20std_3a_3atrue_5ftype_28_29_29_3e_20_3e_34',['is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >',['../structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.html',1,'xt']]], + ['is_5fnarrowing_5fconversion_35',['is_narrowing_conversion',['../structxt_1_1is__narrowing__conversion.html',1,'xt']]], + ['is_5fnot_5fxdummy_5fiterator_36',['is_not_xdummy_iterator',['../structxt_1_1is__not__xdummy__iterator.html',1,'xt']]], + ['is_5fnot_5fxdummy_5fiterator_3c_20xdummy_5fiterator_3c_20is_5fconst_2c_20ct_20_3e_20_3e_37',['is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >',['../structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html',1,'xt']]], + ['is_5freducer_5foptions_38',['is_reducer_options',['../structxt_1_1is__reducer__options.html',1,'xt']]], + ['is_5freducer_5foptions_5fimpl_39',['is_reducer_options_impl',['../structxt_1_1is__reducer__options__impl.html',1,'xt']]], + ['is_5freducer_5foptions_5fimpl_3c_20std_3a_3adecay_5ft_3c_20t_20_3e_20_3e_40',['is_reducer_options_impl< std::decay_t< T > >',['../structxt_1_1is__reducer__options__impl.html',1,'xt']]], + ['is_5freducer_5foptions_5fimpl_3c_20std_3a_3atuple_3c_20x_2e_2e_2e_20_3e_20_3e_41',['is_reducer_options_impl< std::tuple< X... > >',['../structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html',1,'xt']]], + ['is_5fxoptional_5fexpression_42',['is_xoptional_expression',['../structxt_1_1is__xoptional__expression.html',1,'xt']]], + ['is_5fxtensor_5fexpression_43',['is_xtensor_expression',['../structxt_1_1is__xtensor__expression.html',1,'xt']]], + ['isclose_44',['isclose',['../group__classif__functions.html#ga94330518c2d0f78691dc8bb4b27eb72a',1,'xt']]], + ['isfinite_45',['isfinite',['../group__classif__functions.html#ga177a09c77ac16a253588403fe7cbeaec',1,'xt']]], + ['isfinite_5ffun_46',['isfinite_fun',['../structxt_1_1math_1_1isfinite__fun.html',1,'xt::math']]], + ['isin_47',['isin',['../group__logical__operators.html#gac71ec22119ac398c4c737d48197e5399',1,'xt::isin(E &&element, std::initializer_list< T > test_elements) noexcept'],['../group__logical__operators.html#ga84c1d8a7eaaa5d9f7e0484b9dfc0c646',1,'xt::isin(E &&element, F &&test_elements) noexcept'],['../group__logical__operators.html#gaaef46d45350e3699429eff9ca45755f7',1,'xt::isin(E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept']]], + ['isinf_48',['isinf',['../group__classif__functions.html#ga94db88dbac47fd2e3cce71c568332554',1,'xt']]], + ['isinf_5ffun_49',['isinf_fun',['../structxt_1_1math_1_1isinf__fun.html',1,'xt::math']]], + ['isnan_50',['isnan',['../group__classif__functions.html#ga41ec7bcedb794bccf3535bac9c3142ab',1,'xt']]], + ['isnan_5ffun_51',['isnan_fun',['../structxt_1_1math_1_1isnan__fun.html',1,'xt::math']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..5e2a0dd0f --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['keep_0',['keep',['../namespacext.html#aa6a85c9e08914989d4e79bc78da35ab7',1,'xt']]], + ['keep_5fdims_5ftype_1',['keep_dims_type',['../structxt_1_1keep__dims__type.html',1,'xt']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..554bf5346 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['layout_0',['layout',['../classxt_1_1xbroadcast.html#aca1bb5d073d6fbbfec6e82cbc456cadd',1,'xt::xbroadcast::layout()'],['../classxt_1_1xview.html#aface2a61c07630c793d71241d13de29d',1,'xt::xview::layout()'],['../classxt_1_1xstrided__view__base.html#a10da93fc02c2c53dde8d9f171ce053a6',1,'xt::xstrided_view_base::layout()'],['../classxt_1_1xrepeat.html#a44b37d9a8b603737eec64e57ce108ad0',1,'xt::xrepeat::layout()'],['../classxt_1_1xreducer.html#aeee3a89a9dd452a00cfd55cbbfd2aa17',1,'xt::xreducer::layout()'],['../classxt_1_1xoptional__assembly__base.html#a894c8a27844c4543906eb44fb33f579e',1,'xt::xoptional_assembly_base::layout()'],['../classxt_1_1xmasked__view.html#a7f160d16d17eea921739b9ff1457c374',1,'xt::xmasked_view::layout()'],['../classxt_1_1xfunctor__applier__base.html#a41a690f43f808ba326e0bd3e4ab19f95',1,'xt::xfunctor_applier_base::layout()'],['../classxt_1_1xfunction.html#a40bd918815f66f76ad0f05d3e33fbdbb',1,'xt::xfunction::layout()'],['../classxt_1_1xstrided__container.html#a475028ed0b0719aebc55afe8fc00728e',1,'xt::xstrided_container::layout()'],['../classxt_1_1xdynamic__view.html#a10da93fc02c2c53dde8d9f171ce053a6',1,'xt::xdynamic_view::layout()'],['../classxt_1_1xstrided__view.html#a10da93fc02c2c53dde8d9f171ce053a6',1,'xt::xstrided_view::layout()']]], + ['layout_5ftype_1',['layout_type',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6',1,'xt']]], + ['lazy_5ftype_2',['lazy_type',['../structxt_1_1evaluation__strategy_1_1lazy__type.html',1,'xt::evaluation_strategy']]], + ['left_5fshift_3',['left_shift',['../group__bitwise__operators.html#ga2cd49affcc3745f02fbb43f1bed16ed1',1,'xt']]], + ['less_4',['less',['../group__comparison__operators.html#ga2c830ecb583258f639e710642dbf0d7c',1,'xt']]], + ['less_5fequal_5',['less_equal',['../group__comparison__operators.html#ga9e84bf652cf6e810f974a8bcb51f1511',1,'xt']]], + ['lgamma_6',['lgamma',['../group__err__functions.html#ga5216029cd6e56b81f5145041540d043e',1,'xt']]], + ['lgamma_5ffun_7',['lgamma_fun',['../structxt_1_1math_1_1lgamma__fun.html',1,'xt::math']]], + ['like_20containers_8',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['line_5fwidth_9',['line_width',['../classxt_1_1print__options_1_1line__width.html',1,'xt::print_options']]], + ['linear_10',['linear',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda9a932b3cb396238423eb2f33ec17d6aa',1,'xt']]], + ['linear_5fassigner_11',['linear_assigner',['../classxt_1_1linear__assigner.html',1,'xt']]], + ['linear_5fassigner_3c_20false_20_3e_12',['linear_assigner< false >',['../classxt_1_1linear__assigner_3_01false_01_4.html',1,'xt']]], + ['linspace_13',['linspace',['../namespacext.html#a84b4f2192981c30e7ee35fba2b164cb2',1,'xt']]], + ['list_14',['Deprecated List',['../deprecated.html',1,'']]], + ['load_5fcsv_15',['load_csv',['../namespacext.html#a1a7ff9a44466a0de5525ac507db04e6a',1,'xt']]], + ['load_5fnpy_16',['load_npy',['../namespacext.html#a09f40ac64487910bfee944c044c9739c',1,'xt::load_npy(std::istream &stream)'],['../namespacext.html#a2466a03b0fed69ae73a2e01490af1fec',1,'xt::load_npy(const std::string &filename)']]], + ['log_17',['log',['../group__exp__functions.html#gaaeb73f780e08001206f1f9ed9db161e1',1,'xt']]], + ['log10_18',['log10',['../group__exp__functions.html#gae6585ff00a0cf0fdcdf659639e8d1ca0',1,'xt']]], + ['log10_5ffun_19',['log10_fun',['../structxt_1_1math_1_1log10__fun.html',1,'xt::math']]], + ['log1p_20',['log1p',['../group__exp__functions.html#ga08b8fa80ab57f38bb87e8c01b943d7f7',1,'xt']]], + ['log1p_5ffun_21',['log1p_fun',['../structxt_1_1math_1_1log1p__fun.html',1,'xt::math']]], + ['log2_22',['log2',['../group__exp__functions.html#gae08fcbd5914db4f5b2649f5333375d95',1,'xt']]], + ['log2_5ffun_23',['log2_fun',['../structxt_1_1math_1_1log2__fun.html',1,'xt::math']]], + ['log_5ffun_24',['log_fun',['../structxt_1_1math_1_1log__fun.html',1,'xt::math']]], + ['logical_20operators_25',['Logical operators',['../group__logical__operators.html',1,'']]], + ['logspace_26',['logspace',['../namespacext.html#ae448d7eb5de30ef12ca38ca7d6d15356',1,'xt']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..578064548 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['make_5finvalid_5ftype_0',['make_invalid_type',['../structxt_1_1make__invalid__type.html',1,'xt']]], + ['make_5flambda_5fxfunction_1',['make_lambda_xfunction',['../namespacext.html#a259a5c38335a33c4a6f8aff517494efb',1,'xt']]], + ['make_5fvoid_2',['make_void',['../structxt_1_1make__void.html',1,'xt']]], + ['make_5fxshared_3',['make_xshared',['../namespacext.html#ab3cc0ff08a76f5d91bcb294a06f8c784',1,'xt']]], + ['maximum_4',['maximum',['../structxt_1_1math_1_1maximum.html',1,'xt::math::maximum< T >'],['../group__basic__functions.html#ga72354e9ca3d4446608c32d77d78fc721',1,'xt::maximum(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::maximum< void >, E1, E2 >']]], + ['mean_5',['mean',['../group__red__functions.html#gad0919b7cd9e5d8907363a2a146c1ec09',1,'xt']]], + ['median_6',['median',['../group__xt__xsort.html#gae6a650f8da9d0066e26ecda36ee293e4',1,'xt']]], + ['median_5funbiased_7',['median_unbiased',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaeddf62d602ae684d91d6f586f5e5cbaf',1,'xt']]], + ['meshgrid_8',['meshgrid',['../namespacext.html#a513e9f91fb23575e3e35eff04c628e19',1,'xt']]], + ['meta_5fidentity_9',['meta_identity',['../structxt_1_1meta__identity.html',1,'xt']]], + ['minimum_10',['minimum',['../structxt_1_1math_1_1minimum.html',1,'xt::math::minimum< T >'],['../group__basic__functions.html#ga6ba20f491bf0a014df5a219461ac8c98',1,'xt::minimum(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::minimum< void >, E1, E2 >']]], + ['minmax_11',['minmax',['../group__red__functions.html#gab752be31d54ec7e45daef9a5d3868030',1,'xt']]], + ['minus_5fassign_12',['minus_assign',['../classxt_1_1xsemantic__base.html#a9ae9f40db494b08455a84b3ba24e87e2',1,'xt::xsemantic_base']]], + ['missing_5ftype_13',['missing_type',['../structxt_1_1missing__type.html',1,'xt']]], + ['modulus_5fassign_14',['modulus_assign',['../classxt_1_1xsemantic__base.html#a30eeb2e83b810139f5111c161055e041',1,'xt::xsemantic_base']]], + ['moveaxis_15',['moveaxis',['../group__xt__xmanipulation.html#ga2d8bcbb846f2efae57cf6fb4aa24625a',1,'xt']]], + ['multiplies_5fassign_16',['multiplies_assign',['../classxt_1_1xsemantic__base.html#aafe434601607910fc1d8e95dde649bff',1,'xt::xsemantic_base']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..b664e7d5b --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['nan_20functions_0',['nan functions',['../group__nan__functions.html',1,'']]], + ['nan_5fto_5fnum_1',['nan_to_num',['../group__nan__functions.html#gae82e0b56454b586ec1ffbf57d6d2122f',1,'xt']]], + ['nancumprod_2',['nancumprod',['../group__nan__functions.html#ga4fb43a2f434821dfec8464e84ad05de7',1,'xt']]], + ['nancumsum_3',['nancumsum',['../group__nan__functions.html#ga48eab6816103340e288db50e05f00e60',1,'xt']]], + ['nanmax_4',['nanmax',['../group__nan__functions.html#ga0e300ce1d00beec93e45d7aa0e308ceb',1,'xt']]], + ['nanmean_5',['nanmean',['../group__nan__functions.html#ga5ff43d5bf500e85b384c2c08d2ababe9',1,'xt']]], + ['nanmin_6',['nanmin',['../group__nan__functions.html#gaaade983a5b6b9406608d54f3ba37a264',1,'xt']]], + ['nanprod_7',['nanprod',['../group__nan__functions.html#gad63669d7342cc68dae7b15f3c49ca1c2',1,'xt']]], + ['nanstd_8',['nanstd',['../group__nan__functions.html#ga21421ea090897548b9199c1fdb3049be',1,'xt']]], + ['nansum_9',['nansum',['../group__nan__functions.html#gadbfe228ebc452fabfdbf4067274a471a',1,'xt']]], + ['nanvar_10',['nanvar',['../group__nan__functions.html#ga3c3fdce46c4143d595e11db1646f7d89',1,'xt']]], + ['nearbyint_11',['nearbyint',['../group__nearint__functions.html#ga297d1cfd2029ec779f3b2caf20cae56f',1,'xt']]], + ['nearbyint_5ffun_12',['nearbyint_fun',['../structxt_1_1math_1_1nearbyint__fun.html',1,'xt::math']]], + ['nearest_20integer_20floating_20point_20operations_13',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['nested_5finitializer_5flist_14',['nested_initializer_list',['../structxt_1_1nested__initializer__list.html',1,'xt']]], + ['nested_5finitializer_5flist_3c_20t_2c_200_20_3e_15',['nested_initializer_list< T, 0 >',['../structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html',1,'xt']]], + ['newaxis_16',['newaxis',['../namespacext.html#a534914903c805a597a5fac60e60e7c43',1,'xt']]], + ['no_5fownership_17',['no_ownership',['../structxt_1_1no__ownership.html',1,'xt']]], + ['noalias_5fproxy_18',['noalias_proxy',['../classxt_1_1noalias__proxy.html',1,'xt']]], + ['none_19',['none',['../structxt_1_1check__policy_1_1none.html',1,'xt::check_policy']]], + ['nonzero_20',['nonzero',['../group__logical__operators.html#ga9f570271ba6f20a0d6a5880fa4ae83cb',1,'xt']]], + ['norm_21',['norm',['../group__xt__xcomplex.html#gad3afef5ff535998e5dd0d95a979c54bf',1,'xt']]], + ['norm_5ffun_22',['norm_fun',['../structxt_1_1math_1_1norm__fun.html',1,'xt::math']]], + ['norm_5finduced_5fl1_23',['norm_induced_l1',['../group__red__functions.html#ga6756e0125ea6eaf41da4d72c863222ad',1,'xt']]], + ['norm_5finduced_5flinf_24',['norm_induced_linf',['../group__red__functions.html#ga32553e96de228c6a760ea1e7eac51dbd',1,'xt']]], + ['norm_5fl0_25',['norm_l0',['../group__red__functions.html#gad29e1eba5e05138bd5db7bfc577215f1',1,'xt']]], + ['norm_5fl1_26',['norm_l1',['../group__red__functions.html#ga75c1f16a4c45c0ded05f6a50f8245385',1,'xt']]], + ['norm_5fl2_27',['norm_l2',['../group__red__functions.html#gad8d838a048615ed661350fcd7af66d06',1,'xt::norm_l2(E &&e, X &&axes, EVS es=EVS()) noexcept'],['../group__red__functions.html#ga612264ac7b3ed369ebe6da569e2bf7f5',1,'xt::norm_l2(E &&e, EVS es=EVS()) noexcept']]], + ['norm_5flinf_28',['norm_linf',['../group__red__functions.html#gad3987362169c6b7f82dc4acaa012c65f',1,'xt']]], + ['norm_5flp_29',['norm_lp',['../group__red__functions.html#ga4f5622197f95e83dafec8394265fd750',1,'xt']]], + ['norm_5flp_5fto_5fp_30',['norm_lp_to_p',['../group__red__functions.html#gaa1062bcc8bc659e9a09a5816626d5575',1,'xt']]], + ['norm_5fof_5farray_5felements_5fimpl_31',['norm_of_array_elements_impl',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20long_20double_2c_20false_2c_20true_20_3e_32',['norm_of_array_elements_impl< long double, false, true >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20t_2c_20false_2c_20false_20_3e_33',['norm_of_array_elements_impl< T, false, false >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20t_2c_20false_2c_20true_20_3e_34',['norm_of_array_elements_impl< T, false, true >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20t_2c_20true_2c_20false_20_3e_35',['norm_of_array_elements_impl< T, true, false >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20void_20_2a_2c_20false_2c_20false_20_3e_36',['norm_of_array_elements_impl< void *, false, false >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5fscalar_5fimpl_37',['norm_of_scalar_impl',['../structxt_1_1traits__detail_1_1norm__of__scalar__impl.html',1,'xt::traits_detail']]], + ['norm_5fof_5fscalar_5fimpl_3c_20t_2c_20false_20_3e_38',['norm_of_scalar_impl< T, false >',['../structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5fscalar_5fimpl_3c_20t_2c_20true_20_3e_39',['norm_of_scalar_impl< T, true >',['../structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5fvector_5fimpl_40',['norm_of_vector_impl',['../structxt_1_1traits__detail_1_1norm__of__vector__impl.html',1,'xt::traits_detail']]], + ['norm_5fsq_41',['norm_sq',['../group__red__functions.html#ga243ff01254cf5c1bcfe3ef6b6b67331d',1,'xt']]], + ['norm_5ftype_42',['norm_type',['../structxt_1_1norm__type.html',1,'xt']]], + ['norm_5ftype_5fbase_43',['norm_type_base',['../structxt_1_1traits__detail_1_1norm__type__base.html',1,'xt::traits_detail']]], + ['norm_5ftype_5fbase_3c_20t_20_3e_44',['norm_type_base< T >',['../structxt_1_1traits__detail_1_1norm__type__base.html',1,'xt::traits_detail']]], + ['norm_5ftype_5ft_45',['norm_type_t',['../namespacext.html#aed30dc278eedd175bd6b1b4c86327f47',1,'xt']]], + ['normal_46',['normal',['../group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dafea087517c26fadd409bd4b9dc642555',1,'xt']]], + ['normal_5funbiased_47',['normal_unbiased',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edad1056b777fd87429ccb7a8a55db32545',1,'xt']]], + ['normalize_5fperiodic_48',['normalize_periodic',['../group__xt__xstrides.html#gafa51177b0954ec061327dab5d8055ddb',1,'xt']]], + ['not_5fequal_49',['not_equal',['../group__comparison__operators.html#ga014ea335af4e1334f9d95ca6f9b9f6ce',1,'xt']]], + ['numeric_5fconstants_50',['numeric_constants',['../structxt_1_1numeric__constants.html',1,'xt']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..eda4cd7ef --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['of_20stl_20like_20containers_0',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['ones_1',['ones',['../namespacext.html#a498ae15885758184e0ee9def889b6bfb',1,'xt']]], + ['ones_5flike_2',['ones_like',['../namespacext.html#a40664e859ef008b427ea6d8a013ebb96',1,'xt']]], + ['operations_3',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['operator_21_4',['operator!',['../group__logical__operators.html#ga669c5968e594e618cd199674074c32e4',1,'xt']]], + ['operator_21_3d_5',['operator!=',['../namespacext.html#aafb4918c6aea49e7968e4ed024a70a99',1,'xt::operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)'],['../namespacext.html#a1e99b6c54f3a5fca29006d1b114e356d',1,'xt::operator!=(const xaxis_slice_iterator< CT > &lhs, const xaxis_slice_iterator< CT > &rhs)'],['../group__comparison__operators.html#gaae699c5c8cda32f45372da2daee9a9b4',1,'xt::operator!=(const xexpression< E1 > &e1, const xexpression< E2 > &e2)']]], + ['operator_25_6',['operator%',['../group__arithmetic__operators.html#gaa3c78e8ff8a284881563ccbdd64bf145',1,'xt']]], + ['operator_25_3d_7',['operator%=',['../classxt_1_1xsemantic__base.html#a097cecfc7ed32171204a465c057b21aa',1,'xt::xsemantic_base::operator%=()'],['../classxt_1_1xfiltration.html#a75cb70a24a3740144a49ca60edfa6b65',1,'xt::xfiltration::operator%=()'],['../classxt_1_1xsemantic__base.html#afc0cf14e98f80e1a266aed5ab59d3a26',1,'xt::xsemantic_base::operator%=()']]], + ['operator_26_8',['operator&',['../group__bitwise__operators.html#ga0084d8f6f0f513d35a35e79f7fffc2fb',1,'xt']]], + ['operator_26_26_9',['operator&&',['../group__logical__operators.html#ga95f7645635520ba70e7d0d9b0e989205',1,'xt']]], + ['operator_26_3d_10',['operator&=',['../classxt_1_1xsemantic__base.html#aa64e63246393baa97cda0409dfe880f9',1,'xt::xsemantic_base::operator&=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a9e53cf500ff97971980632a01242e40f',1,'xt::xsemantic_base::operator&=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operator_28_29_11',['operator()',['../classxt_1_1xfunctor__applier__base.html#a63939aecf0c7f315aab8119a2790aa69',1,'xt::xfunctor_applier_base::operator()()'],['../classxt_1_1xcontainer.html#a6bcf87fdd442aa26095837b359d9b4e8',1,'xt::xcontainer::operator()(Args... args) -> reference'],['../classxt_1_1xcontainer.html#aeee2e07bb1f3e66193e5ef3432b4011a',1,'xt::xcontainer::operator()(Args... args) const -> const_reference'],['../classxt_1_1xfunction.html#af161015b6c0ce2dc7654f26b6e1a16c2',1,'xt::xfunction::operator()()'],['../classxt_1_1xbroadcast.html#afca42261ce09c53e109862b63ea8bf87',1,'xt::xbroadcast::operator()()'],['../classxt_1_1xindex__view.html#aab9b1fd3d2f19db29b52cd9cad772a2d',1,'xt::xindex_view::operator()(size_type idx=size_type(0)) const'],['../classxt_1_1xindex__view.html#ab0eefdf0f3dedf19a78763643718e353',1,'xt::xindex_view::operator()(size_type idx=size_type(0))'],['../classxt_1_1xfunctor__applier__base.html#a5b63f2bdd4620e52cc453fafd78831d3',1,'xt::xfunctor_applier_base::operator()()'],['../classxt_1_1xgenerator.html#a5d2e22a7df365f2d238aef28715a46f8',1,'xt::xgenerator::operator()()'],['../classxt_1_1xmasked__view.html#a871b0392cccaac8fb981273bb5008186',1,'xt::xmasked_view::operator()(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a7cd2236961bba48f19933c8450052790',1,'xt::xmasked_view::operator()(Args... args) const -> const_reference'],['../classxt_1_1xoptional__assembly__base.html#aea309f566b610b826a2609bb32b63d25',1,'xt::xoptional_assembly_base::operator()(Args... args) -> reference'],['../classxt_1_1xoptional__assembly__base.html#ab5abb6c1e1c8c57c1662421c5f679b5a',1,'xt::xoptional_assembly_base::operator()(Args... args) const -> const_reference'],['../classxt_1_1xreducer.html#a979a86f103f655328d35e67fcc5bca7b',1,'xt::xreducer::operator()()'],['../classxt_1_1xrepeat.html#aa896d82b715c106f2424266feabfe7d9',1,'xt::xrepeat::operator()()'],['../classxt_1_1xstrided__view__base.html#a567f05613c6dfb65b68289e994d09183',1,'xt::xstrided_view_base::operator()(Args... args) -> reference'],['../classxt_1_1xstrided__view__base.html#a986bbe34c4e1ffb0948b9d9a2238c7ce',1,'xt::xstrided_view_base::operator()(Args... args) const -> const_reference'],['../classxt_1_1xview.html#a16ffe8d0c8b973c2fa28e75c2f353437',1,'xt::xview::operator()(Args... args) -> reference'],['../classxt_1_1xview.html#a9bfc52bb7a7844eb976a096875d6a5a6',1,'xt::xview::operator()(Args... args) const -> const_reference']]], + ['operator_2a_12',['operator*',['../classxt_1_1xaxis__slice__iterator.html#a8250c9f5f36a93e0e3ff856f9bd6ab2b',1,'xt::xaxis_slice_iterator::operator*()'],['../group__arithmetic__operators.html#gaee209a211df9c1fdd671fe786c01eca6',1,'xt::operator*()'],['../classxt_1_1xaxis__iterator.html#a150d158b5c15befbed66477acf3ea890',1,'xt::xaxis_iterator::operator*()']]], + ['operator_2a_3d_13',['operator*=',['../classxt_1_1xsemantic__base.html#aaec30e9ec0a24602c707935671e72798',1,'xt::xsemantic_base::operator*=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#abc6dededcc7548c86d0e680723332507',1,'xt::xsemantic_base::operator*=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#a5911e1b618eb8b240f8f93accccda5d7',1,'xt::xfiltration::operator*=()']]], + ['operator_2b_14',['operator+',['../group__arithmetic__operators.html#ga4f6fda1324731f7d8c7bedfd786fd711',1,'xt::operator+(E &&e) noexcept -> detail::xfunction_type_t< detail::identity, E >'],['../group__arithmetic__operators.html#ga3a0012dd54e6eddb1dc1499bda3835fc',1,'xt::operator+(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::plus, E1, E2 >']]], + ['operator_2b_2b_15',['operator++',['../classxt_1_1xaxis__slice__iterator.html#a58c7c5d0bec327a8fb5d1f63b6122822',1,'xt::xaxis_slice_iterator::operator++(int)'],['../classxt_1_1xaxis__slice__iterator.html#a6712f741da8a93fa4c0785888d008608',1,'xt::xaxis_slice_iterator::operator++()'],['../classxt_1_1xaxis__iterator.html#af118e8a489b3ee60287f8848a42c3ec8',1,'xt::xaxis_iterator::operator++(int)'],['../classxt_1_1xaxis__iterator.html#aa6a381b3f4e53a2b7b2a0385e2675b65',1,'xt::xaxis_iterator::operator++()']]], + ['operator_2b_3d_16',['operator+=',['../classxt_1_1xsemantic__base.html#a9e31dbd09cdb7b7676d33243732f3ac7',1,'xt::xsemantic_base::operator+=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a8d5c560eb7c807fb0806864fb0b46c50',1,'xt::xsemantic_base::operator+=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#a2fae2b71a4134ec799668a13cdc60d9a',1,'xt::xfiltration::operator+=()']]], + ['operator_2d_17',['operator-',['../group__arithmetic__operators.html#gadcc7da6c96325690024067869af4e3bf',1,'xt::operator-(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::minus, E1, E2 >'],['../group__arithmetic__operators.html#gae9984fddddb53d90fcef38c017ebb5c9',1,'xt::operator-(E &&e) noexcept -> detail::xfunction_type_t< detail::negate, E >']]], + ['operator_2d_3d_18',['operator-=',['../classxt_1_1xsemantic__base.html#aa9edf1d0dba25f33a6f1955dfe333d66',1,'xt::xsemantic_base::operator-=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#afa46b608eb0ee224aa7592404ba01b20',1,'xt::xsemantic_base::operator-=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#acfb314430c89b71133595cb83f84a75e',1,'xt::xfiltration::operator-=()']]], + ['operator_2d_3e_19',['operator->',['../classxt_1_1xaxis__slice__iterator.html#a98d80126e4d0c78658fabe73303913bb',1,'xt::xaxis_slice_iterator::operator->()'],['../classxt_1_1xaxis__iterator.html#a265baea7c543cabd5f9b074d39371310',1,'xt::xaxis_iterator::operator->()']]], + ['operator_2f_20',['operator/',['../group__arithmetic__operators.html#ga5c9e3cca169a86ea0974e67d562f7f8c',1,'xt']]], + ['operator_2f_3d_21',['operator/=',['../classxt_1_1xsemantic__base.html#a2ff7796563ea73e3aff6ce17ff2c1f42',1,'xt::xsemantic_base::operator/=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#af008542eab3a41140cfe12dca74232ee',1,'xt::xsemantic_base::operator/=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#a2bc58cd24579e8d62efd55fdb750ed40',1,'xt::xfiltration::operator/=()']]], + ['operator_3c_22',['operator<',['../group__comparison__operators.html#ga2adbdc9609fe51aa3e50955fe039ba67',1,'xt']]], + ['operator_3c_3c_23',['operator<<',['../group__bitwise__operators.html#gaa7b48fdbaa2c12656338470eb3cc5c8e',1,'xt']]], + ['operator_3c_3d_24',['operator<=',['../group__comparison__operators.html#gaf7b3cb0fe146e5a95a750a1291bfdcca',1,'xt']]], + ['operator_3d_25',['operator=',['../classxt_1_1xoptional__assembly.html#af67042d373194546b43afffb160ce687',1,'xt::xoptional_assembly::operator=()'],['../classxt_1_1xarray__container.html#ac47c631a33e292371fab8acff451f269',1,'xt::xarray_container::operator=()'],['../classxt_1_1xfixed__container.html#a02686e37949d2c9076cd7b5656e7db3b',1,'xt::xfixed_container::operator=()'],['../classxt_1_1xfixed__adaptor.html#a5eba04b65afb8377a248f1253605f7d2',1,'xt::xfixed_adaptor::operator=()'],['../classxt_1_1xfunctor__view.html#a9e41f726bcd647106ca9f420a045d228',1,'xt::xfunctor_view::operator=()'],['../classxt_1_1xfunctor__adaptor.html#a4eaf31a6089dc47d2e772fa6590514bd',1,'xt::xfunctor_adaptor::operator=()'],['../classxt_1_1xindex__view.html#aac159eb55755735609a3095f1e73bf3a',1,'xt::xindex_view::operator=()'],['../classxt_1_1xfiltration.html#a13d467d1d2a39fb0b3cdee0b60d2db68',1,'xt::xfiltration::operator=()'],['../classxt_1_1xoptional__assembly__adaptor.html#ae9fc0069591e77f0b879152b82032987',1,'xt::xoptional_assembly_adaptor::operator=()'],['../classxt_1_1xstrided__view.html#a48ae99185454667efcd738a48ddc43bf',1,'xt::xstrided_view::operator=()'],['../classxt_1_1xtensor__container.html#a1b82b2aea047cca3d11106062721c34c',1,'xt::xtensor_container::operator=()'],['../classxt_1_1xtensor__adaptor.html#af034feb75cd6690b25a4c6b7b4a20bc5',1,'xt::xtensor_adaptor::operator=()'],['../classxt_1_1xview.html#af7f042302a75ce76b1ce094b38529188',1,'xt::xview::operator=()'],['../classxt_1_1xtensor__view.html#a595e97c93a52f5f196d00396435ec76b',1,'xt::xtensor_view::operator=()'],['../classxt_1_1xarray__adaptor.html#aece6f91aa92298df35846b524613828b',1,'xt::xarray_adaptor::operator=()']]], + ['operator_3d_3d_26',['operator==',['../group__comparison__operators.html#gaa82e19b7daac1f55388a62f89cd5f9c7',1,'xt::operator==(const xexpression< E1 > &e1, const xexpression< E2 > &e2)'],['../namespacext.html#aa8afbf971ca9887515e974de1775cf03',1,'xt::operator==(const xaxis_slice_iterator< CT > &lhs, const xaxis_slice_iterator< CT > &rhs)'],['../namespacext.html#a49dd71cabe349f77ec771f01fc46aeb3',1,'xt::operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)']]], + ['operator_3e_27',['operator>',['../group__comparison__operators.html#ga3addaced4bd7bdacea4a842d9d6c850a',1,'xt']]], + ['operator_3e_3d_28',['operator>=',['../group__comparison__operators.html#gaa40baca1e4f53789261cd3e8736a98ef',1,'xt']]], + ['operator_3e_3e_29',['operator>>',['../group__bitwise__operators.html#gace6ce969d4a7bdee37e410309448df92',1,'xt']]], + ['operator_5b_5d_30',['operator[]',['../classxt_1_1xoptional__assembly__base.html#af783d13bcc3bbd5082fdc79f8f2aeee8',1,'xt::xoptional_assembly_base::operator[](const S &index) const -> disable_integral_t< S, const_reference >'],['../classxt_1_1xoptional__assembly__base.html#ab9a1749164786ed873b216223098fe31',1,'xt::xoptional_assembly_base::operator[](const S &index) -> disable_integral_t< S, reference >'],['../classxt_1_1xindex__view.html#a2a2211fb97b8bbb0b6a8ea3e4ac6c0b5',1,'xt::xindex_view::operator[](const S &index) const -> disable_integral_t< S, const_reference >'],['../classxt_1_1xindex__view.html#a5f26e28734c1db46865b6eeb39009a2a',1,'xt::xindex_view::operator[](const S &index) -> disable_integral_t< S, reference >'],['../classxt_1_1xaccessible.html#a45649ae70e8ea6cbda28caa423347c96',1,'xt::xaccessible::operator[]()'],['../classxt_1_1xconst__accessible.html#a125b98dd7a0ea4919f19b69256930ff8',1,'xt::xconst_accessible::operator[]()']]], + ['operator_5e_31',['operator^',['../group__bitwise__operators.html#ga85c9a2b613116854aa104a4005f2a0f4',1,'xt']]], + ['operator_5e_3d_32',['operator^=',['../classxt_1_1xsemantic__base.html#a61d5bbbb065e48c74db69c4276673a34',1,'xt::xsemantic_base::operator^=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a7c74b14f291bccf501760aa166cd7bd6',1,'xt::xsemantic_base::operator^=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operators_33',['operators',['../group__arithmetic__operators.html',1,'Arithmetic operators'],['../group__bitwise__operators.html',1,'Bitwise operators'],['../group__casting__operators.html',1,'Casting operators'],['../group__comparison__operators.html',1,'Comparison operators'],['../group__logical__operators.html',1,'Logical operators']]], + ['operator_7c_34',['operator|',['../group__bitwise__operators.html#gac1e3650f1eae70c7ab951cce7df0b7ac',1,'xt']]], + ['operator_7c_3d_35',['operator|=',['../classxt_1_1xsemantic__base.html#ab09ec4698094a4a1efbaa1ccbb609d42',1,'xt::xsemantic_base::operator|=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a5fe0e38a7065e67565d46179727fe399',1,'xt::xsemantic_base::operator|=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operator_7c_7c_36',['operator||',['../group__logical__operators.html#gab0fb5db8b5da410253c08053a1c9c518',1,'xt']]], + ['operator_7e_37',['operator~',['../group__bitwise__operators.html#ga61f9831f1f2da86982f23d8e4e45e3db',1,'xt']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..f221094b6 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['pad_0',['pad',['../namespacext.html#a030cc6fd43c1f7a452a4ed069881a4fa',1,'xt::pad(E &&e, const std::vector< std::vector< S > > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)'],['../namespacext.html#ad10c047180a5ce9129d25c180369ad00',1,'xt::pad(E &&e, S pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)'],['../namespacext.html#abd5658ce24f2035e2175546c9ca6ec59',1,'xt::pad(E &&e, const std::vector< S > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)']]], + ['pad_5fmode_1',['pad_mode',['../namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7',1,'xt']]], + ['partition_2',['partition',['../group__xt__xsort.html#ga6177ff3c8d30606b88a0bbcacd8dcf4e',1,'xt']]], + ['periodic_3',['periodic',['../classxt_1_1xconst__accessible.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xconst_accessible::periodic()'],['../classxt_1_1xaccessible.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xaccessible::periodic()'],['../classxt_1_1xoptional__assembly__base.html#a1b77e82dc265d815b17f17d337d96636',1,'xt::xoptional_assembly_base::periodic(Args... args) -> reference'],['../classxt_1_1xoptional__assembly__base.html#a282a52135c367ae4d80db9575f41d3a5',1,'xt::xoptional_assembly_base::periodic(Args... args) const -> const_reference'],['../classxt_1_1xaccessible.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xaccessible::periodic()'],['../classxt_1_1xcontainer.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xcontainer::periodic(Args... args) -> reference'],['../classxt_1_1xcontainer.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xcontainer::periodic(Args... args) const -> const_reference'],['../classxt_1_1xfunction.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xfunction::periodic()'],['../classxt_1_1xfunctor__applier__base.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xfunctor_applier_base::periodic(Args... args) -> reference'],['../classxt_1_1xfunctor__applier__base.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xfunctor_applier_base::periodic(Args... args) const -> const_reference'],['../classxt_1_1xmasked__view.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xmasked_view::periodic(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xmasked_view::periodic(Args... args) const -> const_reference'],['../classxt_1_1xscalar.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xscalar::periodic(Args... args) -> reference'],['../classxt_1_1xscalar.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xscalar::periodic(Args... args) const -> const_reference']]], + ['plus_5fassign_4',['plus_assign',['../classxt_1_1xsemantic__base.html#aabefbeb56a74c2098c0fe976227ebdc8',1,'xt::xsemantic_base']]], + ['point_20operations_5',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['pow_6',['pow',['../group__pow__functions.html#ga726d449a0411dabbe7451c38cec235ae',1,'xt::pow(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >'],['../group__pow__functions.html#ga9cf15362f1892675576f2298c01e2b6b',1,'xt::pow(E &&e) noexcept']]], + ['pow_5ffun_7',['pow_fun',['../structxt_1_1math_1_1pow__fun.html',1,'xt::math']]], + ['power_20functions_8',['Power functions',['../group__pow__functions.html',1,'']]], + ['precision_9',['precision',['../classxt_1_1print__options_1_1precision.html',1,'xt::print_options']]], + ['print_5foptions_5fimpl_10',['print_options_impl',['../structxt_1_1print__options_1_1print__options__impl.html',1,'xt::print_options']]], + ['prod_11',['prod',['../group__red__functions.html#ga90d729a5dc08b66740997ad3e7fdb0c1',1,'xt']]], + ['promote_5fshape_12',['promote_shape',['../structxt_1_1promote__shape.html',1,'xt']]], + ['promote_5fstrides_13',['promote_strides',['../structxt_1_1promote__strides.html',1,'xt']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 000000000..6633b28b2 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['quantile_0',['quantile',['../group__xt__xsort.html#ga7dd83e71409830d5211608257f18e361',1,'xt::quantile(E &&e, const P &probas, std::ptrdiff_t axis, T alpha, T beta)'],['../group__xt__xsort.html#gae3b1b26f618ece7324455223330d5780',1,'xt::quantile(E &&e, const P &probas, T alpha, T beta)'],['../group__xt__xsort.html#ga632a72d1def84debe56b68d79a451f11',1,'xt::quantile(E &&e, const P &probas, std::ptrdiff_t axis, quantile_method method=quantile_method::linear)'],['../group__xt__xsort.html#gaa8159912f652b20d4477c0187dfb301f',1,'xt::quantile(E &&e, const P &probas, quantile_method method=quantile_method::linear)']]], + ['quantile_5fmethod_1',['quantile_method',['../group__xt__xsort.html#ga2afe52f60aa76f33b0b883a78cabc1ed',1,'xt']]], + ['quick_2',['quick',['../namespacext.html#ac4aea058f50a232746da4591e8956623a1df3746a4728276afdc24f828186f73a',1,'xt']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..723e4490c --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['abs_5ffun_0',['abs_fun',['../structxt_1_1math_1_1abs__fun.html',1,'xt::math']]], + ['acos_5ffun_1',['acos_fun',['../structxt_1_1math_1_1acos__fun.html',1,'xt::math']]], + ['acosh_5ffun_2',['acosh_fun',['../structxt_1_1math_1_1acosh__fun.html',1,'xt::math']]], + ['acquire_5fownership_3',['acquire_ownership',['../structxt_1_1acquire__ownership.html',1,'xt']]], + ['aligned_5fallocator_4',['aligned_allocator',['../classxt__simd_1_1aligned__allocator.html',1,'xt_simd']]], + ['aligned_5farray_5',['aligned_array',['../classxt_1_1aligned__array.html',1,'xt']]], + ['aligned_5fmode_6',['aligned_mode',['../structxt__simd_1_1aligned__mode.html',1,'xt_simd']]], + ['allocator_5falignment_7',['allocator_alignment',['../structxt__simd_1_1allocator__alignment.html',1,'xt_simd']]], + ['apply_5fcv_8',['apply_cv',['../structxt_1_1apply__cv.html',1,'xt']]], + ['arg_5ffun_9',['arg_fun',['../structxt_1_1math_1_1arg__fun.html',1,'xt::math']]], + ['asin_5ffun_10',['asin_fun',['../structxt_1_1math_1_1asin__fun.html',1,'xt::math']]], + ['asinh_5ffun_11',['asinh_fun',['../structxt_1_1math_1_1asinh__fun.html',1,'xt::math']]], + ['atan2_5ffun_12',['atan2_fun',['../structxt_1_1math_1_1atan2__fun.html',1,'xt::math']]], + ['atan_5ffun_13',['atan_fun',['../structxt_1_1math_1_1atan__fun.html',1,'xt::math']]], + ['atanh_5ffun_14',['atanh_fun',['../structxt_1_1math_1_1atanh__fun.html',1,'xt::math']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..fbaebc19f --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['big_5fpromote_5fvalue_5ftype_0',['big_promote_value_type',['../structxt_1_1big__promote__value__type.html',1,'xt']]], + ['broadcast_5ferror_1',['broadcast_error',['../classxt_1_1broadcast__error.html',1,'xt']]], + ['buffer_5finner_5ftypes_2',['buffer_inner_types',['../structxt_1_1buffer__inner__types.html',1,'xt']]], + ['buffer_5finner_5ftypes_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_3',['buffer_inner_types< xbuffer_adaptor< CP, O, A > >',['../structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html',1,'xt']]], + ['buffer_5finner_5ftypes_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_4',['buffer_inner_types< xiterator_adaptor< I, CI > >',['../structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html',1,'xt']]], + ['buffer_5finner_5ftypes_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_5',['buffer_inner_types< xiterator_owner_adaptor< C, IG > >',['../structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html',1,'xt']]] +]; diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 000000000..1c6699f15 --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['tan_5ffun_0',['tan_fun',['../structxt_1_1math_1_1tan__fun.html',1,'xt::math']]], + ['tanh_5ffun_1',['tanh_fun',['../structxt_1_1math_1_1tanh__fun.html',1,'xt::math']]], + ['temporary_5fcontainer_2',['temporary_container',['../structxt_1_1temporary__container.html',1,'xt']]], + ['temporary_5fcontainer_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_3',['temporary_container< xbuffer_adaptor< CP, O, A > >',['../structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html',1,'xt']]], + ['temporary_5fcontainer_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_4',['temporary_container< xiterator_adaptor< I, CI > >',['../structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html',1,'xt']]], + ['temporary_5fcontainer_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_5',['temporary_container< xiterator_owner_adaptor< C, IG > >',['../structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html',1,'xt']]], + ['temporary_5ftype_6',['temporary_type',['../structxt_1_1temporary__type.html',1,'xt']]], + ['temporary_5ftype_3c_20t_2c_20void_5ft_3c_20typename_20std_3a_3adecay_5ft_3c_20t_20_3e_3a_3atemporary_5ftype_20_3e_20_3e_7',['temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >',['../structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html',1,'xt']]], + ['temporary_5ftype_5ffrom_5ftag_8',['temporary_type_from_tag',['../structxt_1_1temporary__type__from__tag.html',1,'xt']]], + ['temporary_5ftype_5ffrom_5ftag_3c_20xtensor_5fexpression_5ftag_2c_20t_20_3e_9',['temporary_type_from_tag< xtensor_expression_tag, T >',['../structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html',1,'xt']]], + ['tgamma_5ffun_10',['tgamma_fun',['../structxt_1_1math_1_1tgamma__fun.html',1,'xt::math']]], + ['threshold_11',['threshold',['../classxt_1_1print__options_1_1threshold.html',1,'xt::print_options']]], + ['tracking_5fallocator_12',['tracking_allocator',['../structxt_1_1tracking__allocator.html',1,'xt']]], + ['transpose_5ferror_13',['transpose_error',['../classxt_1_1transpose__error.html',1,'xt']]], + ['trunc_5ffun_14',['trunc_fun',['../structxt_1_1math_1_1trunc__fun.html',1,'xt::math']]], + ['tuple_5fidx_5fof_15',['tuple_idx_of',['../structxt_1_1tuple__idx__of.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_16',['tuple_idx_of_impl',['../structxt_1_1tuple__idx__of__impl.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_3c_20i_2c_20t_2c_20std_3a_3atuple_3c_20t_2c_20types_2e_2e_2e_20_3e_20_3e_17',['tuple_idx_of_impl< I, T, std::tuple< T, Types... > >',['../structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_3c_20i_2c_20t_2c_20std_3a_3atuple_3c_20u_2c_20types_2e_2e_2e_20_3e_20_3e_18',['tuple_idx_of_impl< I, T, std::tuple< U, Types... > >',['../structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html',1,'xt']]], + ['tuple_5fidx_5fof_5fimpl_3c_20i_2c_20t_2c_20std_3a_3atuple_3c_3e_20_3e_19',['tuple_idx_of_impl< I, T, std::tuple<> >',['../structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html',1,'xt']]] +]; diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 000000000..0b26ca659 --- /dev/null +++ b/search/classes_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unaligned_5fmode_0',['unaligned_mode',['../structxt__simd_1_1unaligned__mode.html',1,'xt_simd']]], + ['uvector_1',['uvector',['../classxt_1_1uvector.html',1,'xt']]] +]; diff --git a/search/classes_12.js b/search/classes_12.js new file mode 100644 index 000000000..f6737eb9a --- /dev/null +++ b/search/classes_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['valid_0',['valid',['../structxt_1_1convolve__mode_1_1valid.html',1,'xt::convolve_mode']]], + ['view_5ftemporary_5ftype_1',['view_temporary_type',['../structxt_1_1view__temporary__type.html',1,'xt']]] +]; diff --git a/search/classes_13.js b/search/classes_13.js new file mode 100644 index 000000000..8f8c7cfa0 --- /dev/null +++ b/search/classes_13.js @@ -0,0 +1,422 @@ +var searchData= +[ + ['xaccessible_0',['xaccessible',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_1',['xaccessible< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_2',['xaccessible< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_3',['xaccessible< xchunked_array< chunk_storage > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_4',['xaccessible< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_5',['xaccessible< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_6',['xaccessible< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_7',['xaccessible< xfunctor_adaptor< F, CT > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_8',['xaccessible< xfunctor_view< F, CT > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_9',['xaccessible< xmasked_view< CTD, CTM > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_10',['xaccessible< xreducer< F, CT, X, O > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xscalar_3c_20ct_20_3e_20_3e_11',['xaccessible< xscalar< CT > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_12',['xaccessible< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_13',['xaccessible< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_14',['xaccessible< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_15',['xaccessible< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_16',['xaccessible< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccessible_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_17',['xaccessible< xview< CT, S... > >',['../classxt_1_1xaccessible.html',1,'xt']]], + ['xaccumulator_5ffunctor_18',['xaccumulator_functor',['../structxt_1_1xaccumulator__functor.html',1,'xt']]], + ['xall_19',['xall',['../classxt_1_1xall.html',1,'xt']]], + ['xall_5ftag_20',['xall_tag',['../structxt_1_1xall__tag.html',1,'xt']]], + ['xarray_5fadaptor_21',['xarray_adaptor',['../classxt_1_1xarray__adaptor.html',1,'xt']]], + ['xarray_5fadaptor_5fbase_3c_20ec_2c_20l_2c_20sc_2c_20xoptional_5fexpression_5ftag_20_3e_22',['xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >',['../structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xarray_5fadaptor_5foptional_5ftraits_23',['xarray_adaptor_optional_traits',['../structxt_1_1extension_1_1xarray__adaptor__optional__traits.html',1,'xt::extension']]], + ['xarray_5fcontainer_24',['xarray_container',['../classxt_1_1xarray__container.html',1,'xt']]], + ['xarray_5fcontainer_5fbase_25',['xarray_container_base',['../structxt_1_1extension_1_1xarray__container__base.html',1,'xt::extension']]], + ['xarray_5fcontainer_5fbase_3c_20ec_2c_20l_2c_20sc_2c_20xoptional_5fexpression_5ftag_20_3e_26',['xarray_container_base< EC, L, SC, xoptional_expression_tag >',['../structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xarray_5fcontainer_5fbase_3c_20ec_2c_20l_2c_20sc_2c_20xtensor_5fexpression_5ftag_20_3e_27',['xarray_container_base< EC, L, SC, xtensor_expression_tag >',['../structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['xarray_5fcontainer_5foptional_5ftraits_28',['xarray_container_optional_traits',['../structxt_1_1extension_1_1xarray__container__optional__traits.html',1,'xt::extension']]], + ['xarray_5foptional_5ftraits_29',['xarray_optional_traits',['../structxt_1_1extension_1_1xarray__optional__traits.html',1,'xt::extension']]], + ['xassign_5ftraits_30',['xassign_traits',['../classxt_1_1xassign__traits.html',1,'xt']]], + ['xaxis_5fiterator_31',['xaxis_iterator',['../classxt_1_1xaxis__iterator.html',1,'xt']]], + ['xaxis_5fslice_5fiterator_32',['xaxis_slice_iterator',['../classxt_1_1xaxis__slice__iterator.html',1,'xt']]], + ['xblockwise_5freducer_33',['xblockwise_reducer',['../classxt_1_1xblockwise__reducer.html',1,'xt']]], + ['xbounded_5fiterator_34',['xbounded_iterator',['../classxt_1_1xbounded__iterator.html',1,'xt']]], + ['xbroadcast_35',['xbroadcast',['../classxt_1_1xbroadcast.html',1,'xt']]], + ['xbroadcast_5fbase_36',['xbroadcast_base',['../structxt_1_1extension_1_1xbroadcast__base.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_37',['xbroadcast_base_impl',['../structxt_1_1extension_1_1xbroadcast__base__impl.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20x_20_3e_38',['xbroadcast_base_impl< xexpression_tag_t< CT >, CT, X >',['../structxt_1_1extension_1_1xbroadcast__base__impl.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_39',['xbroadcast_base_impl< xoptional_expression_tag, CT, X >',['../structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xbroadcast_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_40',['xbroadcast_base_impl< xtensor_expression_tag, CT, X >',['../structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xbroadcast_5foptional_41',['xbroadcast_optional',['../classxt_1_1extension_1_1xbroadcast__optional.html',1,'xt::extension']]], + ['xbuffer_5fadaptor_42',['xbuffer_adaptor',['../classxt_1_1xbuffer__adaptor.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_43',['xbuffer_adaptor_base',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_44',['xbuffer_adaptor_base< xbuffer_adaptor< CP, O, A > >',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_45',['xbuffer_adaptor_base< xiterator_adaptor< I, CI > >',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xbuffer_5fadaptor_5fbase_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_46',['xbuffer_adaptor_base< xiterator_owner_adaptor< C, IG > >',['../classxt_1_1xbuffer__adaptor__base.html',1,'xt']]], + ['xchunk_5fiterator_47',['xchunk_iterator',['../classxt_1_1xchunk__iterator.html',1,'xt']]], + ['xchunked_5farray_48',['xchunked_array',['../classxt_1_1xchunked__array.html',1,'xt']]], + ['xchunked_5fassigner_49',['xchunked_assigner',['../classxt_1_1xchunked__assigner.html',1,'xt']]], + ['xchunked_5fsemantic_50',['xchunked_semantic',['../classxt_1_1xchunked__semantic.html',1,'xt']]], + ['xchunked_5fsemantic_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_51',['xchunked_semantic< xchunked_array< chunk_storage > >',['../classxt_1_1xchunked__semantic.html',1,'xt']]], + ['xchunked_5fview_52',['xchunked_view',['../classxt_1_1xchunked__view.html',1,'xt']]], + ['xchunked_5fview_3c_20const_20std_3a_3adecay_5ft_3c_20ct_20_3e_20_26_20_3e_53',['xchunked_view< const std::decay_t< CT > & >',['../classxt_1_1xchunked__view.html',1,'xt']]], + ['xclosure_54',['xclosure',['../structxt_1_1xclosure.html',1,'xt']]], + ['xclosure_3c_20e_2c_20disable_5fxexpression_3c_20std_3a_3adecay_5ft_3c_20e_20_3e_20_3e_20_3e_55',['xclosure< E, disable_xexpression< std::decay_t< E > > >',['../structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html',1,'xt']]], + ['xclosure_3c_20xshared_5fexpression_3c_20e_20_3e_2c_20std_3a_3aenable_5fif_5ft_3c_20true_20_3e_20_3e_56',['xclosure< xshared_expression< E >, std::enable_if_t< true > >',['../structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html',1,'xt']]], + ['xconst_5faccessible_57',['xconst_accessible',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_58',['xconst_accessible< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_59',['xconst_accessible< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_60',['xconst_accessible< xbroadcast< CT, X > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_61',['xconst_accessible< xchunked_array< chunk_storage > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_62',['xconst_accessible< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_63',['xconst_accessible< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_64',['xconst_accessible< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_65',['xconst_accessible< xfunction< F, CT... > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_66',['xconst_accessible< xfunctor_adaptor< F, CT > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_67',['xconst_accessible< xfunctor_view< F, CT > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_68',['xconst_accessible< xgenerator< F, R, S > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_69',['xconst_accessible< xmasked_view< CTD, CTM > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_70',['xconst_accessible< xreducer< F, CT, X, O > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_71',['xconst_accessible< xrepeat< CT, R > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xscalar_3c_20ct_20_3e_20_3e_72',['xconst_accessible< xscalar< CT > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_73',['xconst_accessible< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_74',['xconst_accessible< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_75',['xconst_accessible< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_76',['xconst_accessible< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_77',['xconst_accessible< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5faccessible_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_78',['xconst_accessible< xview< CT, S... > >',['../classxt_1_1xconst__accessible.html',1,'xt']]], + ['xconst_5fiterable_79',['xconst_iterable',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_80',['xconst_iterable< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_81',['xconst_iterable< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_82',['xconst_iterable< xbroadcast< CT, X > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_83',['xconst_iterable< xchunked_array< chunk_storage > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_84',['xconst_iterable< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_85',['xconst_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_86',['xconst_iterable< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_87',['xconst_iterable< xfunction< F, CT... > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_88',['xconst_iterable< xgenerator< F, R, S > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_89',['xconst_iterable< xindex_view< CT, I > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_90',['xconst_iterable< xmasked_view< CTD, CTM > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_91',['xconst_iterable< xoptional_assembly< VE, FE > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_92',['xconst_iterable< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_93',['xconst_iterable< xreducer< F, CT, X, O > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_94',['xconst_iterable< xrepeat< CT, R > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xscalar_3c_20ct_20_3e_20_3e_95',['xconst_iterable< xscalar< CT > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_96',['xconst_iterable< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_97',['xconst_iterable< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xconst_5fiterable_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_98',['xconst_iterable< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xconst__iterable.html',1,'xt']]], + ['xcontainer_99',['xcontainer',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_100',['xcontainer< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_101',['xcontainer< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_102',['xcontainer< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_103',['xcontainer< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_104',['xcontainer< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_105',['xcontainer< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_106',['xcontainer< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xcontainer.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_107',['xcontainer_inner_types',['../structxt_1_1xcontainer__inner__types.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_108',['xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_109',['xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_110',['xcontainer_inner_types< xbroadcast< CT, X > >',['../structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_111',['xcontainer_inner_types< xchunked_array< chunk_storage > >',['../structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_112',['xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >',['../structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_113',['xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_114',['xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_115',['xcontainer_inner_types< xfunction< F, CT... > >',['../structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_116',['xcontainer_inner_types< xfunctor_adaptor< F, CT > >',['../structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_117',['xcontainer_inner_types< xfunctor_view< F, CT > >',['../structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xgenerator_3c_20c_2c_20r_2c_20s_20_3e_20_3e_118',['xcontainer_inner_types< xgenerator< C, R, S > >',['../structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_119',['xcontainer_inner_types< xindex_view< CT, I > >',['../structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_120',['xcontainer_inner_types< xmasked_view< CTD, CTM > >',['../structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_121',['xcontainer_inner_types< xoptional_assembly< VE, FE > >',['../structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_122',['xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >',['../structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_123',['xcontainer_inner_types< xreducer< F, CT, X, O > >',['../structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_124',['xcontainer_inner_types< xrepeat< CT, R > >',['../structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xscalar_3c_20ct_20_3e_20_3e_125',['xcontainer_inner_types< xscalar< CT > >',['../structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_126',['xcontainer_inner_types< xstrided_view< CT, S, L, FST > >',['../structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_127',['xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_128',['xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_129',['xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xcontainer_5finner_5ftypes_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_130',['xcontainer_inner_types< xview< CT, S... > >',['../structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_131',['xcontainer_iterable_types',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_132',['xcontainer_iterable_types< xarray_adaptor< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_133',['xcontainer_iterable_types< xarray_container< EC, L, SC, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_134',['xcontainer_iterable_types< xfixed_adaptor< EC, S, L, SH, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_135',['xcontainer_iterable_types< xfixed_container< ET, S, L, SH, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_136',['xcontainer_iterable_types< xtensor_adaptor< EC, N, L, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_137',['xcontainer_iterable_types< xtensor_container< EC, N, L, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5fiterable_5ftypes_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_138',['xcontainer_iterable_types< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1xcontainer__iterable__types.html',1,'xt']]], + ['xcontainer_5foptional_5fbase_139',['xcontainer_optional_base',['../classxt_1_1extension_1_1xcontainer__optional__base.html',1,'xt::extension']]], + ['xcontainer_5fsemantic_140',['xcontainer_semantic',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_141',['xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_142',['xcontainer_semantic< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_143',['xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_144',['xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_145',['xcontainer_semantic< xfunctor_adaptor< F, CT > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_146',['xcontainer_semantic< xoptional_assembly< VE, FE > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_147',['xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_148',['xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontainer_5fsemantic_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_149',['xcontainer_semantic< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xcontainer__semantic.html',1,'xt']]], + ['xcontiguous_5fiterable_150',['xcontiguous_iterable',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_151',['xcontiguous_iterable< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_152',['xcontiguous_iterable< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_153',['xcontiguous_iterable< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_154',['xcontiguous_iterable< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_155',['xcontiguous_iterable< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_156',['xcontiguous_iterable< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcontiguous_5fiterable_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_157',['xcontiguous_iterable< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xcontiguous__iterable.html',1,'xt']]], + ['xcsv_5fconfig_158',['xcsv_config',['../structxt_1_1xcsv__config.html',1,'xt']]], + ['xdrop_5fslice_159',['xdrop_slice',['../classxt_1_1xdrop__slice.html',1,'xt']]], + ['xdummy_5fiterator_160',['xdummy_iterator',['../classxt_1_1xdummy__iterator.html',1,'xt']]], + ['xdynamic_5fview_161',['xdynamic_view',['../classxt_1_1xdynamic__view.html',1,'xt']]], + ['xdynamic_5fview_5fbase_162',['xdynamic_view_base',['../structxt_1_1extension_1_1xdynamic__view__base.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_163',['xdynamic_view_base_impl',['../structxt_1_1extension_1_1xdynamic__view__base__impl.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_164',['xdynamic_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >',['../structxt_1_1extension_1_1xdynamic__view__base__impl.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_165',['xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xdynamic_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_166',['xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xdynamic_5fview_5foptional_167',['xdynamic_view_optional',['../classxt_1_1extension_1_1xdynamic__view__optional.html',1,'xt::extension']]], + ['xellipsis_5ftag_168',['xellipsis_tag',['../structxt_1_1xellipsis__tag.html',1,'xt']]], + ['xexpression_169',['xexpression',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_170',['xexpression< xbroadcast< CT, X > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_171',['xexpression< xfunction< F, CT... > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_172',['xexpression< xgenerator< F, R, S > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_173',['xexpression< xreducer< F, CT, X, O > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_174',['xexpression< xrepeat< CT, R > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xscalar_3c_20ct_20_3e_20_3e_175',['xexpression< xscalar< CT > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_3c_20xshared_5fexpression_3c_20e_20_3e_20_3e_176',['xexpression< xshared_expression< E > >',['../classxt_1_1xexpression.html',1,'xt']]], + ['xexpression_5fassigner_177',['xexpression_assigner',['../classxt_1_1xexpression__assigner.html',1,'xt']]], + ['xexpression_5fassigner_5fbase_178',['xexpression_assigner_base',['../classxt_1_1xexpression__assigner__base.html',1,'xt']]], + ['xexpression_5fassigner_5fbase_3c_20xoptional_5fexpression_5ftag_20_3e_179',['xexpression_assigner_base< xoptional_expression_tag >',['../classxt_1_1xexpression__assigner__base_3_01xoptional__expression__tag_01_4.html',1,'xt']]], + ['xexpression_5fassigner_5fbase_3c_20xtensor_5fexpression_5ftag_20_3e_180',['xexpression_assigner_base< xtensor_expression_tag >',['../classxt_1_1xexpression__assigner__base_3_01xtensor__expression__tag_01_4.html',1,'xt']]], + ['xexpression_5fholder_181',['xexpression_holder',['../classxt_1_1xexpression__holder.html',1,'xt']]], + ['xexpression_5ftag_182',['xexpression_tag',['../structxt_1_1xexpression__tag.html',1,'xt']]], + ['xfiltration_183',['xfiltration',['../classxt_1_1xfiltration.html',1,'xt']]], + ['xfixed_5fadaptor_184',['xfixed_adaptor',['../classxt_1_1xfixed__adaptor.html',1,'xt']]], + ['xfixed_5fcontainer_185',['xfixed_container',['../classxt_1_1xfixed__container.html',1,'xt']]], + ['xfunction_186',['xfunction',['../classxt_1_1xfunction.html',1,'xt']]], + ['xfunction_5fbase_187',['xfunction_base',['../structxt_1_1extension_1_1xfunction__base.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_188',['xfunction_base_impl',['../structxt_1_1extension_1_1xfunction__base__impl.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_2e_2e_2e_20_3e_2c_20f_2c_20ct_2e_2e_2e_20_3e_189',['xfunction_base_impl< xexpression_tag_t< CT... >, F, CT... >',['../structxt_1_1extension_1_1xfunction__base__impl.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20ct_2e_2e_2e_20_3e_190',['xfunction_base_impl< xoptional_expression_tag, F, CT... >',['../structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html',1,'xt::extension']]], + ['xfunction_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20f_2c_20ct_2e_2e_2e_20_3e_191',['xfunction_base_impl< xtensor_expression_tag, F, CT... >',['../structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html',1,'xt::extension']]], + ['xfunction_5fcache_192',['xfunction_cache',['../structxt_1_1xfunction__cache.html',1,'xt']]], + ['xfunction_5fcache_3c_20detail_3a_3apromote_5findex_3c_20typename_20std_3a_3adecay_5ft_3c_20ct_20_3e_3a_3ashape_5ftype_2e_2e_2e_20_3e_20_3e_193',['xfunction_cache< detail::promote_index< typename std::decay_t< CT >::shape_type... > >',['../structxt_1_1xfunction__cache.html',1,'xt']]], + ['xfunction_5fiterator_194',['xfunction_iterator',['../classxt_1_1xfunction__iterator.html',1,'xt']]], + ['xfunction_5foptional_5fbase_195',['xfunction_optional_base',['../classxt_1_1extension_1_1xfunction__optional__base.html',1,'xt::extension']]], + ['xfunction_5fstepper_196',['xfunction_stepper',['../classxt_1_1xfunction__stepper.html',1,'xt']]], + ['xfunctor_5fadaptor_197',['xfunctor_adaptor',['../classxt_1_1xfunctor__adaptor.html',1,'xt']]], + ['xfunctor_5fapplier_5fbase_198',['xfunctor_applier_base',['../classxt_1_1xfunctor__applier__base.html',1,'xt']]], + ['xfunctor_5fapplier_5fbase_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_199',['xfunctor_applier_base< xfunctor_adaptor< F, CT > >',['../classxt_1_1xfunctor__applier__base.html',1,'xt']]], + ['xfunctor_5fapplier_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_200',['xfunctor_applier_base< xfunctor_view< F, CT > >',['../classxt_1_1xfunctor__applier__base.html',1,'xt']]], + ['xfunctor_5fiterator_201',['xfunctor_iterator',['../classxt_1_1xfunctor__iterator.html',1,'xt']]], + ['xfunctor_5fstepper_202',['xfunctor_stepper',['../classxt_1_1xfunctor__stepper.html',1,'xt']]], + ['xfunctor_5fview_203',['xfunctor_view',['../classxt_1_1xfunctor__view.html',1,'xt']]], + ['xfunctor_5fview_5fbase_204',['xfunctor_view_base',['../structxt_1_1extension_1_1xfunctor__view__base.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_205',['xfunctor_view_base_impl',['../structxt_1_1extension_1_1xfunctor__view__base__impl.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20f_2c_20ct_20_3e_206',['xfunctor_view_base_impl< xexpression_tag_t< CT >, F, CT >',['../structxt_1_1extension_1_1xfunctor__view__base__impl.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20ct_20_3e_207',['xfunctor_view_base_impl< xoptional_expression_tag, F, CT >',['../structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xfunctor_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20f_2c_20ct_20_3e_208',['xfunctor_view_base_impl< xtensor_expression_tag, F, CT >',['../structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xfunctor_5fview_5foptional_209',['xfunctor_view_optional',['../classxt_1_1extension_1_1xfunctor__view__optional.html',1,'xt::extension']]], + ['xfunctor_5fview_5ftemporary_5ftype_210',['xfunctor_view_temporary_type',['../structxt_1_1xfunctor__view__temporary__type.html',1,'xt']]], + ['xgenerator_211',['xgenerator',['../classxt_1_1xgenerator.html',1,'xt']]], + ['xgenerator_5fbase_212',['xgenerator_base',['../structxt_1_1extension_1_1xgenerator__base.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_213',['xgenerator_base_impl',['../structxt_1_1extension_1_1xgenerator__base__impl.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20r_20_3e_2c_20f_2c_20r_2c_20s_20_3e_214',['xgenerator_base_impl< xexpression_tag_t< R >, F, R, S >',['../structxt_1_1extension_1_1xgenerator__base__impl.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20r_2c_20s_20_3e_215',['xgenerator_base_impl< xoptional_expression_tag, F, R, S >',['../structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html',1,'xt::extension']]], + ['xgenerator_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20f_2c_20r_2c_20s_20_3e_216',['xgenerator_base_impl< xtensor_expression_tag, F, R, S >',['../structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html',1,'xt::extension']]], + ['xgenerator_5foptional_217',['xgenerator_optional',['../classxt_1_1extension_1_1xgenerator__optional.html',1,'xt::extension']]], + ['xindex_5fview_218',['xindex_view',['../classxt_1_1xindex__view.html',1,'xt']]], + ['xindex_5fview_5fbase_219',['xindex_view_base',['../structxt_1_1extension_1_1xindex__view__base.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_220',['xindex_view_base_impl',['../structxt_1_1extension_1_1xindex__view__base__impl.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20i_20_3e_221',['xindex_view_base_impl< xexpression_tag_t< CT >, CT, I >',['../structxt_1_1extension_1_1xindex__view__base__impl.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20i_20_3e_222',['xindex_view_base_impl< xoptional_expression_tag, CT, I >',['../structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html',1,'xt::extension']]], + ['xindex_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20i_20_3e_223',['xindex_view_base_impl< xtensor_expression_tag, CT, I >',['../structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html',1,'xt::extension']]], + ['xindex_5fview_5foptional_224',['xindex_view_optional',['../classxt_1_1extension_1_1xindex__view__optional.html',1,'xt::extension']]], + ['xindexed_5fstepper_225',['xindexed_stepper',['../classxt_1_1xindexed__stepper.html',1,'xt']]], + ['xinitial_226',['xinitial',['../structxt_1_1xinitial.html',1,'xt']]], + ['xiterable_227',['xiterable',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_228',['xiterable< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_229',['xiterable< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_230',['xiterable< xchunked_array< chunk_storage > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_231',['xiterable< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_232',['xiterable< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_233',['xiterable< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_234',['xiterable< xindex_view< CT, I > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_235',['xiterable< xmasked_view< CTD, CTM > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_236',['xiterable< xoptional_assembly< VE, FE > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_237',['xiterable< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xscalar_3c_20ct_20_3e_20_3e_238',['xiterable< xscalar< CT > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_239',['xiterable< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_240',['xiterable< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_241',['xiterable< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xiterable.html',1,'xt']]], + ['xiterable_5finner_5ftypes_242',['xiterable_inner_types',['../structxt_1_1xiterable__inner__types.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_243',['xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_244',['xiterable_inner_types< xarray_container< EC, L, SC, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_245',['xiterable_inner_types< xbroadcast< CT, X > >',['../structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_246',['xiterable_inner_types< xchunked_array< chunk_storage > >',['../structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_247',['xiterable_inner_types< xdynamic_view< CT, S, L, FST > >',['../structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_248',['xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_249',['xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_250',['xiterable_inner_types< xfunction< F, CT... > >',['../structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xgenerator_3c_20c_2c_20r_2c_20s_20_3e_20_3e_251',['xiterable_inner_types< xgenerator< C, R, S > >',['../structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_252',['xiterable_inner_types< xindex_view< CT, I > >',['../structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_253',['xiterable_inner_types< xmasked_view< CTD, CTM > >',['../structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_254',['xiterable_inner_types< xoptional_assembly< VE, FE > >',['../structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_255',['xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >',['../structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_256',['xiterable_inner_types< xreducer< F, CT, X, O > >',['../structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_257',['xiterable_inner_types< xrepeat< CT, R > >',['../structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xscalar_3c_20ct_20_3e_20_3e_258',['xiterable_inner_types< xscalar< CT > >',['../structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_259',['xiterable_inner_types< xstrided_view< CT, S, L, FST > >',['../structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_260',['xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_261',['xiterable_inner_types< xtensor_container< EC, N, L, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_262',['xiterable_inner_types< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['xiterable_5finner_5ftypes_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_263',['xiterable_inner_types< xview< CT, S... > >',['../structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html',1,'xt']]], + ['xiterator_264',['xiterator',['../classxt_1_1xiterator.html',1,'xt']]], + ['xiterator_5fadaptor_265',['xiterator_adaptor',['../classxt_1_1xiterator__adaptor.html',1,'xt']]], + ['xiterator_5fowner_5fadaptor_266',['xiterator_owner_adaptor',['../classxt_1_1xiterator__owner__adaptor.html',1,'xt']]], + ['xkeep_5fslice_267',['xkeep_slice',['../classxt_1_1xkeep__slice.html',1,'xt']]], + ['xmasked_5fvalue_268',['xmasked_value',['../classxt_1_1xmasked__value.html',1,'xt']]], + ['xmasked_5fview_269',['xmasked_view',['../classxt_1_1xmasked__view.html',1,'xt']]], + ['xmasked_5fview_5fstepper_270',['xmasked_view_stepper',['../classxt_1_1xmasked__view__stepper.html',1,'xt']]], + ['xmultiindex_5fiterator_271',['xmultiindex_iterator',['../classxt_1_1xmultiindex__iterator.html',1,'xt']]], + ['xnewaxis_272',['xnewaxis',['../classxt_1_1xnewaxis.html',1,'xt']]], + ['xnewaxis_5ftag_273',['xnewaxis_tag',['../structxt_1_1xnewaxis__tag.html',1,'xt']]], + ['xoptional_5fassembly_274',['xoptional_assembly',['../classxt_1_1xoptional__assembly.html',1,'xt']]], + ['xoptional_5fassembly_5fadaptor_275',['xoptional_assembly_adaptor',['../classxt_1_1xoptional__assembly__adaptor.html',1,'xt']]], + ['xoptional_5fassembly_5fbase_276',['xoptional_assembly_base',['../classxt_1_1xoptional__assembly__base.html',1,'xt']]], + ['xoptional_5fassembly_5fbase_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_277',['xoptional_assembly_base< xoptional_assembly< VE, FE > >',['../classxt_1_1xoptional__assembly__base.html',1,'xt']]], + ['xoptional_5fassembly_5fbase_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_278',['xoptional_assembly_base< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xoptional__assembly__base.html',1,'xt']]], + ['xoptional_5fassembly_5flinear_5fiterator_279',['xoptional_assembly_linear_iterator',['../classxt_1_1xoptional__assembly__linear__iterator.html',1,'xt']]], + ['xoptional_5fassembly_5flinear_5fiterator_5ftraits_280',['xoptional_assembly_linear_iterator_traits',['../structxt_1_1xoptional__assembly__linear__iterator__traits.html',1,'xt']]], + ['xoptional_5fassembly_5fstepper_281',['xoptional_assembly_stepper',['../classxt_1_1xoptional__assembly__stepper.html',1,'xt']]], + ['xoptional_5fassembly_5fstorage_282',['xoptional_assembly_storage',['../classxt_1_1xoptional__assembly__storage.html',1,'xt']]], + ['xoptional_5fcomparable_283',['xoptional_comparable',['../structxt_1_1xoptional__comparable.html',1,'xt']]], + ['xoptional_5fempty_5fbase_284',['xoptional_empty_base',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20t_3a_3aderived_5ftype_20_3e_285',['xoptional_empty_base< T::derived_type >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_286',['xoptional_empty_base< xbroadcast< CT, X > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_287',['xoptional_empty_base< xdynamic_view< CT, S, L, FST > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_288',['xoptional_empty_base< xfunction< F, CT... > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_289',['xoptional_empty_base< xfunctor_view< F, CT > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_290',['xoptional_empty_base< xgenerator< F, R, S > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_291',['xoptional_empty_base< xindex_view< CT, I > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_292',['xoptional_empty_base< xreducer< F, CT, X, O > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xrepeat_3c_20ct_2c_20x_20_3e_20_3e_293',['xoptional_empty_base< xrepeat< CT, X > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xscalar_3c_20ct_20_3e_20_3e_294',['xoptional_empty_base< xscalar< CT > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_20_3e_295',['xoptional_empty_base< xstrided_view< CT, S, L, FST > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fempty_5fbase_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_296',['xoptional_empty_base< xview< CT, S... > >',['../classxt_1_1extension_1_1xoptional__empty__base.html',1,'xt::extension']]], + ['xoptional_5fexpression_5ftag_297',['xoptional_expression_tag',['../structxt_1_1xoptional__expression__tag.html',1,'xt']]], + ['xproxy_5finner_5ftypes_298',['xproxy_inner_types',['../structxt_1_1xproxy__inner__types.html',1,'xt']]], + ['xrange_299',['xrange',['../classxt_1_1xrange.html',1,'xt']]], + ['xrange_5fadaptor_300',['xrange_adaptor',['../structxt_1_1xrange__adaptor.html',1,'xt']]], + ['xreducer_301',['xreducer',['../classxt_1_1xreducer.html',1,'xt']]], + ['xreducer_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20f_2c_20ct_2c_20x_2c_20o_20_3e_302',['xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >',['../structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html',1,'xt::extension']]], + ['xreducer_5ffunctors_303',['xreducer_functors',['../structxt_1_1xreducer__functors.html',1,'xt']]], + ['xreducer_5foptional_304',['xreducer_optional',['../classxt_1_1extension_1_1xreducer__optional.html',1,'xt::extension']]], + ['xreducer_5fshape_5ftype_305',['xreducer_shape_type',['../structxt_1_1xreducer__shape__type.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20fixed_5fshape_3c_20j_2e_2e_2e_20_3e_2c_20o_20_3e_306',['xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >',['../structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3afalse_5ftype_20_3e_307',['xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >',['../structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3atrue_5ftype_20_3e_308',['xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >',['../structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20std_3a_3aarray_3c_20i1_2c_20n1_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3afalse_5ftype_20_3e_309',['xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >',['../structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20std_3a_3aarray_3c_20i1_2c_20n1_20_3e_2c_20std_3a_3aarray_3c_20i2_2c_20n2_20_3e_2c_20std_3a_3atrue_5ftype_20_3e_310',['xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >',['../structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html',1,'xt']]], + ['xreducer_5fshape_5ftype_3c_20typename_20xexpression_5ftype_3a_3ashape_5ftype_2c_20std_3a_3adecay_5ft_3c_20x_20_3e_2c_20keep_5fdims_20_3e_311',['xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t< X >, keep_dims >',['../structxt_1_1xreducer__shape__type.html',1,'xt']]], + ['xreducer_5fstepper_312',['xreducer_stepper',['../classxt_1_1xreducer__stepper.html',1,'xt']]], + ['xrepeat_313',['xrepeat',['../classxt_1_1xrepeat.html',1,'xt']]], + ['xrepeat_5fbase_314',['xrepeat_base',['../structxt_1_1extension_1_1xrepeat__base.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_315',['xrepeat_base_impl',['../structxt_1_1extension_1_1xrepeat__base__impl.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20x_20_3e_316',['xrepeat_base_impl< xexpression_tag_t< CT >, CT, X >',['../structxt_1_1extension_1_1xrepeat__base__impl.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_317',['xrepeat_base_impl< xoptional_expression_tag, CT, X >',['../structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xrepeat_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20x_20_3e_318',['xrepeat_base_impl< xtensor_expression_tag, CT, X >',['../structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html',1,'xt::extension']]], + ['xrepeat_5foptional_319',['xrepeat_optional',['../classxt_1_1extension_1_1xrepeat__optional.html',1,'xt::extension']]], + ['xrepeat_5fstepper_320',['xrepeat_stepper',['../classxt_1_1xrepeat__stepper.html',1,'xt']]], + ['xscalar_321',['xscalar',['../classxt_1_1xscalar.html',1,'xt']]], + ['xscalar_5fbase_322',['xscalar_base',['../structxt_1_1extension_1_1xscalar__base.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_323',['xscalar_base_impl',['../structxt_1_1extension_1_1xscalar__base__impl.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_3c_20get_5fexpression_5ftag_5ft_3c_20std_3a_3adecay_5ft_3c_20ct_20_3e_20_3e_2c_20ct_20_3e_324',['xscalar_base_impl< get_expression_tag_t< std::decay_t< CT > >, CT >',['../structxt_1_1extension_1_1xscalar__base__impl.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_20_3e_325',['xscalar_base_impl< xoptional_expression_tag, CT >',['../structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xscalar_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_20_3e_326',['xscalar_base_impl< xtensor_expression_tag, CT >',['../structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html',1,'xt::extension']]], + ['xscalar_5foptional_5fbase_327',['xscalar_optional_base',['../classxt_1_1extension_1_1xscalar__optional__base.html',1,'xt::extension']]], + ['xscalar_5foptional_5ftraits_328',['xscalar_optional_traits',['../structxt_1_1extension_1_1xscalar__optional__traits.html',1,'xt::extension']]], + ['xscalar_5fstepper_329',['xscalar_stepper',['../classxt_1_1xscalar__stepper.html',1,'xt']]], + ['xsemantic_5fbase_330',['xsemantic_base',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_331',['xsemantic_base< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_332',['xsemantic_base< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xchunked_5farray_3c_20chunk_5fstorage_20_3e_20_3e_333',['xsemantic_base< xchunked_array< chunk_storage > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_334',['xsemantic_base< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfixed_5fadaptor_3c_20ec_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_335',['xsemantic_base< xfixed_adaptor< EC, S, L, SH, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfixed_5fcontainer_3c_20et_2c_20s_2c_20l_2c_20sh_2c_20tag_20_3e_20_3e_336',['xsemantic_base< xfixed_container< ET, S, L, SH, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_337',['xsemantic_base< xfunctor_adaptor< F, CT > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_338',['xsemantic_base< xfunctor_view< F, CT > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_339',['xsemantic_base< xindex_view< CT, I > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_340',['xsemantic_base< xmasked_view< CTD, CTM > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xoptional_5fassembly_3c_20ve_2c_20fe_20_3e_20_3e_341',['xsemantic_base< xoptional_assembly< VE, FE > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xoptional_5fassembly_5fadaptor_3c_20vec_2c_20fec_20_3e_20_3e_342',['xsemantic_base< xoptional_assembly_adaptor< VEC, FEC > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_343',['xsemantic_base< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_344',['xsemantic_base< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_345',['xsemantic_base< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_346',['xsemantic_base< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_347',['xsemantic_base< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsemantic_5fbase_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_348',['xsemantic_base< xview< CT, S... > >',['../classxt_1_1xsemantic__base.html',1,'xt']]], + ['xsharable_5fexpression_349',['xsharable_expression',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xbroadcast_3c_20ct_2c_20x_20_3e_20_3e_350',['xsharable_expression< xbroadcast< CT, X > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_20_3e_351',['xsharable_expression< xfunction< F, CT... > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xgenerator_3c_20f_2c_20r_2c_20s_20_3e_20_3e_352',['xsharable_expression< xgenerator< F, R, S > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xreducer_3c_20f_2c_20ct_2c_20x_2c_20o_20_3e_20_3e_353',['xsharable_expression< xreducer< F, CT, X, O > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xrepeat_3c_20ct_2c_20r_20_3e_20_3e_354',['xsharable_expression< xrepeat< CT, R > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xsharable_5fexpression_3c_20xscalar_3c_20ct_20_3e_20_3e_355',['xsharable_expression< xscalar< CT > >',['../classxt_1_1xsharable__expression.html',1,'xt']]], + ['xshared_5fexpression_356',['xshared_expression',['../classxt_1_1xshared__expression.html',1,'xt']]], + ['xslice_357',['xslice',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xall_3c_20t_20_3e_20_3e_358',['xslice< xall< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xdrop_5fslice_3c_20t_20_3e_20_3e_359',['xslice< xdrop_slice< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xfake_5fslice_3c_20t_20_3e_20_3e_360',['xslice< xfake_slice< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xkeep_5fslice_3c_20t_20_3e_20_3e_361',['xslice< xkeep_slice< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xnewaxis_3c_20t_20_3e_20_3e_362',['xslice< xnewaxis< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xrange_3c_20t_20_3e_20_3e_363',['xslice< xrange< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xslice_3c_20xstepped_5frange_3c_20t_20_3e_20_3e_364',['xslice< xstepped_range< T > >',['../classxt_1_1xslice.html',1,'xt']]], + ['xstepped_5frange_365',['xstepped_range',['../classxt_1_1xstepped__range.html',1,'xt']]], + ['xstepper_366',['xstepper',['../classxt_1_1xstepper.html',1,'xt']]], + ['xstrided_5fcontainer_367',['xstrided_container',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xarray_5fadaptor_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_368',['xstrided_container< xarray_adaptor< EC, L, SC, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xarray_5fcontainer_3c_20ec_2c_20l_2c_20sc_2c_20tag_20_3e_20_3e_369',['xstrided_container< xarray_container< EC, L, SC, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xtensor_5fadaptor_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_370',['xstrided_container< xtensor_adaptor< EC, N, L, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xtensor_5fcontainer_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_371',['xstrided_container< xtensor_container< EC, N, L, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fcontainer_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_372',['xstrided_container< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xstrided__container.html',1,'xt']]], + ['xstrided_5fview_373',['xstrided_view',['../classxt_1_1xstrided__view.html',1,'xt']]], + ['xstrided_5fview_3c_20ct_2c_20shape_5ftype_20_3e_374',['xstrided_view< CT, shape_type >',['../classxt_1_1xstrided__view.html',1,'xt']]], + ['xstrided_5fview_5fbase_375',['xstrided_view_base',['../structxt_1_1extension_1_1xstrided__view__base.html',1,'xt::extension::xstrided_view_base< CT, S, L, FST >'],['../classxt_1_1xstrided__view__base.html',1,'xt::xstrided_view_base< D >']]], + ['xstrided_5fview_5fbase_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_376',['xstrided_view_base< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xstrided__view__base.html',1,'xt']]], + ['xstrided_5fview_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_377',['xstrided_view_base< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xstrided__view__base.html',1,'xt']]], + ['xstrided_5fview_5fbase_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_378',['xstrided_view_base< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xstrided__view__base.html',1,'xt']]], + ['xstrided_5fview_5fbase_5fimpl_379',['xstrided_view_base_impl',['../structxt_1_1extension_1_1xstrided__view__base__impl.html',1,'xt::extension']]], + ['xstrided_5fview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_380',['xstrided_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST >',['../structxt_1_1extension_1_1xstrided__view__base__impl.html',1,'xt::extension']]], + ['xstrided_5fview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_381',['xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xstrided_5fview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_382',['xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >',['../structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html',1,'xt::extension']]], + ['xstrided_5fview_5foptional_383',['xstrided_view_optional',['../classxt_1_1extension_1_1xstrided__view__optional.html',1,'xt::extension']]], + ['xtensor_5fadaptor_384',['xtensor_adaptor',['../classxt_1_1xtensor__adaptor.html',1,'xt']]], + ['xtensor_5fadaptor_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xoptional_5fexpression_5ftag_20_3e_385',['xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >',['../structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fadaptor_5foptional_5ftraits_386',['xtensor_adaptor_optional_traits',['../structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html',1,'xt::extension']]], + ['xtensor_5fcontainer_387',['xtensor_container',['../classxt_1_1xtensor__container.html',1,'xt']]], + ['xtensor_5fcontainer_5fbase_388',['xtensor_container_base',['../structxt_1_1extension_1_1xtensor__container__base.html',1,'xt::extension']]], + ['xtensor_5fcontainer_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xoptional_5fexpression_5ftag_20_3e_389',['xtensor_container_base< EC, N, L, xoptional_expression_tag >',['../structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fcontainer_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xtensor_5fexpression_5ftag_20_3e_390',['xtensor_container_base< EC, N, L, xtensor_expression_tag >',['../structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fcontainer_5foptional_5ftraits_391',['xtensor_container_optional_traits',['../structxt_1_1extension_1_1xtensor__container__optional__traits.html',1,'xt::extension']]], + ['xtensor_5fempty_5fbase_392',['xtensor_empty_base',['../structxt_1_1extension_1_1xtensor__empty__base.html',1,'xt::extension']]], + ['xtensor_5fexpression_5ftag_393',['xtensor_expression_tag',['../structxt_1_1xtensor__expression__tag.html',1,'xt']]], + ['xtensor_5foptional_5ftraits_394',['xtensor_optional_traits',['../structxt_1_1extension_1_1xtensor__optional__traits.html',1,'xt::extension']]], + ['xtensor_5fview_395',['xtensor_view',['../classxt_1_1xtensor__view.html',1,'xt']]], + ['xtensor_5fview_5fbase_3c_20ec_2c_20n_2c_20l_2c_20xoptional_5fexpression_5ftag_20_3e_396',['xtensor_view_base< EC, N, L, xoptional_expression_tag >',['../structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html',1,'xt::extension']]], + ['xtensor_5fview_5foptional_5ftraits_397',['xtensor_view_optional_traits',['../structxt_1_1extension_1_1xtensor__view__optional__traits.html',1,'xt::extension']]], + ['xvectorizer_398',['xvectorizer',['../classxt_1_1xvectorizer.html',1,'xt']]], + ['xview_399',['xview',['../classxt_1_1xview.html',1,'xt']]], + ['xview_5fbase_400',['xview_base',['../structxt_1_1extension_1_1xview__base.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_401',['xview_base_impl',['../structxt_1_1extension_1_1xview__base__impl.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_3c_20xexpression_5ftag_5ft_3c_20ct_20_3e_2c_20ct_2c_20s_2e_2e_2e_20_3e_402',['xview_base_impl< xexpression_tag_t< CT >, CT, S... >',['../structxt_1_1extension_1_1xview__base__impl.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_3c_20xoptional_5fexpression_5ftag_2c_20ct_2c_20s_2e_2e_2e_20_3e_403',['xview_base_impl< xoptional_expression_tag, CT, S... >',['../structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html',1,'xt::extension']]], + ['xview_5fbase_5fimpl_3c_20xtensor_5fexpression_5ftag_2c_20ct_2c_20s_2e_2e_2e_20_3e_404',['xview_base_impl< xtensor_expression_tag, CT, S... >',['../structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html',1,'xt::extension']]], + ['xview_5foptional_405',['xview_optional',['../classxt_1_1extension_1_1xview__optional.html',1,'xt::extension']]], + ['xview_5fsemantic_406',['xview_semantic',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xdynamic_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_407',['xview_semantic< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_408',['xview_semantic< xfunctor_view< F, CT > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xindex_5fview_3c_20ct_2c_20i_20_3e_20_3e_409',['xview_semantic< xindex_view< CT, I > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xmasked_5fview_3c_20ctd_2c_20ctm_20_3e_20_3e_410',['xview_semantic< xmasked_view< CTD, CTM > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_411',['xview_semantic< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xstrided_5fview_3c_20ct_2c_20shape_5ftype_2c_20layout_5ftype_3a_3adynamic_2c_20detail_3a_3aflat_5fstorage_5fgetter_3c_20ct_2c_20_3a_3axt_3a_3alayout_5ftype_3a_3arow_5fmajor_20_3e_20_3e_20_3e_412',['xview_semantic< xstrided_view< CT, shape_type, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_413',['xview_semantic< xtensor_view< EC, N, L, Tag > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fsemantic_3c_20xview_3c_20ct_2c_20s_2e_2e_2e_20_3e_20_3e_414',['xview_semantic< xview< CT, S... > >',['../classxt_1_1xview__semantic.html',1,'xt']]], + ['xview_5fshape_5ftype_415',['xview_shape_type',['../structxt_1_1xview__shape__type.html',1,'xt']]], + ['xview_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20s_2e_2e_2e_20_3e_416',['xview_shape_type< fixed_shape< I... >, S... >',['../structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html',1,'xt']]], + ['xview_5fshape_5ftype_3c_20std_3a_3aarray_3c_20i_2c_20l_20_3e_2c_20s_2e_2e_2e_20_3e_417',['xview_shape_type< std::array< I, L >, S... >',['../structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html',1,'xt']]], + ['xview_5fstepper_418',['xview_stepper',['../classxt_1_1xview__stepper.html',1,'xt']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..3bd46e1e5 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['can_5fassign_0',['can_assign',['../structxt_1_1can__assign.html',1,'xt']]], + ['can_5fassign_3c_20ct_2c_20rhs_20_3e_1',['can_assign< CT, RHS >',['../structxt_1_1can__assign.html',1,'xt']]], + ['can_5fassign_3c_20xstrided_5fview_3c_20ct_2c_20s_2c_20l_2c_20fst_20_3e_2c_20rhs_20_3e_2',['can_assign< xstrided_view< CT, S, L, FST >, RHS >',['../structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html',1,'xt']]], + ['cbrt_5ffun_3',['cbrt_fun',['../structxt_1_1math_1_1cbrt__fun.html',1,'xt::math']]], + ['ceil_5ffun_4',['ceil_fun',['../structxt_1_1math_1_1ceil__fun.html',1,'xt::math']]], + ['check_5fstrides_5ffunctor_5',['check_strides_functor',['../structxt_1_1strided__assign__detail_1_1check__strides__functor.html',1,'xt::strided_assign_detail']]], + ['check_5fstrides_5foverlap_6',['check_strides_overlap',['../structxt_1_1check__strides__overlap.html',1,'xt']]], + ['check_5fstrides_5foverlap_3c_20layout_5ftype_3a_3acolumn_5fmajor_20_3e_7',['check_strides_overlap< layout_type::column_major >',['../structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html',1,'xt']]], + ['check_5fstrides_5foverlap_3c_20layout_5ftype_3a_3arow_5fmajor_20_3e_8',['check_strides_overlap< layout_type::row_major >',['../structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html',1,'xt']]], + ['clamp_5ffun_9',['clamp_fun',['../structxt_1_1math_1_1clamp__fun.html',1,'xt::math']]], + ['common_5fdifference_5ftype_10',['common_difference_type',['../structxt_1_1common__difference__type.html',1,'xt']]], + ['common_5fdifference_5ftype_3c_3e_11',['common_difference_type<>',['../structxt_1_1common__difference__type_3_4.html',1,'xt']]], + ['common_5fsize_5ftype_12',['common_size_type',['../structxt_1_1common__size__type.html',1,'xt']]], + ['common_5fsize_5ftype_3c_3e_13',['common_size_type<>',['../structxt_1_1common__size__type_3_4.html',1,'xt']]], + ['common_5ftensor_5ftype_14',['common_tensor_type',['../structxt_1_1common__tensor__type.html',1,'xt']]], + ['common_5fvalue_5ftype_15',['common_value_type',['../structxt_1_1common__value__type.html',1,'xt']]], + ['concatenate_5ferror_16',['concatenate_error',['../classxt_1_1concatenate__error.html',1,'xt']]], + ['conditional_5fcast_5ffunctor_17',['conditional_cast_functor',['../structxt_1_1conditional__cast__functor.html',1,'xt']]], + ['conditional_5fcast_5ffunctor_3c_20false_2c_20t_20_3e_18',['conditional_cast_functor< false, T >',['../structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html',1,'xt']]], + ['conditional_5fcast_5ffunctor_3c_20true_2c_20t_20_3e_19',['conditional_cast_functor< true, T >',['../structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html',1,'xt']]], + ['conj_5fimpl_5ffun_20',['conj_impl_fun',['../structxt_1_1math_1_1conj__impl__fun.html',1,'xt::math']]], + ['conjunction_21',['conjunction',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20has_5fdata_5finterface_3c_20std_3a_3adecay_5ft_3c_20e_20_3e_20_3e_2c_20xtl_3a_3anegation_3c_20is_5fflat_5fexpression_5fadaptor_3c_20st_20_3e_20_3e_20_3e_22',['conjunction< has_data_interface< std::decay_t< E > >, xtl::negation< is_flat_expression_adaptor< ST > > >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20has_5fsimd_5ftype_3c_20t_20_3e_2c_20has_5fsimd_5fapply_3c_20f_2c_20xt_5fsimd_3a_3asimd_5ftype_3c_20t_20_3e_20_3e_2c_20has_5fsimd_5finterface_3c_20std_3a_3adecay_5ft_3c_20ct_20_3e_2c_20t_20_3e_2e_2e_2e_20_3e_23',['conjunction< has_simd_type< T >, has_simd_apply< F, xt_simd::simd_type< T > >, has_simd_interface< std::decay_t< CT >, T >... >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20has_5fsimd_5ftype_3c_20t_20_3e_2c_20has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20d_20_3e_3a_3axexpression_5ftype_20_3e_2c_20detail_3a_3ahas_5fsimd_5finterface_5fimpl_3c_20xfunctor_5fapplier_5fbase_3c_20d_20_3e_2c_20t_20_3e_20_3e_24',['conjunction< has_simd_type< T >, has_simd_interface< xfunctor_applier_base< D >::xexpression_type >, detail::has_simd_interface_impl< xfunctor_applier_base< D >, T > >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['conjunction_3c_20xtl_3a_3adisjunction_3c_20is_5fxtensor_5fexpression_3c_20e_20_3e_2c_20is_5fxoptional_5fexpression_3c_20e_20_3e_20_3e_2e_2e_2e_20_3e_25',['conjunction< xtl::disjunction< is_xtensor_expression< E >, is_xoptional_expression< E > >... >',['../structxtl_1_1conjunction.html',1,'xtl']]], + ['const_5farray_26',['const_array',['../structxt_1_1const__array.html',1,'xt']]], + ['const_5fvalue_27',['const_value',['../structxt_1_1const__value.html',1,'xt']]], + ['const_5fxclosure_28',['const_xclosure',['../structxt_1_1const__xclosure.html',1,'xt']]], + ['const_5fxclosure_3c_20e_2c_20disable_5fxexpression_3c_20std_3a_3adecay_5ft_3c_20e_20_3e_20_3e_20_3e_29',['const_xclosure< E, disable_xexpression< std::decay_t< E > > >',['../structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html',1,'xt']]], + ['const_5fxclosure_3c_20xshared_5fexpression_3c_20e_20_3e_20_26_2c_20std_3a_3aenable_5fif_5ft_3c_20true_20_3e_20_3e_30',['const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >',['../structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html',1,'xt']]], + ['container_5falignment_31',['container_alignment',['../structxt__simd_1_1container__alignment.html',1,'xt_simd']]], + ['container_5fsimd_5freturn_5ftype_32',['container_simd_return_type',['../structxt_1_1container__simd__return__type.html',1,'xt']]], + ['cos_5ffun_33',['cos_fun',['../structxt_1_1math_1_1cos__fun.html',1,'xt::math']]], + ['cosh_5ffun_34',['cosh_fun',['../structxt_1_1math_1_1cosh__fun.html',1,'xt::math']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 000000000..94861f11b --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['decay_5fall_0',['decay_all',['../structxt_1_1decay__all.html',1,'xt']]], + ['decay_5fall_3c_20s_3c_20x_2e_2e_2e_20_3e_20_3e_1',['decay_all< S< X... > >',['../structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html',1,'xt']]], + ['deg2rad_2',['deg2rad',['../structxt_1_1math_1_1deg2rad.html',1,'xt::math']]], + ['disable_5findexed_5fstepper_3',['disable_indexed_stepper',['../structxt_1_1disable__indexed__stepper.html',1,'xt']]], + ['driven_5falign_5fmode_4',['driven_align_mode',['../structxt_1_1driven__align__mode.html',1,'xt']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 000000000..ede30b26e --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['edge_5fitems_0',['edge_items',['../classxt_1_1print__options_1_1edge__items.html',1,'xt::print_options']]], + ['enable_5findexed_5fstepper_1',['enable_indexed_stepper',['../structxt_1_1enable__indexed__stepper.html',1,'xt']]], + ['erf_5ffun_2',['erf_fun',['../structxt_1_1math_1_1erf__fun.html',1,'xt::math']]], + ['erfc_5ffun_3',['erfc_fun',['../structxt_1_1math_1_1erfc__fun.html',1,'xt::math']]], + ['exp2_5ffun_4',['exp2_fun',['../structxt_1_1math_1_1exp2__fun.html',1,'xt::math']]], + ['exp_5ffun_5',['exp_fun',['../structxt_1_1math_1_1exp__fun.html',1,'xt::math']]], + ['expm1_5ffun_6',['expm1_fun',['../structxt_1_1math_1_1expm1__fun.html',1,'xt::math']]], + ['expression_5ftag_5fand_7',['expression_tag_and',['../structxt_1_1extension_1_1expression__tag__and.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t_20_3e_8',['expression_tag_and< T >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t_2c_20t_20_3e_9',['expression_tag_and< T, T >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t_2c_20xtensor_5fexpression_5ftag_20_3e_10',['expression_tag_and< T, xtensor_expression_tag >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t1_2c_20expression_5ftag_5fand_3c_20t_2e_2e_2e_20_3e_3a_3atype_20_3e_11',['expression_tag_and< T1, expression_tag_and< T... >::type >',['../structxt_1_1extension_1_1expression__tag__and.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20t1_2c_20t_2e_2e_2e_20_3e_12',['expression_tag_and< T1, T... >',['../structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20xtensor_5fexpression_5ftag_2c_20t_20_3e_13',['expression_tag_and< xtensor_expression_tag, T >',['../structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_20xtensor_5fexpression_5ftag_2c_20xtensor_5fexpression_5ftag_20_3e_14',['expression_tag_and< xtensor_expression_tag, xtensor_expression_tag >',['../structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html',1,'xt::extension']]], + ['expression_5ftag_5fand_3c_3e_15',['expression_tag_and<>',['../structxt_1_1extension_1_1expression__tag__and_3_4.html',1,'xt::extension']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..e7d497648 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['fabs_5ffun_0',['fabs_fun',['../structxt_1_1math_1_1fabs__fun.html',1,'xt::math']]], + ['fdim_5ffun_1',['fdim_fun',['../structxt_1_1math_1_1fdim__fun.html',1,'xt::math']]], + ['filter_5ffixed_5fshape_2',['filter_fixed_shape',['../structxt_1_1filter__fixed__shape.html',1,'xt']]], + ['fixed_5fshape_3',['fixed_shape',['../classxt_1_1fixed__shape.html',1,'xt']]], + ['fixed_5fxreducer_5fshape_5ftype_4',['fixed_xreducer_shape_type',['../structxt_1_1fixed__xreducer__shape__type.html',1,'xt']]], + ['fixed_5fxreducer_5fshape_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_2c_20fixed_5fshape_3c_20j_2e_2e_2e_20_3e_20_3e_5',['fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >',['../structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html',1,'xt']]], + ['floor_5ffun_6',['floor_fun',['../structxt_1_1math_1_1floor__fun.html',1,'xt::math']]], + ['fma_5ffun_7',['fma_fun',['../structxt_1_1math_1_1fma__fun.html',1,'xt::math']]], + ['fmax_5ffun_8',['fmax_fun',['../structxt_1_1math_1_1fmax__fun.html',1,'xt::math']]], + ['fmin_5ffun_9',['fmin_fun',['../structxt_1_1math_1_1fmin__fun.html',1,'xt::math']]], + ['fmod_5ffun_10',['fmod_fun',['../structxt_1_1math_1_1fmod__fun.html',1,'xt::math']]], + ['forbid_5fsimd_11',['forbid_simd',['../structxt_1_1forbid__simd.html',1,'xt']]], + ['forbid_5fsimd_3c_20const_20std_3a_3avector_3c_20bool_2c_20a_20_3e_20_3e_12',['forbid_simd< const std::vector< bool, A > >',['../structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html',1,'xt']]], + ['forbid_5fsimd_3c_20const_20xtl_3a_3axdynamic_5fbitset_3c_20b_2c_20a_20_3e_20_3e_13',['forbid_simd< const xtl::xdynamic_bitset< B, A > >',['../structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html',1,'xt']]], + ['forbid_5fsimd_3c_20std_3a_3avector_3c_20bool_2c_20a_20_3e_20_3e_14',['forbid_simd< std::vector< bool, A > >',['../structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html',1,'xt']]], + ['forbid_5fsimd_3c_20xtl_3a_3axdynamic_5fbitset_3c_20b_2c_20a_20_3e_20_3e_15',['forbid_simd< xtl::xdynamic_bitset< B, A > >',['../structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html',1,'xt']]], + ['full_16',['full',['../structxt_1_1check__policy_1_1full.html',1,'xt::check_policy::full'],['../structxt_1_1convolve__mode_1_1full.html',1,'xt::convolve_mode::full']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 000000000..147af5acf --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['get_5fexpression_5ftag_0',['get_expression_tag',['../structxt_1_1extension_1_1get__expression__tag.html',1,'xt::extension']]], + ['get_5fexpression_5ftag_3c_20xtl_3a_3axoptional_3c_20t_2c_20b_20_3e_20_3e_1',['get_expression_tag< xtl::xoptional< T, B > >',['../structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html',1,'xt::extension']]], + ['get_5fexpression_5ftag_5fimpl_2',['get_expression_tag_impl',['../structxt_1_1extension_1_1get__expression__tag__impl.html',1,'xt::extension']]], + ['get_5fexpression_5ftag_5fimpl_3c_20e_2c_20void_5ft_3c_20typename_20std_3a_3adecay_5ft_3c_20e_20_3e_3a_3aexpression_5ftag_20_3e_20_3e_3',['get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >',['../structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de048c22abe806a8cb61aa0c08ab63f2de.html',1,'xt::extension']]], + ['get_5finit_5ftype_4',['get_init_type',['../structxt_1_1get__init__type.html',1,'xt']]], + ['get_5finit_5ftype_3c_20v_2c_20fixed_5fshape_3c_20x_2e_2e_2e_20_3e_20_3e_5',['get_init_type< V, fixed_shape< X... > >',['../structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html',1,'xt']]], + ['get_5frank_6',['get_rank',['../structxt_1_1get__rank.html',1,'xt']]], + ['get_5frank_3c_20e_2c_20decltype_28_28void_29_20e_3a_3arank_2c_20void_28_29_29_3e_7',['get_rank< E, decltype((void) E::rank, void())>',['../structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html',1,'xt']]], + ['get_5fstrides_5ftype_8',['get_strides_type',['../structxt_1_1get__strides__type.html',1,'xt']]], + ['get_5fstrides_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_20_3e_9',['get_strides_type< fixed_shape< I... > >',['../structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html',1,'xt']]], + ['get_5fstrides_5ftype_3c_20xbuffer_5fadaptor_3c_20cp_2c_20o_2c_20a_20_3e_20_3e_10',['get_strides_type< xbuffer_adaptor< CP, O, A > >',['../structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html',1,'xt']]], + ['get_5fvalue_5ftype_11',['get_value_type',['../structxt_1_1get__value__type.html',1,'xt']]], + ['get_5fvalue_5ftype_3c_20t_2c_20void_5ft_3c_20typename_20t_3a_3avalue_5ftype_20_3e_20_3e_12',['get_value_type< T, void_t< typename T::value_type > >',['../structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html',1,'xt']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..66ce7aa1a --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['has_5fassign_5fconversion_0',['has_assign_conversion',['../structxt_1_1has__assign__conversion.html',1,'xt']]], + ['has_5fassign_5fto_1',['has_assign_to',['../structxt_1_1has__assign__to.html',1,'xt']]], + ['has_5fassign_5fto_3c_20e1_2c_20e2_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20const_20e2_20_26_20_3e_28_29_2eassign_5fto_28std_3a_3adeclval_3c_20e1_20_26_20_3e_28_29_29_29_3e_20_3e_2',['has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >',['../structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html',1,'xt']]], + ['has_5fdata_5finterface_3',['has_data_interface',['../structxt_1_1has__data__interface.html',1,'xt']]], + ['has_5fdata_5finterface_3c_20e_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20e_20_3e_28_29_2edata_28_29_29_3e_20_3e_4',['has_data_interface< E, void_t< decltype(std::declval< E >().data())> >',['../structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html',1,'xt']]], + ['has_5ffixed_5frank_5',['has_fixed_rank',['../structxt_1_1has__fixed__rank.html',1,'xt']]], + ['has_5fiterator_5finterface_6',['has_iterator_interface',['../structxt_1_1has__iterator__interface.html',1,'xt']]], + ['has_5fiterator_5finterface_3c_20e_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20e_20_3e_28_29_2ebegin_28_29_29_3e_20_3e_7',['has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >',['../structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html',1,'xt']]], + ['has_5frank_8',['has_rank',['../structxt_1_1has__rank.html',1,'xt']]], + ['has_5fsign_5fconversion_9',['has_sign_conversion',['../structxt_1_1has__sign__conversion.html',1,'xt']]], + ['has_5fsimd_5fapply_10',['has_simd_apply',['../structxt_1_1has__simd__apply.html',1,'xt']]], + ['has_5fsimd_5finterface_11',['has_simd_interface',['../structxt_1_1has__simd__interface.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunction_3c_20f_2c_20ct_2e_2e_2e_20_3e_2c_20t_20_3e_12',['has_simd_interface< xfunction< F, CT... >, T >',['../structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_2c_20t_20_3e_13',['has_simd_interface< xfunctor_adaptor< F, CT >, T >',['../structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20d_20_3e_2c_20t_20_3e_14',['has_simd_interface< xfunctor_applier_base< D >, T >',['../structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20xfunctor_5fadaptor_3c_20f_2c_20ct_20_3e_20_3e_2c_20t_20_3e_15',['has_simd_interface< xfunctor_applier_base< xfunctor_adaptor< F, CT > >, T >',['../structxt_1_1has__simd__interface.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fapplier_5fbase_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_20_3e_2c_20t_20_3e_16',['has_simd_interface< xfunctor_applier_base< xfunctor_view< F, CT > >, T >',['../structxt_1_1has__simd__interface.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xfunctor_5fview_3c_20f_2c_20ct_20_3e_2c_20t_20_3e_17',['has_simd_interface< xfunctor_view< F, CT >, T >',['../structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html',1,'xt']]], + ['has_5fsimd_5finterface_3c_20xtensor_5fview_3c_20ec_2c_20n_2c_20l_2c_20tag_20_3e_20_3e_18',['has_simd_interface< xtensor_view< EC, N, L, Tag > >',['../structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html',1,'xt']]], + ['has_5fsimd_5ftype_19',['has_simd_type',['../structxt_1_1has__simd__type.html',1,'xt']]], + ['has_5fstorage_5ftype_20',['has_storage_type',['../structxt_1_1has__storage__type.html',1,'xt']]], + ['has_5fstorage_5ftype_3c_20t_2c_20void_5ft_3c_20typename_20xcontainer_5finner_5ftypes_3c_20t_20_3e_3a_3astorage_5ftype_20_3e_20_3e_21',['has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >',['../structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html',1,'xt']]], + ['has_5fstrides_22',['has_strides',['../structxt_1_1has__strides.html',1,'xt']]], + ['has_5fstrides_3c_20e_2c_20void_5ft_3c_20decltype_28std_3a_3adeclval_3c_20e_20_3e_28_29_2estrides_28_29_29_3e_20_3e_23',['has_strides< E, void_t< decltype(std::declval< E >().strides())> >',['../structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html',1,'xt']]], + ['hypot_5ffun_24',['hypot_fun',['../structxt_1_1math_1_1hypot__fun.html',1,'xt::math']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 000000000..08f14bd2c --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['idx_5ftools_0',['idx_tools',['../structxt_1_1strided__assign__detail_1_1idx__tools.html',1,'xt::strided_assign_detail']]], + ['idx_5ftools_3c_20layout_5ftype_3a_3acolumn_5fmajor_20_3e_1',['idx_tools< layout_type::column_major >',['../structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html',1,'xt::strided_assign_detail']]], + ['idx_5ftools_3c_20layout_5ftype_3a_3arow_5fmajor_20_3e_2',['idx_tools< layout_type::row_major >',['../structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html',1,'xt::strided_assign_detail']]], + ['immediate_5ftype_3',['immediate_type',['../structxt_1_1evaluation__strategy_1_1immediate__type.html',1,'xt::evaluation_strategy']]], + ['index_5ffrom_5fshape_4',['index_from_shape',['../structxt_1_1index__from__shape.html',1,'xt']]], + ['initial_5ftester_5',['initial_tester',['../structxt_1_1reducer__options_1_1initial__tester.html',1,'xt::reducer_options']]], + ['initial_5ftester_3c_20const_20xinitial_3c_20x_20_3e_20_3e_6',['initial_tester< const xinitial< X > >',['../structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html',1,'xt::reducer_options']]], + ['initial_5ftester_3c_20xinitial_3c_20x_20_3e_20_3e_7',['initial_tester< xinitial< X > >',['../structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html',1,'xt::reducer_options']]], + ['initializer_5fdimension_8',['initializer_dimension',['../structxt_1_1initializer__dimension.html',1,'xt']]], + ['inner_5faligned_5fmode_9',['inner_aligned_mode',['../structxt_1_1inner__aligned__mode.html',1,'xt']]], + ['inner_5freference_10',['inner_reference',['../structxt_1_1inner__reference.html',1,'xt']]], + ['invalid_5ftype_11',['invalid_type',['../structxt_1_1invalid__type.html',1,'xt']]], + ['is_5fbatch_5fbool_12',['is_batch_bool',['../structxt__simd_1_1is__batch__bool.html',1,'xt_simd']]], + ['is_5fbatch_5fcomplex_13',['is_batch_complex',['../structxt__simd_1_1is__batch__complex.html',1,'xt_simd']]], + ['is_5fchunked_5ft_14',['is_chunked_t',['../structxt_1_1is__chunked__t.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_15',['is_contiguous_container',['../structxt_1_1is__contiguous__container.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20i_20_3e_16',['is_contiguous_container< I >',['../structxt_1_1is__contiguous__container.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20ig_3a_3aiterator_20_3e_17',['is_contiguous_container< IG::iterator >',['../structxt_1_1is__contiguous__container.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20xiterator_3c_20st_2c_20s_2c_20l_20_3e_20_3e_18',['is_contiguous_container< xiterator< St, S, L > >',['../structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20xiterator_5fadaptor_3c_20i_2c_20ci_20_3e_20_3e_19',['is_contiguous_container< xiterator_adaptor< I, CI > >',['../structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html',1,'xt']]], + ['is_5fcontiguous_5fcontainer_3c_20xiterator_5fowner_5fadaptor_3c_20c_2c_20ig_20_3e_20_3e_20',['is_contiguous_container< xiterator_owner_adaptor< C, IG > >',['../structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html',1,'xt']]], + ['is_5fevaluation_5fstrategy_21',['is_evaluation_strategy',['../structxt_1_1is__evaluation__strategy.html',1,'xt']]], + ['is_5findexed_5fstepper_22',['is_indexed_stepper',['../structxt_1_1is__indexed__stepper.html',1,'xt']]], + ['is_5findexed_5fstepper_3c_20xindexed_5fstepper_3c_20t_2c_20b_20_3e_20_3e_23',['is_indexed_stepper< xindexed_stepper< T, B > >',['../structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html',1,'xt']]], + ['is_5fiterator_24',['is_iterator',['../structxt_1_1is__iterator.html',1,'xt']]], + ['is_5fiterator_3c_20e_2c_20void_5ft_3c_20decltype_28_2astd_3a_3adeclval_3c_20const_20e_20_3e_28_29_2c_20std_3a_3adeclval_3c_20const_20e_20_3e_28_29_3d_3dstd_3a_3adeclval_3c_20const_20e_20_3e_28_29_2c_20std_3a_3adeclval_3c_20const_20e_20_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20const_20e_20_3e_28_29_2c_2b_2b_28_2astd_3a_3adeclval_3c_20e_20_2a_20_3e_28_29_29_2c_28_2astd_3a_3adeclval_3c_20e_20_2a_20_3e_28_29_29_2b_2b_2c_20std_3a_3atrue_5ftype_28_29_29_3e_20_3e_25',['is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >',['../structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.html',1,'xt']]], + ['is_5fnarrowing_5fconversion_26',['is_narrowing_conversion',['../structxt_1_1is__narrowing__conversion.html',1,'xt']]], + ['is_5fnot_5fxdummy_5fiterator_27',['is_not_xdummy_iterator',['../structxt_1_1is__not__xdummy__iterator.html',1,'xt']]], + ['is_5fnot_5fxdummy_5fiterator_3c_20xdummy_5fiterator_3c_20is_5fconst_2c_20ct_20_3e_20_3e_28',['is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >',['../structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html',1,'xt']]], + ['is_5freducer_5foptions_29',['is_reducer_options',['../structxt_1_1is__reducer__options.html',1,'xt']]], + ['is_5freducer_5foptions_5fimpl_30',['is_reducer_options_impl',['../structxt_1_1is__reducer__options__impl.html',1,'xt']]], + ['is_5freducer_5foptions_5fimpl_3c_20std_3a_3adecay_5ft_3c_20t_20_3e_20_3e_31',['is_reducer_options_impl< std::decay_t< T > >',['../structxt_1_1is__reducer__options__impl.html',1,'xt']]], + ['is_5freducer_5foptions_5fimpl_3c_20std_3a_3atuple_3c_20x_2e_2e_2e_20_3e_20_3e_32',['is_reducer_options_impl< std::tuple< X... > >',['../structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.html',1,'xt']]], + ['is_5fxoptional_5fexpression_33',['is_xoptional_expression',['../structxt_1_1is__xoptional__expression.html',1,'xt']]], + ['is_5fxtensor_5fexpression_34',['is_xtensor_expression',['../structxt_1_1is__xtensor__expression.html',1,'xt']]], + ['isfinite_5ffun_35',['isfinite_fun',['../structxt_1_1math_1_1isfinite__fun.html',1,'xt::math']]], + ['isinf_5ffun_36',['isinf_fun',['../structxt_1_1math_1_1isinf__fun.html',1,'xt::math']]], + ['isnan_5ffun_37',['isnan_fun',['../structxt_1_1math_1_1isnan__fun.html',1,'xt::math']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..3a4ff8c94 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keep_5fdims_5ftype_0',['keep_dims_type',['../structxt_1_1keep__dims__type.html',1,'xt']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..f34477004 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['lazy_5ftype_0',['lazy_type',['../structxt_1_1evaluation__strategy_1_1lazy__type.html',1,'xt::evaluation_strategy']]], + ['lgamma_5ffun_1',['lgamma_fun',['../structxt_1_1math_1_1lgamma__fun.html',1,'xt::math']]], + ['line_5fwidth_2',['line_width',['../classxt_1_1print__options_1_1line__width.html',1,'xt::print_options']]], + ['linear_5fassigner_3',['linear_assigner',['../classxt_1_1linear__assigner.html',1,'xt']]], + ['linear_5fassigner_3c_20false_20_3e_4',['linear_assigner< false >',['../classxt_1_1linear__assigner_3_01false_01_4.html',1,'xt']]], + ['log10_5ffun_5',['log10_fun',['../structxt_1_1math_1_1log10__fun.html',1,'xt::math']]], + ['log1p_5ffun_6',['log1p_fun',['../structxt_1_1math_1_1log1p__fun.html',1,'xt::math']]], + ['log2_5ffun_7',['log2_fun',['../structxt_1_1math_1_1log2__fun.html',1,'xt::math']]], + ['log_5ffun_8',['log_fun',['../structxt_1_1math_1_1log__fun.html',1,'xt::math']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..a46ce289f --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['make_5finvalid_5ftype_0',['make_invalid_type',['../structxt_1_1make__invalid__type.html',1,'xt']]], + ['make_5fvoid_1',['make_void',['../structxt_1_1make__void.html',1,'xt']]], + ['maximum_2',['maximum',['../structxt_1_1math_1_1maximum.html',1,'xt::math']]], + ['meta_5fidentity_3',['meta_identity',['../structxt_1_1meta__identity.html',1,'xt']]], + ['minimum_4',['minimum',['../structxt_1_1math_1_1minimum.html',1,'xt::math']]], + ['missing_5ftype_5',['missing_type',['../structxt_1_1missing__type.html',1,'xt']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 000000000..1a9c01b98 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['nearbyint_5ffun_0',['nearbyint_fun',['../structxt_1_1math_1_1nearbyint__fun.html',1,'xt::math']]], + ['nested_5finitializer_5flist_1',['nested_initializer_list',['../structxt_1_1nested__initializer__list.html',1,'xt']]], + ['nested_5finitializer_5flist_3c_20t_2c_200_20_3e_2',['nested_initializer_list< T, 0 >',['../structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html',1,'xt']]], + ['no_5fownership_3',['no_ownership',['../structxt_1_1no__ownership.html',1,'xt']]], + ['noalias_5fproxy_4',['noalias_proxy',['../classxt_1_1noalias__proxy.html',1,'xt']]], + ['none_5',['none',['../structxt_1_1check__policy_1_1none.html',1,'xt::check_policy']]], + ['norm_5ffun_6',['norm_fun',['../structxt_1_1math_1_1norm__fun.html',1,'xt::math']]], + ['norm_5fof_5farray_5felements_5fimpl_7',['norm_of_array_elements_impl',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20long_20double_2c_20false_2c_20true_20_3e_8',['norm_of_array_elements_impl< long double, false, true >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20t_2c_20false_2c_20false_20_3e_9',['norm_of_array_elements_impl< T, false, false >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20t_2c_20false_2c_20true_20_3e_10',['norm_of_array_elements_impl< T, false, true >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20t_2c_20true_2c_20false_20_3e_11',['norm_of_array_elements_impl< T, true, false >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5farray_5felements_5fimpl_3c_20void_20_2a_2c_20false_2c_20false_20_3e_12',['norm_of_array_elements_impl< void *, false, false >',['../structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5fscalar_5fimpl_13',['norm_of_scalar_impl',['../structxt_1_1traits__detail_1_1norm__of__scalar__impl.html',1,'xt::traits_detail']]], + ['norm_5fof_5fscalar_5fimpl_3c_20t_2c_20false_20_3e_14',['norm_of_scalar_impl< T, false >',['../structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5fscalar_5fimpl_3c_20t_2c_20true_20_3e_15',['norm_of_scalar_impl< T, true >',['../structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html',1,'xt::traits_detail']]], + ['norm_5fof_5fvector_5fimpl_16',['norm_of_vector_impl',['../structxt_1_1traits__detail_1_1norm__of__vector__impl.html',1,'xt::traits_detail']]], + ['norm_5ftype_17',['norm_type',['../structxt_1_1norm__type.html',1,'xt']]], + ['norm_5ftype_5fbase_18',['norm_type_base',['../structxt_1_1traits__detail_1_1norm__type__base.html',1,'xt::traits_detail']]], + ['norm_5ftype_5fbase_3c_20t_20_3e_19',['norm_type_base< T >',['../structxt_1_1traits__detail_1_1norm__type__base.html',1,'xt::traits_detail']]], + ['numeric_5fconstants_20',['numeric_constants',['../structxt_1_1numeric__constants.html',1,'xt']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 000000000..f1cb56a9e --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['pow_5ffun_0',['pow_fun',['../structxt_1_1math_1_1pow__fun.html',1,'xt::math']]], + ['precision_1',['precision',['../classxt_1_1print__options_1_1precision.html',1,'xt::print_options']]], + ['print_5foptions_5fimpl_2',['print_options_impl',['../structxt_1_1print__options_1_1print__options__impl.html',1,'xt::print_options']]], + ['promote_5fshape_3',['promote_shape',['../structxt_1_1promote__shape.html',1,'xt']]], + ['promote_5fstrides_4',['promote_strides',['../structxt_1_1promote__strides.html',1,'xt']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..06c1d9f38 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['rad2deg_0',['rad2deg',['../structxt_1_1math_1_1rad2deg.html',1,'xt::math']]], + ['rebind_1',['rebind',['../structxt_1_1tracking__allocator_1_1rebind.html',1,'xt::tracking_allocator']]], + ['rebind_5fcontainer_2',['rebind_container',['../structxt_1_1rebind__container.html',1,'xt']]], + ['rebind_5fcontainer_3c_20x_2c_20c_3c_20t_2c_20a_20_3e_20_3e_3',['rebind_container< X, C< T, A > >',['../structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html',1,'xt']]], + ['rebind_5fcontainer_3c_20x_2c_20c_3c_20t_2c_20n_20_3e_20_3e_4',['rebind_container< X, C< T, N > >',['../structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html',1,'xt']]], + ['rebind_5fcontainer_3c_20x_2c_20svector_3c_20t_2c_20n_2c_20a_2c_20b_20_3e_20_3e_5',['rebind_container< X, svector< T, N, A, B > >',['../structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html',1,'xt']]], + ['reducer_5foptions_6',['reducer_options',['../structxt_1_1reducer__options.html',1,'xt']]], + ['remainder_5ffun_7',['remainder_fun',['../structxt_1_1math_1_1remainder__fun.html',1,'xt::math']]], + ['remove_5fclass_8',['remove_class',['../structxt_1_1remove__class.html',1,'xt']]], + ['remove_5fclass_3c_20r_28c_3a_3a_2a_29_28args_2e_2e_2e_29_20const_20_3e_9',['remove_class< R(C::*)(Args...) const >',['../structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html',1,'xt']]], + ['remove_5fclass_3c_20r_28c_3a_3a_2a_29_28args_2e_2e_2e_29_3e_10',['remove_class< R(C::*)(Args...)>',['../structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html',1,'xt']]], + ['revert_5fsimd_5ftraits_11',['revert_simd_traits',['../structxt__simd_1_1revert__simd__traits.html',1,'xt_simd']]], + ['rint_5ffun_12',['rint_fun',['../structxt_1_1math_1_1rint__fun.html',1,'xt::math']]], + ['round_5ffun_13',['round_fun',['../structxt_1_1math_1_1round__fun.html',1,'xt::math']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..34d315aff --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['select_5fdim_5fmapping_5ftype_0',['select_dim_mapping_type',['../structxt_1_1select__dim__mapping__type.html',1,'xt']]], + ['select_5fdim_5fmapping_5ftype_3c_20fixed_5fshape_3c_20i_2e_2e_2e_20_3e_20_3e_1',['select_dim_mapping_type< fixed_shape< I... > >',['../structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html',1,'xt']]], + ['select_5fdim_5fmapping_5ftype_3c_20inner_5fshape_5ftype_20_3e_2',['select_dim_mapping_type< inner_shape_type >',['../structxt_1_1select__dim__mapping__type.html',1,'xt']]], + ['select_5fiterable_5fbase_3',['select_iterable_base',['../structxt_1_1select__iterable__base.html',1,'xt']]], + ['select_5flayout_4',['select_layout',['../structxt_1_1select__layout.html',1,'xt']]], + ['sequence_5fview_5',['sequence_view',['../classxt_1_1sequence__view.html',1,'xt']]], + ['sign_5ffun_6',['sign_fun',['../structxt_1_1math_1_1sign__fun.html',1,'xt::math']]], + ['sign_5fimpl_7',['sign_impl',['../structxt_1_1math_1_1sign__impl.html',1,'xt::math']]], + ['sign_5fimpl_3c_20xtl_3a_3axoptional_3c_20t_2c_20b_20_3e_20_3e_8',['sign_impl< xtl::xoptional< T, B > >',['../structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html',1,'xt::math']]], + ['simd_5fcondition_9',['simd_condition',['../structxt__simd_1_1simd__condition.html',1,'xt_simd']]], + ['simd_5ftraits_10',['simd_traits',['../structxt__simd_1_1simd__traits.html',1,'xt_simd']]], + ['sin_5ffun_11',['sin_fun',['../structxt_1_1math_1_1sin__fun.html',1,'xt::math']]], + ['sinh_5ffun_12',['sinh_fun',['../structxt_1_1math_1_1sinh__fun.html',1,'xt::math']]], + ['sqrt_5ffun_13',['sqrt_fun',['../structxt_1_1math_1_1sqrt__fun.html',1,'xt::math']]], + ['squared_5fnorm_5ftype_14',['squared_norm_type',['../structxt_1_1squared__norm__type.html',1,'xt']]], + ['static_5fdimension_15',['static_dimension',['../structxt_1_1static__dimension.html',1,'xt']]], + ['static_5fstring_16',['static_string',['../structxt_1_1static__string.html',1,'xt']]], + ['stepper_5fassigner_17',['stepper_assigner',['../classxt_1_1stepper__assigner.html',1,'xt']]], + ['stepper_5ftools_18',['stepper_tools',['../structxt_1_1stepper__tools.html',1,'xt']]], + ['strided_5floop_5fassigner_19',['strided_loop_assigner',['../classxt_1_1strided__loop__assigner.html',1,'xt']]], + ['svector_20',['svector',['../classxt_1_1svector.html',1,'xt']]], + ['svector_3c_20size_5ftype_20_3e_21',['svector< size_type >',['../classxt_1_1svector.html',1,'xt']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 000000000..337d6cc13 --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..d481b175c --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['histogram_5falgorithm_0',['histogram_algorithm',['../namespacext.html#aaa63c71a8935d44bbec1aa9af4cb61b8',1,'xt']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..5041e93e3 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['layout_5ftype_0',['layout_type',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6',1,'xt']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 000000000..166d09d05 --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pad_5fmode_0',['pad_mode',['../namespacext.html#aa9d095239ac8c959a5d0a5b7086b5ae7',1,'xt']]] +]; diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 000000000..0b4fe457a --- /dev/null +++ b/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quantile_5fmethod_0',['quantile_method',['../group__xt__xsort.html#ga2afe52f60aa76f33b0b883a78cabc1ed',1,'xt']]] +]; diff --git a/search/enums_4.js b/search/enums_4.js new file mode 100644 index 000000000..d2f1a0c91 --- /dev/null +++ b/search/enums_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sorting_5fmethod_0',['sorting_method',['../namespacext.html#ac4aea058f50a232746da4591e8956623',1,'xt']]], + ['stride_5ftype_1',['stride_type',['../group__xt__xstrides.html#ga743568032eda84a9d0df401f20317b7d',1,'xt']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 000000000..ecb4f8296 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['any_0',['any',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a100b8cad7cf2a56f6df78f171f97a1ec',1,'xt']]] +]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 000000000..ec5c55f3c --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bytes_0',['bytes',['../group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7da4b3a6218bb3e3a7303e8a171a60fcf92',1,'xt']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 000000000..5f07dcc27 --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['column_5fmajor_0',['column_major',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a8c23f260f0ec1479d3bfaf3a1305a347',1,'xt']]] +]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 000000000..8fa23c526 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dynamic_0',['dynamic',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6ab72f3bd391ba731a35708bfd8cd8a68f',1,'xt']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 000000000..677342d66 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hazen_0',['hazen',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaf4b08e7cc0a94bb8f4e9969eeb532039',1,'xt']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 000000000..7c48a96b7 --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['internal_0',['internal',['../group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dad1efad72dc5b17dc66a46767c32fff40',1,'xt']]], + ['interpolated_5finverted_5fcdf_1',['interpolated_inverted_cdf',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda7f20bc9a8cd4acd58c1d9b46821e9242',1,'xt']]] +]; diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 000000000..262e8fd28 --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linear_0',['linear',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda9a932b3cb396238423eb2f33ec17d6aa',1,'xt']]] +]; diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 000000000..f3e8559ef --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['median_5funbiased_0',['median_unbiased',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edaeddf62d602ae684d91d6f586f5e5cbaf',1,'xt']]] +]; diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js new file mode 100644 index 000000000..f53630b0c --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['normal_0',['normal',['../group__xt__xstrides.html#gga743568032eda84a9d0df401f20317b7dafea087517c26fadd409bd4b9dc642555',1,'xt']]], + ['normal_5funbiased_1',['normal_unbiased',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1edad1056b777fd87429ccb7a8a55db32545',1,'xt']]] +]; diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 000000000..a5fb6a0a4 --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quick_0',['quick',['../namespacext.html#ac4aea058f50a232746da4591e8956623a1df3746a4728276afdc24f828186f73a',1,'xt']]] +]; diff --git a/search/enumvalues_a.js b/search/enumvalues_a.js new file mode 100644 index 000000000..9f3f6536a --- /dev/null +++ b/search/enumvalues_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['row_5fmajor_0',['row_major',['../namespacext.html#a54ee24a1069c6e670d687af9e6aa4ba6a641fabb8e5e7d1d0333e2c9c384f959c',1,'xt']]] +]; diff --git a/search/enumvalues_b.js b/search/enumvalues_b.js new file mode 100644 index 000000000..0c5bbe902 --- /dev/null +++ b/search/enumvalues_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['stable_0',['stable',['../namespacext.html#ac4aea058f50a232746da4591e8956623af40faf6384fc85a33d3b05a9d41c012b',1,'xt']]] +]; diff --git a/search/enumvalues_c.js b/search/enumvalues_c.js new file mode 100644 index 000000000..a437b3d5d --- /dev/null +++ b/search/enumvalues_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['weibull_0',['weibull',['../group__xt__xsort.html#gga2afe52f60aa76f33b0b883a78cabc1eda17198fea0bd47a1170b57db7db9e6060',1,'xt']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..62eb10bcb --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['abs_0',['abs',['../group__basic__functions.html#ga5a8df8c0823f064b710b90fdc73384f7',1,'xt']]], + ['accumulate_1',['accumulate',['../namespacext.html#a89df2e50fff4b65f615aacfcdbb9ff74',1,'xt::accumulate(F &&f, E &&e, std::ptrdiff_t axis, EVS evaluation_strategy=EVS())'],['../namespacext.html#a75bd621231562feb074486e7213ee86f',1,'xt::accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())']]], + ['acos_2',['acos',['../group__trigo__functions.html#gaef1a134c51ccdb072964383887b838c7',1,'xt']]], + ['acosh_3',['acosh',['../group__hyper__functions.html#ga982a251110da20b8dae705367b3ddd7e',1,'xt']]], + ['adapt_4',['adapt',['../group__xt__xadapt.html#ga4a46bac84f94e0d22a5000df7008e7da',1,'xt::adapt(T(&c_array)[N], SC &&shape, SS &&strides)'],['../group__xt__xadapt.html#ga80782b35941520fa1d729ed6224cba72',1,'xt::adapt(C &&container, const SC &shape, layout_type l=L)'],['../group__xt__xadapt.html#ga6d665539130b96871327cb7a4aa8b2e0',1,'xt::adapt(C &&container, SC &&shape, SS &&strides)'],['../group__xt__xadapt.html#ga5d6037b3273754077e434c1dd12d897c',1,'xt::adapt(P &&pointer, typename A::size_type size, O ownership, const SC &shape, layout_type l=L, const A &alloc=A())'],['../group__xt__xadapt.html#ga4170776d38583fd9bedf66df77f3d328',1,'xt::adapt(P &&pointer, typename A::size_type size, O ownership, SC &&shape, SS &&strides, const A &alloc=A())'],['../group__xt__xadapt.html#ga7ce00acd98d8aa752d44779e68b0c97c',1,'xt::adapt(T(&c_array)[N], const SC &shape, layout_type l=L)'],['../group__xt__xadapt.html#ga9481e907df524526bc4fd7b77a7c6dcc',1,'xt::adapt(C &&pointer, const fixed_shape< X... > &)'],['../group__xt__xadapt.html#ga2eeb31313c7f9661f62d8ae6a6005013',1,'xt::adapt(C &&container, layout_type l=L)'],['../group__xt__xadapt.html#gad7037a00f2c9e7679805e3b0b3515299',1,'xt::adapt(P &&pointer, typename A::size_type size, O ownership, layout_type l=L, const A &alloc=A())']]], + ['adapt_5fsmart_5fptr_5',['adapt_smart_ptr',['../group__xt__xadapt.html#ga399f6121a1ebe2bf8b338e731bdc2c4e',1,'xt::adapt_smart_ptr(P &&smart_ptr, const SC &shape, layout_type l=L)'],['../group__xt__xadapt.html#ga9b942dfcc4b69cd9883c99b803b003aa',1,'xt::adapt_smart_ptr(P &&data_ptr, const SC &shape, D &&smart_ptr, layout_type l=L)'],['../group__xt__xadapt.html#gabe827f240de5a66f559ae57fadd19aad',1,'xt::adapt_smart_ptr(P &&smart_ptr, const I(&shape)[N], layout_type l=L)'],['../group__xt__xadapt.html#ga4addfb25502247a072b944240b67fd3f',1,'xt::adapt_smart_ptr(P &&data_ptr, const I(&shape)[N], D &&smart_ptr, layout_type l=L)']]], + ['all_6',['all',['../group__logical__operators.html#ga8da84f179efb13f3d860c5950b5c626e',1,'xt::all(E &&e)'],['../namespacext.html#a1607ba0be938e3d0a9acecee22eb2efe',1,'xt::all() noexcept']]], + ['allclose_7',['allclose',['../group__classif__functions.html#ga07beaa8c1b5c159ac3f6c0c09ab1e05c',1,'xt']]], + ['amax_8',['amax',['../group__basic__functions.html#ga2087e1dd9e331edc470b4b78343f33af',1,'xt']]], + ['amin_9',['amin',['../group__basic__functions.html#gaab0c337a9aefb746fb8a8b6cfcb511ed',1,'xt']]], + ['angle_10',['angle',['../group__xt__xcomplex.html#gad2d3e146e64f9cb63d1b66e7d0d43867',1,'xt']]], + ['any_11',['any',['../group__logical__operators.html#gadf5680cca336e22d483b0bfa188db592',1,'xt']]], + ['arange_12',['arange',['../namespacext.html#a156656dea2a291a2b0978a2b02d7f0f7',1,'xt::arange(T start, T stop, S step=1) noexcept'],['../namespacext.html#ab7170425dd9da8585aefbd0eb79af4ec',1,'xt::arange(T stop) noexcept']]], + ['arg_13',['arg',['../group__xt__xcomplex.html#ga79e6cc463f0aeee688d90dcd320cd672',1,'xt']]], + ['argmax_14',['argmax',['../group__xt__xsort.html#ga258b6c4df6acf24de4bec48be87f0218',1,'xt']]], + ['argmin_15',['argmin',['../namespacext.html#af262fae4388b98687913a18fe321f88d',1,'xt']]], + ['argpartition_16',['argpartition',['../group__xt__xsort.html#gac5d19a520cca302691a677d806cae666',1,'xt']]], + ['argsort_17',['argsort',['../group__xt__xsort.html#gaa3ce074f31b6284b63b0d5240820e50a',1,'xt']]], + ['argwhere_18',['argwhere',['../group__logical__operators.html#ga8e8213a0ec55abe31dc046b6a03379d7',1,'xt']]], + ['as_5fstrided_19',['as_strided',['../group__xt__xeval.html#ga67df3a5e9f6d3f55dceea48706539b46',1,'xt']]], + ['asin_20',['asin',['../group__trigo__functions.html#gabdab214ece01511604c914f91b81fdb1',1,'xt']]], + ['asinh_21',['asinh',['../group__hyper__functions.html#ga0893b951ad8fb1b23b97f0dae14651de',1,'xt']]], + ['assign_22',['assign',['../classxt_1_1xsemantic__base.html#aa4abcce752e16fea81c590cfdb48d099',1,'xt::xsemantic_base']]], + ['assign_5ftemporary_23',['assign_temporary',['../classxt_1_1xcontainer__semantic.html#aa6fec519f074fe655cd20aa1fd028dd3',1,'xt::xcontainer_semantic::assign_temporary()'],['../classxt_1_1xview__semantic.html#abaa88fce8540e36bf148047aa3110af9',1,'xt::xview_semantic::assign_temporary()']]], + ['at_24',['at',['../classxt_1_1xscalar.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xscalar::at()'],['../classxt_1_1xmasked__view.html#a340069d14699c36602889101dd1f932a',1,'xt::xmasked_view::at(Args... args) const -> const_reference'],['../classxt_1_1xmasked__view.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xmasked_view::at(Args... args) -> reference'],['../classxt_1_1xfunctor__applier__base.html#a340069d14699c36602889101dd1f932a',1,'xt::xfunctor_applier_base::at(Args... args) const -> const_reference'],['../classxt_1_1xfunctor__applier__base.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xfunctor_applier_base::at(Args... args) -> reference'],['../classxt_1_1xfunction.html#a340069d14699c36602889101dd1f932a',1,'xt::xfunction::at()'],['../classxt_1_1xcontainer.html#a340069d14699c36602889101dd1f932a',1,'xt::xcontainer::at(Args... args) const -> const_reference'],['../classxt_1_1xcontainer.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xcontainer::at(Args... args) -> reference'],['../classxt_1_1xaccessible.html#a340069d14699c36602889101dd1f932a',1,'xt::xaccessible::at()'],['../classxt_1_1xoptional__assembly__base.html#ab6aeecb3fd2184aa49cf51142487ae31',1,'xt::xoptional_assembly_base::at(Args... args) const -> const_reference'],['../classxt_1_1xoptional__assembly__base.html#a73dd5d1abc3eeb977466ea06cbd010a6',1,'xt::xoptional_assembly_base::at(Args... args) -> reference'],['../classxt_1_1xaccessible.html#abd1a88f04c122d8d066a5b2abc7f2c8f',1,'xt::xaccessible::at()'],['../classxt_1_1xconst__accessible.html#a340069d14699c36602889101dd1f932a',1,'xt::xconst_accessible::at()'],['../classxt_1_1xscalar.html#a340069d14699c36602889101dd1f932a',1,'xt::xscalar::at()']]], + ['atan_25',['atan',['../group__trigo__functions.html#gab62818bfe16f2dd284b39bea1a345383',1,'xt']]], + ['atan2_26',['atan2',['../group__trigo__functions.html#gaba0008974d39d88ec21dff058a642ca0',1,'xt']]], + ['atanh_27',['atanh',['../group__hyper__functions.html#gaf99552b5a0d06bfd92f42f272e7af623',1,'xt']]], + ['atleast_5f1d_28',['atleast_1d',['../group__xt__xmanipulation.html#ga220444924c684f9f2afbc3384a8ff09e',1,'xt']]], + ['atleast_5f2d_29',['atleast_2d',['../group__xt__xmanipulation.html#gae2392e470cec79a918e975987d431c54',1,'xt']]], + ['atleast_5f3d_30',['atleast_3d',['../group__xt__xmanipulation.html#gaf9edf6c754946e30b77d9617852ed15c',1,'xt']]], + ['atleast_5fnd_31',['atleast_Nd',['../group__xt__xmanipulation.html#ga66c613dc60a31ca07c28b45337ee59b7',1,'xt']]], + ['average_32',['average',['../group__red__functions.html#gac71fc60e960526979d68aece67232f82',1,'xt']]], + ['axis_5fbegin_33',['axis_begin',['../namespacext.html#a10d6b6dddf20a721f48bec57deee85c1',1,'xt::axis_begin(E &&e)'],['../namespacext.html#aeff80d8045ec5b2276cb70d3171890ef',1,'xt::axis_begin(E &&e, typename std::decay_t< E >::size_type axis)']]], + ['axis_5fend_34',['axis_end',['../namespacext.html#a8febb08b64e215650861f319845e0ba8',1,'xt::axis_end(E &&e)'],['../namespacext.html#a6a9d61065999823b0947aac4741a5255',1,'xt::axis_end(E &&e, typename std::decay_t< E >::size_type axis)']]], + ['axis_5fslice_5fbegin_35',['axis_slice_begin',['../namespacext.html#ac347d148c68881cdf4f5dbc488dc02bf',1,'xt::axis_slice_begin(E &&e)'],['../namespacext.html#a2a64b30629191a33452d47762e67386b',1,'xt::axis_slice_begin(E &&e, typename std::decay_t< E >::size_type axis)']]], + ['axis_5fslice_5fend_36',['axis_slice_end',['../namespacext.html#af214429c748c24ec2f26271be60ff9ea',1,'xt::axis_slice_end(E &&e)'],['../namespacext.html#a79a091d187f0ba564daabc12be1725ca',1,'xt::axis_slice_end(E &&e, typename std::decay_t< E >::size_type axis)']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..c01ad6e62 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['back_0',['back',['../classxt_1_1xaccessible.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xaccessible::back()'],['../classxt_1_1xconst__accessible.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xconst_accessible::back()'],['../classxt_1_1xscalar.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xscalar::back() const'],['../classxt_1_1xscalar.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xscalar::back()'],['../classxt_1_1xmasked__view.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xmasked_view::back() const'],['../classxt_1_1xmasked__view.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xmasked_view::back()'],['../classxt_1_1xfunctor__applier__base.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xfunctor_applier_base::back() const'],['../classxt_1_1xfunctor__applier__base.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xfunctor_applier_base::back()'],['../classxt_1_1xcontainer.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xcontainer::back() const'],['../classxt_1_1xcontainer.html#a905660a4d87f4d3e7b651bcf6bb690d0',1,'xt::xcontainer::back()'],['../classxt_1_1xaccessible.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xaccessible::back()'],['../classxt_1_1xoptional__assembly__base.html#a8d17eac6565a38c69ce3597b087daa24',1,'xt::xoptional_assembly_base::back() const'],['../classxt_1_1xoptional__assembly__base.html#a30a6a24dfa921de015892bddeef5e731',1,'xt::xoptional_assembly_base::back()'],['../classxt_1_1xfunction.html#ae8c11bf107fb871f054e2194163778fd',1,'xt::xfunction::back()']]], + ['backstrides_1',['backstrides',['../classxt_1_1xstrided__view__base.html#a736dcfe2b1e0a157f89a7a4c6445edd9',1,'xt::xstrided_view_base::backstrides()'],['../classxt_1_1xstrided__view.html#a736dcfe2b1e0a157f89a7a4c6445edd9',1,'xt::xstrided_view::backstrides()'],['../classxt_1_1xoptional__assembly__base.html#a0af0bee6bcff1b475520937f31b84bd5',1,'xt::xoptional_assembly_base::backstrides()'],['../classxt_1_1xmasked__view.html#a11f6663bf33dc7e1afbce7f6132e58fe',1,'xt::xmasked_view::backstrides()'],['../classxt_1_1xfunctor__applier__base.html#a31682644280a7cb1f47f306e2fa832fe',1,'xt::xfunctor_applier_base::backstrides()'],['../classxt_1_1xcontainer.html#a238a7ac8797b8afa4906e6445483aa1d',1,'xt::xcontainer::backstrides()']]], + ['begin_2',['begin',['../classxt_1_1xoptional__assembly__base.html#a095cfd6ccf0bb5696073af2c8536f8e9',1,'xt::xoptional_assembly_base::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a6ab0e76125fa876b97b53a813a3d4713',1,'xt::xoptional_assembly_base::begin() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a4123b26a873b7ed680b13ef557cd3c3c',1,'xt::xoptional_assembly_base::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#aa92f6e2edb798a381d131475e463bf31',1,'xt::xoptional_assembly_base::begin() noexcept -> layout_iterator< L >'],['../classxt_1_1xiterable.html#a095cfd6ccf0bb5696073af2c8536f8e9',1,'xt::xiterable::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a6ab0e76125fa876b97b53a813a3d4713',1,'xt::xiterable::begin() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a3b0ee4efcc6ed36094e02631279cb3ce',1,'xt::xcontiguous_iterable::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#aa93641d4488c4ddb95274b41df89401f',1,'xt::xcontiguous_iterable::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#aa37724c4f2fe4ed455f37a2a485dcebc',1,'xt::xcontiguous_iterable::begin() const noexcept -> select_const_iterator< L >'],['../classxt_1_1xiterable.html#a4123b26a873b7ed680b13ef557cd3c3c',1,'xt::xiterable::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#aa92f6e2edb798a381d131475e463bf31',1,'xt::xiterable::begin() noexcept -> layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a095cfd6ccf0bb5696073af2c8536f8e9',1,'xt::xconst_iterable::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a6ab0e76125fa876b97b53a813a3d4713',1,'xt::xconst_iterable::begin() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#a20fda1464f7c57d2bedac80130bc1b8a',1,'xt::xfunctor_applier_base::begin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a3ab9bf54021db8cea2150113376a271c',1,'xt::xfunctor_applier_base::begin(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a20bbfc1e10a26d6754e31ecaca3791db',1,'xt::xfunctor_applier_base::begin() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#acbbbfb5117f8a5cbbf6d884c99209aed',1,'xt::xfunctor_applier_base::begin() noexcept'],['../classxt_1_1xcontiguous__iterable.html#ac598e11fd3eb83a2dcb5c74582ffd95a',1,'xt::xcontiguous_iterable::begin()']]], + ['bin_5fitems_3',['bin_items',['../namespacext.html#a17da83b8f903ed63f70997ff399b70a3',1,'xt::bin_items(size_t N, size_t bins)'],['../namespacext.html#a79e3638cd1a9a294abe0d95b9425049d',1,'xt::bin_items(size_t N, E &&weights)']]], + ['bincount_4',['bincount',['../namespacext.html#aed5ac7b9e3af63f34daf465b902d0108',1,'xt']]], + ['bit_5fand_5fassign_5',['bit_and_assign',['../classxt_1_1xsemantic__base.html#a491f436cebf5ae09254782e8e39e07e4',1,'xt::xsemantic_base']]], + ['bit_5for_5fassign_6',['bit_or_assign',['../classxt_1_1xsemantic__base.html#a8f36e2f2e9869cb21ccb197f234838ec',1,'xt::xsemantic_base']]], + ['bit_5fxor_5fassign_7',['bit_xor_assign',['../classxt_1_1xsemantic__base.html#a2ecc711c54c031f9fae4f959ba54c756',1,'xt::xsemantic_base']]], + ['broadcast_8',['broadcast',['../namespacext.html#a0879929fad639a3a4256a702b9beba62',1,'xt']]], + ['broadcast_5fshape_9',['broadcast_shape',['../classxt_1_1xgenerator.html#ae6b7796ce3f5e9aa5333e6c066013b24',1,'xt::xgenerator::broadcast_shape()'],['../classxt_1_1xindex__view.html#ac341559ffeb015df5070beec5596d2a9',1,'xt::xindex_view::broadcast_shape()'],['../classxt_1_1xoptional__assembly__base.html#a98fdda9ecaf31ce8310614ad46aee9cd',1,'xt::xoptional_assembly_base::broadcast_shape()'],['../classxt_1_1xreducer.html#a20c55f56bcedfe9f3e3662253a922073',1,'xt::xreducer::broadcast_shape()'],['../classxt_1_1xrepeat.html#a2610f596c5e9b7475d30aa36132a93be',1,'xt::xrepeat::broadcast_shape()'],['../classxt_1_1xstrided__view__base.html#a6a79ebace6f36cfb560248f093b7dfa2',1,'xt::xstrided_view_base::broadcast_shape()'],['../classxt_1_1xview.html#a4fb1f607e8b93152ef8426c5ef524c3e',1,'xt::xview::broadcast_shape()'],['../classxt_1_1xdynamic__view.html#a6a79ebace6f36cfb560248f093b7dfa2',1,'xt::xdynamic_view::broadcast_shape()'],['../classxt_1_1xstrided__view.html#a6a79ebace6f36cfb560248f093b7dfa2',1,'xt::xstrided_view::broadcast_shape()'],['../classxt_1_1xfunctor__applier__base.html#ada44e2d571b044340c22c3c16137aa73',1,'xt::xfunctor_applier_base::broadcast_shape()'],['../classxt_1_1xfunction.html#a2ef3340ac01fdce40b012db3ca48d2ef',1,'xt::xfunction::broadcast_shape()'],['../classxt_1_1xcontainer.html#a689eeba5b9b1b4e8943c335d39ecc240',1,'xt::xcontainer::broadcast_shape()'],['../classxt_1_1xbroadcast.html#ad91b61dbfe7d500131c6f001aa0461e6',1,'xt::xbroadcast::broadcast_shape()']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..71c7afd7e --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['rad2deg_0',['rad2deg',['../group__basic__functions.html#gab8884e81107ab3012f7604fa1826bca3',1,'xt']]], + ['radians_1',['radians',['../group__basic__functions.html#ga9bdbff83a3137d687d749c710fa466fb',1,'xt']]], + ['range_2',['range',['../namespacext.html#a12df38a6d4e688b6df1a4641930c6181',1,'xt::range(A start_val, B stop_val)'],['../namespacext.html#ad1605028ad21316d7118d9c2c56b93a4',1,'xt::range(A start_val, B stop_val, C step)']]], + ['ravel_3',['ravel',['../group__xt__xmanipulation.html#ga52d3b08fa67fe8c498e4271fca338e28',1,'xt']]], + ['ravel_5findices_4',['ravel_indices',['../namespacext.html#ab42ce054ae7c59ee974c25680a09218d',1,'xt']]], + ['rbegin_5',['rbegin',['../classxt_1_1xfunctor__applier__base.html#a683da35bece5497aead059605a406235',1,'xt::xfunctor_applier_base::rbegin() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#abacad02a84f1b459e87948192e2c5d05',1,'xt::xfunctor_applier_base::rbegin() noexcept'],['../classxt_1_1xoptional__assembly__base.html#a3671f77843974f6962cd425318c0ef00',1,'xt::xoptional_assembly_base::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a52be134ecb3d529fddf7e8ba888a59a0',1,'xt::xoptional_assembly_base::rbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a66bef4e8cff9bf584e71f0ac7ba828ad',1,'xt::xoptional_assembly_base::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a7bc86e4fb6f2f55c74e33836a32739eb',1,'xt::xoptional_assembly_base::rbegin() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xiterable.html#a3671f77843974f6962cd425318c0ef00',1,'xt::xiterable::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a7bc86e4fb6f2f55c74e33836a32739eb',1,'xt::xiterable::rbegin() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xiterable.html#a52be134ecb3d529fddf7e8ba888a59a0',1,'xt::xiterable::rbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xiterable.html#a66bef4e8cff9bf584e71f0ac7ba828ad',1,'xt::xiterable::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a3671f77843974f6962cd425318c0ef00',1,'xt::xconst_iterable::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a52be134ecb3d529fddf7e8ba888a59a0',1,'xt::xconst_iterable::rbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#a81666e7d863a7679298d37a373cd1395',1,'xt::xfunctor_applier_base::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#aff09d88c2dfc4cb00850f42c8f695337',1,'xt::xfunctor_applier_base::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a9baaf955c445124c0ce0b15e46e9ea67',1,'xt::xcontiguous_iterable::rbegin() noexcept -> select_reverse_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a34ab77bf7e6f44cf32100dfa19016985',1,'xt::xcontiguous_iterable::rbegin() const noexcept -> select_const_reverse_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a2464771d6d90297666b1e7e40ff21f70',1,'xt::xcontiguous_iterable::rbegin(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#af72e9e4372c87685b932899a7a411b2f',1,'xt::xcontiguous_iterable::rbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >']]], + ['real_6',['real',['../group__xt__xcomplex.html#ga40dd460909cc5b81f23947646eebd543',1,'xt']]], + ['reduce_7',['reduce',['../namespacext.html#a2bf61f96fdc4316d3eefa8dff6174ece',1,'xt']]], + ['remainder_8',['remainder',['../group__basic__functions.html#ga2322bc87a5871e26173db4b2383e1db8',1,'xt']]], + ['rend_9',['rend',['../classxt_1_1xiterable.html#a634cb122a80a40c5c38ff2b4527e3f26',1,'xt::xiterable::rend()'],['../classxt_1_1xoptional__assembly__base.html#a634cb122a80a40c5c38ff2b4527e3f26',1,'xt::xoptional_assembly_base::rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#ade7cb42ea93353d00bbb739743be090d',1,'xt::xoptional_assembly_base::rend() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a92e4a1b212968fcc8a8240be122fe8e4',1,'xt::xoptional_assembly_base::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#af04d43d598e8933225287e044c12d4c6',1,'xt::xoptional_assembly_base::rend() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a3b9ef9be65f2c10776ee7055f4067bed',1,'xt::xcontiguous_iterable::rend()'],['../classxt_1_1xfunctor__applier__base.html#a8201e2518627bdc8e1fb6f33653aacbb',1,'xt::xfunctor_applier_base::rend() noexcept'],['../classxt_1_1xfunctor__applier__base.html#a20631d9fd8aaa1e5a95393c31537ef81',1,'xt::xfunctor_applier_base::rend() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#a23da38db60689cea813d3995b7b93de2',1,'xt::xfunctor_applier_base::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a367facbe0356cf7de42ed9cd1e60a163',1,'xt::xfunctor_applier_base::rend(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#ade7cb42ea93353d00bbb739743be090d',1,'xt::xconst_iterable::rend() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a634cb122a80a40c5c38ff2b4527e3f26',1,'xt::xconst_iterable::rend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#af04d43d598e8933225287e044c12d4c6',1,'xt::xiterable::rend() noexcept -> reverse_layout_iterator< L >'],['../classxt_1_1xiterable.html#a92e4a1b212968fcc8a8240be122fe8e4',1,'xt::xiterable::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#ad8f400de36b11a40a49517ebe2f2f1fa',1,'xt::xcontiguous_iterable::rend() noexcept -> select_reverse_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a0fca0441c61348b6eb092456e123b869',1,'xt::xcontiguous_iterable::rend() const noexcept -> select_const_reverse_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#ab805bb1e5bd7b9a0d22fe8fcda0ffeb8',1,'xt::xcontiguous_iterable::rend(const S &shape) noexcept -> reverse_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#ade7cb42ea93353d00bbb739743be090d',1,'xt::xiterable::rend()']]], + ['repeat_10',['repeat',['../group__xt__xmanipulation.html#ga86b343ba5d1f6150c418475a00e3d3c3',1,'xt::repeat(E &&e, std::size_t repeats, std::size_t axis)'],['../group__xt__xmanipulation.html#ga0061839371ca8e1f29c37e812dee9ad1',1,'xt::repeat(E &&e, const std::vector< std::size_t > &repeats, std::size_t axis)'],['../group__xt__xmanipulation.html#ga7aba37875778e4c7a786cbe6ec909ef2',1,'xt::repeat(E &&e, std::vector< std::size_t > &&repeats, std::size_t axis)']]], + ['reshape_11',['reshape',['../classxt_1_1xstrided__container.html#ade4f89e605eb5ade6b47507eb411702b',1,'xt::xstrided_container::reshape()'],['../classxt_1_1xfixed__container.html#ab5b58143fbfe4d0b7c0ea353526b286f',1,'xt::xfixed_container::reshape()'],['../classxt_1_1xfixed__adaptor.html#a5fe78e6500ce0bddc63c8b7de09b8031',1,'xt::xfixed_adaptor::reshape()'],['../classxt_1_1xgenerator.html#a8d78d70b368a9010ded32ee263299b8b',1,'xt::xgenerator::reshape()'],['../classxt_1_1xoptional__assembly__base.html#adcf1eb03fa74eac4bfd3c1c53647e841',1,'xt::xoptional_assembly_base::reshape()']]], + ['reshape_5fview_12',['reshape_view',['../namespacext.html#a7bda1677287d8bee76befd8c427e3898',1,'xt']]], + ['resize_13',['resize',['../classxt_1_1xoptional__assembly__base.html#ad75f3602dcf419d0d35af7121da5e802',1,'xt::xoptional_assembly_base::resize()'],['../classxt_1_1xstrided__container.html#af38c6e8082f27cfbaa445767c14c0110',1,'xt::xstrided_container::resize(S &&shape, bool force=false)'],['../classxt_1_1xstrided__container.html#ac157fa05a058950206b21ed403d969fe',1,'xt::xstrided_container::resize(S &&shape, layout_type l)'],['../classxt_1_1xstrided__container.html#a9853404ceb5a3d42430c43508abb671b',1,'xt::xstrided_container::resize(S &&shape, const strides_type &strides)'],['../classxt_1_1xfixed__container.html#a1c6d4565311f46f74edd7bfbbf6a2616',1,'xt::xfixed_container::resize(ST &&shape, bool force=false) const'],['../classxt_1_1xfixed__container.html#a591c135ebc74e8067d19a7503c635280',1,'xt::xfixed_container::resize(ST &&shape, layout_type l) const'],['../classxt_1_1xfixed__container.html#a311dfc919ead913eb8c6f27b241619fb',1,'xt::xfixed_container::resize(ST &&shape, const strides_type &strides) const'],['../classxt_1_1xfixed__adaptor.html#a75fb0edc455232657d609bd9d79d6544',1,'xt::xfixed_adaptor::resize(ST &&shape, bool force=false) const'],['../classxt_1_1xfixed__adaptor.html#a10c880b192785a2108d5ab7047c1bed6',1,'xt::xfixed_adaptor::resize(ST &&shape, layout_type l) const'],['../classxt_1_1xoptional__assembly__base.html#a6679efb40275d9066e15627f79430759',1,'xt::xoptional_assembly_base::resize(const S &shape, const strides_type &strides)'],['../classxt_1_1xoptional__assembly__base.html#a346e0ff791f6279005d0229311e62b75',1,'xt::xoptional_assembly_base::resize(const S &shape, layout_type l)'],['../classxt_1_1xfixed__adaptor.html#a656b75b805c1645d3c562a5797d7adb9',1,'xt::xfixed_adaptor::resize()']]], + ['right_5fshift_14',['right_shift',['../group__bitwise__operators.html#ga2eab76876895cd0cae2a667e513c9f92',1,'xt']]], + ['rint_15',['rint',['../group__nearint__functions.html#gaad503e7c9ee485a6b623770c8f43bde0',1,'xt']]], + ['roll_16',['roll',['../group__xt__xmanipulation.html#ga2211d25aea0f9a27855fb602419a365b',1,'xt::roll(E &&e, std::ptrdiff_t shift)'],['../group__xt__xmanipulation.html#ga957635620a4f4c19c4ee0546c69fcb1d',1,'xt::roll(E &&e, std::ptrdiff_t shift, std::ptrdiff_t axis)']]], + ['rot90_17',['rot90',['../group__xt__xmanipulation.html#gab5a947902290cc80a26e8d091428497e',1,'xt']]], + ['round_18',['round',['../group__nearint__functions.html#gaa8b6a7ec9f215261ace43466d4ae6f0b',1,'xt']]], + ['row_19',['row',['../namespacext.html#a445fa98828eab51048b87fc29d8e88ad',1,'xt']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..6b617dec0 --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['same_5fshape_0',['same_shape',['../group__xt__xshape.html#ga3c10cfb8271fbf79932a98edc5491ac7',1,'xt']]], + ['searchsorted_1',['searchsorted',['../namespacext.html#a7f2dbcb81b8a765fe3972a7490d62618',1,'xt']]], + ['setdiff1d_2',['setdiff1d',['../group__xt__xsort.html#gab6eedcadc051be2d6e3ad7890a5c2d90',1,'xt']]], + ['shape_3',['shape',['../classxt_1_1xbroadcast.html#ab55ff6c03aac9708dd319a0936a3fd18',1,'xt::xbroadcast::shape()'],['../namespacext.html#ad761751bf328e1bedb307676ab8e7c8f',1,'xt::shape()'],['../classxt_1_1xconst__accessible.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xconst_accessible::shape()'],['../classxt_1_1xstrided__view.html#a7f03137aa8b79f042dd1eb5b769f5256',1,'xt::xstrided_view::shape()'],['../classxt_1_1xrepeat.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xrepeat::shape()'],['../classxt_1_1xgenerator.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xgenerator::shape()'],['../classxt_1_1xfunction.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xfunction::shape()'],['../classxt_1_1xdynamic__view.html#a7f03137aa8b79f042dd1eb5b769f5256',1,'xt::xdynamic_view::shape()'],['../classxt_1_1xbroadcast.html#aec0ae6f83f7e86f32e083cb6714af552',1,'xt::xbroadcast::shape()'],['../classxt_1_1xview.html#a4f26067384dd1d379fcd476127386966',1,'xt::xview::shape()'],['../classxt_1_1xrepeat.html#abbeb6ae19bc34035323c7577c65f0d84',1,'xt::xrepeat::shape()'],['../classxt_1_1xcontainer.html#a69d345a40906cb982d205357520792fc',1,'xt::xcontainer::shape()'],['../classxt_1_1xfunction.html#a41f3d01620f13c854d163235d03e534d',1,'xt::xfunction::shape()'],['../classxt_1_1xfunctor__applier__base.html#a982e33a6deafe2b8f8048ce8c91956b3',1,'xt::xfunctor_applier_base::shape()'],['../classxt_1_1xgenerator.html#a72035cb01c8e3ead3dedcd013fe59737',1,'xt::xgenerator::shape()'],['../classxt_1_1xstrided__view__base.html#a7f03137aa8b79f042dd1eb5b769f5256',1,'xt::xstrided_view_base::shape()'],['../classxt_1_1xindex__view.html#ad124eaa3959093d86deab646c4a2fb18',1,'xt::xindex_view::shape()'],['../classxt_1_1xoptional__assembly__base.html#a574aec951fe205155709a7871055ec75',1,'xt::xoptional_assembly_base::shape()'],['../classxt_1_1xindex__view.html#a47f560d67ba251afd96c617e6c6e2a0e',1,'xt::xindex_view::shape()'],['../classxt_1_1xoptional__assembly__base.html#a58bcff261d17d4b7e5b89a9d4ac6a362',1,'xt::xoptional_assembly_base::shape()'],['../classxt_1_1xreducer.html#aaf23386e8c796f997a2e80c71e57e74c',1,'xt::xreducer::shape()'],['../classxt_1_1xmasked__view.html#a3e501b72ae46be33e45dd249ac6e369c',1,'xt::xmasked_view::shape()']]], + ['share_4',['share',['../namespacext.html#a39563f02e935d00d2df74796f2e19fb0',1,'xt::share(xexpression< E > &expr)'],['../namespacext.html#ad90d6213ecfc3ae99eba87429935a38a',1,'xt::share(xexpression< E > &&expr)']]], + ['sign_5',['sign',['../group__basic__functions.html#gad678caa2e599d095ad40e2b32bf4eb37',1,'xt']]], + ['sin_6',['sin',['../group__trigo__functions.html#gad8638d83d6874334a912c892b9d8a9c5',1,'xt']]], + ['sinh_7',['sinh',['../group__hyper__functions.html#ga43507ff72c11c17061fd4ae7716c11d5',1,'xt']]], + ['size_8',['size',['../classxt_1_1xcontainer.html#a1c0a41d160789e55b7bdfd797b3af1cb',1,'xt::xcontainer::size()'],['../classxt_1_1xconst__accessible.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xconst_accessible::size()'],['../classxt_1_1xbroadcast.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xbroadcast::size()'],['../classxt_1_1xfunctor__applier__base.html#ae971620a3e942d234f19e65a10005e45',1,'xt::xfunctor_applier_base::size()'],['../classxt_1_1xindex__view.html#a9c3f7c72cb0e1172b75bb256e92e6b94',1,'xt::xindex_view::size()'],['../classxt_1_1xmasked__view.html#a9b8f0d6d6f4fd32f161ffbae9828a7e2',1,'xt::xmasked_view::size()'],['../classxt_1_1xoptional__assembly__base.html#a21f778be8956cf3c7c72aa37169a0d2a',1,'xt::xoptional_assembly_base::size()'],['../classxt_1_1xrepeat.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xrepeat::size()'],['../classxt_1_1xfunction.html#a2f23977016e337e834dfdc912d1fc435',1,'xt::xfunction::size()']]], + ['slices_9',['slices',['../classxt_1_1xview.html#a10687f1d5229c3d4f0b0af8766d9d64b',1,'xt::xview']]], + ['sort_10',['sort',['../group__xt__xsort.html#gae455f4aaacbc04bebc76451907003ee3',1,'xt']]], + ['split_11',['split',['../group__xt__xmanipulation.html#gaad5c56f6a09fb0a6ebaa2ec6cf22cf5c',1,'xt']]], + ['sqrt_12',['sqrt',['../group__pow__functions.html#ga2ac4c9ab16cee0b95b444191419c2802',1,'xt']]], + ['square_13',['square',['../group__pow__functions.html#ga6e5fca6d456f46a946b4a9707e1d442f',1,'xt']]], + ['squeeze_14',['squeeze',['../group__xt__xmanipulation.html#ga2734defabe45fcb86ed9545c1b033134',1,'xt::squeeze(E &&e)'],['../group__xt__xmanipulation.html#gadcffbf0452884112fd3bcf7e7077fd6f',1,'xt::squeeze(E &&e, S &&axis, Tag check_policy)']]], + ['stack_15',['stack',['../namespacext.html#a120ce2e841c6d13c8688cd12128fe942',1,'xt']]], + ['stddev_16',['stddev',['../group__red__functions.html#ga0c8291754c7c050cbfac3f6eeeaa1f77',1,'xt']]], + ['storage_17',['storage',['../classxt_1_1xview.html#a2f5a08aebb5d391e488dcd60f2c90f67',1,'xt::xview::storage()'],['../classxt_1_1xcontainer.html#a19d0a91c82d0c35e414cf160751a9cb5',1,'xt::xcontainer::storage() noexcept'],['../classxt_1_1xcontainer.html#a75322e16f42222403daa18be69efa7d7',1,'xt::xcontainer::storage() const noexcept'],['../classxt_1_1xstrided__view.html#a8b2e5b2c411cc06b834960f23dea39e7',1,'xt::xstrided_view::storage() const noexcept'],['../classxt_1_1xstrided__view.html#aeec822654cdb1a74d861e819b1c98730',1,'xt::xstrided_view::storage() noexcept'],['../classxt_1_1xdynamic__view.html#a8b2e5b2c411cc06b834960f23dea39e7',1,'xt::xdynamic_view::storage() const noexcept'],['../classxt_1_1xdynamic__view.html#aeec822654cdb1a74d861e819b1c98730',1,'xt::xdynamic_view::storage() noexcept'],['../classxt_1_1xstrided__view__base.html#a8b2e5b2c411cc06b834960f23dea39e7',1,'xt::xstrided_view_base::storage() const noexcept'],['../classxt_1_1xstrided__view__base.html#aeec822654cdb1a74d861e819b1c98730',1,'xt::xstrided_view_base::storage() noexcept']]], + ['strided_5fview_18',['strided_view',['../namespacext.html#ae5c7088d2beee486998238fbc29ee7b9',1,'xt::strided_view(E &&e, const xstrided_slice_vector &slices)'],['../namespacext.html#aca6714111810062b91a1c9e31bd69b26',1,'xt::strided_view(E &&e, S &&shape, X &&strides, std::size_t offset, layout_type layout) noexcept']]], + ['strides_19',['strides',['../classxt_1_1xview.html#aec0c5b2cd004781631cabe77e7f00d63',1,'xt::xview::strides()'],['../group__xt__xstrides.html#ga1ddf9b85add66ccc98661073a78cd953',1,'xt::strides(const E &e, std::size_t axis, stride_type type=stride_type::normal) noexcept'],['../group__xt__xstrides.html#ga651f61121a205e14993c06c52c6d2503',1,'xt::strides(const E &e, stride_type type=stride_type::normal) noexcept'],['../classxt_1_1xcontainer.html#a521fff0ce57a45da819d7e313b3133b4',1,'xt::xcontainer::strides()'],['../classxt_1_1xfunctor__applier__base.html#aee81935fb3b87f6e71e49e5410236645',1,'xt::xfunctor_applier_base::strides()'],['../classxt_1_1xmasked__view.html#a0cc1342c4e640acb9f726ccbb1a74da7',1,'xt::xmasked_view::strides()'],['../classxt_1_1xoptional__assembly__base.html#aa1afe87047106cd980f036335b978199',1,'xt::xoptional_assembly_base::strides()'],['../classxt_1_1xstrided__view__base.html#a60cc5bdc36e03dd0b339e89e16d4080c',1,'xt::xstrided_view_base::strides()'],['../classxt_1_1xstrided__view.html#a60cc5bdc36e03dd0b339e89e16d4080c',1,'xt::xstrided_view::strides()']]], + ['sum_20',['sum',['../group__red__functions.html#ga018d66d27aae0df9558107d684380436',1,'xt']]], + ['swapaxes_21',['swapaxes',['../group__xt__xmanipulation.html#gaed086f2e402aa1e927f745fceae54018',1,'xt']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 000000000..5ded02703 --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['tan_0',['tan',['../group__trigo__functions.html#gae6d7aef2bb82c074da4a500ca5eadc7b',1,'xt']]], + ['tanh_1',['tanh',['../group__hyper__functions.html#ga1b22c94cc8d9750ca8153d9b5bbb6c86',1,'xt']]], + ['tgamma_2',['tgamma',['../group__err__functions.html#gabe9c5e1fc33af3db795c8b3655321f02',1,'xt']]], + ['tile_3',['tile',['../namespacext.html#a65ddcadd66cb7d479944b1da073f2ce9',1,'xt::tile(E &&e, std::initializer_list< S > reps)'],['../namespacext.html#ad5270a2924bb17bc641c5846355149bc',1,'xt::tile(E &&e, S reps)']]], + ['to_5fjson_4',['to_json',['../namespacext.html#aafd7842df1c7034546b2a84bff7fd97b',1,'xt']]], + ['transpose_5',['transpose',['../group__xt__xmanipulation.html#ga620b1159b15601a1fd9b2ddaa746225e',1,'xt::transpose(E &&e) noexcept'],['../group__xt__xmanipulation.html#gae8b37193755be9f7e4c0161a6d9f9b6b',1,'xt::transpose(E &&e, S &&permutation, Tag check_policy)']]], + ['trapz_6',['trapz',['../group__red__functions.html#ga99e0a7ad0979b3ceeaf99d75fd30af9d',1,'xt::trapz(const xexpression< T > &y, double dx=1.0, std::ptrdiff_t axis=-1)'],['../group__red__functions.html#ga681c9cbfe336a5a7892633f189098c3d',1,'xt::trapz(const xexpression< T > &y, const xexpression< E > &x, std::ptrdiff_t axis=-1)']]], + ['tril_7',['tril',['../namespacext.html#ab524d3db6722f5d0e09347aedcf63837',1,'xt']]], + ['trim_5fzeros_8',['trim_zeros',['../group__xt__xmanipulation.html#ga938cc86961805cf29a1f68394922d9f7',1,'xt']]], + ['triu_9',['triu',['../namespacext.html#a5ca4a423657a4a9c4ec4852dd344164b',1,'xt']]], + ['trunc_10',['trunc',['../group__nearint__functions.html#ga1bf2a5edfa5f687938657e37064ddc74',1,'xt']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..4910f62db --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['unchecked_0',['unchecked',['../classxt_1_1xindex__view.html#a9ff5247ea89e3a5ed114685960edd042',1,'xt::xindex_view::unchecked()'],['../classxt_1_1xstrided__view.html#a4ed93202e4e30f980c2967c00e6044c4',1,'xt::xstrided_view::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xstrided__view.html#a4a944cdaddacef0710cc4e601d95a1c8',1,'xt::xstrided_view::unchecked(Args... args) -> reference'],['../classxt_1_1xview.html#a8860cdb3a358dfee3af68fafdb5c7010',1,'xt::xview::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xview.html#afc28e491c5db09bcfe54e5eea176a5ec',1,'xt::xview::unchecked(Args... args) -> reference'],['../classxt_1_1xstrided__view__base.html#a4ed93202e4e30f980c2967c00e6044c4',1,'xt::xstrided_view_base::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xstrided__view__base.html#a4a944cdaddacef0710cc4e601d95a1c8',1,'xt::xstrided_view_base::unchecked(Args... args) -> reference'],['../classxt_1_1xrepeat.html#af545974287e021de5253fcfd602d2f6a',1,'xt::xrepeat::unchecked()'],['../classxt_1_1xreducer.html#a55be3ba3c0268968d7c6efef7621e3e4',1,'xt::xreducer::unchecked()'],['../classxt_1_1xoptional__assembly__base.html#a53735c2da40556583e93ec94c618b325',1,'xt::xoptional_assembly_base::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xoptional__assembly__base.html#afca63e0308421875f479c8373eea66d3',1,'xt::xoptional_assembly_base::unchecked(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a430cf3c34d4e7ac88d55522fcef881ff',1,'xt::xmasked_view::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xmasked__view.html#a1f080554ead02ec72ee2e53691b2d793',1,'xt::xmasked_view::unchecked(Args... args) -> reference'],['../classxt_1_1xgenerator.html#af95208893a8690ab495c3ac4f570d590',1,'xt::xgenerator::unchecked()'],['../classxt_1_1xfunctor__applier__base.html#a5b9d6e6df937ed2b534d8a68c0d4ceff',1,'xt::xfunctor_applier_base::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xfunctor__applier__base.html#ad86eba7c460e85d7e6bd558091531376',1,'xt::xfunctor_applier_base::unchecked(Args... args) -> reference'],['../classxt_1_1xfunction.html#ab99bdf99fd4e28328b2f4a24d6f763c2',1,'xt::xfunction::unchecked()'],['../classxt_1_1xcontainer.html#aa493271826c9bc5298a556949755e84a',1,'xt::xcontainer::unchecked(Args... args) const -> const_reference'],['../classxt_1_1xcontainer.html#ac47ed05e4abb19044244cb26307cf8dc',1,'xt::xcontainer::unchecked(Args... args) -> reference'],['../classxt_1_1xbroadcast.html#aecb99b5176966ab47f4dfe2b66385d56',1,'xt::xbroadcast::unchecked()'],['../classxt_1_1xindex__view.html#aa6c15d2a26e0a3a993332606bb3d8ddc',1,'xt::xindex_view::unchecked()']]], + ['unique_1',['unique',['../group__xt__xsort.html#ga2b46eaf022e2fcd9e82ae5223fdd3ed5',1,'xt']]], + ['unwrap_2',['unwrap',['../group__basic__functions.html#gaeb6f80a96d7a1da033b737b34acaeb74',1,'xt']]], + ['use_5fcount_3',['use_count',['../classxt_1_1xshared__expression.html#ade23a460bdd1eb6102372076493f719e',1,'xt::xshared_expression']]] +]; diff --git a/search/functions_14.js b/search/functions_14.js new file mode 100644 index 000000000..12d3bc6a0 --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['value_0',['value',['../classxt_1_1xmasked__view.html#a888a7481ce4e40148e55a280dd2d721e',1,'xt::xmasked_view::value() noexcept'],['../classxt_1_1xmasked__view.html#a8c5a06d1b2b6f5aa3f08ac36dc6956f8',1,'xt::xmasked_view::value() const noexcept'],['../classxt_1_1xoptional__assembly__base.html#a5b5b3c3f0201b416989eb3cc388c9ea2',1,'xt::xoptional_assembly_base::value() noexcept'],['../classxt_1_1xoptional__assembly__base.html#ad6761e5fda241e0eed545c4b545d9f1c',1,'xt::xoptional_assembly_base::value() const noexcept']]], + ['variance_1',['variance',['../group__red__functions.html#ga7001a4fe6acde5968aa526166659a5fa',1,'xt']]], + ['view_2',['view',['../namespacext.html#aedc2027ff309134dff5b0720699c5ffa',1,'xt']]], + ['visible_3',['visible',['../classxt_1_1xmasked__view.html#a420f33aa357210c322d5d34f06c6b81e',1,'xt::xmasked_view::visible() noexcept'],['../classxt_1_1xmasked__view.html#ae0e58b3d80d80523a86ee38b97550c68',1,'xt::xmasked_view::visible() const noexcept']]], + ['vsplit_4',['vsplit',['../group__xt__xmanipulation.html#gad25f3a38510304cf1e3489748a43812c',1,'xt']]], + ['vstack_5',['vstack',['../namespacext.html#a87a9e875318fc87aba41154dddee7c60',1,'xt']]] +]; diff --git a/search/functions_15.js b/search/functions_15.js new file mode 100644 index 000000000..07fca243c --- /dev/null +++ b/search/functions_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['where_0',['where',['../group__logical__operators.html#gabe2a59ff19cc1341bdaf0f833793cbd5',1,'xt::where(E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< detail::conditional_ternary, E1, E2, E3 >'],['../group__logical__operators.html#gad36802fb44a519f60e8c2d20ab5b6ef8',1,'xt::where(const T &condition)']]] +]; diff --git a/search/functions_16.js b/search/functions_16.js new file mode 100644 index 000000000..b76628a01 --- /dev/null +++ b/search/functions_16.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['xarray_5fadaptor_0',['xarray_adaptor',['../classxt_1_1xarray__adaptor.html#a7f70baf14dbcdfeffa82a4dc56d995e4',1,'xt::xarray_adaptor::xarray_adaptor(const storage_type &storage)'],['../classxt_1_1xarray__adaptor.html#acc36cdfcb52803d3996a97569929eb72',1,'xt::xarray_adaptor::xarray_adaptor(storage_type &&storage)'],['../classxt_1_1xarray__adaptor.html#a32fe6b670e042fff5d9a1f7c4d99c125',1,'xt::xarray_adaptor::xarray_adaptor(D &&storage, const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xarray__adaptor.html#a04e029bca1b4fbf0bb361898b93182fc',1,'xt::xarray_adaptor::xarray_adaptor(D &&storage, const shape_type &shape, layout_type l=L)']]], + ['xarray_5fcontainer_1',['xarray_container',['../classxt_1_1xarray__container.html#ae5c1e535231ddffdb7783d1445ffd66d',1,'xt::xarray_container::xarray_container()'],['../classxt_1_1xarray__container.html#aad2ebb4b2fa3a2a3a33a8a57b6bfe60a',1,'xt::xarray_container::xarray_container(const xexpression< E > &e)'],['../classxt_1_1xarray__container.html#a44069c72b35f79263d7e24b6de2c4262',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 5 > t)'],['../classxt_1_1xarray__container.html#aaac4e823fd41ff9e9801a3cd8b1b5f6c',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 4 > t)'],['../classxt_1_1xarray__container.html#aa7107f45d9ee3d9bb7a4a65f7c240edb',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 3 > t)'],['../classxt_1_1xarray__container.html#a23f21da84072d9319fc8c826d98fb1de',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 2 > t)'],['../classxt_1_1xarray__container.html#a9cd19d110d8063589c6f6c08a44af6ad',1,'xt::xarray_container::xarray_container(nested_initializer_list_t< value_type, 1 > t)'],['../classxt_1_1xarray__container.html#a77e6553e8d27386c45f4fe7e80017e5c',1,'xt::xarray_container::xarray_container(const value_type &t)'],['../classxt_1_1xarray__container.html#a9e8b9a74e75fd76352d23346fa69a5c6',1,'xt::xarray_container::xarray_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)'],['../classxt_1_1xarray__container.html#a020df69d60ce91531bc3cf31af0b97ce',1,'xt::xarray_container::xarray_container(const shape_type &shape, const strides_type &strides, const_reference value)'],['../classxt_1_1xarray__container.html#a0ca205f5f86d10d73b87b1d3ea7e6297',1,'xt::xarray_container::xarray_container(const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xarray__container.html#a72aad798502aefff1285aa6f46941e9c',1,'xt::xarray_container::xarray_container(const shape_type &shape, const_reference value, layout_type l=L)'],['../classxt_1_1xarray__container.html#a6b738f9e83ff453355414de037099d8c',1,'xt::xarray_container::xarray_container(const shape_type &shape, layout_type l=L)']]], + ['xaxis_5fiterator_2',['xaxis_iterator',['../classxt_1_1xaxis__iterator.html#a27574105e56e37a1986b8cb5a141a9ea',1,'xt::xaxis_iterator::xaxis_iterator(CTA &&e, size_type axis)'],['../classxt_1_1xaxis__iterator.html#aacf91594c4a97e2811691d5678a95e4e',1,'xt::xaxis_iterator::xaxis_iterator(CTA &&e, size_type axis, size_type index, size_type offset)']]], + ['xaxis_5fslice_5fiterator_3',['xaxis_slice_iterator',['../classxt_1_1xaxis__slice__iterator.html#af741f5bf73967431bc0aba068da8fada',1,'xt::xaxis_slice_iterator::xaxis_slice_iterator(CTA &&e, size_type axis)'],['../classxt_1_1xaxis__slice__iterator.html#a0817357b924fd7c356a2a2f252fcb323',1,'xt::xaxis_slice_iterator::xaxis_slice_iterator(CTA &&e, size_type axis, size_type index, size_type offset)']]], + ['xbroadcast_4',['xbroadcast',['../classxt_1_1xbroadcast.html#aebbad01548cd2a4f5955c20f813b6314',1,'xt::xbroadcast::xbroadcast(CTA &&e, const S &s)'],['../classxt_1_1xbroadcast.html#ad96d515ec253f2745da1ccd7cbf44c97',1,'xt::xbroadcast::xbroadcast(CTA &&e, shape_type &&s)']]], + ['xfiltration_5',['xfiltration',['../classxt_1_1xfiltration.html#a70544dbbc899cd02b70dc5c473bffd02',1,'xt::xfiltration']]], + ['xfixed_5fadaptor_6',['xfixed_adaptor',['../classxt_1_1xfixed__adaptor.html#adb3ce51eb417f3407c5b95d271c3f39c',1,'xt::xfixed_adaptor::xfixed_adaptor(const storage_type &data)'],['../classxt_1_1xfixed__adaptor.html#ab8855d521c67f4885638ab9d9108b36b',1,'xt::xfixed_adaptor::xfixed_adaptor(D &&data)'],['../classxt_1_1xfixed__adaptor.html#a4d68ba3b03788fbe1b70a7d6dce4040c',1,'xt::xfixed_adaptor::xfixed_adaptor(storage_type &&data)']]], + ['xfixed_5fcontainer_7',['xfixed_container',['../classxt_1_1xfixed__container.html#a004eaea5e4f5ef36e227b2673c11b4cd',1,'xt::xfixed_container::xfixed_container(const inner_shape_type &shape, layout_type l=L)'],['../classxt_1_1xfixed__container.html#a41af8b86cc7d6df8d5713c29e404d4ab',1,'xt::xfixed_container::xfixed_container(const inner_shape_type &shape, value_type v, layout_type l=L)'],['../classxt_1_1xfixed__container.html#a5b52ede597fcbbe1904d878b01b46877',1,'xt::xfixed_container::xfixed_container(nested_initializer_list_t< value_type, N > t)'],['../classxt_1_1xfixed__container.html#a0ddc275300f31caf95233120272df975',1,'xt::xfixed_container::xfixed_container(const xexpression< E > &e)']]], + ['xfunction_8',['xfunction',['../classxt_1_1xfunction.html#a63fa0bf1c338ba8ff119d97dc08de3b8',1,'xt::xfunction::xfunction(Func &&f, CTA &&... e) noexcept'],['../classxt_1_1xfunction.html#a08a95dc45143b002b300a6634774940d',1,'xt::xfunction::xfunction(xfunction< FA, CTA... > xf) noexcept']]], + ['xfunctor_5fapplier_5fbase_9',['xfunctor_applier_base',['../classxt_1_1xfunctor__applier__base.html#a41aab520408c7c729ae637b19d09be2b',1,'xt::xfunctor_applier_base::xfunctor_applier_base(undecay_expression) noexcept'],['../classxt_1_1xfunctor__applier__base.html#ac3b9ef5e95e61582edaff797f2ec7e1b',1,'xt::xfunctor_applier_base::xfunctor_applier_base(Func &&, E &&) noexcept']]], + ['xgenerator_10',['xgenerator',['../classxt_1_1xgenerator.html#a6f07eda985bc0f0e510a44afa3b8899d',1,'xt::xgenerator']]], + ['xindex_5fview_11',['xindex_view',['../classxt_1_1xindex__view.html#a0306275ff45341e84fe63836010c7ad5',1,'xt::xindex_view']]], + ['xmasked_5fview_12',['xmasked_view',['../classxt_1_1xmasked__view.html#a9c3d8a13f687279e628800050a8d4048',1,'xt::xmasked_view']]], + ['xoptional_5fassembly_13',['xoptional_assembly',['../classxt_1_1xoptional__assembly.html#a13b42b1a2ff43f41688d9e9dfecb70ab',1,'xt::xoptional_assembly::xoptional_assembly()'],['../classxt_1_1xoptional__assembly.html#a251ff352299adb4dd685ae71755c112f',1,'xt::xoptional_assembly::xoptional_assembly(const xexpression< E > &e)'],['../classxt_1_1xoptional__assembly.html#a16611b26c4241fdbbc7e6afcc8a09780',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 5 > t)'],['../classxt_1_1xoptional__assembly.html#ace216a4aee450e4bd52f50b791091d99',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 4 > t)'],['../classxt_1_1xoptional__assembly.html#a61dd51f2bf58adb62310d475253fc5b5',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 3 > t)'],['../classxt_1_1xoptional__assembly.html#ae13345d56e1c0e1b2a21290a66c8aa46',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 2 > t)'],['../classxt_1_1xoptional__assembly.html#a2454d878267c2ac27179ef2ca365d48e',1,'xt::xoptional_assembly::xoptional_assembly(nested_initializer_list_t< value_type, 1 > t)'],['../classxt_1_1xoptional__assembly.html#ae5c0585bcb1ec14efb01b993aa17c9d7',1,'xt::xoptional_assembly::xoptional_assembly(const value_type &value)'],['../classxt_1_1xoptional__assembly.html#aa525cc23b8a082ca1caf3fafcd321c88',1,'xt::xoptional_assembly::xoptional_assembly(VE &&ve)'],['../classxt_1_1xoptional__assembly.html#a3ded488b5944690be387afa5e35165fb',1,'xt::xoptional_assembly::xoptional_assembly(const VE &ve)'],['../classxt_1_1xoptional__assembly.html#a91d71b9f5a1c0df8f7f10568a667149c',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, const strides_type &strides, const value_type &value)'],['../classxt_1_1xoptional__assembly.html#af53e6578e2720b3de87db901d4ef63c0',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xoptional__assembly.html#af86f39ed88264ad627dcc09454b02d3e',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, const value_type &value, layout_type l=base_type::static_layout)'],['../classxt_1_1xoptional__assembly.html#a9148277e3915fdc930d875a7ad4b1156',1,'xt::xoptional_assembly::xoptional_assembly(const shape_type &shape, layout_type l=base_type::static_layout)'],['../classxt_1_1xoptional__assembly.html#a18157a685aad00bd30890b9fe0484628',1,'xt::xoptional_assembly::xoptional_assembly(OVE &&ove, OFE &&ofe)']]], + ['xoptional_5fassembly_5fadaptor_14',['xoptional_assembly_adaptor',['../classxt_1_1xoptional__assembly__adaptor.html#a49ed47cb40d83d823a72f7907f4b4430',1,'xt::xoptional_assembly_adaptor']]], + ['xreducer_15',['xreducer',['../classxt_1_1xreducer.html#ac1a504813c1a2d91e1aa5c871bee7a77',1,'xt::xreducer']]], + ['xrepeat_16',['xrepeat',['../classxt_1_1xrepeat.html#a8597732ef22eb32ab54d780d1410386f',1,'xt::xrepeat']]], + ['xshared_5fexpression_17',['xshared_expression',['../classxt_1_1xshared__expression.html#a0eee9f39b506cc2e83b9b4c6dda150cf',1,'xt::xshared_expression']]], + ['xstrided_5fview_18',['xstrided_view',['../classxt_1_1xstrided__view.html#aeaca42937cad665d96b797421f114cca',1,'xt::xstrided_view']]], + ['xstrided_5fview_5fbase_19',['xstrided_view_base',['../classxt_1_1xstrided__view__base.html#a395bfaa7afcaf17190eaccebd998e1c4',1,'xt::xstrided_view_base']]], + ['xtensor_5fadaptor_20',['xtensor_adaptor',['../classxt_1_1xtensor__adaptor.html#a08d8af6b5afb2cf0fdd0fa05ac254066',1,'xt::xtensor_adaptor::xtensor_adaptor(D &&storage, const shape_type &shape, layout_type l=L)'],['../classxt_1_1xtensor__adaptor.html#adf38d3f009485bbd13e05a33f3e126ed',1,'xt::xtensor_adaptor::xtensor_adaptor(D &&storage, const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xtensor__adaptor.html#ada04f10997a9bf3cb9d41ad0a57a071b',1,'xt::xtensor_adaptor::xtensor_adaptor(const storage_type &storage)'],['../classxt_1_1xtensor__adaptor.html#aecf238db1fe9fda0797db5c10ced651b',1,'xt::xtensor_adaptor::xtensor_adaptor(storage_type &&storage)']]], + ['xtensor_5fcontainer_21',['xtensor_container',['../classxt_1_1xtensor__container.html#aa3a7016797e330568a8b4e5efb6f1c4b',1,'xt::xtensor_container::xtensor_container()'],['../classxt_1_1xtensor__container.html#a5d15ba6d111b6a3aa8403f69d4810c21',1,'xt::xtensor_container::xtensor_container(nested_initializer_list_t< value_type, N > t)'],['../classxt_1_1xtensor__container.html#aed68730c6dae5a8155b2c67140a63368',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, layout_type l=L)'],['../classxt_1_1xtensor__container.html#a56f009f40f5acb09f157345a1a174508',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, const_reference value, layout_type l=L)'],['../classxt_1_1xtensor__container.html#a27c45be9ad2e0da1a8ad0576c756f39e',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, const strides_type &strides)'],['../classxt_1_1xtensor__container.html#ad411469d4cd09d58528f489dd380de9e',1,'xt::xtensor_container::xtensor_container(const shape_type &shape, const strides_type &strides, const_reference value)'],['../classxt_1_1xtensor__container.html#ad82e5654ec5c9f23d5801aa5e84d4ddc',1,'xt::xtensor_container::xtensor_container(storage_type &&storage, inner_shape_type &&shape, inner_strides_type &&strides)'],['../classxt_1_1xtensor__container.html#a76f048f11c76d405e2e93007e74e2c41',1,'xt::xtensor_container::xtensor_container(const xexpression< E > &e)']]], + ['xtensor_5fview_22',['xtensor_view',['../classxt_1_1xtensor__view.html#a3245a15af4f5a46b7315d4f14a1657d8',1,'xt::xtensor_view::xtensor_view(storage_type &&storage)'],['../classxt_1_1xtensor__view.html#ad26a102ac5d777f6d1b3dfad5a0ef1fa',1,'xt::xtensor_view::xtensor_view(const storage_type &storage)'],['../classxt_1_1xtensor__view.html#a70a1388809ad0d8d2869c56f2957fb73',1,'xt::xtensor_view::xtensor_view(D &&storage, const shape_type &shape, layout_type l=L)'],['../classxt_1_1xtensor__view.html#afd854308ee21d8738686c64a14363481',1,'xt::xtensor_view::xtensor_view(D &&storage, const shape_type &shape, const strides_type &strides)']]], + ['xtuple_23',['xtuple',['../namespacext.html#ae0a17e1fea8041f69a66d80928359150',1,'xt']]], + ['xview_24',['xview',['../classxt_1_1xview.html#a05ff5fb7b81610a17123a91729525c5c',1,'xt::xview']]] +]; diff --git a/search/functions_17.js b/search/functions_17.js new file mode 100644 index 000000000..477950168 --- /dev/null +++ b/search/functions_17.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['zeros_0',['zeros',['../namespacext.html#a700dc20edb5a81d66d5f89d350dca46f',1,'xt']]], + ['zeros_5flike_1',['zeros_like',['../namespacext.html#a68f9dd4af039df60663af606046a3b73',1,'xt']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..d8428c98c --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['cast_0',['cast',['../group__casting__operators.html#ga8d57e20151af53f5ffec3afa6f834cf4',1,'xt']]], + ['cbegin_1',['cbegin',['../classxt_1_1xfunctor__applier__base.html#a358932daa1dd93cc97016f99f24b9be6',1,'xt::xfunctor_applier_base::cbegin(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a8ff3057fce404b976998dda117b669b4',1,'xt::xfunctor_applier_base::cbegin() const noexcept'],['../classxt_1_1xcontiguous__iterable.html#aa38da69077754acd8e5daf5f010b8591',1,'xt::xcontiguous_iterable::cbegin()'],['../classxt_1_1xconst__iterable.html#a212ee6280ccfa5814e4f2c16d1880a84',1,'xt::xconst_iterable::cbegin()'],['../classxt_1_1xcontiguous__iterable.html#a68fed899dcdd91ba8ffe1438f329e0fc',1,'xt::xcontiguous_iterable::cbegin()'],['../classxt_1_1xconst__iterable.html#a8e90c4de11331d25fcf27944833280af',1,'xt::xconst_iterable::cbegin()']]], + ['cbrt_2',['cbrt',['../group__pow__functions.html#gad5ff49e786eca533425d6f230c945184',1,'xt']]], + ['ceil_3',['ceil',['../group__nearint__functions.html#ga06d485029e29f092e60af3afabd0d154',1,'xt']]], + ['cend_4',['cend',['../classxt_1_1xfunctor__applier__base.html#a3eb421464069330b8305abdb39b43f24',1,'xt::xfunctor_applier_base::cend()'],['../classxt_1_1xconst__iterable.html#a6b266693e1dfec18e39baf2d3b34c20e',1,'xt::xconst_iterable::cend() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#abc45bc962caf2ab0978a775836c6b3b8',1,'xt::xconst_iterable::cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a2f1e2287962220db88240b3a0e5cf196',1,'xt::xcontiguous_iterable::cend() const noexcept -> select_const_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a93eb3f286ccab925d621ef1b87e6d126',1,'xt::xcontiguous_iterable::cend(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#a8f40de3c5e5d01ed40bab3060d1ad8e9',1,'xt::xfunctor_applier_base::cend()']]], + ['chunked_5farray_5',['chunked_array',['../group__xt__xchunked__array.html#ga2dae3e469de3f3ec7b0d4fc49f82de5c',1,'xt::chunked_array(const xexpression< E > &e, layout_type chunk_memory_layout=::xt::layout_type::row_major)'],['../group__xt__xchunked__array.html#ga7f77d42d689828b2d8e8cdd57c28ee9b',1,'xt::chunked_array(const xexpression< E > &e, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)'],['../group__xt__xchunked__array.html#ga8c408e717c7725211a42114adb4557b2',1,'xt::chunked_array(S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)']]], + ['clip_6',['clip',['../group__basic__functions.html#ga951c830ac7329af2e6de1194821c09c4',1,'xt']]], + ['col_7',['col',['../namespacext.html#a5772db4fd8ebf31bc242dd1c2d2ddd1b',1,'xt']]], + ['compute_5flayout_8',['compute_layout',['../namespacext.html#a27b28c7951a0991e2e8d39422c2b46b2',1,'xt']]], + ['compute_5fstrides_9',['compute_strides',['../group__xt__xstrides.html#ga3b03c8046a44a3bf2d4800c7296ecefd',1,'xt']]], + ['concatenate_10',['concatenate',['../namespacext.html#a28c746e1a420f706892d9aff3ad0dd30',1,'xt']]], + ['conditional_5fcast_11',['conditional_cast',['../namespacext.html#af155a86146879d345b8acaa16d48c748',1,'xt']]], + ['conj_12',['conj',['../group__xt__xcomplex.html#ga77874ddd5efaa90065d692ee4a6049a2',1,'xt']]], + ['cos_13',['cos',['../group__trigo__functions.html#gabf9e140b22bb15dc6add351a7dc06d58',1,'xt']]], + ['cosh_14',['cosh',['../group__hyper__functions.html#ga4073cdc98201789ff723069156b4d34b',1,'xt']]], + ['cov_15',['cov',['../namespacext.html#af462add746658517456f484f2e80f609',1,'xt']]], + ['crbegin_16',['crbegin',['../classxt_1_1xcontiguous__iterable.html#a74bc69cf0cbfcb235ec3ca8fe75b962a',1,'xt::xcontiguous_iterable::crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#ab363ab0f7faf25ed137b432eeaca6f43',1,'xt::xcontiguous_iterable::crbegin() const noexcept -> select_const_reverse_iterator< L >'],['../classxt_1_1xconst__iterable.html#a6fdbad0911ef9a473a18f109eb33a7ba',1,'xt::xconst_iterable::crbegin(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a425b0d85a0ffbb1752c6f45f211c471b',1,'xt::xconst_iterable::crbegin() const noexcept -> const_reverse_layout_iterator< L >'],['../classxt_1_1xfunctor__applier__base.html#a69f77212c23e7a9e20b3774a2e59d3cc',1,'xt::xfunctor_applier_base::crbegin(const S &) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#afb3b6d645d6ef28238b50f032f3477f6',1,'xt::xfunctor_applier_base::crbegin() const noexcept']]], + ['crend_17',['crend',['../classxt_1_1xconst__iterable.html#a851fb3a86aacc069921e8719ec2a21e9',1,'xt::xconst_iterable::crend()'],['../classxt_1_1xcontiguous__iterable.html#a0b849e0972151523dd2bf988fe90c7da',1,'xt::xcontiguous_iterable::crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#aec3659b2356b81494ebfcb5a4bc0482e',1,'xt::xcontiguous_iterable::crend() const noexcept -> select_const_reverse_iterator< L >'],['../classxt_1_1xconst__iterable.html#a804a4b52bdfa60d1855f9081fb11fb13',1,'xt::xconst_iterable::crend()'],['../classxt_1_1xfunctor__applier__base.html#a9424de315b89fd06b19590443bc20629',1,'xt::xfunctor_applier_base::crend(const S &shape) const noexcept -> const_reverse_broadcast_iterator< S, L >'],['../classxt_1_1xfunctor__applier__base.html#ae9c21d7315862c7b30de7f21d5d47bf3',1,'xt::xfunctor_applier_base::crend() const noexcept']]], + ['cube_18',['cube',['../group__pow__functions.html#ga0d98743e330f7ef3474bd706e186ac44',1,'xt']]], + ['cumprod_19',['cumprod',['../group__acc__functions.html#ga17f752dbaca06608f974c3514509fa7b',1,'xt']]], + ['cumsum_20',['cumsum',['../group__acc__functions.html#gaae1630a06b4975a5a759f2215e738123',1,'xt']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 000000000..8b6e299e0 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['data_0',['data',['../classxt_1_1xcontainer.html#a4a86bf768a1595ab704198ed8171b07c',1,'xt::xcontainer::data()'],['../classxt_1_1xstrided__view__base.html#ad19027df5f748eba80386ae9330fca79',1,'xt::xstrided_view_base::data() noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >'],['../classxt_1_1xstrided__view__base.html#a61c10852dc6045824b3ce20e7516a73f',1,'xt::xstrided_view_base::data() const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >'],['../classxt_1_1xview.html#a22a0d9389c703c1e7e1c38f682b272b7',1,'xt::xview::data()'],['../classxt_1_1xstrided__view.html#ad19027df5f748eba80386ae9330fca79',1,'xt::xstrided_view::data() noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, pointer >'],['../classxt_1_1xstrided__view.html#a61c10852dc6045824b3ce20e7516a73f',1,'xt::xstrided_view::data() const noexcept -> std::enable_if_t< detail::provides_data_interface< E, ST >::value, const_pointer >'],['../classxt_1_1xcontainer.html#a71249b300db5d1bbab81c1cf6a5843b2',1,'xt::xcontainer::data() noexcept']]], + ['data_5foffset_1',['data_offset',['../classxt_1_1xcontainer.html#a8a1a7ab7c076ce9b48301c42b825a83c',1,'xt::xcontainer::data_offset()'],['../classxt_1_1xstrided__view__base.html#ab4fb45717672e9ff1681c360d8199ed5',1,'xt::xstrided_view_base::data_offset()'],['../classxt_1_1xview.html#a7108799d49ca9fce6494af0e97a10b29',1,'xt::xview::data_offset()'],['../classxt_1_1xstrided__view.html#ab4fb45717672e9ff1681c360d8199ed5',1,'xt::xstrided_view::data_offset()'],['../group__xt__xstrides.html#ga3bcc575a1a2870d78b96ff674e700ec7',1,'xt::data_offset(const S &strides, Arg arg, Args... args) noexcept']]], + ['deg2rad_2',['deg2rad',['../group__basic__functions.html#ga1bc991dd9cc5f66575ab91f87b140577',1,'xt']]], + ['degrees_3',['degrees',['../group__basic__functions.html#ga4450fb9262604f2ed230e479092e7fdb',1,'xt']]], + ['derived_5fcast_4',['derived_cast',['../classxt_1_1xexpression.html#abf1d99fb093b7bab105ea3d8c4d8a548',1,'xt::xexpression::derived_cast() &&noexcept'],['../classxt_1_1xexpression.html#ab08a20008d390c970283c26f9f882483',1,'xt::xexpression::derived_cast() const &noexcept'],['../classxt_1_1xexpression.html#a96fe8ebe879202c5a053ae5e0067b231',1,'xt::xexpression::derived_cast() &noexcept']]], + ['diag_5',['diag',['../namespacext.html#ad848dae0258c3e5755ff7ee55e7c7b30',1,'xt']]], + ['diagonal_6',['diagonal',['../namespacext.html#a96ad98d837a74211cc0e5f07b85c2414',1,'xt']]], + ['diff_7',['diff',['../group__red__functions.html#gab421eb4d3565597848ec53dad1b0d6c6',1,'xt']]], + ['digitize_8',['digitize',['../namespacext.html#a80fb5a6e58dafe175544508ea913cff0',1,'xt']]], + ['dimension_9',['dimension',['../classxt_1_1xcontainer.html#a2a8d4b0a73c42555c56b87384b251f2d',1,'xt::xcontainer::dimension()'],['../classxt_1_1xoptional__assembly__base.html#a89f917b17d7b6ded98b95ba5f9c52de2',1,'xt::xoptional_assembly_base::dimension()'],['../classxt_1_1xindex__view.html#afeaa3f6f6c150f659935d1a625497203',1,'xt::xindex_view::dimension()'],['../classxt_1_1xfunction.html#a55ade0ce540d29ce39f0ca051946ff96',1,'xt::xfunction::dimension()'],['../classxt_1_1xconst__accessible.html#a4b1a7ad9b1f0863c672782e53eed3042',1,'xt::xconst_accessible::dimension()']]], + ['divides_5fassign_10',['divides_assign',['../classxt_1_1xsemantic__base.html#a8390681df5ceb96cc3fe307bcb6f5878',1,'xt::xsemantic_base']]], + ['drop_11',['drop',['../namespacext.html#ac42340652d19c99dbd62db9ba399f801',1,'xt']]], + ['dump_5fcsv_12',['dump_csv',['../namespacext.html#a809a1475d6c06e6209878b293ca0aa4d',1,'xt']]], + ['dump_5fnpy_13',['dump_npy',['../namespacext.html#abbb704b012b5b4a60523e183342660a8',1,'xt::dump_npy(const std::string &filename, const xexpression< E > &e)'],['../namespacext.html#a6d48f3428b263994fcfb707ca476847e',1,'xt::dump_npy(const xexpression< E > &e)']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..2421fd8d9 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['element_0',['element',['../classxt_1_1xcontainer.html#ac2d91aa6cdb9d2970b5505d55f462b61',1,'xt::xcontainer::element()'],['../classxt_1_1xbroadcast.html#a0c5eeee79d7da9ebbe4bab731e7bdbdf',1,'xt::xbroadcast::element()'],['../classxt_1_1xstrided__view.html#a0410b18c9448ceb36193b2b740d0419a',1,'xt::xstrided_view::element(It first, It last) const -> const_reference'],['../classxt_1_1xstrided__view.html#a76377f2b31c5086bd56c169f39ab8e6b',1,'xt::xstrided_view::element(It first, It last) -> reference'],['../classxt_1_1xstrided__view__base.html#a0410b18c9448ceb36193b2b740d0419a',1,'xt::xstrided_view_base::element(It first, It last) const -> const_reference'],['../classxt_1_1xstrided__view__base.html#a76377f2b31c5086bd56c169f39ab8e6b',1,'xt::xstrided_view_base::element(It first, It last) -> reference'],['../classxt_1_1xrepeat.html#a38462b0a1711572653036bb3f77e4d2a',1,'xt::xrepeat::element()'],['../classxt_1_1xreducer.html#aa6b950db4c421bef297b1b1d76047b23',1,'xt::xreducer::element()'],['../classxt_1_1xoptional__assembly__base.html#afe8cc2e4841489d3f1af56dbab957af3',1,'xt::xoptional_assembly_base::element(It first, It last) const -> const_reference'],['../classxt_1_1xoptional__assembly__base.html#a1878f869c91ab899acc2fc560990538c',1,'xt::xoptional_assembly_base::element(It first, It last) -> reference'],['../classxt_1_1xmasked__view.html#a9ac6b54e4c97bd60b65a6c02d5823380',1,'xt::xmasked_view::element()'],['../classxt_1_1xindex__view.html#a49787050a31b9c40a75f6644c6ee4c10',1,'xt::xindex_view::element(It first, It) const -> const_reference'],['../classxt_1_1xindex__view.html#a4bdd94010df7af626590d532b2febefb',1,'xt::xindex_view::element(It first, It) -> reference'],['../classxt_1_1xgenerator.html#a78b35b4322ef73b541653bc0e009c058',1,'xt::xgenerator::element()'],['../classxt_1_1xfunctor__applier__base.html#a173b3e1e7c31df616b7e978462fece33',1,'xt::xfunctor_applier_base::element(IT first, IT last) const -> const_reference'],['../classxt_1_1xfunctor__applier__base.html#a94f49676b373d866812ee9a128cdc3e8',1,'xt::xfunctor_applier_base::element(IT first, IT last) -> reference'],['../classxt_1_1xfunction.html#a31d1e0136cb9cfd071120e47b10ecaea',1,'xt::xfunction::element()'],['../classxt_1_1xcontainer.html#a9d3b8aa16501359595778305cdb6c3b4',1,'xt::xcontainer::element()'],['../classxt_1_1xmasked__view.html#ae44c90a8ceb326570ea97116ecc5dd2f',1,'xt::xmasked_view::element()']]], + ['ellipsis_1',['ellipsis',['../namespacext.html#a7674e27693c74603e341cbf7beb91e7b',1,'xt']]], + ['empty_2',['empty',['../namespacext.html#af6f56a2111bfe2e7898ddb56dcdedc0e',1,'xt']]], + ['empty_5flike_3',['empty_like',['../namespacext.html#abda9d7634e3a60172e626271a0e50bae',1,'xt']]], + ['end_4',['end',['../classxt_1_1xoptional__assembly__base.html#a8ca771d1dda2e42203cfdaaebfeba601',1,'xt::xoptional_assembly_base::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a74906f6a3242a5a2b001e6a534007589',1,'xt::xoptional_assembly_base::end() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xoptional__assembly__base.html#a9b56f37894a5055ffe49a46c857b7111',1,'xt::xoptional_assembly_base::end(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xoptional__assembly__base.html#a76c73882716f9e9915dab847639db2da',1,'xt::xoptional_assembly_base::end() noexcept -> layout_iterator< L >'],['../classxt_1_1xiterable.html#a8ca771d1dda2e42203cfdaaebfeba601',1,'xt::xiterable::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a74906f6a3242a5a2b001e6a534007589',1,'xt::xiterable::end() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a11d0a0ce2bbaef8f6dda78febe364fec',1,'xt::xcontiguous_iterable::end()'],['../classxt_1_1xfunctor__applier__base.html#a51190ea53109af3cdceebf66f8d10cbc',1,'xt::xfunctor_applier_base::end()'],['../classxt_1_1xcontiguous__iterable.html#ad75c7cb209c82c2d3ea6fa9e696f329e',1,'xt::xcontiguous_iterable::end()'],['../classxt_1_1xfunctor__applier__base.html#a1ede7d79cffaf8f76e8b6895a7877759',1,'xt::xfunctor_applier_base::end() noexcept'],['../classxt_1_1xfunctor__applier__base.html#ab31ad55714884efed4c525ae1018339e',1,'xt::xfunctor_applier_base::end() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#aba04a5d73546572558aa9bbb6e4eca36',1,'xt::xfunctor_applier_base::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xconst__iterable.html#a74906f6a3242a5a2b001e6a534007589',1,'xt::xconst_iterable::end() const noexcept -> const_layout_iterator< L >'],['../classxt_1_1xconst__iterable.html#a8ca771d1dda2e42203cfdaaebfeba601',1,'xt::xconst_iterable::end(const S &shape) const noexcept -> const_broadcast_iterator< S, L >'],['../classxt_1_1xiterable.html#a76c73882716f9e9915dab847639db2da',1,'xt::xiterable::end() noexcept -> layout_iterator< L >'],['../classxt_1_1xiterable.html#a9b56f37894a5055ffe49a46c857b7111',1,'xt::xiterable::end(const S &shape) noexcept -> broadcast_iterator< S, L >'],['../classxt_1_1xcontiguous__iterable.html#a18eb1a595021e73f682b8443ea50f1ec',1,'xt::xcontiguous_iterable::end() noexcept -> select_iterator< L >'],['../classxt_1_1xcontiguous__iterable.html#a8e0a8bdffdcfd3c5bc80f358a6931f9f',1,'xt::xcontiguous_iterable::end() const noexcept -> select_const_iterator< L >']]], + ['equal_5',['equal',['../classxt_1_1xaxis__iterator.html#ab4e285d56b758b9c9f95d4c63f39093c',1,'xt::xaxis_iterator::equal()'],['../classxt_1_1xaxis__slice__iterator.html#abb5ffe172da06056aa31e3f18b821b88',1,'xt::xaxis_slice_iterator::equal()'],['../group__comparison__operators.html#ga4c778acba0a9407a9093505fad0506d2',1,'xt::equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::equal_to, E1, E2 >']]], + ['erf_6',['erf',['../group__err__functions.html#ga996f61e9186110b7daa859da0a8d2755',1,'xt']]], + ['erfc_7',['erfc',['../group__err__functions.html#ga6af9a81a9ca2bab66e744167c9683920',1,'xt']]], + ['eval_8',['eval',['../group__xt__xeval.html#ga60f1ff0460adb785f2d4055d0863551b',1,'xt']]], + ['exp_9',['exp',['../group__exp__functions.html#gae0c736d69056d124184aada09007e70b',1,'xt']]], + ['exp2_10',['exp2',['../group__exp__functions.html#ga212886f718828e83aaf07cdabf60aeab',1,'xt']]], + ['expand_5fdims_11',['expand_dims',['../group__xt__xmanipulation.html#gabe8cb55041a20cb995a15c599b7a2bc2',1,'xt']]], + ['expm1_12',['expm1',['../group__exp__functions.html#ga1646ca23b54f4a72d4bbe46f1182921c',1,'xt']]], + ['expression_13',['expression',['../classxt_1_1xview.html#a5ecd9f1273f10421fdd4c5d64c262585',1,'xt::xview::expression()'],['../classxt_1_1xstrided__view.html#a94e4948a88657428eb50b1a92c4c2a43',1,'xt::xstrided_view::expression() const noexcept'],['../classxt_1_1xstrided__view.html#af4ec4a5c434d543b6c664f4572c849d4',1,'xt::xstrided_view::expression() noexcept'],['../classxt_1_1xdynamic__view.html#a94e4948a88657428eb50b1a92c4c2a43',1,'xt::xdynamic_view::expression() const noexcept'],['../classxt_1_1xdynamic__view.html#af4ec4a5c434d543b6c664f4572c849d4',1,'xt::xdynamic_view::expression() noexcept'],['../classxt_1_1xview.html#a9c5da820e15f25932c740862e0f3150f',1,'xt::xview::expression()'],['../classxt_1_1xstrided__view__base.html#a94e4948a88657428eb50b1a92c4c2a43',1,'xt::xstrided_view_base::expression() const noexcept'],['../classxt_1_1xstrided__view__base.html#af4ec4a5c434d543b6c664f4572c849d4',1,'xt::xstrided_view_base::expression() noexcept'],['../classxt_1_1xrepeat.html#a54a644b7c615e8f1bca91c0f4ac5a714',1,'xt::xrepeat::expression()'],['../classxt_1_1xreducer.html#a35efc1a78c0ad4a52cef8dca2a472a83',1,'xt::xreducer::expression()'],['../classxt_1_1xindex__view.html#abad555c9ed25f834763760c88a236325',1,'xt::xindex_view::expression() const noexcept'],['../classxt_1_1xindex__view.html#ab19a3dd1a9b7f67c557ee57bc189d319',1,'xt::xindex_view::expression() noexcept'],['../classxt_1_1xfunctor__applier__base.html#a62a9deb497e7420aed40dcd2bcac02bc',1,'xt::xfunctor_applier_base::expression() const noexcept'],['../classxt_1_1xfunctor__applier__base.html#a5c676f9bf0dcbba9c63d589d2a417abd',1,'xt::xfunctor_applier_base::expression() noexcept'],['../classxt_1_1xbroadcast.html#a11fafd46c5300907473db9afddfb5969',1,'xt::xbroadcast::expression()']]], + ['eye_14',['eye',['../namespacext.html#a3702c94500428b6c0c24a493ea020606',1,'xt::eye(const std::vector< std::size_t > &shape, int k=0)'],['../namespacext.html#af1633ad856dcd79570c229d95b09cf19',1,'xt::eye(std::size_t n, int k=0)']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..1b4009183 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['fabs_0',['fabs',['../group__basic__functions.html#ga6548f786920ac988f0e655576b3a3c82',1,'xt']]], + ['fdim_1',['fdim',['../group__basic__functions.html#gaa68f33844e1bb457b87880b7433506d3',1,'xt']]], + ['fill_2',['fill',['../classxt_1_1xindex__view.html#aeecb2ec9572eac54def9d4f9934a86fd',1,'xt::xindex_view::fill()'],['../classxt_1_1xmasked__view.html#a4c949ee680c72512a1d9f02b60536428',1,'xt::xmasked_view::fill()'],['../classxt_1_1xoptional__assembly__base.html#a6b2d66863b5c7e149d54f75d3911d34d',1,'xt::xoptional_assembly_base::fill()'],['../classxt_1_1xstrided__view.html#a2e8596cc0e323e5d8e884c5f88b00b8b',1,'xt::xstrided_view::fill()'],['../classxt_1_1xview.html#a76141e6f7f637ae7e070d860a08fc678',1,'xt::xview::fill()'],['../classxt_1_1xcontainer.html#af6898b9f125926922986af040eb90240',1,'xt::xcontainer::fill()']]], + ['filter_3',['filter',['../namespacext.html#ae36e1cf727c1a3ea6c7889f149c0737b',1,'xt']]], + ['filtration_4',['filtration',['../namespacext.html#a588bc1e3b2c1f7c9b8238dddaf05a9df',1,'xt']]], + ['flat_5',['flat',['../classxt_1_1xoptional__assembly__base.html#a2ab81721e7b9e8986206742c4baddf71',1,'xt::xoptional_assembly_base::flat()'],['../classxt_1_1xcontainer.html#a416ecf1f18ce38fae7f93d98d0c238e6',1,'xt::xcontainer::flat(size_type i)'],['../classxt_1_1xcontainer.html#a58f5504c365d5e9c0ff9783c60e586af',1,'xt::xcontainer::flat(size_type i) const'],['../classxt_1_1xfunction.html#a8313f6caaa7e9229c10e3d221a8ab77b',1,'xt::xfunction::flat()'],['../classxt_1_1xoptional__assembly__base.html#abdea1fd8c021f170b2b34fbfae36f2db',1,'xt::xoptional_assembly_base::flat()']]], + ['flatnonzero_6',['flatnonzero',['../namespacext.html#afe8bacc1aed492dc936c80bc58730463',1,'xt']]], + ['flatten_7',['flatten',['../group__xt__xmanipulation.html#ga10a975d3b718bfaf8ecf1db8072a0a0c',1,'xt']]], + ['flatten_5findices_8',['flatten_indices',['../namespacext.html#a5c1acf7068270be8ab0ef904dd0f5a54',1,'xt']]], + ['flip_9',['flip',['../group__xt__xmanipulation.html#gad4b24c51356470db0a22b0c6c7d7611d',1,'xt::flip(E &&e)'],['../group__xt__xmanipulation.html#ga4bf31ad3a5950024a3825118f9f6a4e7',1,'xt::flip(E &&e, std::size_t axis)']]], + ['floor_10',['floor',['../group__nearint__functions.html#ga651ff45bf2ffda746e6602773925ca5c',1,'xt']]], + ['fma_11',['fma',['../group__basic__functions.html#ga0f88cbfba7ddc6b5e8a1c74e422a0409',1,'xt']]], + ['fmax_12',['fmax',['../group__basic__functions.html#ga782cdb54181f69e99679e1045cb53323',1,'xt']]], + ['fmin_13',['fmin',['../group__basic__functions.html#gab8eb77690d6d7b651f61a961b0b4e472',1,'xt']]], + ['fmod_14',['fmod',['../group__basic__functions.html#ga51fa6991b9bc8878a763212346d6449b',1,'xt']]], + ['from_5findices_15',['from_indices',['../namespacext.html#ade2d67c70b0ec6af8294f4b7f201a722',1,'xt']]], + ['from_5fjson_16',['from_json',['../namespacext.html#a3d553d1a9a0e27ad8c9054389c1e2c59',1,'xt']]], + ['from_5fshape_17',['from_shape',['../classxt_1_1xoptional__assembly.html#a04719a5f78f5bba3faa0f9a8d6aa393d',1,'xt::xoptional_assembly::from_shape()'],['../classxt_1_1xarray__container.html#ab23fb8ed1e93061e427ef9da391336a0',1,'xt::xarray_container::from_shape()']]], + ['front_18',['front',['../classxt_1_1xfunctor__applier__base.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xfunctor_applier_base::front()'],['../classxt_1_1xscalar.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xscalar::front() const'],['../classxt_1_1xscalar.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xscalar::front()'],['../classxt_1_1xmasked__view.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xmasked_view::front() const'],['../classxt_1_1xmasked__view.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xmasked_view::front()'],['../classxt_1_1xfunctor__applier__base.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xfunctor_applier_base::front()'],['../classxt_1_1xfunction.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xfunction::front()'],['../classxt_1_1xcontainer.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xcontainer::front() const'],['../classxt_1_1xcontainer.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xcontainer::front()'],['../classxt_1_1xaccessible.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xaccessible::front()'],['../classxt_1_1xoptional__assembly__base.html#aacfa0f794bd3a92bf3ad57833861f73e',1,'xt::xoptional_assembly_base::front() const'],['../classxt_1_1xoptional__assembly__base.html#a0e191af3d00801e0018161ab739fc6d2',1,'xt::xoptional_assembly_base::front()'],['../classxt_1_1xaccessible.html#ad36ac2c194e7e6f470548dad89e88ca2',1,'xt::xaccessible::front()'],['../classxt_1_1xconst__accessible.html#a06f3bb2ce9e0c3081ef0ce0ae40d1fe8',1,'xt::xconst_accessible::front()']]], + ['full_5flike_19',['full_like',['../namespacext.html#a682f65e5eb55b03cbef5fbd25bbdc349',1,'xt']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..0567fd449 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['greater_0',['greater',['../group__comparison__operators.html#ga7c7efdc8246d1ae40ab7f6a8cffe0958',1,'xt']]], + ['greater_5fequal_1',['greater_equal',['../group__comparison__operators.html#ga68a359635b6a5d0940f97c7586a61ea3',1,'xt']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 000000000..3606999f1 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['has_5flinear_5fassign_0',['has_linear_assign',['../classxt_1_1xcontainer.html#a5720f32fcd8bc068a5489eddcf7bd8b1',1,'xt::xcontainer::has_linear_assign()'],['../classxt_1_1xfunction.html#a7007affb74eb4e8e6dfbba267f6de5ba',1,'xt::xfunction::has_linear_assign()'],['../classxt_1_1xfunctor__applier__base.html#a9ded44a42136f6472c91f0d60462d7a5',1,'xt::xfunctor_applier_base::has_linear_assign()'],['../classxt_1_1xgenerator.html#ab1a2913449b319eede92915d0b410c0d',1,'xt::xgenerator::has_linear_assign()'],['../classxt_1_1xindex__view.html#a436dfb313bdf3ce42a16cfa2a5c9f98f',1,'xt::xindex_view::has_linear_assign()'],['../classxt_1_1xoptional__assembly__base.html#a7e2c9d6439909805db95ebe75339fc06',1,'xt::xoptional_assembly_base::has_linear_assign()'],['../classxt_1_1xreducer.html#a6dc809c4eefc124d5bfb4d579afea715',1,'xt::xreducer::has_linear_assign()'],['../classxt_1_1xrepeat.html#a1cf9569d72c1fb3af6e2e29252b9f03b',1,'xt::xrepeat::has_linear_assign()'],['../classxt_1_1xstrided__view__base.html#a5264e47f30486f83a313b654d3dd7199',1,'xt::xstrided_view_base::has_linear_assign()'],['../classxt_1_1xview.html#a1249c703f1c218ce7998627aa91c10a6',1,'xt::xview::has_linear_assign()'],['../classxt_1_1xstrided__view.html#a5264e47f30486f83a313b654d3dd7199',1,'xt::xstrided_view::has_linear_assign()'],['../classxt_1_1xbroadcast.html#afa95389819f8e9168213041757730903',1,'xt::xbroadcast::has_linear_assign()']]], + ['has_5fshape_1',['has_shape',['../group__xt__xshape.html#ga56d28aa1be818adaecee7803249dad7d',1,'xt::has_shape(const E &e, std::initializer_list< S > shape) noexcept'],['../namespacext.html#a4453a49484a5833cbf48e51eff2ed3df',1,'xt::has_shape(const E &e, const S &shape)']]], + ['has_5fvalue_2',['has_value',['../classxt_1_1xoptional__assembly__base.html#a4501b171b337744f6c013a9a46c6414b',1,'xt::xoptional_assembly_base::has_value() const noexcept'],['../classxt_1_1xoptional__assembly__base.html#af274b99476f869609568a3e09fcf3c55',1,'xt::xoptional_assembly_base::has_value() noexcept']]], + ['histogram_3',['histogram',['../namespacext.html#a95e9ea74b2e3f62bb682798bd5d7414d',1,'xt::histogram(E1 &&data, E2 &&bin_edges, E3 &&weights, bool density=false)'],['../namespacext.html#a0a5ba67f2a11ee24ccf629105d12e407',1,'xt::histogram(E1 &&data, E2 &&bin_edges, bool density=false)'],['../namespacext.html#ad8379adac71c1af9b9bc50f835d9536f',1,'xt::histogram(E1 &&data, std::size_t bins=10, bool density=false)'],['../namespacext.html#a60449f18cbf62c0a104cf72e53f7948d',1,'xt::histogram(E1 &&data, std::size_t bins, E2 left, E2 right, bool density=false)'],['../namespacext.html#a8545490885a4a8466344d954bd5326c1',1,'xt::histogram(E1 &&data, std::size_t bins, E2 &&weights, bool density=false)'],['../namespacext.html#aaadf08c80728a3d2ace5739f3350f908',1,'xt::histogram(E1 &&data, std::size_t bins, E2 &&weights, E3 left, E3 right, bool density=false)']]], + ['histogram_5fbin_5fedges_4',['histogram_bin_edges',['../namespacext.html#a53ca89b6c48fc35c9a293c2d81f66288',1,'xt::histogram_bin_edges(E1 &&data, E2 &&weights, E3 left, E3 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)'],['../namespacext.html#aa3d16282168b4675fdc93c5563eb5324',1,'xt::histogram_bin_edges(E1 &&data, E2 &&weights, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)'],['../namespacext.html#a49105a6754699f6ab1073e9868782ec8',1,'xt::histogram_bin_edges(E1 &&data, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)'],['../namespacext.html#a5abbd094554988573b2c3cce9e521aab',1,'xt::histogram_bin_edges(E1 &&data, E2 left, E2 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)']]], + ['hsplit_5',['hsplit',['../group__xt__xmanipulation.html#gaf342a194380b6c7bbc7f2c89f4e88317',1,'xt']]], + ['hstack_6',['hstack',['../namespacext.html#aacc647d8af519da1d2126ec96a97849f',1,'xt']]], + ['hypot_7',['hypot',['../group__pow__functions.html#ga9b55bcc865f0dd82fd679e01c3838526',1,'xt']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..0198c082f --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['imag_0',['imag',['../group__xt__xcomplex.html#ga155e369dcf03bd465609d279b82f6da8',1,'xt']]], + ['in1d_1',['in1d',['../group__logical__operators.html#gab1bbf85dbe7bc76561321466d657bed4',1,'xt::in1d(E &&element, std::initializer_list< T > test_elements) noexcept'],['../group__logical__operators.html#ga3aab6400780394dfb5d0d938c19f1f63',1,'xt::in1d(E &&element, F &&test_elements) noexcept'],['../group__logical__operators.html#ga835cd37cf9a3142a7836509b4f082a64',1,'xt::in1d(E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept']]], + ['in_5fbounds_2',['in_bounds',['../classxt_1_1xoptional__assembly__base.html#a109b7cd1df5661aaacc763e2c914795d',1,'xt::xoptional_assembly_base::in_bounds()'],['../classxt_1_1xfunction.html#ace939a65a328afe7ef9241d4cc84b881',1,'xt::xfunction::in_bounds()'],['../namespacext.html#a42f9ded8fbe013b13c186ae66474912d',1,'xt::in_bounds()'],['../classxt_1_1xconst__accessible.html#ace939a65a328afe7ef9241d4cc84b881',1,'xt::xconst_accessible::in_bounds()']]], + ['index_5fview_3',['index_view',['../namespacext.html#abb28cb642ab427195ca6120d59f34f76',1,'xt']]], + ['interp_4',['interp',['../group__basic__functions.html#ga47e1576710edcbb14d2ccf4df7d62ec3',1,'xt::interp(const E1 &x, const E2 &xp, const E3 &fp, T left, T right)'],['../group__basic__functions.html#gaa909fc5959dbb290c47c9698d5076ed3',1,'xt::interp(const E1 &x, const E2 &xp, const E3 &fp)']]], + ['isclose_5',['isclose',['../group__classif__functions.html#ga94330518c2d0f78691dc8bb4b27eb72a',1,'xt']]], + ['isfinite_6',['isfinite',['../group__classif__functions.html#ga177a09c77ac16a253588403fe7cbeaec',1,'xt']]], + ['isin_7',['isin',['../group__logical__operators.html#gac71ec22119ac398c4c737d48197e5399',1,'xt::isin(E &&element, std::initializer_list< T > test_elements) noexcept'],['../group__logical__operators.html#ga84c1d8a7eaaa5d9f7e0484b9dfc0c646',1,'xt::isin(E &&element, F &&test_elements) noexcept'],['../group__logical__operators.html#gaaef46d45350e3699429eff9ca45755f7',1,'xt::isin(E &&element, I &&test_elements_begin, I &&test_elements_end) noexcept']]], + ['isinf_8',['isinf',['../group__classif__functions.html#ga94db88dbac47fd2e3cce71c568332554',1,'xt']]], + ['isnan_9',['isnan',['../group__classif__functions.html#ga41ec7bcedb794bccf3535bac9c3142ab',1,'xt']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 000000000..eac04dc78 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keep_0',['keep',['../namespacext.html#aa6a85c9e08914989d4e79bc78da35ab7',1,'xt']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..c7854a534 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['layout_0',['layout',['../classxt_1_1xstrided__container.html#a475028ed0b0719aebc55afe8fc00728e',1,'xt::xstrided_container::layout()'],['../classxt_1_1xfunction.html#a40bd918815f66f76ad0f05d3e33fbdbb',1,'xt::xfunction::layout()'],['../classxt_1_1xfunctor__applier__base.html#a41a690f43f808ba326e0bd3e4ab19f95',1,'xt::xfunctor_applier_base::layout()'],['../classxt_1_1xmasked__view.html#a7f160d16d17eea921739b9ff1457c374',1,'xt::xmasked_view::layout()'],['../classxt_1_1xoptional__assembly__base.html#a894c8a27844c4543906eb44fb33f579e',1,'xt::xoptional_assembly_base::layout()'],['../classxt_1_1xreducer.html#aeee3a89a9dd452a00cfd55cbbfd2aa17',1,'xt::xreducer::layout()'],['../classxt_1_1xrepeat.html#a44b37d9a8b603737eec64e57ce108ad0',1,'xt::xrepeat::layout()'],['../classxt_1_1xstrided__view__base.html#a10da93fc02c2c53dde8d9f171ce053a6',1,'xt::xstrided_view_base::layout()'],['../classxt_1_1xview.html#aface2a61c07630c793d71241d13de29d',1,'xt::xview::layout()'],['../classxt_1_1xdynamic__view.html#a10da93fc02c2c53dde8d9f171ce053a6',1,'xt::xdynamic_view::layout()'],['../classxt_1_1xstrided__view.html#a10da93fc02c2c53dde8d9f171ce053a6',1,'xt::xstrided_view::layout()'],['../classxt_1_1xbroadcast.html#aca1bb5d073d6fbbfec6e82cbc456cadd',1,'xt::xbroadcast::layout()']]], + ['left_5fshift_1',['left_shift',['../group__bitwise__operators.html#ga2cd49affcc3745f02fbb43f1bed16ed1',1,'xt']]], + ['less_2',['less',['../group__comparison__operators.html#ga2c830ecb583258f639e710642dbf0d7c',1,'xt']]], + ['less_5fequal_3',['less_equal',['../group__comparison__operators.html#ga9e84bf652cf6e810f974a8bcb51f1511',1,'xt']]], + ['lgamma_4',['lgamma',['../group__err__functions.html#ga5216029cd6e56b81f5145041540d043e',1,'xt']]], + ['linspace_5',['linspace',['../namespacext.html#a84b4f2192981c30e7ee35fba2b164cb2',1,'xt']]], + ['load_5fcsv_6',['load_csv',['../namespacext.html#a1a7ff9a44466a0de5525ac507db04e6a',1,'xt']]], + ['load_5fnpy_7',['load_npy',['../namespacext.html#a09f40ac64487910bfee944c044c9739c',1,'xt::load_npy(std::istream &stream)'],['../namespacext.html#a2466a03b0fed69ae73a2e01490af1fec',1,'xt::load_npy(const std::string &filename)']]], + ['log_8',['log',['../group__exp__functions.html#gaaeb73f780e08001206f1f9ed9db161e1',1,'xt']]], + ['log10_9',['log10',['../group__exp__functions.html#gae6585ff00a0cf0fdcdf659639e8d1ca0',1,'xt']]], + ['log1p_10',['log1p',['../group__exp__functions.html#ga08b8fa80ab57f38bb87e8c01b943d7f7',1,'xt']]], + ['log2_11',['log2',['../group__exp__functions.html#gae08fcbd5914db4f5b2649f5333375d95',1,'xt']]], + ['logspace_12',['logspace',['../namespacext.html#ae448d7eb5de30ef12ca38ca7d6d15356',1,'xt']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..bd2cbf254 --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['make_5flambda_5fxfunction_0',['make_lambda_xfunction',['../namespacext.html#a259a5c38335a33c4a6f8aff517494efb',1,'xt']]], + ['make_5fxshared_1',['make_xshared',['../namespacext.html#ab3cc0ff08a76f5d91bcb294a06f8c784',1,'xt']]], + ['maximum_2',['maximum',['../group__basic__functions.html#ga72354e9ca3d4446608c32d77d78fc721',1,'xt']]], + ['mean_3',['mean',['../group__red__functions.html#gad0919b7cd9e5d8907363a2a146c1ec09',1,'xt']]], + ['median_4',['median',['../group__xt__xsort.html#gae6a650f8da9d0066e26ecda36ee293e4',1,'xt']]], + ['meshgrid_5',['meshgrid',['../namespacext.html#a513e9f91fb23575e3e35eff04c628e19',1,'xt']]], + ['minimum_6',['minimum',['../group__basic__functions.html#ga6ba20f491bf0a014df5a219461ac8c98',1,'xt']]], + ['minmax_7',['minmax',['../group__red__functions.html#gab752be31d54ec7e45daef9a5d3868030',1,'xt']]], + ['minus_5fassign_8',['minus_assign',['../classxt_1_1xsemantic__base.html#a9ae9f40db494b08455a84b3ba24e87e2',1,'xt::xsemantic_base']]], + ['modulus_5fassign_9',['modulus_assign',['../classxt_1_1xsemantic__base.html#a30eeb2e83b810139f5111c161055e041',1,'xt::xsemantic_base']]], + ['moveaxis_10',['moveaxis',['../group__xt__xmanipulation.html#ga2d8bcbb846f2efae57cf6fb4aa24625a',1,'xt']]], + ['multiplies_5fassign_11',['multiplies_assign',['../classxt_1_1xsemantic__base.html#aafe434601607910fc1d8e95dde649bff',1,'xt::xsemantic_base']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..26efb6150 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['nan_5fto_5fnum_0',['nan_to_num',['../group__nan__functions.html#gae82e0b56454b586ec1ffbf57d6d2122f',1,'xt']]], + ['nancumprod_1',['nancumprod',['../group__nan__functions.html#ga4fb43a2f434821dfec8464e84ad05de7',1,'xt']]], + ['nancumsum_2',['nancumsum',['../group__nan__functions.html#ga48eab6816103340e288db50e05f00e60',1,'xt']]], + ['nanmax_3',['nanmax',['../group__nan__functions.html#ga0e300ce1d00beec93e45d7aa0e308ceb',1,'xt']]], + ['nanmean_4',['nanmean',['../group__nan__functions.html#ga5ff43d5bf500e85b384c2c08d2ababe9',1,'xt']]], + ['nanmin_5',['nanmin',['../group__nan__functions.html#gaaade983a5b6b9406608d54f3ba37a264',1,'xt']]], + ['nanprod_6',['nanprod',['../group__nan__functions.html#gad63669d7342cc68dae7b15f3c49ca1c2',1,'xt']]], + ['nanstd_7',['nanstd',['../group__nan__functions.html#ga21421ea090897548b9199c1fdb3049be',1,'xt']]], + ['nansum_8',['nansum',['../group__nan__functions.html#gadbfe228ebc452fabfdbf4067274a471a',1,'xt']]], + ['nanvar_9',['nanvar',['../group__nan__functions.html#ga3c3fdce46c4143d595e11db1646f7d89',1,'xt']]], + ['nearbyint_10',['nearbyint',['../group__nearint__functions.html#ga297d1cfd2029ec779f3b2caf20cae56f',1,'xt']]], + ['newaxis_11',['newaxis',['../namespacext.html#a534914903c805a597a5fac60e60e7c43',1,'xt']]], + ['nonzero_12',['nonzero',['../group__logical__operators.html#ga9f570271ba6f20a0d6a5880fa4ae83cb',1,'xt']]], + ['norm_13',['norm',['../group__xt__xcomplex.html#gad3afef5ff535998e5dd0d95a979c54bf',1,'xt']]], + ['norm_5finduced_5fl1_14',['norm_induced_l1',['../group__red__functions.html#ga6756e0125ea6eaf41da4d72c863222ad',1,'xt']]], + ['norm_5finduced_5flinf_15',['norm_induced_linf',['../group__red__functions.html#ga32553e96de228c6a760ea1e7eac51dbd',1,'xt']]], + ['norm_5fl0_16',['norm_l0',['../group__red__functions.html#gad29e1eba5e05138bd5db7bfc577215f1',1,'xt']]], + ['norm_5fl1_17',['norm_l1',['../group__red__functions.html#ga75c1f16a4c45c0ded05f6a50f8245385',1,'xt']]], + ['norm_5fl2_18',['norm_l2',['../group__red__functions.html#ga612264ac7b3ed369ebe6da569e2bf7f5',1,'xt::norm_l2(E &&e, EVS es=EVS()) noexcept'],['../group__red__functions.html#gad8d838a048615ed661350fcd7af66d06',1,'xt::norm_l2(E &&e, X &&axes, EVS es=EVS()) noexcept']]], + ['norm_5flinf_19',['norm_linf',['../group__red__functions.html#gad3987362169c6b7f82dc4acaa012c65f',1,'xt']]], + ['norm_5flp_20',['norm_lp',['../group__red__functions.html#ga4f5622197f95e83dafec8394265fd750',1,'xt']]], + ['norm_5flp_5fto_5fp_21',['norm_lp_to_p',['../group__red__functions.html#gaa1062bcc8bc659e9a09a5816626d5575',1,'xt']]], + ['norm_5fsq_22',['norm_sq',['../group__red__functions.html#ga243ff01254cf5c1bcfe3ef6b6b67331d',1,'xt']]], + ['normalize_5fperiodic_23',['normalize_periodic',['../group__xt__xstrides.html#gafa51177b0954ec061327dab5d8055ddb',1,'xt']]], + ['not_5fequal_24',['not_equal',['../group__comparison__operators.html#ga014ea335af4e1334f9d95ca6f9b9f6ce',1,'xt']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..d19c5d780 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['ones_0',['ones',['../namespacext.html#a498ae15885758184e0ee9def889b6bfb',1,'xt']]], + ['ones_5flike_1',['ones_like',['../namespacext.html#a40664e859ef008b427ea6d8a013ebb96',1,'xt']]], + ['operator_21_2',['operator!',['../group__logical__operators.html#ga669c5968e594e618cd199674074c32e4',1,'xt']]], + ['operator_21_3d_3',['operator!=',['../namespacext.html#aafb4918c6aea49e7968e4ed024a70a99',1,'xt::operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)'],['../namespacext.html#a1e99b6c54f3a5fca29006d1b114e356d',1,'xt::operator!=(const xaxis_slice_iterator< CT > &lhs, const xaxis_slice_iterator< CT > &rhs)'],['../group__comparison__operators.html#gaae699c5c8cda32f45372da2daee9a9b4',1,'xt::operator!=(const xexpression< E1 > &e1, const xexpression< E2 > &e2)']]], + ['operator_25_4',['operator%',['../group__arithmetic__operators.html#gaa3c78e8ff8a284881563ccbdd64bf145',1,'xt']]], + ['operator_25_3d_5',['operator%=',['../classxt_1_1xsemantic__base.html#a097cecfc7ed32171204a465c057b21aa',1,'xt::xsemantic_base::operator%=()'],['../classxt_1_1xfiltration.html#a75cb70a24a3740144a49ca60edfa6b65',1,'xt::xfiltration::operator%=()'],['../classxt_1_1xsemantic__base.html#afc0cf14e98f80e1a266aed5ab59d3a26',1,'xt::xsemantic_base::operator%=()']]], + ['operator_26_6',['operator&',['../group__bitwise__operators.html#ga0084d8f6f0f513d35a35e79f7fffc2fb',1,'xt']]], + ['operator_26_26_7',['operator&&',['../group__logical__operators.html#ga95f7645635520ba70e7d0d9b0e989205',1,'xt']]], + ['operator_26_3d_8',['operator&=',['../classxt_1_1xsemantic__base.html#aa64e63246393baa97cda0409dfe880f9',1,'xt::xsemantic_base::operator&=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a9e53cf500ff97971980632a01242e40f',1,'xt::xsemantic_base::operator&=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operator_28_29_9',['operator()',['../classxt_1_1xfunction.html#af161015b6c0ce2dc7654f26b6e1a16c2',1,'xt::xfunction::operator()()'],['../classxt_1_1xindex__view.html#aab9b1fd3d2f19db29b52cd9cad772a2d',1,'xt::xindex_view::operator()(size_type idx=size_type(0)) const'],['../classxt_1_1xindex__view.html#ab0eefdf0f3dedf19a78763643718e353',1,'xt::xindex_view::operator()(size_type idx=size_type(0))'],['../classxt_1_1xcontainer.html#aeee2e07bb1f3e66193e5ef3432b4011a',1,'xt::xcontainer::operator()()'],['../classxt_1_1xbroadcast.html#afca42261ce09c53e109862b63ea8bf87',1,'xt::xbroadcast::operator()()'],['../classxt_1_1xcontainer.html#a6bcf87fdd442aa26095837b359d9b4e8',1,'xt::xcontainer::operator()()'],['../classxt_1_1xview.html#a9bfc52bb7a7844eb976a096875d6a5a6',1,'xt::xview::operator()(Args... args) const -> const_reference'],['../classxt_1_1xview.html#a16ffe8d0c8b973c2fa28e75c2f353437',1,'xt::xview::operator()(Args... args) -> reference'],['../classxt_1_1xstrided__view__base.html#a567f05613c6dfb65b68289e994d09183',1,'xt::xstrided_view_base::operator()()'],['../classxt_1_1xfunctor__applier__base.html#a5b63f2bdd4620e52cc453fafd78831d3',1,'xt::xfunctor_applier_base::operator()(Args... args) -> reference'],['../classxt_1_1xfunctor__applier__base.html#a63939aecf0c7f315aab8119a2790aa69',1,'xt::xfunctor_applier_base::operator()(Args... args) const -> const_reference'],['../classxt_1_1xgenerator.html#a5d2e22a7df365f2d238aef28715a46f8',1,'xt::xgenerator::operator()()'],['../classxt_1_1xmasked__view.html#a871b0392cccaac8fb981273bb5008186',1,'xt::xmasked_view::operator()(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a7cd2236961bba48f19933c8450052790',1,'xt::xmasked_view::operator()(Args... args) const -> const_reference'],['../classxt_1_1xrepeat.html#aa896d82b715c106f2424266feabfe7d9',1,'xt::xrepeat::operator()()'],['../classxt_1_1xoptional__assembly__base.html#aea309f566b610b826a2609bb32b63d25',1,'xt::xoptional_assembly_base::operator()(Args... args) -> reference'],['../classxt_1_1xoptional__assembly__base.html#ab5abb6c1e1c8c57c1662421c5f679b5a',1,'xt::xoptional_assembly_base::operator()(Args... args) const -> const_reference'],['../classxt_1_1xstrided__view__base.html#a986bbe34c4e1ffb0948b9d9a2238c7ce',1,'xt::xstrided_view_base::operator()()'],['../classxt_1_1xreducer.html#a979a86f103f655328d35e67fcc5bca7b',1,'xt::xreducer::operator()()']]], + ['operator_2a_10',['operator*',['../group__arithmetic__operators.html#gaee209a211df9c1fdd671fe786c01eca6',1,'xt::operator*()'],['../classxt_1_1xaxis__slice__iterator.html#a8250c9f5f36a93e0e3ff856f9bd6ab2b',1,'xt::xaxis_slice_iterator::operator*()'],['../classxt_1_1xaxis__iterator.html#a150d158b5c15befbed66477acf3ea890',1,'xt::xaxis_iterator::operator*()']]], + ['operator_2a_3d_11',['operator*=',['../classxt_1_1xsemantic__base.html#aaec30e9ec0a24602c707935671e72798',1,'xt::xsemantic_base::operator*=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#abc6dededcc7548c86d0e680723332507',1,'xt::xsemantic_base::operator*=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#a5911e1b618eb8b240f8f93accccda5d7',1,'xt::xfiltration::operator*=()']]], + ['operator_2b_12',['operator+',['../group__arithmetic__operators.html#ga4f6fda1324731f7d8c7bedfd786fd711',1,'xt::operator+(E &&e) noexcept -> detail::xfunction_type_t< detail::identity, E >'],['../group__arithmetic__operators.html#ga3a0012dd54e6eddb1dc1499bda3835fc',1,'xt::operator+(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::plus, E1, E2 >']]], + ['operator_2b_2b_13',['operator++',['../classxt_1_1xaxis__iterator.html#af118e8a489b3ee60287f8848a42c3ec8',1,'xt::xaxis_iterator::operator++()'],['../classxt_1_1xaxis__slice__iterator.html#a58c7c5d0bec327a8fb5d1f63b6122822',1,'xt::xaxis_slice_iterator::operator++(int)'],['../classxt_1_1xaxis__slice__iterator.html#a6712f741da8a93fa4c0785888d008608',1,'xt::xaxis_slice_iterator::operator++()'],['../classxt_1_1xaxis__iterator.html#aa6a381b3f4e53a2b7b2a0385e2675b65',1,'xt::xaxis_iterator::operator++()']]], + ['operator_2b_3d_14',['operator+=',['../classxt_1_1xsemantic__base.html#a9e31dbd09cdb7b7676d33243732f3ac7',1,'xt::xsemantic_base::operator+=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a8d5c560eb7c807fb0806864fb0b46c50',1,'xt::xsemantic_base::operator+=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#a2fae2b71a4134ec799668a13cdc60d9a',1,'xt::xfiltration::operator+=()']]], + ['operator_2d_15',['operator-',['../group__arithmetic__operators.html#gadcc7da6c96325690024067869af4e3bf',1,'xt::operator-(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::minus, E1, E2 >'],['../group__arithmetic__operators.html#gae9984fddddb53d90fcef38c017ebb5c9',1,'xt::operator-(E &&e) noexcept -> detail::xfunction_type_t< detail::negate, E >']]], + ['operator_2d_3d_16',['operator-=',['../classxt_1_1xfiltration.html#acfb314430c89b71133595cb83f84a75e',1,'xt::xfiltration::operator-=()'],['../classxt_1_1xsemantic__base.html#aa9edf1d0dba25f33a6f1955dfe333d66',1,'xt::xsemantic_base::operator-=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#afa46b608eb0ee224aa7592404ba01b20',1,'xt::xsemantic_base::operator-=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operator_2d_3e_17',['operator->',['../classxt_1_1xaxis__slice__iterator.html#a98d80126e4d0c78658fabe73303913bb',1,'xt::xaxis_slice_iterator::operator->()'],['../classxt_1_1xaxis__iterator.html#a265baea7c543cabd5f9b074d39371310',1,'xt::xaxis_iterator::operator->()']]], + ['operator_2f_18',['operator/',['../group__arithmetic__operators.html#ga5c9e3cca169a86ea0974e67d562f7f8c',1,'xt']]], + ['operator_2f_3d_19',['operator/=',['../classxt_1_1xsemantic__base.html#a2ff7796563ea73e3aff6ce17ff2c1f42',1,'xt::xsemantic_base::operator/=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#af008542eab3a41140cfe12dca74232ee',1,'xt::xsemantic_base::operator/=(const E &e) -> disable_xexpression< E, derived_type & >'],['../classxt_1_1xfiltration.html#a2bc58cd24579e8d62efd55fdb750ed40',1,'xt::xfiltration::operator/=()']]], + ['operator_3c_20',['operator<',['../group__comparison__operators.html#ga2adbdc9609fe51aa3e50955fe039ba67',1,'xt']]], + ['operator_3c_3c_21',['operator<<',['../group__bitwise__operators.html#gaa7b48fdbaa2c12656338470eb3cc5c8e',1,'xt']]], + ['operator_3c_3d_22',['operator<=',['../group__comparison__operators.html#gaf7b3cb0fe146e5a95a750a1291bfdcca',1,'xt']]], + ['operator_3d_23',['operator=',['../classxt_1_1xfunctor__view.html#a9e41f726bcd647106ca9f420a045d228',1,'xt::xfunctor_view::operator=()'],['../classxt_1_1xview.html#af7f042302a75ce76b1ce094b38529188',1,'xt::xview::operator=()'],['../classxt_1_1xfixed__adaptor.html#a5eba04b65afb8377a248f1253605f7d2',1,'xt::xfixed_adaptor::operator=()'],['../classxt_1_1xfunctor__adaptor.html#a4eaf31a6089dc47d2e772fa6590514bd',1,'xt::xfunctor_adaptor::operator=()'],['../classxt_1_1xindex__view.html#aac159eb55755735609a3095f1e73bf3a',1,'xt::xindex_view::operator=()'],['../classxt_1_1xfiltration.html#a13d467d1d2a39fb0b3cdee0b60d2db68',1,'xt::xfiltration::operator=()'],['../classxt_1_1xoptional__assembly.html#af67042d373194546b43afffb160ce687',1,'xt::xoptional_assembly::operator=()'],['../classxt_1_1xoptional__assembly__adaptor.html#ae9fc0069591e77f0b879152b82032987',1,'xt::xoptional_assembly_adaptor::operator=()'],['../classxt_1_1xstrided__view.html#a48ae99185454667efcd738a48ddc43bf',1,'xt::xstrided_view::operator=()'],['../classxt_1_1xtensor__container.html#a1b82b2aea047cca3d11106062721c34c',1,'xt::xtensor_container::operator=()'],['../classxt_1_1xtensor__adaptor.html#af034feb75cd6690b25a4c6b7b4a20bc5',1,'xt::xtensor_adaptor::operator=()'],['../classxt_1_1xtensor__view.html#a595e97c93a52f5f196d00396435ec76b',1,'xt::xtensor_view::operator=()'],['../classxt_1_1xfixed__container.html#a02686e37949d2c9076cd7b5656e7db3b',1,'xt::xfixed_container::operator=()'],['../classxt_1_1xarray__adaptor.html#aece6f91aa92298df35846b524613828b',1,'xt::xarray_adaptor::operator=()'],['../classxt_1_1xarray__container.html#ac47c631a33e292371fab8acff451f269',1,'xt::xarray_container::operator=()']]], + ['operator_3d_3d_24',['operator==',['../namespacext.html#a49dd71cabe349f77ec771f01fc46aeb3',1,'xt::operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)'],['../namespacext.html#aa8afbf971ca9887515e974de1775cf03',1,'xt::operator==(const xaxis_slice_iterator< CT > &lhs, const xaxis_slice_iterator< CT > &rhs)'],['../group__comparison__operators.html#gaa82e19b7daac1f55388a62f89cd5f9c7',1,'xt::operator==(const xexpression< E1 > &e1, const xexpression< E2 > &e2)']]], + ['operator_3e_25',['operator>',['../group__comparison__operators.html#ga3addaced4bd7bdacea4a842d9d6c850a',1,'xt']]], + ['operator_3e_3d_26',['operator>=',['../group__comparison__operators.html#gaa40baca1e4f53789261cd3e8736a98ef',1,'xt']]], + ['operator_3e_3e_27',['operator>>',['../group__bitwise__operators.html#gace6ce969d4a7bdee37e410309448df92',1,'xt']]], + ['operator_5b_5d_28',['operator[]',['../classxt_1_1xoptional__assembly__base.html#af783d13bcc3bbd5082fdc79f8f2aeee8',1,'xt::xoptional_assembly_base::operator[]()'],['../classxt_1_1xconst__accessible.html#a125b98dd7a0ea4919f19b69256930ff8',1,'xt::xconst_accessible::operator[]()'],['../classxt_1_1xaccessible.html#a45649ae70e8ea6cbda28caa423347c96',1,'xt::xaccessible::operator[]()'],['../classxt_1_1xindex__view.html#a5f26e28734c1db46865b6eeb39009a2a',1,'xt::xindex_view::operator[](const S &index) -> disable_integral_t< S, reference >'],['../classxt_1_1xindex__view.html#a2a2211fb97b8bbb0b6a8ea3e4ac6c0b5',1,'xt::xindex_view::operator[](const S &index) const -> disable_integral_t< S, const_reference >'],['../classxt_1_1xoptional__assembly__base.html#ab9a1749164786ed873b216223098fe31',1,'xt::xoptional_assembly_base::operator[]()']]], + ['operator_5e_29',['operator^',['../group__bitwise__operators.html#ga85c9a2b613116854aa104a4005f2a0f4',1,'xt']]], + ['operator_5e_3d_30',['operator^=',['../classxt_1_1xsemantic__base.html#a61d5bbbb065e48c74db69c4276673a34',1,'xt::xsemantic_base::operator^=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a7c74b14f291bccf501760aa166cd7bd6',1,'xt::xsemantic_base::operator^=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operator_7c_31',['operator|',['../group__bitwise__operators.html#gac1e3650f1eae70c7ab951cce7df0b7ac',1,'xt']]], + ['operator_7c_3d_32',['operator|=',['../classxt_1_1xsemantic__base.html#ab09ec4698094a4a1efbaa1ccbb609d42',1,'xt::xsemantic_base::operator|=(const xexpression< E > &e) -> derived_type &'],['../classxt_1_1xsemantic__base.html#a5fe0e38a7065e67565d46179727fe399',1,'xt::xsemantic_base::operator|=(const E &e) -> disable_xexpression< E, derived_type & >']]], + ['operator_7c_7c_33',['operator||',['../group__logical__operators.html#gab0fb5db8b5da410253c08053a1c9c518',1,'xt']]], + ['operator_7e_34',['operator~',['../group__bitwise__operators.html#ga61f9831f1f2da86982f23d8e4e45e3db',1,'xt']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..9ff791381 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['pad_0',['pad',['../namespacext.html#ad10c047180a5ce9129d25c180369ad00',1,'xt::pad(E &&e, S pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)'],['../namespacext.html#abd5658ce24f2035e2175546c9ca6ec59',1,'xt::pad(E &&e, const std::vector< S > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)'],['../namespacext.html#a030cc6fd43c1f7a452a4ed069881a4fa',1,'xt::pad(E &&e, const std::vector< std::vector< S > > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)']]], + ['partition_1',['partition',['../group__xt__xsort.html#ga6177ff3c8d30606b88a0bbcacd8dcf4e',1,'xt']]], + ['periodic_2',['periodic',['../classxt_1_1xaccessible.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xaccessible::periodic()'],['../classxt_1_1xscalar.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xscalar::periodic(Args... args) const -> const_reference'],['../classxt_1_1xscalar.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xscalar::periodic(Args... args) -> reference'],['../classxt_1_1xmasked__view.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xmasked_view::periodic(Args... args) const -> const_reference'],['../classxt_1_1xmasked__view.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xmasked_view::periodic(Args... args) -> reference'],['../classxt_1_1xfunctor__applier__base.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xfunctor_applier_base::periodic(Args... args) const -> const_reference'],['../classxt_1_1xfunctor__applier__base.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xfunctor_applier_base::periodic(Args... args) -> reference'],['../classxt_1_1xfunction.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xfunction::periodic()'],['../classxt_1_1xcontainer.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xcontainer::periodic(Args... args) const -> const_reference'],['../classxt_1_1xcontainer.html#a038772dfb1936fa221a220c5ded4ac05',1,'xt::xcontainer::periodic(Args... args) -> reference'],['../classxt_1_1xaccessible.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xaccessible::periodic()'],['../classxt_1_1xoptional__assembly__base.html#a282a52135c367ae4d80db9575f41d3a5',1,'xt::xoptional_assembly_base::periodic(Args... args) const -> const_reference'],['../classxt_1_1xoptional__assembly__base.html#a1b77e82dc265d815b17f17d337d96636',1,'xt::xoptional_assembly_base::periodic(Args... args) -> reference'],['../classxt_1_1xconst__accessible.html#a34d4a20e640737443fd0a7266b77b2b2',1,'xt::xconst_accessible::periodic()']]], + ['plus_5fassign_3',['plus_assign',['../classxt_1_1xsemantic__base.html#aabefbeb56a74c2098c0fe976227ebdc8',1,'xt::xsemantic_base']]], + ['pow_4',['pow',['../group__pow__functions.html#ga726d449a0411dabbe7451c38cec235ae',1,'xt::pow(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >'],['../group__pow__functions.html#ga9cf15362f1892675576f2298c01e2b6b',1,'xt::pow(E &&e) noexcept']]], + ['prod_5',['prod',['../group__red__functions.html#ga90d729a5dc08b66740997ad3e7fdb0c1',1,'xt']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..69f572c5c --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quantile_0',['quantile',['../group__xt__xsort.html#ga7dd83e71409830d5211608257f18e361',1,'xt::quantile(E &&e, const P &probas, std::ptrdiff_t axis, T alpha, T beta)'],['../group__xt__xsort.html#gae3b1b26f618ece7324455223330d5780',1,'xt::quantile(E &&e, const P &probas, T alpha, T beta)'],['../group__xt__xsort.html#ga632a72d1def84debe56b68d79a451f11',1,'xt::quantile(E &&e, const P &probas, std::ptrdiff_t axis, quantile_method method=quantile_method::linear)'],['../group__xt__xsort.html#gaa8159912f652b20d4477c0187dfb301f',1,'xt::quantile(E &&e, const P &probas, quantile_method method=quantile_method::linear)']]] +]; diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 000000000..6940ba098 --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['a_20shape_20array_0',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['accumulating_20functions_1',['accumulating functions',['../group__acc__functions.html',1,'']]], + ['adaptors_20of_20stl_20like_20containers_2',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['and_20flat_20indices_3',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['and_20gamma_20functions_4',['Error and gamma functions',['../group__err__functions.html',1,'']]], + ['arithmetic_20operators_5',['Arithmetic operators',['../group__arithmetic__operators.html',1,'']]], + ['array_6',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['array_20indices_20and_20flat_20indices_7',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]] +]; diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 000000000..1cf26ce6d --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['basic_20functions_0',['Basic functions',['../group__basic__functions.html',1,'']]], + ['between_20array_20indices_20and_20flat_20indices_1',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['bitwise_20operators_2',['Bitwise operators',['../group__bitwise__operators.html',1,'']]] +]; diff --git a/search/groups_2.js b/search/groups_2.js new file mode 100644 index 000000000..df43e1a5e --- /dev/null +++ b/search/groups_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['casting_20operators_0',['Casting operators',['../group__casting__operators.html',1,'']]], + ['check_20a_20shape_20array_1',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['classification_20functions_2',['Classification functions',['../group__classif__functions.html',1,'']]], + ['comparison_20operators_3',['Comparison operators',['../group__comparison__operators.html',1,'']]], + ['containers_4',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]] +]; diff --git a/search/groups_3.js b/search/groups_3.js new file mode 100644 index 000000000..c6a997d98 --- /dev/null +++ b/search/groups_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['error_20and_20gamma_20functions_0',['Error and gamma functions',['../group__err__functions.html',1,'']]], + ['exponential_20functions_1',['Exponential functions',['../group__exp__functions.html',1,'']]] +]; diff --git a/search/groups_4.js b/search/groups_4.js new file mode 100644 index 000000000..9ee8e68cd --- /dev/null +++ b/search/groups_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['flat_20indices_0',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['floating_20point_20operations_1',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['function_2',['Trigonometric function',['../group__trigo__functions.html',1,'']]], + ['functions_3',['functions',['../group__acc__functions.html',1,'accumulating functions'],['../group__basic__functions.html',1,'Basic functions'],['../group__classif__functions.html',1,'Classification functions'],['../group__err__functions.html',1,'Error and gamma functions'],['../group__exp__functions.html',1,'Exponential functions'],['../group__hyper__functions.html',1,'Hyperbolic functions'],['../group__nan__functions.html',1,'nan functions'],['../group__pow__functions.html',1,'Power functions'],['../group__red__functions.html',1,'reducing functions'],['../group__xt__xsort.html',1,'Sorting functions.']]], + ['functions_20swich_20between_20array_20indices_20and_20flat_20indices_4',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['functions_20to_20get_20check_20a_20shape_20array_5',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]] +]; diff --git a/search/groups_5.js b/search/groups_5.js new file mode 100644 index 000000000..be56a94ff --- /dev/null +++ b/search/groups_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gamma_20functions_0',['Error and gamma functions',['../group__err__functions.html',1,'']]], + ['get_20check_20a_20shape_20array_1',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]] +]; diff --git a/search/groups_6.js b/search/groups_6.js new file mode 100644 index 000000000..62036d8ce --- /dev/null +++ b/search/groups_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hyperbolic_20functions_0',['Hyperbolic functions',['../group__hyper__functions.html',1,'']]] +]; diff --git a/search/groups_7.js b/search/groups_7.js new file mode 100644 index 000000000..cb1f3cc2e --- /dev/null +++ b/search/groups_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['indices_20and_20flat_20indices_0',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['integer_20floating_20point_20operations_1',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]] +]; diff --git a/search/groups_8.js b/search/groups_8.js new file mode 100644 index 000000000..546b43aa2 --- /dev/null +++ b/search/groups_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['like_20containers_0',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['logical_20operators_1',['Logical operators',['../group__logical__operators.html',1,'']]] +]; diff --git a/search/groups_9.js b/search/groups_9.js new file mode 100644 index 000000000..41f8aaa32 --- /dev/null +++ b/search/groups_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nan_20functions_0',['nan functions',['../group__nan__functions.html',1,'']]], + ['nearest_20integer_20floating_20point_20operations_1',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]] +]; diff --git a/search/groups_a.js b/search/groups_a.js new file mode 100644 index 000000000..76764b9b8 --- /dev/null +++ b/search/groups_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['of_20stl_20like_20containers_0',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['operations_1',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['operators_2',['operators',['../group__arithmetic__operators.html',1,'Arithmetic operators'],['../group__bitwise__operators.html',1,'Bitwise operators'],['../group__casting__operators.html',1,'Casting operators'],['../group__comparison__operators.html',1,'Comparison operators'],['../group__logical__operators.html',1,'Logical operators']]] +]; diff --git a/search/groups_b.js b/search/groups_b.js new file mode 100644 index 000000000..6e11c4028 --- /dev/null +++ b/search/groups_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['point_20operations_0',['Nearest integer floating point operations',['../group__nearint__functions.html',1,'']]], + ['power_20functions_1',['Power functions',['../group__pow__functions.html',1,'']]] +]; diff --git a/search/groups_c.js b/search/groups_c.js new file mode 100644 index 000000000..0164190f5 --- /dev/null +++ b/search/groups_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reducing_20functions_0',['reducing functions',['../group__red__functions.html',1,'']]] +]; diff --git a/search/groups_d.js b/search/groups_d.js new file mode 100644 index 000000000..624db6b2d --- /dev/null +++ b/search/groups_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['shape_20array_0',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['sorting_20functions_1',['Sorting functions.',['../group__xt__xsort.html',1,'']]], + ['stl_20like_20containers_2',['Adaptors of STL-like containers',['../group__xt__xadapt.html',1,'']]], + ['support_20functions_20swich_20between_20array_20indices_20and_20flat_20indices_3',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]], + ['support_20functions_20to_20get_20check_20a_20shape_20array_4',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['swich_20between_20array_20indices_20and_20flat_20indices_5',['Support functions swich between array indices and flat indices',['../group__xt__xstrides.html',1,'']]] +]; diff --git a/search/groups_e.js b/search/groups_e.js new file mode 100644 index 000000000..03d3dc25e --- /dev/null +++ b/search/groups_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['to_20get_20check_20a_20shape_20array_0',['Support functions to get/check a shape array.',['../group__xt__xshape.html',1,'']]], + ['trigonometric_20function_1',['Trigonometric function',['../group__trigo__functions.html',1,'']]] +]; diff --git a/search/groups_f.js b/search/groups_f.js new file mode 100644 index 000000000..900f6517d --- /dev/null +++ b/search/groups_f.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['xt_5fxchunked_5farray_0',['Xt_xchunked_array',['../group__xt__xchunked__array.html',1,'']]], + ['xt_5fxcomplex_1',['Xt_xcomplex',['../group__xt__xcomplex.html',1,'']]], + ['xt_5fxeval_2',['Xt_xeval',['../group__xt__xeval.html',1,'']]], + ['xt_5fxfunctor_5fview_3',['Xt_xfunctor_view',['../group__xt__xfunctor__view.html',1,'']]], + ['xt_5fxmanipulation_4',['Xt_xmanipulation',['../group__xt__xmanipulation.html',1,'']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 000000000..ffb6cf0d0 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 000000000..16f6e9ab6 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xt_0',['xt',['../namespacext.html',1,'']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..4d858458c --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 000000000..1ad91e39e --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['list_0',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + 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 var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + 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 var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + 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; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + 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/search/search.js b/search/search.js new file mode 100644 index 000000000..6fd40c677 --- /dev/null +++ b/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 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 + */ +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) + { + e.stopPropagation(); + 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 jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- 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'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// 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.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == '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 + { + 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 + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + 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 + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + 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(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{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/splitbard.png b/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/structxt_1_1acquire__ownership.html b/structxt_1_1acquire__ownership.html new file mode 100644 index 000000000..8b9fe7d56 --- /dev/null +++ b/structxt_1_1acquire__ownership.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::acquire_ownership Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::acquire_ownership Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 33 of file xbuffer_adaptor.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1apply__cv-members.html b/structxt_1_1apply__cv-members.html new file mode 100644 index 000000000..a08dd4251 --- /dev/null +++ b/structxt_1_1apply__cv-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::apply_cv< T, U > Member List
    +
    +
    + +

    This is the complete list of members for xt::apply_cv< T, U >, including all inherited members.

    + + +
    type typedef (defined in xt::apply_cv< T, U >)xt::apply_cv< T, U >
    +
    + + + + diff --git a/structxt_1_1apply__cv.html b/structxt_1_1apply__cv.html new file mode 100644 index 000000000..7602a2de3 --- /dev/null +++ b/structxt_1_1apply__cv.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::apply_cv< T, U > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::apply_cv< T, U > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::apply_cv_impl< T, U >::type
     
    +

    Detailed Description

    +
    template<class T, class U>
    +struct xt::apply_cv< T, U >
    +

    Definition at line 582 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using xt::apply_cv< T, U >::type = typename detail::apply_cv_impl<T, U>::type
    +
    + +

    Definition at line 584 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1big__promote__value__type-members.html b/structxt_1_1big__promote__value__type-members.html new file mode 100644 index 000000000..1ae6af73e --- /dev/null +++ b/structxt_1_1big__promote__value__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::big_promote_value_type< E > Member List
    +
    +
    + +

    This is the complete list of members for xt::big_promote_value_type< E >, including all inherited members.

    + + +
    type typedef (defined in xt::big_promote_value_type< E >)xt::big_promote_value_type< E >
    +
    + + + + diff --git a/structxt_1_1big__promote__value__type.html b/structxt_1_1big__promote__value__type.html new file mode 100644 index 000000000..59328c0fa --- /dev/null +++ b/structxt_1_1big__promote__value__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::big_promote_value_type< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::big_promote_value_type< E > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtl::big_promote_type_t< typename std::decay_t< E >::value_type >
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::big_promote_value_type< E >
    +

    Definition at line 189 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::big_promote_value_type< E >::type = xtl::big_promote_type_t<typename std::decay_t<E>::value_type>
    +
    + +

    Definition at line 191 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types.html b/structxt_1_1buffer__inner__types.html new file mode 100644 index 000000000..8ff6fe69f --- /dev/null +++ b/structxt_1_1buffer__inner__types.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::buffer_inner_types< D > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::buffer_inner_types< D > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class D>
    +struct xt::buffer_inner_types< D >
    +

    Definition at line 259 of file xbuffer_adaptor.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html b/structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html new file mode 100644 index 000000000..e513bc961 --- /dev/null +++ b/structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html @@ -0,0 +1,120 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > > Member List
    +
    +
    + +

    This is the complete list of members for xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >, including all inherited members.

    + + + + + + + + + + + + + + +
    base_type typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    const_iterator typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    const_pointer typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    const_reference typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    const_reverse_iterator typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    difference_type typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    index_type typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    iterator typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    pointer typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    reference typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    reverse_iterator typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    size_type typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    value_type typedef (defined in xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >)xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html b/structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..467eaec8c --- /dev/null +++ b/structxt_1_1buffer__inner__types_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html @@ -0,0 +1,380 @@ + + + + + + + +xtensor: xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using base_type = detail::buffer_storage_t< CP, A, O >
     
    using value_type = typename base_type::value_type
     
    using reference = typename base_type::reference
     
    using const_reference = typename base_type::const_reference
     
    using pointer = typename base_type::pointer
     
    using const_pointer = typename base_type::const_pointer
     
    using size_type = typename base_type::size_type
     
    using difference_type = typename base_type::difference_type
     
    using iterator = pointer
     
    using const_iterator = const_pointer
     
    using reverse_iterator = std::reverse_iterator< iterator >
     
    using const_reverse_iterator = std::reverse_iterator< const_iterator >
     
    using index_type = size_type
     
    +

    Detailed Description

    +
    template<class CP, class O, class A>
    +struct xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >
    +

    Definition at line 347 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ base_type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::base_type = detail::buffer_storage_t<CP, A, O>
    +
    + +

    Definition at line 349 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_iterator

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::const_iterator = const_pointer
    +
    + +

    Definition at line 358 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::const_pointer = typename base_type::const_pointer
    +
    + +

    Definition at line 354 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::const_reference = typename base_type::const_reference
    +
    + +

    Definition at line 352 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_reverse_iterator

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::const_reverse_iterator = std::reverse_iterator<const_iterator>
    +
    + +

    Definition at line 360 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::difference_type = typename base_type::difference_type
    +
    + +

    Definition at line 356 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ index_type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::index_type = size_type
    +
    + +

    Definition at line 361 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ iterator

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::iterator = pointer
    +
    + +

    Definition at line 357 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::pointer = typename base_type::pointer
    +
    + +

    Definition at line 353 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::reference = typename base_type::reference
    +
    + +

    Definition at line 351 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ reverse_iterator

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::reverse_iterator = std::reverse_iterator<iterator>
    +
    + +

    Definition at line 359 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::size_type = typename base_type::size_type
    +
    + +

    Definition at line 355 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::buffer_inner_types< xbuffer_adaptor< CP, O, A > >::value_type = typename base_type::value_type
    +
    + +

    Definition at line 350 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html b/structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html new file mode 100644 index 000000000..3ec547d98 --- /dev/null +++ b/structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::buffer_inner_types< xiterator_adaptor< I, CI > > Member List
    +
    +
    + +

    This is the complete list of members for xt::buffer_inner_types< xiterator_adaptor< I, CI > >, including all inherited members.

    + + + + + + + + + + + + + + + +
    const_iterator typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    const_pointer typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    const_reference typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    const_reverse_iterator typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    const_traits typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    difference_type typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    index_type typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    iterator typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    pointer typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    reference typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    reverse_iterator typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    size_type typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    traits typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    value_type typedef (defined in xt::buffer_inner_types< xiterator_adaptor< I, CI > >)xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html b/structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html new file mode 100644 index 000000000..2021171a6 --- /dev/null +++ b/structxt_1_1buffer__inner__types_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html @@ -0,0 +1,400 @@ + + + + + + + +xtensor: xt::buffer_inner_types< xiterator_adaptor< I, CI > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::buffer_inner_types< xiterator_adaptor< I, CI > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using traits = std::iterator_traits< I >
     
    using const_traits = std::iterator_traits< CI >
     
    using value_type = std::common_type_t< typename traits::value_type, typename const_traits::value_type >
     
    using reference = typename traits::reference
     
    using const_reference = typename const_traits::reference
     
    using pointer = typename traits::pointer
     
    using const_pointer = typename const_traits::pointer
     
    using difference_type = std::common_type_t< typename traits::difference_type, typename const_traits::difference_type >
     
    using size_type = std::make_unsigned_t< difference_type >
     
    using iterator = I
     
    using const_iterator = CI
     
    using reverse_iterator = std::reverse_iterator< iterator >
     
    using const_reverse_iterator = std::reverse_iterator< const_iterator >
     
    using index_type = difference_type
     
    +

    Detailed Description

    +
    template<class I, class CI>
    +struct xt::buffer_inner_types< xiterator_adaptor< I, CI > >
    +

    Definition at line 420 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_iterator

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::const_iterator = CI
    +
    + +

    Definition at line 434 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::const_pointer = typename const_traits::pointer
    +
    + +

    Definition at line 429 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::const_reference = typename const_traits::reference
    +
    + +

    Definition at line 427 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_reverse_iterator

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::const_reverse_iterator = std::reverse_iterator<const_iterator>
    +
    + +

    Definition at line 436 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_traits

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::const_traits = std::iterator_traits<CI>
    +
    + +

    Definition at line 423 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::difference_type = std::common_type_t<typename traits::difference_type, typename const_traits::difference_type>
    +
    + +

    Definition at line 430 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ index_type

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::index_type = difference_type
    +
    + +

    Definition at line 437 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ iterator

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::iterator = I
    +
    + +

    Definition at line 433 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::pointer = typename traits::pointer
    +
    + +

    Definition at line 428 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::reference = typename traits::reference
    +
    + +

    Definition at line 426 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ reverse_iterator

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::reverse_iterator = std::reverse_iterator<iterator>
    +
    + +

    Definition at line 435 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::size_type = std::make_unsigned_t<difference_type>
    +
    + +

    Definition at line 431 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ traits

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::traits = std::iterator_traits<I>
    +
    + +

    Definition at line 422 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::buffer_inner_types< xiterator_adaptor< I, CI > >::value_type = std::common_type_t<typename traits::value_type, typename const_traits::value_type>
    +
    + +

    Definition at line 425 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html b/structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html new file mode 100644 index 000000000..2636089b0 --- /dev/null +++ b/structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > > Member List
    +
    +
    + +

    This is the complete list of members for xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >, including all inherited members.

    + + + + + + + + + + + + + + + +
    const_iterator typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    const_pointer typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    const_reference typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    const_reverse_iterator typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    const_traits typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    difference_type typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    index_type typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    iterator typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    pointer typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    reference typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    reverse_iterator typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    size_type typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    traits typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    value_type typedef (defined in xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >)xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    +
    + + + + diff --git a/structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html b/structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html new file mode 100644 index 000000000..71e873fd9 --- /dev/null +++ b/structxt_1_1buffer__inner__types_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html @@ -0,0 +1,400 @@ + + + + + + + +xtensor: xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using iterator = typename IG::iterator
     
    using const_iterator = typename IG::const_iterator
     
    using reverse_iterator = std::reverse_iterator< iterator >
     
    using const_reverse_iterator = std::reverse_iterator< const_iterator >
     
    using traits = std::iterator_traits< iterator >
     
    using const_traits = std::iterator_traits< const_iterator >
     
    using value_type = std::common_type_t< typename traits::value_type, typename const_traits::value_type >
     
    using reference = typename traits::reference
     
    using const_reference = typename const_traits::reference
     
    using pointer = typename traits::pointer
     
    using const_pointer = typename const_traits::pointer
     
    using difference_type = std::common_type_t< typename traits::difference_type, typename const_traits::difference_type >
     
    using size_type = std::make_unsigned_t< difference_type >
     
    using index_type = difference_type
     
    +

    Detailed Description

    +
    template<class C, class IG>
    +struct xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >
    +

    Definition at line 499 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_iterator

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::const_iterator = typename IG::const_iterator
    +
    + +

    Definition at line 502 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::const_pointer = typename const_traits::pointer
    +
    + +

    Definition at line 513 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::const_reference = typename const_traits::reference
    +
    + +

    Definition at line 511 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_reverse_iterator

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::const_reverse_iterator = std::reverse_iterator<const_iterator>
    +
    + +

    Definition at line 504 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ const_traits

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::const_traits = std::iterator_traits<const_iterator>
    +
    + +

    Definition at line 507 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::difference_type = std::common_type_t<typename traits::difference_type, typename const_traits::difference_type>
    +
    + +

    Definition at line 514 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ index_type

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::index_type = difference_type
    +
    + +

    Definition at line 516 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ iterator

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::iterator = typename IG::iterator
    +
    + +

    Definition at line 501 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::pointer = typename traits::pointer
    +
    + +

    Definition at line 512 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::reference = typename traits::reference
    +
    + +

    Definition at line 510 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ reverse_iterator

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::reverse_iterator = std::reverse_iterator<iterator>
    +
    + +

    Definition at line 503 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::size_type = std::make_unsigned_t<difference_type>
    +
    + +

    Definition at line 515 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ traits

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::traits = std::iterator_traits<iterator>
    +
    + +

    Definition at line 506 of file xbuffer_adaptor.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::buffer_inner_types< xiterator_owner_adaptor< C, IG > >::value_type = std::common_type_t<typename traits::value_type, typename const_traits::value_type>
    +
    + +

    Definition at line 509 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1can__assign.html b/structxt_1_1can__assign.html new file mode 100644 index 000000000..ef3f0cd44 --- /dev/null +++ b/structxt_1_1can__assign.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::can_assign< LHS, RHS > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::can_assign< LHS, RHS > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::can_assign< LHS, RHS >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class LHS, class RHS>
    +struct xt::can_assign< LHS, RHS >
    +

    Definition at line 201 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1can__assign.png b/structxt_1_1can__assign.png new file mode 100644 index 0000000000000000000000000000000000000000..3a69a4e0170cd32f77e3c041c44cbd3822818f45 GIT binary patch literal 808 zcmeAS@N?(olHy`uVBq!ia0vp^2Y@($gBeIxq;!=5Dd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=B-0JzX3_Dj46+y)E=eLBORt z?#;jd`fFiAO-afy8Teb!y` zJZ(i!-nn!7`qxnZIgYPhM8_~IoYem+c;H*WEIHZQZiWw!ZY#_$k}G)dQlcx{=;k$x zUElvbD&1QotRTU{FlkK*lf=x~6GOEdJ-W~Ga!;0#w)EF-6F9kul_5RQW;#Qq$IHfR z51(Y-op$$}O!nT^!#V%2%+@MikUX*fP-_6ULQBBA)omhzj~Tb|+55h24CDKu!YB4J zbmEb%hY$a-Sk6D|+*#R+zMe9+2`PD@9I;df?m;#fj z#ND9cp2axfiH9xYnKNo)41YrS8D>OoX10-=EPRIV!=3+kSS~ZK(PCjp-pas`utbc3 zq2~${L&L-<1_py5ZUzRoEJlU{9=Z$+5-V957?d#-eeg?5Gv-$F{G7$;aS5o-Q);E$ zf$b6b$Cpn3{kF6=R4{#l)i1G0PfE-iR7yjcbNHWnxx3$Ynly*$fZdV@e*MQU?qIgO zKll3IE8n&rzG=$%=+S!}m6MuP2bQdwYHprcmp&=`+!vP2mI+HhVSSNjnHz^_;ETW0 zEt&Fb*R^JDe8ae*UTU@#FsLs&?BLnpAHg{1_0-3A&br6If>|-)m!gOmFT>ZUwF|N< zAG}uC_o&h22;-61*prQWuEz1za1`jW^EHHc#)#h9S;HawJ2zxufJ;!qajo|pv&AM| zxzhiy(|*nu`EMUY9U@g!POdKeGU{s6OA@Jv;FlFikUfy85}Sb4q9e0F}sJ(EtDd literal 0 HcmV?d00001 diff --git a/structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html b/structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html new file mode 100644 index 000000000..7daed053d --- /dev/null +++ b/structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::can_assign< xstrided_view< CT, S, L, FST >, RHS > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::can_assign< xstrided_view< CT, S, L, FST >, RHS > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::can_assign< xstrided_view< CT, S, L, FST >, RHS >:
    +
    +
    + + +xt::can_assign< CT, RHS > + +
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST, class RHS>
    +struct xt::can_assign< xstrided_view< CT, S, L, FST >, RHS >
    +

    Definition at line 106 of file xstrided_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.png b/structxt_1_1can__assign_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_00_01_r_h_s_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed389fc56377f732bd4ff4c0045e2681442650f GIT binary patch literal 1621 zcmcJQdsxy}7{?K9uBIz>kBM3&W#!h;ykvGaHAPDcrREZB`bc?Y`~*`I&1FWqg_`Xr zn%7AxCN@)4yiU_HP)nyq;3Wx3NG%X4ulqgwXP1BX?EG=g`=0Onyyt!1&pFSzdD`1u ze}m};7!0P5@o>e$U|L>~P5)FIn*D>E;Lu`r`lO%R+S(dqzIm&rGCIok+gN>X0t()= zx3@$4zFC9ikhY$J_4b89{-47Up7%Qpwr&FB>g*S*HIuK%`lb1En5ZPIRFgDmX9oX< z+oPX}=_|wM+Fa0!qI~qSV(nmM114$guo8BB2Bm^+>caEG{bYe>v%53UI9%|4zLYvl zRq7VhIF{yn;uJH1+W8vr+TwiMQJF8e{W2cskaM}w4@b)s`Qp7vO|#2#z~%(bA;Tzu z(D@pem>js?<>0|yp*{%_@~1y0P#bBY1BN)Ns2j@evwbY&%qX|yWklWip#jn?H!7>E z*LF~X9xXd$De@sVR+Zf1&pJo3`U?0FWi53zb3g@%vp6iA!Z;lPgwhW&oJN*s=$sPh z@QMBkO`8jSoFY2J($pe^UsnX)>zC&j4n5gUjw{n7xCIywMTP^*&*P^p$Jn6t!h7oq za3lr46w4}}kyOrb7^KK0Wl|fXx+^HB_tczI*F=vKhrMX4J1*M@s-i&Zc^ppNU|7js zv`<1HkjCJ}vSPM8G=XrdlAX9~8jEvC{b&2$DQdE@Sy)e}4ec_Ob_UFRCmx>iPIcQ> z3*`aAESA|PnJ}$VudBNUb{x~2Hr$puE3|)9%7~HhLr_rI)++2h9kB1l-#3dip+!;?&tpcYDS2eN( zIq;g3PQTkFgJOj;TLo9qSB=&Uc6IHWa0OLgvdbH`qLU>ZAuZflSxzpMl8JLKp+|^b zu;@=d-bH|Jr9wHfzHjDR19F}j?*L8ATKZf@T&i#);5bn$vsoKan|+6#J$=;5XA#a` zpU3Z8YnRrA+n+FAr>4z522;+Hr?2=NoH~?8>LJ$`?R?P;M`l+)lID-8SmZeT^=RQ| z@uh^Qw3QoiJVsJvOF#hO%C8E^!=OS*I?ox2td&%mE(pc*1=0Gg6@)apxzu?hX}}Uy z!$&sV7gf>e7fmuys4ay>%1((ga@q<7b;Scjp&$wdnI?&N??HRZLHkqg zS|1V;VTM;bAvl{76R|sw=|J>S0`FKEZMzCFbj$re82;^oyz&b88S9Dlw7OB8!?Yw4 zbul232o-7f&}4wc^w*mn5bR0qmR1HKTSKeuYu^IpsBaKInE6De2^eEuuoub!(()wGO8D5i6#=4^G_Lp-Q14x$(dwNI^F)Uy+D<<+~in=y>d0l7?v`(%GXZq+K;E@C8&DH1;$ z3f)^-AL8KVH0dtuZFJ`04vsx4GukVaGMOof+kDUj6vd>i9d) z^;Zq5_)}hDs?ZcM?B)1OHu`{Y){S~eRlpCAj3Oj3n_K%=YDtoGXCqao`#iV=2l&!p zH4uO|JI86&1AFDXgJUyh^Bi8?08U$L#3SW-Vpud<9je zEY{gW6iuaaFty&Jjp8aWaos6dh3RVqZ8@riBGFX?{_kq0cnlJ&O)gQqY&z0f|DX>2 z!7P>59REtHw8^Z84|B6;(C1W(V|L|W@HllYl;)@&5WL-;8O>xK_8LzX+#f55`>kxV z>PJ2=lgW(hP7Wq6=+q;>BgUk+;SdP0`k;;7($Q`E9`_1XoBlByt;{eS literal 0 HcmV?d00001 diff --git a/structxt_1_1check__policy_1_1full.html b/structxt_1_1check__policy_1_1full.html new file mode 100644 index 000000000..c1f834e97 --- /dev/null +++ b/structxt_1_1check__policy_1_1full.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::check_policy::full Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::check_policy::full Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 38 of file xmanipulation.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1check__policy_1_1none.html b/structxt_1_1check__policy_1_1none.html new file mode 100644 index 000000000..e1759f1b2 --- /dev/null +++ b/structxt_1_1check__policy_1_1none.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::check_policy::none Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::check_policy::none Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 34 of file xmanipulation.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1check__strides__overlap.html b/structxt_1_1check__strides__overlap.html new file mode 100644 index 000000000..544ed011f --- /dev/null +++ b/structxt_1_1check__strides__overlap.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::check_strides_overlap< L > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::check_strides_overlap< L > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<layout_type L>
    +struct xt::check_strides_overlap< L >
    +

    Definition at line 133 of file xstrides.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xstrides.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4-members.html b/structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4-members.html new file mode 100644 index 000000000..5a06f917e --- /dev/null +++ b/structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::check_strides_overlap< layout_type::column_major > Member List
    +
    +
    + +

    This is the complete list of members for xt::check_strides_overlap< layout_type::column_major >, including all inherited members.

    + + +
    get(const S1 &s1, const S2 &s2) (defined in xt::check_strides_overlap< layout_type::column_major >)xt::check_strides_overlap< layout_type::column_major >inlinestatic
    +
    + + + + diff --git a/structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html b/structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html new file mode 100644 index 000000000..05cfd7d8b --- /dev/null +++ b/structxt_1_1check__strides__overlap_3_01layout__type_1_1column__major_01_4.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::check_strides_overlap< layout_type::column_major > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::check_strides_overlap< layout_type::column_major > Struct Reference
    +
    +
    + + + + + +

    +Static Public Member Functions

    template<class S1 , class S2 >
    static std::size_t get (const S1 &s1, const S2 &s2)
     
    +

    Detailed Description

    +
    +

    Definition at line 815 of file xstrides.hpp.

    +

    Member Function Documentation

    + +

    ◆ get()

    + +
    +
    +
    +template<class S1 , class S2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static std::size_t xt::check_strides_overlap< layout_type::column_major >::get (const S1 & s1,
    const S2 & s2 
    )
    +
    +inlinestatic
    +
    + +

    Definition at line 818 of file xstrides.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xstrides.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4-members.html b/structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4-members.html new file mode 100644 index 000000000..4534ac53e --- /dev/null +++ b/structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::check_strides_overlap< layout_type::row_major > Member List
    +
    +
    + +

    This is the complete list of members for xt::check_strides_overlap< layout_type::row_major >, including all inherited members.

    + + +
    get(const S1 &s1, const S2 &s2) (defined in xt::check_strides_overlap< layout_type::row_major >)xt::check_strides_overlap< layout_type::row_major >inlinestatic
    +
    + + + + diff --git a/structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html b/structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html new file mode 100644 index 000000000..f4a4f5500 --- /dev/null +++ b/structxt_1_1check__strides__overlap_3_01layout__type_1_1row__major_01_4.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::check_strides_overlap< layout_type::row_major > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::check_strides_overlap< layout_type::row_major > Struct Reference
    +
    +
    + + + + + +

    +Static Public Member Functions

    template<class S1 , class S2 >
    static std::size_t get (const S1 &s1, const S2 &s2)
     
    +

    Detailed Description

    +
    +

    Definition at line 793 of file xstrides.hpp.

    +

    Member Function Documentation

    + +

    ◆ get()

    + +
    +
    +
    +template<class S1 , class S2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static std::size_t xt::check_strides_overlap< layout_type::row_major >::get (const S1 & s1,
    const S2 & s2 
    )
    +
    +inlinestatic
    +
    + +

    Definition at line 796 of file xstrides.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xstrides.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1common__difference__type-members.html b/structxt_1_1common__difference__type-members.html new file mode 100644 index 000000000..f912daa93 --- /dev/null +++ b/structxt_1_1common__difference__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::common_difference_type< Args > Member List
    +
    +
    + +

    This is the complete list of members for xt::common_difference_type< Args >, including all inherited members.

    + + +
    type typedef (defined in xt::common_difference_type< Args >)xt::common_difference_type< Args >
    +
    + + + + diff --git a/structxt_1_1common__difference__type.html b/structxt_1_1common__difference__type.html new file mode 100644 index 000000000..234cabe27 --- /dev/null +++ b/structxt_1_1common__difference__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::common_difference_type< Args > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::common_difference_type< Args > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::common_type_t< typename Args::difference_type... >
     
    +

    Detailed Description

    +
    template<class... Args>
    +struct xt::common_difference_type< Args >
    +

    Definition at line 79 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... Args>
    + + + + +
    using xt::common_difference_type< Args >::type = std::common_type_t<typename Args::difference_type...>
    +
    + +

    Definition at line 81 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1common__difference__type_3_4-members.html b/structxt_1_1common__difference__type_3_4-members.html new file mode 100644 index 000000000..b5522ca42 --- /dev/null +++ b/structxt_1_1common__difference__type_3_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::common_difference_type<> Member List
    +
    +
    + +

    This is the complete list of members for xt::common_difference_type<>, including all inherited members.

    + + +
    type typedef (defined in xt::common_difference_type<>)xt::common_difference_type<>
    +
    + + + + diff --git a/structxt_1_1common__difference__type_3_4.html b/structxt_1_1common__difference__type_3_4.html new file mode 100644 index 000000000..2e5f9706f --- /dev/null +++ b/structxt_1_1common__difference__type_3_4.html @@ -0,0 +1,137 @@ + + + + + + + +xtensor: xt::common_difference_type<> Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::common_difference_type<> Struct Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::ptrdiff_t
     
    +

    Detailed Description

    +
    +

    Definition at line 85 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    using xt::common_difference_type<>::type = std::ptrdiff_t
    +
    + +

    Definition at line 87 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1common__size__type-members.html b/structxt_1_1common__size__type-members.html new file mode 100644 index 000000000..5dd12687a --- /dev/null +++ b/structxt_1_1common__size__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::common_size_type< Args > Member List
    +
    +
    + +

    This is the complete list of members for xt::common_size_type< Args >, including all inherited members.

    + + +
    type typedef (defined in xt::common_size_type< Args >)xt::common_size_type< Args >
    +
    + + + + diff --git a/structxt_1_1common__size__type.html b/structxt_1_1common__size__type.html new file mode 100644 index 000000000..fb90f47c9 --- /dev/null +++ b/structxt_1_1common__size__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::common_size_type< Args > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::common_size_type< Args > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::common_type_t< typename Args::size_type... >
     
    +

    Detailed Description

    +
    template<class... Args>
    +struct xt::common_size_type< Args >
    +

    Definition at line 60 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... Args>
    + + + + +
    using xt::common_size_type< Args >::type = std::common_type_t<typename Args::size_type...>
    +
    + +

    Definition at line 62 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1common__size__type_3_4-members.html b/structxt_1_1common__size__type_3_4-members.html new file mode 100644 index 000000000..5782a3098 --- /dev/null +++ b/structxt_1_1common__size__type_3_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::common_size_type<> Member List
    +
    +
    + +

    This is the complete list of members for xt::common_size_type<>, including all inherited members.

    + + +
    type typedef (defined in xt::common_size_type<>)xt::common_size_type<>
    +
    + + + + diff --git a/structxt_1_1common__size__type_3_4.html b/structxt_1_1common__size__type_3_4.html new file mode 100644 index 000000000..ed4bcb957 --- /dev/null +++ b/structxt_1_1common__size__type_3_4.html @@ -0,0 +1,137 @@ + + + + + + + +xtensor: xt::common_size_type<> Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::common_size_type<> Struct Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::size_t
     
    +

    Detailed Description

    +
    +

    Definition at line 66 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    using xt::common_size_type<>::type = std::size_t
    +
    + +

    Definition at line 68 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1common__tensor__type.html b/structxt_1_1common__tensor__type.html new file mode 100644 index 000000000..ee6170b59 --- /dev/null +++ b/structxt_1_1common__tensor__type.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::common_tensor_type< C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::common_tensor_type< C > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::common_tensor_type< C >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class... C>
    +struct xt::common_tensor_type< C >
    +

    Definition at line 177 of file xexpression_traits.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1common__tensor__type.png b/structxt_1_1common__tensor__type.png new file mode 100644 index 0000000000000000000000000000000000000000..13c6620f6407636eda8b187a7df4cc7289c9727d GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0y~yV2lQ`12~w0WWz$W6+lWlz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEE`yYDmIV0)GXVKuV9qrA3IhZ4eNPw1kP61Pb8nZuR^V}Q z*Pr|IzrI~=jU&??i`8MXzGUc@J)YHlk?n}~nKN9*n@=}ROmUnf9-QZC)L!I0$#P2c zq%#ZeOiJOKd%L;*(B<=Dk89pr>#AS9Ecg2KV*}5kQx{&ney4tNvdyb+iq^3$mv&c4I;o)f%j_=?x8D1{c4F;K^?ObW3`PDIa~s&a5ls%te1AA1QBqBJ zcjF!P+pFF?OWf?5xVC39zrEu!`E}9eliqw}d}FD&?$3|22|Mj`-TY3+oJ@I>czsT1 z&99{gefP_zPdqDiuD$xeJKOEvvm(x42+g~@;NRik?dy`>exG|=V*UA~`!3fmCF)!A zn6KKCTz-c0@T+gHYfkRt)mnVWg7y8h6m7R(MmM(~{&hyV`}nf?2Uve^+wJl0$?fLL zsVU*-p0@1H>;Lq2hVTB<+u0``Jzp;TqUu+#-z4S9HM@7_PM@&fcRP3a>fB7FI~#$< z?5??e_ik+b?TE*ndF{q`?zrs|GLDi+-23IvIXSicZsP3{Us~sgnBP!I-cjQ{X}!Dt z92NI<-4DH_{fn!2Tlet^oeZn-{{MY;qh5F7?ZfKJy(S&s^KD!~tJ7i_JQmzxau7=uV<^(t&M?6lC@ynKm*Gi39-~5g5jO)cSumVf2vouc)J!EM z6~^1s(pqQUe0o4-<%A{On%gH$ao#y~iOi|BDo+FQR5jbxcl^D{e(t;7^-r(=O)z3;R9#_J@>*+Jo#TCpoJDt^KWUl&{`LYRtuKe)YhJJaq5tmoyG@e*Ydm8u zrwhN^WqW4(?K$`C?&sy*c73`&fAX$NT6=CkE%WndtbCt#BGnP)RX#?rugOU zo4VxrCGP1 + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::common_value_type< C > Member List
    +
    +
    + +

    This is the complete list of members for xt::common_value_type< C >, including all inherited members.

    + + +
    type typedef (defined in xt::common_value_type< C >)xt::common_value_type< C >
    +
    + + + + diff --git a/structxt_1_1common__value__type.html b/structxt_1_1common__value__type.html new file mode 100644 index 000000000..175bf02b1 --- /dev/null +++ b/structxt_1_1common__value__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::common_value_type< C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::common_value_type< C > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::common_type_t< typename std::decay_t< C >::value_type... >
     
    +

    Detailed Description

    +
    template<class... C>
    +struct xt::common_value_type< C >
    +

    Definition at line 47 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... C>
    + + + + +
    using xt::common_value_type< C >::type = std::common_type_t<typename std::decay_t<C>::value_type...>
    +
    + +

    Definition at line 49 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1conditional__cast__functor.html b/structxt_1_1conditional__cast__functor.html new file mode 100644 index 000000000..b2e74f7c7 --- /dev/null +++ b/structxt_1_1conditional__cast__functor.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::conditional_cast_functor< condition, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::conditional_cast_functor< condition, T > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<bool condition, class T>
    +struct xt::conditional_cast_functor< condition, T >
    +

    Definition at line 731 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html b/structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html new file mode 100644 index 000000000..5da40bafc --- /dev/null +++ b/structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::conditional_cast_functor< false, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::conditional_cast_functor< false, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::conditional_cast_functor< false, T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::conditional_cast_functor< false, T >
    +

    Definition at line 734 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.png b/structxt_1_1conditional__cast__functor_3_01false_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..78464a60e355f24825b7deab064d1bfeb88f4fd3 GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkPh$(asB`QKS=J)*V6t&%PkBv z3nZqWd2!&t0ibyBq{}OSa-1bWe!&btJ{XuY&A!6Gz!c``;uuoF_;&8yX{!}@TFdih z{r%@}^RGeR$gP)_CBDwPZY-MNW+!w=*Tp4Gz$NtRex{JntCPWmTeIH1e*Pu1FSD1= zKFIygGvM@Xz8dWp&&q7~=eS({Y_*SX&E34oy6zwQx>v0D7R^<(bM0;MraXzaa%7eku22$ITj*(rUr8v#+&%{_XHR=?df4g&`L&?UORuoF)=oYFri7(3pPaMR7>z zSMgb_B@bf$iM%+m^3TRAp`o&i8A3z9E&&s)AucIQj0cW?WoVEz;ePShkn^R^0`BKB zOD;FKU1ep6=L%r>u!Mn?!Jh<1L!gl0OhBFIQFO_gU}npHpbgyI!Sv>Fqtws8dgO9W9c*du;ah z-@$u#Ewj%1oUqB9?^J5_MVHex$9B{UPC2ygYOJLAro6H<%Ss+E{=e<@fk{(Z*8abI zt8DYKUA95j+ZI14-|%~N;I!4VGjh+}_6+~O#_{&eZLN#8y>{EO=3+g|UE}@6Yv&Zb zZuOV zDJuIz%w?1vwtu=Hm#4o^_2l-F=NJ54JU?|ZO;NGcbnv`1IgLqFaHfO(@d(*X%bc6b QfXR-*)78&qol`;+0KqI#fdBvi literal 0 HcmV?d00001 diff --git a/structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4-members.html b/structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4-members.html new file mode 100644 index 000000000..94eb063ac --- /dev/null +++ b/structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::conditional_cast_functor< true, T > Member List
    +
    +
    + +

    This is the complete list of members for xt::conditional_cast_functor< true, T >, including all inherited members.

    + + +
    operator()(U &&u) const (defined in xt::conditional_cast_functor< true, T >)xt::conditional_cast_functor< true, T >inline
    +
    + + + + diff --git a/structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html b/structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html new file mode 100644 index 000000000..5a7e9dadf --- /dev/null +++ b/structxt_1_1conditional__cast__functor_3_01true_00_01_t_01_4.html @@ -0,0 +1,155 @@ + + + + + + + +xtensor: xt::conditional_cast_functor< true, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::conditional_cast_functor< true, T > Struct Template Reference
    +
    +
    + + + + + +

    +Public Member Functions

    template<class U >
    auto operator() (U &&u) const
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::conditional_cast_functor< true, T >
    +

    Definition at line 739 of file xutils.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    +
    +template<class U >
    + + + + + +
    + + + + + + + + +
    auto xt::conditional_cast_functor< true, T >::operator() (U && u) const
    +
    +inline
    +
    + +

    Definition at line 742 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1const__array-members.html b/structxt_1_1const__array-members.html new file mode 100644 index 000000000..763877414 --- /dev/null +++ b/structxt_1_1const__array-members.html @@ -0,0 +1,133 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::const_array< T, N > Member List
    +
    +
    + +

    This is the complete list of members for xt::const_array< T, N >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    back() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    begin() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    cbegin() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    cend() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    const_iterator typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    const_pointer typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    const_reference typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    const_reverse_iterator typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    crbegin() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    crend() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    data() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    difference_type typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    empty() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    end() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    front() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    iterator typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    m_data (defined in xt::const_array< T, N >)xt::const_array< T, N >
    operator[](std::size_t idx) const (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    pointer typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    rbegin() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    reference typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    rend() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    reverse_iterator typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    size() const noexcept (defined in xt::const_array< T, N >)xt::const_array< T, N >inline
    size_type typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    value_type typedef (defined in xt::const_array< T, N >)xt::const_array< T, N >
    +
    + + + + diff --git a/structxt_1_1const__array.html b/structxt_1_1const__array.html new file mode 100644 index 000000000..4732ccbe1 --- /dev/null +++ b/structxt_1_1const__array.html @@ -0,0 +1,812 @@ + + + + + + + +xtensor: xt::const_array< T, N > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::const_array< T, N > Struct Template Reference
    +
    +
    + +

    A std::array like class with all member function (except reverse iterators) as constexpr. + More...

    + +

    #include <xstorage.hpp>

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

    +Public Types

    using size_type = std::size_t
     
    using value_type = T
     
    using pointer = value_type *
     
    using const_pointer = const value_type *
     
    using reference = value_type &
     
    using const_reference = const value_type &
     
    using difference_type = std::ptrdiff_t
     
    using iterator = pointer
     
    using const_iterator = const_pointer
     
    using reverse_iterator = std::reverse_iterator< const_iterator >
     
    using const_reverse_iterator = std::reverse_iterator< const_iterator >
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    constexpr const_reference operator[] (std::size_t idx) const
     
    constexpr const_iterator begin () const noexcept
     
    constexpr const_iterator end () const noexcept
     
    constexpr const_iterator cbegin () const noexcept
     
    constexpr const_iterator cend () const noexcept
     
    reverse_iterator rbegin () const noexcept
     
    reverse_iterator rend () const noexcept
     
    const_reverse_iterator crbegin () const noexcept
     
    const_reverse_iterator crend () const noexcept
     
    constexpr const_pointer data () const noexcept
     
    constexpr const_reference front () const noexcept
     
    constexpr const_reference back () const noexcept
     
    constexpr bool empty () const noexcept
     
    constexpr size_type size () const noexcept
     
    + + + +

    +Public Attributes

    const T m_data [N > 0 ? N :1]
     
    +

    Detailed Description

    +
    template<class T, std::size_t N>
    +struct xt::const_array< T, N >

    A std::array like class with all member function (except reverse iterators) as constexpr.

    +

    The data is immutable once set.

    + +

    Definition at line 1492 of file xstorage.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_iterator

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::const_iterator = const_pointer
    +
    + +

    Definition at line 1502 of file xstorage.hpp.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::const_pointer = const value_type*
    +
    + +

    Definition at line 1497 of file xstorage.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::const_reference = const value_type&
    +
    + +

    Definition at line 1499 of file xstorage.hpp.

    + +
    +
    + +

    ◆ const_reverse_iterator

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::const_reverse_iterator = std::reverse_iterator<const_iterator>
    +
    + +

    Definition at line 1505 of file xstorage.hpp.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::difference_type = std::ptrdiff_t
    +
    + +

    Definition at line 1500 of file xstorage.hpp.

    + +
    +
    + +

    ◆ iterator

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::iterator = pointer
    +
    + +

    Definition at line 1501 of file xstorage.hpp.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::pointer = value_type*
    +
    + +

    Definition at line 1496 of file xstorage.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::reference = value_type&
    +
    + +

    Definition at line 1498 of file xstorage.hpp.

    + +
    +
    + +

    ◆ reverse_iterator

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::reverse_iterator = std::reverse_iterator<const_iterator>
    +
    + +

    Definition at line 1504 of file xstorage.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::size_type = std::size_t
    +
    + +

    Definition at line 1494 of file xstorage.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    using xt::const_array< T, N >::value_type = T
    +
    + +

    Definition at line 1495 of file xstorage.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ back()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_reference xt::const_array< T, N >::back () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1575 of file xstorage.hpp.

    + +
    +
    + +

    ◆ begin()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_iterator xt::const_array< T, N >::begin () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1516 of file xstorage.hpp.

    + +
    +
    + +

    ◆ cbegin()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_iterator xt::const_array< T, N >::cbegin () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1526 of file xstorage.hpp.

    + +
    +
    + +

    ◆ cend()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_iterator xt::const_array< T, N >::cend () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1531 of file xstorage.hpp.

    + +
    +
    + +

    ◆ crbegin()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator xt::const_array< T, N >::crbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1547 of file xstorage.hpp.

    + +
    +
    + +

    ◆ crend()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator xt::const_array< T, N >::crend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1552 of file xstorage.hpp.

    + +
    +
    + +

    ◆ data()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_pointer xt::const_array< T, N >::data () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1557 of file xstorage.hpp.

    + +
    +
    + +

    ◆ empty()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr bool xt::const_array< T, N >::empty () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1585 of file xstorage.hpp.

    + +
    +
    + +

    ◆ end()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_iterator xt::const_array< T, N >::end () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1521 of file xstorage.hpp.

    + +
    +
    + +

    ◆ front()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr const_reference xt::const_array< T, N >::front () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1566 of file xstorage.hpp.

    + +
    +
    + +

    ◆ operator[]()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + + +
    constexpr const_reference xt::const_array< T, N >::operator[] (std::size_t idx) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 1507 of file xstorage.hpp.

    + +
    +
    + +

    ◆ rbegin()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    reverse_iterator xt::const_array< T, N >::rbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1537 of file xstorage.hpp.

    + +
    +
    + +

    ◆ rend()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    reverse_iterator xt::const_array< T, N >::rend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 1542 of file xstorage.hpp.

    + +
    +
    + +

    ◆ size()

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + + +
    + + + + + + + +
    constexpr size_type xt::const_array< T, N >::size () const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 1590 of file xstorage.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_data

    + +
    +
    +
    +template<class T , std::size_t N>
    + + + + +
    const T xt::const_array< T, N >::m_data[N > 0 ? N :1]
    +
    + +

    Definition at line 1598 of file xstorage.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1const__value-members.html b/structxt_1_1const__value-members.html new file mode 100644 index 000000000..b9b115eb5 --- /dev/null +++ b/structxt_1_1const__value-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::const_value< T > Member List
    +
    +
    + +

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

    + + + + + + + + +
    const_value()=default (defined in xt::const_value< T >)xt::const_value< T >
    const_value(T t) (defined in xt::const_value< T >)xt::const_value< T >inline
    m_value (defined in xt::const_value< T >)xt::const_value< T >
    operator()() const (defined in xt::const_value< T >)xt::const_value< T >inline
    rebind() const (defined in xt::const_value< T >)xt::const_value< T >
    rebind_t typedef (defined in xt::const_value< T >)xt::const_value< T >
    value_type typedef (defined in xt::const_value< T >)xt::const_value< T >
    +
    + + + + diff --git a/structxt_1_1const__value.html b/structxt_1_1const__value.html new file mode 100644 index 000000000..9607ab615 --- /dev/null +++ b/structxt_1_1const__value.html @@ -0,0 +1,283 @@ + + + + + + + +xtensor: xt::const_value< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::const_value< T > Struct Template Reference
    +
    +
    + + + + + + + +

    +Public Types

    using value_type = T
     
    template<class NT >
    using rebind_t = const_value< NT >
     
    + + + + + + + + +

    +Public Member Functions

    constexpr const_value (T t)
     
    constexpr T operator() () const
     
    template<class NT >
    const_value< NT > rebind () const
     
    + + + +

    +Public Attributes

    m_value
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::const_value< T >
    +

    Definition at line 581 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ rebind_t

    + +
    +
    +
    +template<class T >
    +
    +template<class NT >
    + + + + +
    using xt::const_value< T >::rebind_t = const_value<NT>
    +
    + +

    Definition at line 598 of file xreducer.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::const_value< T >::value_type = T
    +
    + +

    Definition at line 583 of file xreducer.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ const_value()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr xt::const_value< T >::const_value (t)
    +
    +inlineconstexpr
    +
    + +

    Definition at line 587 of file xreducer.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    constexpr T xt::const_value< T >::operator() () const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 592 of file xreducer.hpp.

    + +
    +
    + +

    ◆ rebind()

    + +
    +
    +
    +template<class T >
    +
    +template<class NT >
    + + + + + + + +
    const_value< NT > xt::const_value< T >::rebind () const
    +
    + +

    Definition at line 1225 of file xreducer.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_value

    + +
    +
    +
    +template<class T >
    + + + + +
    T xt::const_value< T >::m_value
    +
    + +

    Definition at line 603 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1const__xclosure-members.html b/structxt_1_1const__xclosure-members.html new file mode 100644 index 000000000..5c368861a --- /dev/null +++ b/structxt_1_1const__xclosure-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::const_xclosure< E, EN > Member List
    +
    +
    + +

    This is the complete list of members for xt::const_xclosure< E, EN >, including all inherited members.

    + + +
    type typedef (defined in xt::const_xclosure< E, EN >)xt::const_xclosure< E, EN >
    +
    + + + + diff --git a/structxt_1_1const__xclosure.html b/structxt_1_1const__xclosure.html new file mode 100644 index 000000000..cf3e84e9e --- /dev/null +++ b/structxt_1_1const__xclosure.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::const_xclosure< E, EN > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::const_xclosure< E, EN > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtl::const_closure_type_t< E >
     
    +

    Detailed Description

    +
    template<class E, class EN = void>
    +struct xt::const_xclosure< E, EN >
    +

    Definition at line 276 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E , class EN = void>
    + + + + +
    using xt::const_xclosure< E, EN >::type = xtl::const_closure_type_t<E>
    +
    + +

    Definition at line 278 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html b/structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html new file mode 100644 index 000000000..a553e7412 --- /dev/null +++ b/structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::const_xclosure< E, disable_xexpression< std::decay_t< E > > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html b/structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html new file mode 100644 index 000000000..e4c68051f --- /dev/null +++ b/structxt_1_1const__xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::const_xclosure< E, disable_xexpression< std::decay_t< E > > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::const_xclosure< E, disable_xexpression< std::decay_t< E > > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xscalar< xtl::const_closure_type_t< E > >
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::const_xclosure< E, disable_xexpression< std::decay_t< E > > >
    +

    Definition at line 282 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::const_xclosure< E, disable_xexpression< std::decay_t< E > > >::type = xscalar<xtl::const_closure_type_t<E> >
    +
    + +

    Definition at line 284 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html b/structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html new file mode 100644 index 000000000..70e5bccb5 --- /dev/null +++ b/structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html b/structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html new file mode 100644 index 000000000..950d1767d --- /dev/null +++ b/structxt_1_1const__xclosure_3_01xshared__expression_3_01_e_01_4_01_6_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xshared_expression< E >
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >
    +

    Definition at line 288 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::const_xclosure< xshared_expression< E > &, std::enable_if_t< true > >::type = xshared_expression<E>
    +
    + +

    Definition at line 290 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1container__simd__return__type.html b/structxt_1_1container__simd__return__type.html new file mode 100644 index 000000000..b1f6ef0df --- /dev/null +++ b/structxt_1_1container__simd__return__type.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::container_simd_return_type< C, T1, T2 > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::container_simd_return_type< C, T1, T2 > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::container_simd_return_type< C, T1, T2 >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class C, class T1, class T2>
    +struct xt::container_simd_return_type< C, T1, T2 >
    +

    Definition at line 324 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1container__simd__return__type.png b/structxt_1_1container__simd__return__type.png new file mode 100644 index 0000000000000000000000000000000000000000..2941a160808ee19e74799a9f8139e17899b6df8e GIT binary patch literal 1574 zcmc&!|3A}t9ADI<=;Y*1g*a}~H&(=_FTT`H*<#}mO423kp*9~0Wph(p&U_m~ie_Dw zHN}Wc&4x>;&X<_w%lIhYmM=pw-xlsucaQrQ?)}62`FcH{uOHrz$Lslg)7~Z9X-bf14j8Tpz|A?g_i_##BhbeX!8(?H& z+BBJfiY~WgYAq5I^7%_PQKc~}qjL?!-e|_YFdM?&iJ>ROageW44ha-Ex~qpWv))H& zcA`aR9(up50d@;o9$*St2F_s-zg)$m8F^Dp%Z>w0rPT|ZZCo;y11SHrOz;#PxU0IC zD2h>+Mdk$fp@UtyF%DD(iIriCvQ1Sq1*A~ek0z_!!lj>t@yq8%d+k#w{KrL0mqVT3 zJduRO2NiIQIIO@qG>b8+PW|j7>`<#7#$krIG38p436t9L0Xjn}>fG+#EhxIR9O!#B zj{=qzXT-y`JoN6f#{+dWe6aS2_M{i&x`86P zKJqgkvfG%9&e=;T1uBGbWlyBPMu_!w!Q;ZpL<&bmbhD9H$iT^ceLXXTND6Ol)jm#< z=RhkdSo~VW>?Q>jMg&Y1r25abL;}4%dAanVt;Q#_Zyf@g`=N1%)WJMJsSz!1&q@Z# z5~!X0ZXz1hxC63V7{vQHzKF5tORgxp1xA7e5f}9bttP}13mgX}!MDHUcaUt2D_wu1 z;nOu#-)~-d83%3JUq>-_dd$KNt;8gY!>etYC9qs`w+?rF#^ACq^D52zo~O6qc|6C8 zkF}dop{==pT<_Bqc|E8<$geAkEqDGXtuPn1*%bDt(&^tIooa{VR!dDK2N$@5Tc2TcK#K&~&UKAd{_f)$IWKA*$G@vp@$+u9rSdG7}m3 zGA5?n1`V)_^x(uaPO_#j7v~z4R=4XfDlN;CAJMbtvRA~ zSgi#8W%zO07aESi|3=qn{1?>c0$mxNsDgt^G8c%^wN2%g<$cv9%{vptw4WnywdYTJVITwJth`;NpxMUK%5t zD=E|aM+37|EIMj#-h=KIb!nIS7||=<(7Gd=&vztHdIseIbS&MhG0y)fzk;~|2NG3t z-$u^0ui&~}WXC*Tq?*X2leL$4g|xygM)pdljI+{k)HTmv4FpSXMKMe=lJ@?CU(({3 zW!L>mR>>I0c+W?|?ckZKJGmslZmuANO1ZME4+>6sUx>{Q!;QAyXp9H zls6|eIbswy8E_|rP>Ta0D2FxB)M2BDIDe?Sz?G;K_LcMP3$ia8b`dPg)7ubhc4PRiXs^2wra6S(PR*kYYjAz7?+!l86 zUquJXP;W8~Wy=j1ka(z60s9c%73JnkJ-oCtCgM`X3xUtSl7onrfca`q%4h9oR+X_Y Tb)s*;KRN + + + + + + +xtensor: xt::convolve_mode::full Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::convolve_mode::full Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 3248 of file xmath.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1convolve__mode_1_1valid.html b/structxt_1_1convolve__mode_1_1valid.html new file mode 100644 index 000000000..ac91ca895 --- /dev/null +++ b/structxt_1_1convolve__mode_1_1valid.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::convolve_mode::valid Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::convolve_mode::valid Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 3244 of file xmath.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1decay__all.html b/structxt_1_1decay__all.html new file mode 100644 index 000000000..eabca577e --- /dev/null +++ b/structxt_1_1decay__all.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::decay_all< S, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::decay_all< S, X > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class S, class... X>
    +struct xt::decay_all< S, X >
    +

    Definition at line 92 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4-members.html b/structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..8700b500d --- /dev/null +++ b/structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::decay_all< S< X... > > Member List
    +
    +
    + +

    This is the complete list of members for xt::decay_all< S< X... > >, including all inherited members.

    + + +
    type typedef (defined in xt::decay_all< S< X... > >)xt::decay_all< S< X... > >
    +
    + + + + diff --git a/structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html b/structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..45cfeb554 --- /dev/null +++ b/structxt_1_1decay__all_3_01_s_3_01_x_8_8_8_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::decay_all< S< X... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::decay_all< S< X... > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = S< std::decay_t< X >... >
     
    +

    Detailed Description

    +
    template<template< class... > class S, class... X>
    +struct xt::decay_all< S< X... > >
    +

    Definition at line 95 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<template< class... > class S, class... X>
    + + + + +
    using xt::decay_all< S< X... > >::type = S<std::decay_t<X>...>
    +
    + +

    Definition at line 97 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1disable__indexed__stepper.html b/structxt_1_1disable__indexed__stepper.html new file mode 100644 index 000000000..49a90a6a4 --- /dev/null +++ b/structxt_1_1disable__indexed__stepper.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::disable_indexed_stepper< T, R > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::disable_indexed_stepper< T, R > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::disable_indexed_stepper< T, R >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T, class R = T>
    +struct xt::disable_indexed_stepper< T, R >
    +

    Definition at line 236 of file xiterator.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1disable__indexed__stepper.png b/structxt_1_1disable__indexed__stepper.png new file mode 100644 index 0000000000000000000000000000000000000000..84685aeafe2bac6876cd786bf9c6c2b9f6dc8109 GIT binary patch literal 1095 zcmeAS@N?(olHy`uVBq!ia0y~yVAKV&12~w0Wc9bpb0z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aC^CeFg$B+ufw{ve-JvQKI zX`g*=&wt_dlW!QlND$7ymA3!s>Sb&B6keJyh@LTX>X|b_O%qc(Rs2J@co?l-o{^f=GsRTZ?D^k=^N(kJ=ljOH`rWH{pYtW}wB*e0a%SImivQ73)_XdA z))I=_+zyKW-*Rr(d7D|i-+tbR%H%bkxFq}d#?&YG)Mow&x+|sdw(D}#hQp?MSJx(< z`nqObLi2O(((Kc1Z+)xOCfQ$HTmFCMo=(NqKBJFY%?s-#mgg&-ys%4fd;e|^8;^Jc z&tK1sC#u-TKJ-;O`Tfod7W#XQr#uD_^s@_sOo zSkndM!sA7E%b7D?X=%@y8u+h>GfZJnSh$Fl!LznjRFC1r$_z$_AnrAXSQ#`$bs0{q zj$m{MbLD2(q!q<5A@m|s1JERfl+Y~<3af#7fHBN)Viiyam6Xi)I(=qMO4>95pGjVm zN>(jW^#t1Bd1_ULXHb}{_oPj`{IqZA&b@a2*84lh8=LQ{^Qmes{wkWyrt)&vJ$LV* z4CAOtF~9Ai9`k=L-=TM*>dmWtmp|Q?itgWd{EE?!ADel97~BziclmbgwXLtO>^r{$J`*iGWTj92??>WBg zjmU}DcdDP + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::driven_align_mode< A1, A2 > Member List
    +
    +
    + +

    This is the complete list of members for xt::driven_align_mode< A1, A2 >, including all inherited members.

    + + +
    type typedef (defined in xt::driven_align_mode< A1, A2 >)xt::driven_align_mode< A1, A2 >
    +
    + + + + diff --git a/structxt_1_1driven__align__mode.html b/structxt_1_1driven__align__mode.html new file mode 100644 index 000000000..19d1a7d66 --- /dev/null +++ b/structxt_1_1driven__align__mode.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::driven_align_mode< A1, A2 > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::driven_align_mode< A1, A2 > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::driven_align_mode_impl< A1, A2 >::type
     
    +

    Detailed Description

    +
    template<class A1, class A2>
    +struct xt::driven_align_mode< A1, A2 >
    +

    Definition at line 232 of file xtensor_simd.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class A1 , class A2 >
    + + + + +
    using xt::driven_align_mode< A1, A2 >::type = typename detail::driven_align_mode_impl<A1, A2>::type
    +
    + +

    Definition at line 234 of file xtensor_simd.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1enable__indexed__stepper.html b/structxt_1_1enable__indexed__stepper.html new file mode 100644 index 000000000..950fdbc13 --- /dev/null +++ b/structxt_1_1enable__indexed__stepper.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::enable_indexed_stepper< T, R > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::enable_indexed_stepper< T, R > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::enable_indexed_stepper< T, R >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T, class R = T>
    +struct xt::enable_indexed_stepper< T, R >
    +

    Definition at line 228 of file xiterator.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1enable__indexed__stepper.png b/structxt_1_1enable__indexed__stepper.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f1dcf2316db6f16684ab9c5d0ad53938d54e4e GIT binary patch literal 1080 zcmeAS@N?(olHy`uVBq!ia0y~yVAKb)12~w0WIZ#p7m$(;@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHvap1rKpm^}4%PW9#oFzei!3;n?7??B7zQVx3eAv^)F{Fa=?cCdCpRG7r z+Gn5J^I!P=5%&oxvzO$}uFnlK^(|rWj2F0b=**gwv}r;;D&8tH13oI9+|woQ`7Csg zhtc{+u9GTF_e?uyd3dqwdB*O=Z)bhJxkb@)UY2H>O697dP}cwEec{*^=i;+c=r! zkH%)m>^Ux>d-`z1-S6)A`L4Z_d!z4l)^6vXJ7*&wzc|!*{(JL`!h_`^r)7Ko1(tji zvyUpj>u)=&_uJ1OQ5C%Rl|8SYdwlxDUfDgzt3QQz98oQ8@7^&bxmi z{&jc6>dUVVsZU#J{#W+O@x+Nz`;T9L^*Bz2|F!bT3%dlj_wV+y@tAMn`Rf_bw7Pvx zwMr+eOCNsciwjIO!Ku%p}zm#Q9UB`{0~`N-4|9sp{#qqQWyM?x^=9pmmd`gnyj0 zWY50CukRGid@FXeQCR-%m2URfSCPgFp7$@l|2*l*t@9tH{+rxq{U)})GW~n@+4#2~ zZ+=y4oqtpR&hqQGb+V_gJo|r_)~;{AZFf(q`7IJ>v^96%s~y{uZs&g2+-@gvKDhbq zp4yWA5-z)yv^R_|)RUL*AV z&n%CR>~G)i_R;^}v^s6K#qC?=Jip>3D%)?E-%p-?%YA=c`J1}L-P`uxPB6O_e>_~~ z*U=wYmtRX<@%+c-ndNzR_xbYA;m02af4W|^{bf}(IsZ2&r_>Gp~oMWmZoaFx#u7AD(`|rUW@|ofO(w3)78&qol`;+0G72FegFUf literal 0 HcmV?d00001 diff --git a/structxt_1_1evaluation__strategy_1_1immediate__type.html b/structxt_1_1evaluation__strategy_1_1immediate__type.html new file mode 100644 index 000000000..a2fe4ba96 --- /dev/null +++ b/structxt_1_1evaluation__strategy_1_1immediate__type.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: xt::evaluation_strategy::immediate_type Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::evaluation_strategy::immediate_type Struct Reference
    +
    +
    +
    +Inheritance diagram for xt::evaluation_strategy::immediate_type:
    +
    +
    + +
    +

    Detailed Description

    +
    +

    Definition at line 225 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1evaluation__strategy_1_1immediate__type.png b/structxt_1_1evaluation__strategy_1_1immediate__type.png new file mode 100644 index 0000000000000000000000000000000000000000..83e850ff693758c93dc8f13e483ad7b6fb0511cb GIT binary patch literal 815 zcmV+~1JL}5P)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0008I zNkl^dfh3)4QIez& zElQH~p+_mr>hfZqCSRD3Ozk9jMK7nE@A=@v|Aul~_VZVi4PmowmU6QZOQtlO7erfe zzQ0BH=7l8h)%92gvb`cvHZZWgs(B+@IkAz8%Q1c+V^gR~Y|X~ZNlfP01vcT03u`0E zyYzI*J&9u~K1vxYBHpg2>=QD!BN(t;qb$aQeoT_T>A~(}2oCD9i8mRlYe4y5>M~Jo zpfRngmYJKV-DTZRn;vUpS=wqmmN)fSlDwujeDPmVZXM=&$VhUi6-$!zp+!lOKC~!F z(uZ!8A%x&v0Px590s!~=2+FUoPr&>L${XYdV15SW>ahUeMT-&ud}vVufDbK70Pvwj z2>?E{C;`BS79{}q(4qtYA6k?E;6sZN0DNds0)P)KN&xVoMF{|}PzWKo7lI@?*P@gp zA6k@>*J0Gu*Y}PWO`P%Y1FL7fBlGVMn=)3I@0k@&rojnpMRD-usvp_ zH)Hs@)uUzgW=ylTb>(%RwJ%NXO02RmMXsOUy2|^_drV8xaE@h=nrrwoGNhL_qw=oC z4m$g8i#YkAo!_~#`P@yk8JlC5W82J}8v42UskR*)-|V1=^M9x8_dcVH*}JDf%w?Og z$CSli;~+m(tB)w#`JJoLAvVK(#@brW$$lbZ2Mxm1b`yhgzWa0; zTixo~IYHSS?XWJ-QJ$^KL^-X?L}@!&sjqDyx=6!mdee_h#@3y3?|r6cmQxJU@EZ46 z-)K=vk`FCPN%El^We6d7*EcGN6qh1&o4f!3002ovPDHLkV1gkOiJJfb literal 0 HcmV?d00001 diff --git a/structxt_1_1evaluation__strategy_1_1lazy__type.html b/structxt_1_1evaluation__strategy_1_1lazy__type.html new file mode 100644 index 000000000..558f4b418 --- /dev/null +++ b/structxt_1_1evaluation__strategy_1_1lazy__type.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: xt::evaluation_strategy::lazy_type Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::evaluation_strategy::lazy_type Struct Reference
    +
    +
    +
    +Inheritance diagram for xt::evaluation_strategy::lazy_type:
    +
    +
    + +
    +

    Detailed Description

    +
    +

    Definition at line 231 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1evaluation__strategy_1_1lazy__type.png b/structxt_1_1evaluation__strategy_1_1lazy__type.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c4bd4412c1875401f0c09b634f42767bb59a85 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^M}atigBeK9^K~==QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nu5db&7UNyZ{3UAUEb%RDlUyIoE%0kXKwe^6S>-{GPmiKRR4m)YSUt}zOxL{g=F`J} z(iJlOJa1Jh-R%7g`(7q2?hkCq?7udLS1jjXP~5*GlQnstvtA6FlOKO^?{9^Z|6kVV z_2kT#C^Wlp!|v*yd28o*oIms{N|FlyhS2O8t7mW|4mW4^Wd|)-=x^JF%zE1AiQGTI`igLR)+m+ zq#0u3;vEZj*D@aq54fYakKwVkMp!>nL*y0>h6FxcE`}M--AoM6E-Yebup~;z*vNSI zo`gvyg}Pjxvz)t~COr#qF6`MNy;pi()W;>&o=+{MYG*r5I`+%JwZh&iUykE{+EV@W ziaoC`ZnBcNyk^6?n!L^1mY$65Q{2_X{rcdR@S7`KW)~+0eJ=U`h3DnrtKp_51sgW+ zJ`mmY*X?S-$`v)=p2qw+voO(qd!OoUzP{sE&y<}z`{?mj=dOs@XesZm)m>K0H2z7k zuZz0%W$7Y6m96&s>p3?@2maH0nq(6g_*V4G>|e578_RE5PM((}?)$&&z1FGc#>e0jbo@T-#NtCjORS8Axd qJibLkB@-CPz + + + + + + +xtensor: xt::extension::expression_tag_and< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< T > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class... T>
    +struct xt::extension::expression_tag_and< T >
    +

    Definition at line 331 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html b/structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html new file mode 100644 index 000000000..ce8273cf9 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and< T1, T... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< T1, T... > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::expression_tag_and< T1, T... >:
    +
    +
    + + +xt::extension::expression_tag_and< T1, expression_tag_and< T... >::type > + +
    +

    Detailed Description

    +
    template<class T1, class... T>
    +struct xt::extension::expression_tag_and< T1, T... >
    +

    Definition at line 369 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.png b/structxt_1_1extension_1_1expression__tag__and_3_01_t1_00_01_t_8_8_8_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..abd298beeca84b73f8d786224612d2bb6d1f6e7f GIT binary patch literal 1206 zcmeAS@N?(olHy`uVBq!ia0y~yVB7#?2XHV0N&m$c^njFffKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&O7DrDP$B+ufw{u??y;k69 znV!0A^ZWltmajW2D`c*owi%2ohspTdjHusO?={N6E!Dg zN4&zMKXU(P3wy5nxh^4d_RaUN&!3ug?(IG$`A64mc8Il~Eoj*$vmHDICpG1oK>3qe&6==#x@u7iG)$|JWZO|m&Z86+1Qu5hyP`~Jl9YftWewxy=l)9i89 zL61v{C)H6Su>dG2Fu&=j#A4y(9yNxB_>=4m77Pi@;yes*K74%G#n>PjW5BTC@bb8I z5)2UsS(zDvcf>FxZ~*0b9yT#H0FwiQK?^qFj+kUO^U6f_0u(|V-r_Bky zg>R1aZ#lxP`gFKs*W*hD6i zM>LaVcFe1jt2I2Q7rc~K^F04tlha=A$ji( zQ1`6j=HXKFtQQA`=))$@Nx + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< T, T > Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::expression_tag_and< T, T >, including all inherited members.

    + + +
    type typedef (defined in xt::extension::expression_tag_and< T, T >)xt::extension::expression_tag_and< T, T >
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html new file mode 100644 index 000000000..634a6c09b --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and< T, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::expression_tag_and< T, T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::extension::expression_tag_and< T, T >
    +

    Definition at line 346 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::extension::expression_tag_and< T, T >::type = T
    +
    + +

    Definition at line 348 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4-members.html b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4-members.html new file mode 100644 index 000000000..4f590e854 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< T, xtensor_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html new file mode 100644 index 000000000..325888f52 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and< T, xtensor_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::expression_tag_and< T, xtensor_expression_tag > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::expression_tag_and< T, xtensor_expression_tag >:
    +
    +
    + + +xt::extension::expression_tag_and< xtensor_expression_tag, T > + +
    + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::extension::expression_tag_and< xtensor_expression_tag, T >
    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::extension::expression_tag_and< T, xtensor_expression_tag >
    +

    Definition at line 358 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.png b/structxt_1_1extension_1_1expression__tag__and_3_01_t_00_01xtensor__expression__tag_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..990132f73f2c6e990e3b9a8cac18bfdafd6cf6a2 GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0y~yU@QT$12~w0q}}(ruRuyVz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aCi;<^`V@L(#+qrN1He2zu zs5ft!^?U!L%VHcq4VK(hwX0QKU$JfN!E-4dbM{9}OXZxF8u{md(7?)?v^VoE_Z(ghCr`U5|d*W}^d}2#gx%pw^jV=EsrW}p;Q9tQfv-G7(W})e< z%6#*`rJHMX*ROXi**jHkes<33m4{X(iw7d3$Tb%d#eh+}WWsQU1NJ zR&#B-G}pFQzQVWvN7a9Od$gkZc<$vs5y2$^2*x;gCe1JK7Mvtg zF#Cq%LVe@Er8S|}CH6YEEj<4*ZhqjK)Ly!;e(C*Jrk?X2tCnqhsUkT+XT8B(mARak zJul6KGumIC-lTJIlTNoZ!-xJ)%nXbSKLnRCH|X2jKeS@lAp~ObpFdp6@Il3gouT|t z5kr9*kdc0hGVnT`vuL z^!L)&$(esAhr||(U0Z+j|Irf9Sx54H?LEKFJ#c&3{(sZEpM2fgv2OdN$Hl$5mZdwq zZH4AFuKlya#qg2woojljF|+Gz8*N-BngrKuzcl$ujMu7lr74Vmy*R_^_#VtUJ zuU{VKyzw@*tzz+V`NK~RFSa<^eR%)fxv4k2?tV|UyM9~tR*0R5-Q(4-s($A$%Q2dj z7gT=tAj_r&tC-IS-w3K}S<3sLl6j!^ zaZ<>~zuJF=*Q>sCOY5AUyGw<2(kX3N9Ka*vSz?u!CadPsC&%g+wHZs~30)Hf7AXv# Lu6{1-oD!M + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< T > Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::expression_tag_and< T >, including all inherited members.

    + + +
    type typedef (defined in xt::extension::expression_tag_and< T >)xt::extension::expression_tag_and< T >
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html b/structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html new file mode 100644 index 000000000..4c887880d --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::expression_tag_and< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::extension::expression_tag_and< T >
    +

    Definition at line 340 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::extension::expression_tag_and< T >::type = T
    +
    + +

    Definition at line 342 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4-members.html b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4-members.html new file mode 100644 index 000000000..5635fe26f --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< xtensor_expression_tag, T > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html new file mode 100644 index 000000000..d0ba409e3 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.html @@ -0,0 +1,149 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and< xtensor_expression_tag, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::expression_tag_and< xtensor_expression_tag, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::expression_tag_and< xtensor_expression_tag, T >:
    +
    +
    + + +xt::extension::expression_tag_and< T, xtensor_expression_tag > + +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::extension::expression_tag_and< xtensor_expression_tag, T >
    +

    Definition at line 352 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::extension::expression_tag_and< xtensor_expression_tag, T >::type = T
    +
    + +

    Definition at line 354 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.png b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4351c53637dd35105e45b5238d2cedabaf53bd GIT binary patch literal 1192 zcmeAS@N?(olHy`uVBq!ia0y~yU@QT$12~w0q}}(ruRuyVz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aCi?OGRV@L(#+qrN1He2zu zs5ft!^?U!L%VHcq4VK)U{-Z>7eZ{u52hXK=%-Qduxm024ls^uWmN-n>!*N;lH_Ya(`-ubX}?$nC?TYf&7)B0uOjV=E?gO2W>q31dIhZj)gqb!r?duhL3 z*Z+))i|>9>rEP0>{l>K5_T5*MA4=Xh)$c8$YKZIGMo>g;o0sC3nD`LTD-t=xWd>4RU$;||E_=gw)E}Mit6LNi?eQfoeS>W+2<8={(aWcewJwM+G#f)dgb%a$Q6`5 z?sa`P+uKzCx6danc_ww{aL&Ope|fHLw@=G#JUp+CXEy)jMpu3+lX?LCe${l_4^gO>8dw<<2q~0Mb^2_LQ z{PFOu&fgDj>h->4pCGo!^Ua2H-`9VM-aBnc@tz~+%wi`oc|H|g<~_+cahHmvFpTlp zz;@}BrYS*1%nbiD>=^_Y8srnL7=C>EEWD1nK^x5cU=zd6;D4xup+H@Sogp2>Q1hV= zdChF?*HPKJ&T0)oBma~TF#U|`(M?D7?t(wT}$>(m7AZPb9&|B*jE!j z@Z>x_uG%Fy|KYYW&BwRCyykqO*tKNlquo>Iop_d%RJvAq^2&W{3O*+D-!R=R)E;^C za_An({Jqz0f_B=4Wbqd4|B*Cd@!luX!};bd{@X6NEjYU9Q)TDhXz}gEtJLnTS#yx( z)-U6u=`)uv%U`ROeec_gr@J=Y=>9$+116?Tf!Yuk- zwQa2h{IQB(rZFv^Z%cn;_G(V z_tiS<84hA0r45yjem751d4F7Dl8XIfao2zA3q3bI`|VpV8y?$Tw{C}--=ya?Inyl< z_&)O7^yqi^FZH;|PkPS?+21Y!#>lkr8Ge(_wY*e$=>ub&Is63}VF{7bj`sd%aCvSl Vy{VY(IPlo^i literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4-members.html b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4-members.html new file mode 100644 index 000000000..e96d4a17d --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and< xtensor_expression_tag, xtensor_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html new file mode 100644 index 000000000..e5c6eccd4 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_01xtensor__expression__tag_00_01xtensor__expression__tag_01_4.html @@ -0,0 +1,137 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and< xtensor_expression_tag, xtensor_expression_tag > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::expression_tag_and< xtensor_expression_tag, xtensor_expression_tag > Struct Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_expression_tag
     
    +

    Detailed Description

    +
    +

    Definition at line 363 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + + +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_4-members.html b/structxt_1_1extension_1_1expression__tag__and_3_4-members.html new file mode 100644 index 000000000..20fb3b488 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::expression_tag_and<> Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::expression_tag_and<>, including all inherited members.

    + + +
    type typedef (defined in xt::extension::expression_tag_and<>)xt::extension::expression_tag_and<>
    +
    + + + + diff --git a/structxt_1_1extension_1_1expression__tag__and_3_4.html b/structxt_1_1extension_1_1expression__tag__and_3_4.html new file mode 100644 index 000000000..5f0ba26c3 --- /dev/null +++ b/structxt_1_1extension_1_1expression__tag__and_3_4.html @@ -0,0 +1,137 @@ + + + + + + + +xtensor: xt::extension::expression_tag_and<> Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::expression_tag_and<> Struct Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_expression_tag
     
    +

    Detailed Description

    +
    +

    Definition at line 334 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + +

    Definition at line 336 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag-members.html b/structxt_1_1extension_1_1get__expression__tag-members.html new file mode 100644 index 000000000..23619589d --- /dev/null +++ b/structxt_1_1extension_1_1get__expression__tag-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::get_expression_tag< E > Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::get_expression_tag< E >, including all inherited members.

    + + +
    type typedef (defined in xt::extension::get_expression_tag_impl< E, class >)xt::extension::get_expression_tag_impl< E, class >
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag.html b/structxt_1_1extension_1_1get__expression__tag.html new file mode 100644 index 000000000..daaa428a0 --- /dev/null +++ b/structxt_1_1extension_1_1get__expression__tag.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: xt::extension::get_expression_tag< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::get_expression_tag< E > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::get_expression_tag< E >:
    +
    +
    + + +xt::extension::get_expression_tag_impl< E, class > + +
    + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::extension::get_expression_tag_impl< E, class >
    using type = xtensor_expression_tag
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::extension::get_expression_tag< E >
    +

    Definition at line 323 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag.png b/structxt_1_1extension_1_1get__expression__tag.png new file mode 100644 index 0000000000000000000000000000000000000000..f43eb63b93f8c4af2bdd0d72cf9756289b54028c GIT binary patch literal 951 zcmV;o14#UdP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0009* zNkl`Ad9?s6 z01E&~&Z`VSAjv}YXe&(8luM0B(y7(!Mm!6J=Z_@4UI9RoL%q_MB)x99LgN zmmMB|8b<(*<`KYg5xQJFfYhUIY0OMT*E%-81ivY(2W08xW)4X6ittRzHm^W_ zk8L<{H&vroAhvA10{$B9@gwOqPC)e)@HwE81WEF38ot*z9(0ndt8Q}7`WFD?_;>af zpJkG)sPs5r{L=g50L~Lll1;sS0-B?I9so)HH(CG|fCYdg=hXwiwr$(Q0)UU|3jk); z>;S&LCMPgEfXDjhCNMpKl>`@n1pokM)&c+kGiw0=fSI)b0Km*z003ZSEdT&8vlajV zm{|(|0L-if003sz0ssIrYXJa&nY91_z$X<#2r~;olIGO{umCIok~FWn0P0nZ4wpdw zjCQM6*KN=7lGN4v07%kM?>%mP0FpFT9l$eY0X{!Xbgv4J|2=l}@!_*;sq^{ixg=BWoq&{)>?%y2DlT9TKqm*BmL-HBWn}>1 ztvMjgD`qE?vdt@y-(wq2iOp1vUV+%M^$PfFw8!`57hCRffF#w_$^nw}HVub(%N%}Y z^6LQno}C->vp2i#k&hxt*Yx`*;L + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::get_expression_tag< xtl::xoptional< T, B > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html b/structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html new file mode 100644 index 000000000..256bea0e8 --- /dev/null +++ b/structxt_1_1extension_1_1get__expression__tag_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::get_expression_tag< xtl::xoptional< T, B > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::get_expression_tag< xtl::xoptional< T, B > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xoptional_expression_tag
     
    +

    Detailed Description

    +
    template<class T, class B>
    +struct xt::extension::get_expression_tag< xtl::xoptional< T, B > >
    +

    Definition at line 47 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class B >
    + + + + +
    using xt::extension::get_expression_tag< xtl::xoptional< T, B > >::type = xoptional_expression_tag
    +
    + +

    Definition at line 49 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag__impl-members.html b/structxt_1_1extension_1_1get__expression__tag__impl-members.html new file mode 100644 index 000000000..b42598074 --- /dev/null +++ b/structxt_1_1extension_1_1get__expression__tag__impl-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::get_expression_tag_impl< E, class > Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::get_expression_tag_impl< E, class >, including all inherited members.

    + + +
    type typedef (defined in xt::extension::get_expression_tag_impl< E, class >)xt::extension::get_expression_tag_impl< E, class >
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag__impl.html b/structxt_1_1extension_1_1get__expression__tag__impl.html new file mode 100644 index 000000000..3d1a74bef --- /dev/null +++ b/structxt_1_1extension_1_1get__expression__tag__impl.html @@ -0,0 +1,149 @@ + + + + + + + +xtensor: xt::extension::get_expression_tag_impl< E, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::get_expression_tag_impl< E, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::get_expression_tag_impl< E, class >:
    +
    +
    + + +xt::extension::get_expression_tag< E > + +
    + + + + +

    +Public Types

    using type = xtensor_expression_tag
     
    +

    Detailed Description

    +
    template<class E, class = void_t<int>>
    +struct xt::extension::get_expression_tag_impl< E, class >
    +

    Definition at line 311 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E , class = void_t<int>>
    + + + + +
    using xt::extension::get_expression_tag_impl< E, class >::type = xtensor_expression_tag
    +
    + +

    Definition at line 313 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag__impl.png b/structxt_1_1extension_1_1get__expression__tag__impl.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3ee0af8a23df0a8388e55c14b6764ca816820d GIT binary patch literal 1119 zcmeAS@N?(olHy`uVBq!ia0y~yU{nLL12~w0WV4t?1CWvq@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHvap1rKpm^}4%PW9#oFzei!3;n?7??B7zQVx3{L0hCF{Fa=?cA4>q!oEu zW-rTHegA*wh8=xTzLv9&@a*N45q7E+~(_gbd0dr!)m8-3s3z;n{->uRrAw~I|y;Vt34 z{JH-0@1K`lru)DASl+od`PB!rEj63eGjzHymM6S@5*>ZIbXx7^?qJD>Nw@yEfA(H= zYo4!X)~rdZw&i$ul}fj1vv0nz?|8+!bGIICkW>42Bv|)Y-mcpyFRXo2&BIpUY>`6D?2xA5igJ z$23`GXH|li=F$K!OcCe*NO|V|bupz}T>yedz-hhGJGV28)Fa zEDY;_vOBnZ7#?T=Uv&4f+}r;=hjjZC)h6q0ExVlj`t9`2>pR2L z^*!fZs`Yu@W4-L_E8mw_XPoNTxYW>Ce%ZC^@49gdUu>AeR{Ho7Z{OM)jqben&kSbw z8838A-7OQ%|H!P?W7fAmED0n9m_X!L_@;iX&NV$hsq*EmUrC3T>df}P=e_;AP1Va+ z-Mf#7d&K?<+1jb%|H>&>>E!g2v2Xq!|9w?${-Kch|I1FiJvsSF + + + + + + +xtensor: xt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename std::decay_t< E >::expression_tag
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >
    +

    Definition at line 317 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > >::type = typename std::decay_t<E>::expression_tag
    +
    + +

    Definition at line 319 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de4e085c648bbd1efca51f7b5461e984a5.html b/structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de4e085c648bbd1efca51f7b5461e984a5.html new file mode 100644 index 000000000..4e6a9a9b9 --- /dev/null +++ b/structxt_1_1extension_1_1get__expression__tag__impl_3_01_e_00_01void__t_3_01typename_01std_1_1de4e085c648bbd1efca51f7b5461e984a5.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::get_expression_tag_impl< E, void_t< typename std::decay_t< E >::expression_tag > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html new file mode 100644 index 000000000..dfe681565 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html b/structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html new file mode 100644 index 000000000..93fd7acba --- /dev/null +++ b/structxt_1_1extension_1_1xarray__adaptor__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using traits = xarray_adaptor_optional_traits< EC, L, SC >
     
    using type = xcontainer_optional_base< traits >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC>
    +struct xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >
    +

    Definition at line 400 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ traits

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >::traits = xarray_adaptor_optional_traits<EC, L, SC>
    +
    + +

    Definition at line 402 of file xoptional.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_adaptor_base< EC, L, SC, xoptional_expression_tag >::type = xcontainer_optional_base<traits>
    +
    + +

    Definition at line 403 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__adaptor__optional__traits-members.html b/structxt_1_1extension_1_1xarray__adaptor__optional__traits-members.html new file mode 100644 index 000000000..d7de04071 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__adaptor__optional__traits-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1extension_1_1xarray__adaptor__optional__traits.html b/structxt_1_1extension_1_1xarray__adaptor__optional__traits.html new file mode 100644 index 000000000..ffbe689fe --- /dev/null +++ b/structxt_1_1extension_1_1xarray__adaptor__optional__traits.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::extension::xarray_adaptor_optional_traits< EC, L, SC > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xarray_adaptor_optional_traits< EC, L, SC > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xarray_adaptor_optional_traits< EC, L, SC >:
    +
    +
    + + +xt::extension::xarray_optional_traits< EC, L, SC > + +
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using derived_type = xarray_adaptor< EC, L, SC, xoptional_expression_tag >
     
    - Public Types inherited from xt::extension::xarray_optional_traits< EC, L, SC >
    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xarray_adaptor< value_container &, L, SC >
     
    using flag_expression = xarray_adaptor< flag_container &, L, SC >
     
    using const_value_expression = xarray_adaptor< const value_container &, L, SC >
     
    using const_flag_expression = xarray_adaptor< const flag_container &, L, SC >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC>
    +struct xt::extension::xarray_adaptor_optional_traits< EC, L, SC >
    +

    Definition at line 394 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ derived_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_adaptor_optional_traits< EC, L, SC >::derived_type = xarray_adaptor<EC, L, SC, xoptional_expression_tag>
    +
    + +

    Definition at line 396 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__adaptor__optional__traits.png b/structxt_1_1extension_1_1xarray__adaptor__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..8f0f2cd16d33834342be2e6b53da1351cc829ea1 GIT binary patch literal 1271 zcmeAS@N?(olHy`uVBq!ia0y~yU3f*F8(FfeDDeT9L6rODI9F{Fa=?c9fx9&7Nl z%r3hcvj4wuycwTDW8s`NX6D9AW33(wD0ZJO`Ye8XTkgu-+uIxxl~0OzwrQ@Ml(J=# zmZzIGjPY9Qs?(&&ed*zsResLP;|#a_{YPM9RPek1udZg^)J^D7IcfY?c$JFes>#1~ zR<4`2_2k?)o)z3PlsrHA_^`Tx9{!3wF@tAJ8?_1+I%L@x}x3x&VQY= zS$}is&aQXy9=8Jb+t+iv_LyXI`E#7^6N88s$My+t`mu4wyBqTIwvR7Vu)qF0r~dTw z8rusO_WEsI_wjT1o(E0LJh~4T^!P+c9$)dM?@spCB~}7bOzErG*BUHXv9Ic+!Jm8j z#kF%^9p;s~8uwUgoAz=wi9bj4zc5`D^z+a9?5p>|X}uo*-t?IG0*3O}D8;lx{jvvi-|BC8d-ZzF*M=;I_1`8Ry_R==cJOZ5?H?`5^n!Jl$m$2j{(e=n zY5fYmG|`8vr@Fe|xVO8`;XL1i<*#4H*e=f9Ci`r1{m#$(*m$=8GJgH{=#$mwQ{HW9 zXARXh+S6lxv!Tv$l6c9%aL-T5R#v(mpWZRG}G;zrkl~&D_UO`(Xtx|E- zhB2}iRP|Ia+I_3^xw&r1{-bLS{Q@Pi&GYYleYIzclz|&tz|{{z(InUPpuG+rn_?gfz(l_Vsu)VY2 zW7Fcg`hNn~CMK^J%aqV6N?z}+Rj0Ge`rC2$^A=k!D%VY1tNu~DE2Vw@=lq{Bj{GJ& z*9Wi7{24A<`N+pyR5na4bt1OC@HZ>w_C-Ya`{vh>vzb<^(u{~lg) zZ;|c$vsTX;-rf8<_lo?o?e~9W8S5WDy<;Zt3-L*3UhLEIl)rdcI&S3)B9%t?{N9|Ms3m;mwe~HHdnc~|2EsJ<(dDozJS5=*Hf=mlSI}o(eebQ nCMaW9pzhKsA(~5%ytKb3B6alt9=-rz5yjx?>gTe~DWM4f1siW% literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xarray__container__base.html b/structxt_1_1extension_1_1xarray__container__base.html new file mode 100644 index 000000000..aba023ccb --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__base.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xarray_container_base< EC, L, SC, Tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xarray_container_base< EC, L, SC, Tag > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC, class Tag>
    +struct xt::extension::xarray_container_base< EC, L, SC, Tag >
    +

    Definition at line 33 of file xarray.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html new file mode 100644 index 000000000..1e82eec43 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html new file mode 100644 index 000000000..178945a48 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xoptional__expression__tag_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using traits = xarray_container_optional_traits< EC, L, SC >
     
    using type = xcontainer_optional_base< traits >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC>
    +struct xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag >
    +

    Definition at line 380 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ traits

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag >::traits = xarray_container_optional_traits<EC, L, SC>
    +
    + +

    Definition at line 382 of file xoptional.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_container_base< EC, L, SC, xoptional_expression_tag >::type = xcontainer_optional_base<traits>
    +
    + +

    Definition at line 383 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4-members.html new file mode 100644 index 000000000..aff7b9bfc --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html new file mode 100644 index 000000000..15e3dd08b --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__base_3_01_e_c_00_01_l_00_01_s_c_00_01xtensor__expression__tag_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC>
    +struct xt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag >
    +

    Definition at line 36 of file xarray.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_container_base< EC, L, SC, xtensor_expression_tag >::type = xtensor_empty_base
    +
    + +

    Definition at line 38 of file xarray.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__container__optional__traits-members.html b/structxt_1_1extension_1_1xarray__container__optional__traits-members.html new file mode 100644 index 000000000..784effc85 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__optional__traits-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1extension_1_1xarray__container__optional__traits.html b/structxt_1_1extension_1_1xarray__container__optional__traits.html new file mode 100644 index 000000000..e3f717398 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__container__optional__traits.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::extension::xarray_container_optional_traits< EC, L, SC > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xarray_container_optional_traits< EC, L, SC > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xarray_container_optional_traits< EC, L, SC >:
    +
    +
    + + +xt::extension::xarray_optional_traits< EC, L, SC > + +
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using derived_type = xarray_container< EC, L, SC, xoptional_expression_tag >
     
    - Public Types inherited from xt::extension::xarray_optional_traits< EC, L, SC >
    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xarray_adaptor< value_container &, L, SC >
     
    using flag_expression = xarray_adaptor< flag_container &, L, SC >
     
    using const_value_expression = xarray_adaptor< const value_container &, L, SC >
     
    using const_flag_expression = xarray_adaptor< const flag_container &, L, SC >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC>
    +struct xt::extension::xarray_container_optional_traits< EC, L, SC >
    +

    Definition at line 374 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ derived_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_container_optional_traits< EC, L, SC >::derived_type = xarray_container<EC, L, SC, xoptional_expression_tag>
    +
    + +

    Definition at line 376 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__container__optional__traits.png b/structxt_1_1extension_1_1xarray__container__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..e87317b9e4dad57d8b34a6828a4db32696ff9efe GIT binary patch literal 1282 zcmciC|2NZn90%~vBGk?9bt_3XOFqk89rO)LqBNI}w7aa77V|Zym@lmu_NBT-xz=uz z8?knClIV;?8|r&CRA9 z&+fi!`de~31d9hu@2};#sQ48Cm@^^Fo`V$F7)O0-VB@k2#c78smB!2I*yHtqb}UZb zASirSS__9c`e3G3$@!!TlAQlTl#^ryWbw0(9b3Y7gIZDFF#My^kDWi0byxxF+!c$e zqG#xy(eC9`!#!fo2?2}_LOzFnBC@F!@Sd>A@cjv#^j6Cj`PmbuT((2h4Ke8OCarIQ z+^7}Z$RBp-=E=y__Z`o_Z9yBwnjOcv9)odPzsy}6cr&7rvSN0zLGDQGylt1e?Ts|$ z@~}k0X{{M$PGu9mWxPW`>oFUo(E6Hn-b$}$Gu*V?T0`ISCw&vAkNW9fwl)>*6AY-2 zG@RR}j~S(qp7#xq_@ec2^?pT z&{h*ZD4ZcC-~yCO2?3Ptk~!XokxtNbc?{+KYINC@=%sLt)q} zW$OKGafojxB5=|zWD+SsBZ=%h{5NznHGC4`q@3^K2Yf3230G9K}&3M!7>oFTXLBF@fsD0!v2RV8lTap zHW*GYD=X@v{H074_efTvZzqc3g7+4)SKazHK{j8yPFdz(=}h2O>+Eu7KaiTYcTI4x z>M63S$yo8;AlAz2?_?c&5Zc@nlx?+v72)iX7nXFSCTAO2e|ra4G*ItcTP!7lOrF6o zhwgEr&D%=cR~Ds7_ig06H0ojA^v{>7{<4i4d5uNy6a>Z;J2#+yS6J6br+DNU2-CyejPhv zDpO%z4J*;Vsk=^n(I+zaiyZL3wq4LVq~4-mm&Uq`N)U6cV~zq}-bmb}C3#KBZ?3v= zn$Fs1NT~V#_(^eZXNK#n2Cl52&-ZWngYpQM!ynDh^!6y9buH!2^|o{eR_4pWkQ<5S^<9`cCk6SXWz)^>-Qc`d4cuPey~ zin(Wy2Pdr?O00yd5bW%p`NQnq(p7G=f6k?=L)kZn=c$D7QA9nsw*AGf + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xarray_optional_traits< EC, L, SC > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__optional__traits.html b/structxt_1_1extension_1_1xarray__optional__traits.html new file mode 100644 index 000000000..6c8fc66d5 --- /dev/null +++ b/structxt_1_1extension_1_1xarray__optional__traits.html @@ -0,0 +1,250 @@ + + + + + + + +xtensor: xt::extension::xarray_optional_traits< EC, L, SC > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xarray_optional_traits< EC, L, SC > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xarray_optional_traits< EC, L, SC >:
    +
    +
    + + +xt::extension::xarray_adaptor_optional_traits< EC, L, SC > +xt::extension::xarray_container_optional_traits< EC, L, SC > + +
    + + + + + + + + + + + + + + +

    +Public Types

    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xarray_adaptor< value_container &, L, SC >
     
    using flag_expression = xarray_adaptor< flag_container &, L, SC >
     
    using const_value_expression = xarray_adaptor< const value_container &, L, SC >
     
    using const_flag_expression = xarray_adaptor< const flag_container &, L, SC >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC>
    +struct xt::extension::xarray_optional_traits< EC, L, SC >
    +

    Definition at line 363 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_flag_expression

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_optional_traits< EC, L, SC >::const_flag_expression = xarray_adaptor<const flag_container&, L, SC>
    +
    + +

    Definition at line 370 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_value_expression

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_optional_traits< EC, L, SC >::const_value_expression = xarray_adaptor<const value_container&, L, SC>
    +
    + +

    Definition at line 369 of file xoptional.hpp.

    + +
    +
    + +

    ◆ flag_container

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_optional_traits< EC, L, SC >::flag_container = typename std::remove_reference_t<EC>::flag_container_type
    +
    + +

    Definition at line 366 of file xoptional.hpp.

    + +
    +
    + +

    ◆ flag_expression

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_optional_traits< EC, L, SC >::flag_expression = xarray_adaptor<flag_container&, L, SC>
    +
    + +

    Definition at line 368 of file xoptional.hpp.

    + +
    +
    + +

    ◆ value_container

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_optional_traits< EC, L, SC >::value_container = typename std::remove_reference_t<EC>::base_container_type
    +
    + +

    Definition at line 365 of file xoptional.hpp.

    + +
    +
    + +

    ◆ value_expression

    + +
    +
    +
    +template<class EC , layout_type L, class SC >
    + + + + +
    using xt::extension::xarray_optional_traits< EC, L, SC >::value_expression = xarray_adaptor<value_container&, L, SC>
    +
    + +

    Definition at line 367 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xarray__optional__traits.png b/structxt_1_1extension_1_1xarray__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..1d29c2abb7c26b2ddfd2e7bd8f641b99c629dea2 GIT binary patch literal 1756 zcmcIldsNcd7XBHNl%;0cHD5iz$E1ZOrjS{S06N>-1d;R zSIU2vN~Pd>80+aRaBpKqXiyjc#%sfCUG*>k7$#!+2jfQgoyjo#67)@B>fNorT=>kYdL`*ae4BkVU$R$=KbqD^uF|K4Ga$ajXwxLd?#N($uHJNe8#y_&4sJ&#k-k z&2Gh!{z0Ru(4}Vb;*Hvc*Xld8E3=*oELsggEb?BTb@x1(2viLh@jwH(>|6v-Fk z^6|ax_=*yqP4c!$8e4HnUj*^TZ{_mBC+x@NR^+TWBww=j79#&&$q$p4y)%gAc)2_# zuB;E?F177Cu6ax7nwGmEy&2#EXvp(%M4d`sEE2O{9-wF5$9N)bXyE30ONBhy0%Td> z2uS`ZJ?KAzLVe+E2|%R=C>Mk~6+$8+EWND2X#d|)%MQ^)z(ksz#x$^{em7waK>-cD z7()^ebcMcI4b)g$>cI!rz+dAC08~8;rZ;a4Uak9&_&lSr0dA_D_}1fhq835INg~|h zJH_b)o>|fZB{_wrSd}s<&~{1K7&fD`a;FCJ`Nsiym`^rS(;rD7+;K4 zb(+@;N8wX0zNE&J`sc=bN*yN*Kh8m$R`F62?0os18Ok>PR~&8AnDf;-eA;uE19wQV z=}}vUvjCRwIAMWxiSd%~xhrQh%Vt7aO{%EwVp>rq^-W0gs~FSgO_QjMcClezw z89V6Yi@eAz%|L?K9G6@4CM}pr-aXrynK{i>);hhpTytfvM7DSuXF5J*RxcLYrWgr} z+fa==G10ZJBlrQDtBI5^G)SIm8``16Zo5D^nVUXcF(PQ)chh5(JUoo%o?fU+t^388 zFS<66EtydA*gc-dyE6DzO|Crr%LPv6p}YLS+sLexGK76&T%;zL@M1H6{;~1lL?sQZ zWwFXDUwHq%Cu`2BBlnWM-4AA)XyTk7vODfKFwkojDQm + + + + + + +xtensor: xt::extension::xbroadcast_base< CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xbroadcast_base< CT, X > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xbroadcast_base< CT, X >:
    +
    +
    + + +xt::extension::xbroadcast_base_impl< xexpression_tag_t< CT >, CT, X > + +
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::extension::xbroadcast_base< CT, X >
    +

    Definition at line 60 of file xbroadcast.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xbroadcast__base.png b/structxt_1_1extension_1_1xbroadcast__base.png new file mode 100644 index 0000000000000000000000000000000000000000..652d0eb4f16d81797024c70f3a68e8b3021012cc GIT binary patch literal 1289 zcmeAS@N?(olHy`uVBq!ia0y~yU|bAj2XHV0$!4opM}d@dfKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&OmMNYtjv*C{Z|8oTv|5Mf zDF5-9bNBoguFqxlRajB}{o3re)BBcZHE{fN{G>lEH8SY*CY{9AR+V5C$&iyBD#_ZC z6H{_jl_&MAO>vpD@v5Pgisgyz=gx>rowt?apZ~=|-enT|EXy4^`u+ER{jX9u893SR z^OCGstF{{}o%FL$bD1=6ol(`^_w_24S+`#PeAS!XbIq{p^{HD4^`+6(SEk=v zvv1$m8mU$H-!5y@O0HgW_*dBFf4|PXs(zm;yA zM-KfcpdQ!o}QY%FOLz7hAgjGkN1#eQdQ`H1B<;=Q|71Lp^F=_T8HNDe>~; zUkfG+$_QOfe!+LUc<$ZK-|Jp2U(s}NcD4Ur8Tnf`o?BTTNj51mP~0f2sUrJQ-#`3{ zf86;?z89?iOuKY3akK30+fxG1R!c9Q^^x!5Ttg$fZD-T%P2LDz&C1GA{2E$(f5)jh z)ni}fo;())I{CfPr^p|>Won!2*OleuD(@-2 zveZkKZL?5$n3?13)>X2}YWCgrvmXUyozb{_GAA#6!76u^pV3csdQ{wF-+4?ju04OU zM>CxiJVt#m94UGALblpLq_xVQkV?Cb!#LP)T4ZHkJLP;|NBr~O7hzdfAN_q_Vm$4^D4A8-G+U+&G1 zX!9};HzlRuyGLGJ&Huld_xrPX+l`~9uiW-%m+e`H(?H2v1aSK|qe@VyA zYYE*V)xKwVKf=>&6koRN^PX#G7w+lo*b{30WY^n_8M!ysJU(mqeO{HN-Ik5#OUpdW zmj}CDD_~ywTk`6j?S`u)-wWK8RDPUn&GpUsuw3BU_2R;ByPv-h^D=*CwfT`9_sSCE z)D+>#lgh=|`=?F3UG-9?^y>@Za~I?8e-#S7`h9i#;T64-mU|b&%5~f#t(hn9Vb}-p4ND32@k@P9xf`|CQa<{07j+YL}2VHDQ*0k5aOk|GRUiQ b)qe) + + + + + + +xtensor: xt::extension::xbroadcast_base_impl< Tag, CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xbroadcast_base_impl< Tag, CT, X > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT, class X>
    +struct xt::extension::xbroadcast_base_impl< Tag, CT, X >
    +

    Definition at line 51 of file xbroadcast.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html new file mode 100644 index 000000000..8ef384491 --- /dev/null +++ b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html new file mode 100644 index 000000000..232755d72 --- /dev/null +++ b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xbroadcast_optional< CT, X >
     
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X >
    +

    Definition at line 574 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::extension::xbroadcast_base_impl< xoptional_expression_tag, CT, X >::type = xbroadcast_optional<CT, X>
    +
    + +

    Definition at line 576 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html new file mode 100644 index 000000000..a2b2fc5cd --- /dev/null +++ b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html new file mode 100644 index 000000000..f0d12c697 --- /dev/null +++ b/structxt_1_1extension_1_1xbroadcast__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X >
    +

    Definition at line 54 of file xbroadcast.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::extension::xbroadcast_base_impl< xtensor_expression_tag, CT, X >::type = xtensor_empty_base
    +
    + +

    Definition at line 56 of file xbroadcast.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xdynamic__view__base.html b/structxt_1_1extension_1_1xdynamic__view__base.html new file mode 100644 index 000000000..23853b0cf --- /dev/null +++ b/structxt_1_1extension_1_1xdynamic__view__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xdynamic_view_base< CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xdynamic_view_base< CT, S, L, FST > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xdynamic_view_base< CT, S, L, FST >:
    +
    +
    + + +xt::extension::xdynamic_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST > + +
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::extension::xdynamic_view_base< CT, S, L, FST >
    +

    Definition at line 78 of file xdynamic_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xdynamic__view__base.png b/structxt_1_1extension_1_1xdynamic__view__base.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c098f3d0bae7379f4148db8a923901f0751b42 GIT binary patch literal 1469 zcmb_cc`(}v6#kJ$>#EK=q6j^rY8)-XhVlVo*NTpI4Tv!$n^SbKnP8$=nseKDvE>~8^6^wwg zo?@am1_#LUzs**@ga-gnH?;HjKDXpnN|$2!_A2*X!$K|Aq_2(EUA`kW&8*lXRReAf z7gwHiFL&O1(`@Py6;SkfBr6MnLVTN0;vp8DGM^%XPhtyel%dxP5-Sym$9gbfOMN?P zdIHEP)PwVl`}5~0?5B~Do^;Mi!md*RD+04pY~!d;aOh3O7S26qv)&-0MgB((-t%vO zA0!*!|HUYc*4`x*K|}&Cc=k$0ad%rMUVq!;M&mpwKzv|{6E?kCmOgQ5^b?bQ!s!GbvAu@W*xF!9Y|=)8JD z(~o4nhMt|NlGRGv7gga+l8rOvir&G*{(X2FzcyLfBA=!mQNN^^dH_!;EhnpcZaWnJ ztP`lzj+A~jWth;!jn<6(?1Pk;vJ*>+7fbvLT^YOhLoHW`cl&etcj9Z!zS#H98nz(+ zSRLgI)#vgFMaIJE#e`NXDAB#y6)z$B!1^pZ70KWw5|MwkDn%&1svhGP+%3 zgbGvW`c6^j*6;Idz0^p=fOt0ao&JihMKmF}b>PJ>{y4p_L(h$LOk)@fFd^8it|!|q zTr}Pmu7+cE9rxB8&{~gx(C$&K&UW9b8UG+4J-TVx&pU#&zoHt9}v5*Xzh5 + + + + + + +xtensor: xt::extension::xdynamic_view_base_impl< Tag, CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xdynamic_view_base_impl< Tag, CT, S, L, FST > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT, class S, layout_type L, class FST>
    +struct xt::extension::xdynamic_view_base_impl< Tag, CT, S, L, FST >
    +

    Definition at line 69 of file xdynamic_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html new file mode 100644 index 000000000..2b38b47ca --- /dev/null +++ b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xdynamic_view_optional< CT, S, L, FST >
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >
    +

    Definition at line 546 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST >::type = xdynamic_view_optional<CT, S, L, FST>
    +
    + +

    Definition at line 548 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_b6d8a7e2879c1a8ee678dc4152371fc6.html b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_b6d8a7e2879c1a8ee678dc4152371fc6.html new file mode 100644 index 000000000..27fcde31e --- /dev/null +++ b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_b6d8a7e2879c1a8ee678dc4152371fc6.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xdynamic_view_base_impl< xoptional_expression_tag, CT, S, L, FST > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html new file mode 100644 index 000000000..fa114fd28 --- /dev/null +++ b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >
    +

    Definition at line 72 of file xdynamic_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST >::type = xtensor_empty_base
    +
    + +

    Definition at line 74 of file xdynamic_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01aef227a96c9a95959d74cc8b3d2137ea.html b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01aef227a96c9a95959d74cc8b3d2137ea.html new file mode 100644 index 000000000..09c6b5950 --- /dev/null +++ b/structxt_1_1extension_1_1xdynamic__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01aef227a96c9a95959d74cc8b3d2137ea.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xdynamic_view_base_impl< xtensor_expression_tag, CT, S, L, FST > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xfunction__base.html b/structxt_1_1extension_1_1xfunction__base.html new file mode 100644 index 000000000..48b7bdcc3 --- /dev/null +++ b/structxt_1_1extension_1_1xfunction__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xfunction_base< F, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunction_base< F, CT > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xfunction_base< F, CT >:
    +
    +
    + + +xt::extension::xfunction_base_impl< xexpression_tag_t< CT... >, F, CT... > + +
    +

    Detailed Description

    +
    template<class F, class... CT>
    +struct xt::extension::xfunction_base< F, CT >
    +

    Definition at line 115 of file xfunction.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunction__base.png b/structxt_1_1extension_1_1xfunction__base.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb21ec5844674465af8646811a0dc1f6c39fd4b GIT binary patch literal 1267 zcmb`H`&W`@9Kc^)&LV^DlwHW#>R^{~3NNT_ z=4GjY1~Idvn534eU}i-QZG~&)C7m!6Gm%NANbIej_6O|w;d{TF^F5#Q2qMFGEkR*X z001ljcLzrUfP(_DBNu*x$V;E1sEAq}8A_wr?RLa`_1cmly!-1`&rPW-OMZK$R;!VC z4E(eT$t_Bc4vzs4|Ksy_EYktNf^0B&JB{ryad|jx^{mv(`|w{iOcH`3VG zd#Vu?iQnLT`jxQA`&^; z9s?hT>1BLpsxv?O!*w9EUoFwrcbXrE`-_)L>yJz+RdrsmKDw;q&-;uV5`||mzU!QL zd*z)wBrW&rd#--Xw}TLUTk>qt!vxRYf6iifKll1&a9xz@@S#<`*Q?K?UGUHeT1{W| z+?(5bH@uzn-IjmD?;q_CnCciG?q#~6Qb)GlD8?uPIIhx@&6b-@Rg0_gFErGjI2Td1 zNH7o}>W`Y@W|a0BsqP3-^;q_ShwrNZ1=!kc_Uz}l(Vm-wc(eDUaU!0py60(F(uJ%kZ(OcUt z#No8;^{NnZEt%dhR$C$5LgQ4Qeo(>75X|1<`5x6YE>&9R9{W(^ecVmh8AV3PsP&mE zX0yUEk=53f>&&ebclTaf7k3-qNG0Y6GMH_HN4>l|zZLb?dGyB)xbZBs+e%BSotRga z1_))xy|?AiM+C2engSWElt}%RsYq$OFutMnhH- zy8C!m3lZ|&&o;L)-(RHd6h9;kT8iv!2qx-MwP%#d7M$jYcvB#pt~zEYA~3k+v*&zY zzDX|LT+Bb&Jauzr5hYJz%grAyt>oTKKj^guH@3OiUj^%2JT7_JFUk^JFhDT9U zYjwygb={V_QT70|BBhqkc$7TT&5Yb%U`tH=h^E!um}|H;D07n;<2IPb6An!p8t%o9 z9R8{w7|ERSKHY;^KRr4=Tyt-bhS9c$?ekvci9Q{NA()f=nPgt^vy^T{|BJp;dlT+F z#&kfOYOJp617e}}{WJ4q8!JEUjB@8UJ%5kZy1y9X==Au^&XWh3^ELd3+r{`H?3A3| z5Y|{Y=|BaWDgHAAFikFTm8d$#@uWE-EF;_MOu^azz27qAGQzVZxY;NZj0>F87e$9u c7Dk&Zc#tL4V9&k8M7}2gq=X08?l^GvU(?xfnE(I) literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xfunction__base__impl.html b/structxt_1_1extension_1_1xfunction__base__impl.html new file mode 100644 index 000000000..58e482945 --- /dev/null +++ b/structxt_1_1extension_1_1xfunction__base__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xfunction_base_impl< Tag, F, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunction_base_impl< Tag, F, CT > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class F, class... CT>
    +struct xt::extension::xfunction_base_impl< Tag, F, CT >
    +

    Definition at line 106 of file xfunction.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html b/structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html new file mode 100644 index 000000000..417cb244d --- /dev/null +++ b/structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html b/structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html new file mode 100644 index 000000000..2b543eaef --- /dev/null +++ b/structxt_1_1extension_1_1xfunction__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xfunction_optional_base< F, CT... >
     
    +

    Detailed Description

    +
    template<class F, class... CT>
    +struct xt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... >
    +

    Definition at line 511 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::extension::xfunction_base_impl< xoptional_expression_tag, F, CT... >::type = xfunction_optional_base<F, CT...>
    +
    + +

    Definition at line 513 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html b/structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html new file mode 100644 index 000000000..b27e45fc3 --- /dev/null +++ b/structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html b/structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html new file mode 100644 index 000000000..8d6f71e3b --- /dev/null +++ b/structxt_1_1extension_1_1xfunction__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_8_8_8_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class F, class... CT>
    +struct xt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... >
    +

    Definition at line 109 of file xfunction.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::extension::xfunction_base_impl< xtensor_expression_tag, F, CT... >::type = xtensor_empty_base
    +
    + +

    Definition at line 111 of file xfunction.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunctor__view__base.html b/structxt_1_1extension_1_1xfunctor__view__base.html new file mode 100644 index 000000000..1414c8d62 --- /dev/null +++ b/structxt_1_1extension_1_1xfunctor__view__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xfunctor_view_base< F, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunctor_view_base< F, CT > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xfunctor_view_base< F, CT >:
    +
    +
    + + +xt::extension::xfunctor_view_base_impl< xexpression_tag_t< CT >, F, CT > + +
    +

    Detailed Description

    +
    template<class F, class CT>
    +struct xt::extension::xfunctor_view_base< F, CT >
    +

    Definition at line 54 of file xfunctor_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunctor__view__base.png b/structxt_1_1extension_1_1xfunctor__view__base.png new file mode 100644 index 0000000000000000000000000000000000000000..90b310773cb1510762e1d04e02117d3c58c2aea6 GIT binary patch literal 1316 zcmeAS@N?(olHy`uVBq!ia0y~yVB8F32XHV0$t6>=b%B(0fKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8np_7w&Omi3-4jv*C{Z|A;VC#}fS z(jNITq!@++C{v6$;Q*=~~ zC-p2%ahtSp${7!%X;NveD%QQ#>34s>unzlt@OZaxnvJ>AN%mQm7I)+G>R-SAYp-%M z%i!CMSHfv3mRGMlJ8QEq^_!vbB$<~wn}3)8RXpkU_k{53xi_s22gG_>zxbZ{y65fU zw|O?XlUH4QmmdAxEMaXKcXF1xg!*sYvgHM_nda7IHj@xRdT#k5gOG-4dW_HQ!CD$*Ook>|J`DSMC_tZsE;ZeaEX|q$^^!l2OdUkSO ztTeKV>3iE$`|WmCdEd;9tF~U0_n98H-Fb5Nw%uP%jIt`u&6vr*e_l25o-u&i5)E!t8w|3X12{Ug`@7^|H+s##P z%CEINi@CnUo^RvY|GupCVNYkx^1HMpJ*+lYMn+|NK{=B<T7M6a+Ycr^3SwQ`1#0I`Q@#f)nW2Uvz0#El)Kh!D|~!%pZMYLYi_?Z=~lnL`Ps}* z=euv;{C9DE#EE6LiDvcZ`xeAiou3!E^^Den#~1H1&ECVht$M9n+rGl^=W^$coq4ms zy0H3WRIQx+^r9`?>w`Q+&g32o19 zR<;vW(yPv&Ts+HTQt;pGwD0Bnt>>=ykvR85H|=j!^wQd0-jhnIq$BScPx|AbzewpM ze`#QvN@XN!Dw!nddF)c}O=xQBVt6p?7h{76Lrb6$b3?$dpPm^E0-h&%7@S_V=`3V) zP*62y=vb!0#sExW3<}dGNirM>0xFE~N@Ec41}aO^oXO|_Oot2|OH-(-s3b9M>6A%Y zOQ#q(OKUX{+kLZQ>d9OE+e7YcoW(z{XaAl5Dp$9a ztzo`z^Yg!|vFEI;tj}o*=`%eiUEaI=pU0*0FR#yBTX4oPhJU&Ba=eNAoxb06wabO3 zXm&cbD&_*BRDf%~|Z#X^(4jh57uS&!}DMR=3bhF8uhj4=>*Smn_*n z&&`eZyrl8xhvrvu79`)di<(^hjWz3j`nIEW2E|wNnm#e7ea*T$we8HEeedM;{yxus zygvAMQf|q|ttXAIW}I5HzIVOh>if_3z799qotw30$t}H_^Vih(uI=5r-TVKPnIA*$ zZ#r3RcB8TD$(M)KWk2@btKOEri|N+pz2DZ|kInsZ_j}q)>GINd4|C3(;oIfCsWjiN zpWk!Y*49N~mj(Sjf0@=kw4JFVdQ&MBb@05K$ghyVZp literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xfunctor__view__base__impl.html b/structxt_1_1extension_1_1xfunctor__view__base__impl.html new file mode 100644 index 000000000..c3cfe21ff --- /dev/null +++ b/structxt_1_1extension_1_1xfunctor__view__base__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xfunctor_view_base_impl< Tag, F, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunctor_view_base_impl< Tag, F, CT > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class F, class CT>
    +struct xt::extension::xfunctor_view_base_impl< Tag, F, CT >
    +

    Definition at line 45 of file xfunctor_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4-members.html b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4-members.html new file mode 100644 index 000000000..b13d1cafa --- /dev/null +++ b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html new file mode 100644 index 000000000..1f9355e0a --- /dev/null +++ b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xfunctor_view_optional< F, CT >
     
    +

    Detailed Description

    +
    template<class F, class CT>
    +struct xt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT >
    +

    Definition at line 609 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::extension::xfunctor_view_base_impl< xoptional_expression_tag, F, CT >::type = xfunctor_view_optional<F, CT>
    +
    + +

    Definition at line 611 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4-members.html b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4-members.html new file mode 100644 index 000000000..bd94f757a --- /dev/null +++ b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html new file mode 100644 index 000000000..27508d5a7 --- /dev/null +++ b/structxt_1_1extension_1_1xfunctor__view__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_c_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class F, class CT>
    +struct xt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT >
    +

    Definition at line 48 of file xfunctor_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::extension::xfunctor_view_base_impl< xtensor_expression_tag, F, CT >::type = xtensor_empty_base
    +
    + +

    Definition at line 50 of file xfunctor_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xgenerator__base.html b/structxt_1_1extension_1_1xgenerator__base.html new file mode 100644 index 000000000..526e6aa6b --- /dev/null +++ b/structxt_1_1extension_1_1xgenerator__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xgenerator_base< F, R, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xgenerator_base< F, R, S > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xgenerator_base< F, R, S >:
    +
    +
    + + +xt::extension::xgenerator_base_impl< xexpression_tag_t< R >, F, R, S > + +
    +

    Detailed Description

    +
    template<class F, class R, class S>
    +struct xt::extension::xgenerator_base< F, R, S >
    +

    Definition at line 48 of file xgenerator.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xgenerator__base.png b/structxt_1_1extension_1_1xgenerator__base.png new file mode 100644 index 0000000000000000000000000000000000000000..68c771a6e6d8ef30fe5b082234928c31ab04f237 GIT binary patch literal 1327 zcmb_c`BPH|5Psl+Mp10hp~M5>fkB}~kVH*mDFop$2qYlX#6&AWL=%t@hy?|?BnTe7 zA`yik2nceGa+M?s)`}uT2&W;22qYMW08{FonE{WB@QKL2$sD6^LgpB`+fZ9pD?}X)qWNsL{^H-uV5&ekc3$7W^(vTU#4a z4}|+FkltDj*)I@4@_!9ye77F}Rth2Fk3koVrVB^eQ@huv@#lTRm4;0Jv!QO66)L+0 zQuon}!qwlT^_Yx(mlt--z4NgHJv|-t04D>Jc_3|%Sx)J>Rn{=4#*GNq4(#*+51ff4 zIRC1ei;s9Qw<+pnjOsme`GMGxhJLj0p~x!?)^IVuMfACmv>$?`u6*TyG*Rm887|@8cE)<#WT2wppW-W|}%pBc}Fd z%eA=PD*Yi@fd9j5z3-Y*9l8YqS*L4ZA`gSd@YpSQTbu`DVsqUQBZ4QR#3{jtA!m=G z{li)}jSDB1E_$#U+9S7Yy~+x?4PjXh5)ZZfU}*8(tp)mG{kHDeo8o9X^((vdNM7rS zH#6!CYQM=y&A$GsK;kaVb)OI}-TMwUDa)>pOB_$22_;n*mx!{lqa)+>?%eB|%I1oM zQ`){BZABy_duI-9*+?1|C6(&7lhh=7m$*Ll^$6j6TeNJzsc!Yh&!Tx&l$4%?(mFHa zvY5B9cr02*aGhZmPmQrQ_-3j!f@}zPpvdyd%XAPw(98pWsFtOGpCSlP-gp_uOFI5q z5Rc6|6X%9*g53>INBinI*s<;N1%7X%#w3dQBuO>&ap8Kqbk_ z8X7_o!AZ)0iXoUec0Nu+^i+TXzBpboa$5t4cbgeq4!?A1l?`yd+HEBun71;|2HNV3 zHv#)Y0Am1|0KBIpuK|wlL5PUvfb%s7t#&gHXlq1BzXetN?7FWdC_k4lb?eWO@oTeZOS;h7YH?LhN-!w zwe}qi1zg+wxRbTPc&nJHV9X%ft(>IF<|qGPbGGn~64pi2j%!}Oz$7?ExO5B~j&wbF zFe#2>X1ppt$d#)P!wQL|vV^)*k%gIUw0fWHV$CMkvVb!u}`>+vGhE@jD#&b!xDXf9o%^Jf;C7Mmx`NG=~5 zdJ1jy{Zz*K)@8@xuc^Oi*N#+ElQ5h?aTCG*Zq?6piHy=@sa)6+7Pz5;1G?6<>TdBW z-@=@%Zxge?$>+koIM{a?U#X|@CN?&Mg_Fx&hK$hJw4NxDCwGel^zoiDL<3GHmHl(( w%{;K9(KrWe3ATd4p?E7F`?3HZ`vU_zD&s?EE!h?p$ZG>2Pd{R<`^l8Q0i8B_^#A|> literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xgenerator__base__impl.html b/structxt_1_1extension_1_1xgenerator__base__impl.html new file mode 100644 index 000000000..9bb2d11f4 --- /dev/null +++ b/structxt_1_1extension_1_1xgenerator__base__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xgenerator_base_impl< Tag, F, R, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xgenerator_base_impl< Tag, F, R, S > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class F, class R, class S>
    +struct xt::extension::xgenerator_base_impl< Tag, F, R, S >
    +

    Definition at line 39 of file xgenerator.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html new file mode 100644 index 000000000..4e6de1319 --- /dev/null +++ b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html new file mode 100644 index 000000000..c6a3ee271 --- /dev/null +++ b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xgenerator_optional< F, R, S >
     
    +

    Detailed Description

    +
    template<class F, class R, class S>
    +struct xt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S >
    +

    Definition at line 873 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class R , class S >
    + + + + +
    using xt::extension::xgenerator_base_impl< xoptional_expression_tag, F, R, S >::type = xgenerator_optional<F, R, S>
    +
    + +

    Definition at line 875 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html new file mode 100644 index 000000000..4cbf0df6a --- /dev/null +++ b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html new file mode 100644 index 000000000..698c2bb29 --- /dev/null +++ b/structxt_1_1extension_1_1xgenerator__base__impl_3_01xtensor__expression__tag_00_01_f_00_01_r_00_01_s_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class F, class R, class S>
    +struct xt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S >
    +

    Definition at line 42 of file xgenerator.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class R , class S >
    + + + + +
    using xt::extension::xgenerator_base_impl< xtensor_expression_tag, F, R, S >::type = xtensor_empty_base
    +
    + +

    Definition at line 44 of file xgenerator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xindex__view__base.html b/structxt_1_1extension_1_1xindex__view__base.html new file mode 100644 index 000000000..cd0611af5 --- /dev/null +++ b/structxt_1_1extension_1_1xindex__view__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xindex_view_base< CT, I > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xindex_view_base< CT, I > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xindex_view_base< CT, I >:
    +
    +
    + + +xt::extension::xindex_view_base_impl< xexpression_tag_t< CT >, CT, I > + +
    +

    Detailed Description

    +
    template<class CT, class I>
    +struct xt::extension::xindex_view_base< CT, I >
    +

    Definition at line 45 of file xindex_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xindex__view__base.png b/structxt_1_1extension_1_1xindex__view__base.png new file mode 100644 index 0000000000000000000000000000000000000000..16475282f1bfd55c52c56375709b80a15edcbd95 GIT binary patch literal 1294 zcmb`HeN>WH9LFD|GEH;G)~qaN`dGfjtTZ$*4Ka93vCzg!sp%;V0xQ!Ju*KS{Q;oDo z&oKwKUYOG%{zrwl*V+_qN2;c!$G*$YIM=e$j7LkzqlHmXxW7 zl}aUYo&xvWK<-@fsFV}{+5a=JPQqRQm{SfBH>Vb$Mk{7=&B1Q%WmAdS2FKZhMFN!d z#T^r)MtHqX*zP+=>(So!yNtbn-7ovFcmwQqQB0c)!g=+4BHXpOn5>mMc|sd$&OsMn zUg4N)IDH%j_X#gLC&OCs3AB6vtD&Pj+eh4{>CeF^W=8le$3hTpuFj6eM~vA!15{_n z2+s^=XXwJNrS#a1b>3p*&c|#fRy-{1soVnWgi*dV?L4m-FSF=m)u2efaI`n4AGcW0QMT_qzSQ zPp2!N70r&mNn2g*aYbQ2U6b!(avJRZNz5&h=@~h?tKiK(ymt!Lz!7-pY~gI|xY+8+ zBCz~wQG)fWq&%P4T?Qzr*ohjQ!rAcWKas^m^E z7^SQA)nxBfAD4suoEBUD_~?xuqrob7yq_q5Z1w2`SS;lB-FtpmL7yo|A(QwT4E|`P zUaZh(T-;-Oy=sSjI5Rzw?bqnl!wdEnVMdyaoud1=I4acwD<=u zKYUNphQJ0N!m@@0t)XwhBYM*FEJeE@ti^|lIUevr zK1`P?PWN(Ik9Llqa8=c1oiGgy1RjgIU^?}xi>Nb7f+Dt(OJGLyrP6mT9S)0jw?Ld<=2e-7r66|+Ph8bGG@YQcY$rMg?uH@g1 vq{YG@@|f_;bQA=O%!{ZAL8qt*D# + + + + + + +xtensor: xt::extension::xindex_view_base_impl< Tag, CT, I > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xindex_view_base_impl< Tag, CT, I > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT, class I>
    +struct xt::extension::xindex_view_base_impl< Tag, CT, I >
    +

    Definition at line 36 of file xindex_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4-members.html b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4-members.html new file mode 100644 index 000000000..f8cd530fb --- /dev/null +++ b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html new file mode 100644 index 000000000..2c1159f57 --- /dev/null +++ b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_i_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xindex_view_optional< CT, I >
     
    +

    Detailed Description

    +
    template<class CT, class I>
    +struct xt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I >
    +

    Definition at line 644 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::extension::xindex_view_base_impl< xoptional_expression_tag, CT, I >::type = xindex_view_optional<CT, I>
    +
    + +

    Definition at line 646 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4-members.html b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4-members.html new file mode 100644 index 000000000..94217a49e --- /dev/null +++ b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html new file mode 100644 index 000000000..4c5ae289d --- /dev/null +++ b/structxt_1_1extension_1_1xindex__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_i_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT, class I>
    +struct xt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I >
    +

    Definition at line 39 of file xindex_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::extension::xindex_view_base_impl< xtensor_expression_tag, CT, I >::type = xtensor_empty_base
    +
    + +

    Definition at line 41 of file xindex_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4-members.html b/structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4-members.html new file mode 100644 index 000000000..1c06ec703 --- /dev/null +++ b/structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html b/structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html new file mode 100644 index 000000000..612e3cf98 --- /dev/null +++ b/structxt_1_1extension_1_1xreducer__base__impl_3_01xoptional__expression__tag_00_01_f_00_01_c_t_00_01_x_00_01_o_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xreducer_optional< F, CT, X, O >
     
    +

    Detailed Description

    +
    template<class F, class CT, class X, class O>
    +struct xt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >
    +

    Definition at line 681 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::extension::xreducer_base_impl< xoptional_expression_tag, F, CT, X, O >::type = xreducer_optional<F, CT, X, O>
    +
    + +

    Definition at line 683 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xrepeat__base.html b/structxt_1_1extension_1_1xrepeat__base.html new file mode 100644 index 000000000..611739aeb --- /dev/null +++ b/structxt_1_1extension_1_1xrepeat__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xrepeat_base< CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xrepeat_base< CT, X > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xrepeat_base< CT, X >:
    +
    +
    + + +xt::extension::xrepeat_base_impl< xexpression_tag_t< CT >, CT, X > + +
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::extension::xrepeat_base< CT, X >
    +

    Definition at line 44 of file xrepeat.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xrepeat__base.png b/structxt_1_1extension_1_1xrepeat__base.png new file mode 100644 index 0000000000000000000000000000000000000000..e06c1f5f7069096315d90e55e0c6266632538802 GIT binary patch literal 1253 zcmb_cYg1DP5WR{R2~azY)>i6`3>QWz7HtuT&_)DFf*2sCDri7?i5LZuAP^vk&LC6? zT!}#e#YsUx1bG-xn(}ZY1S1Tj$b=XKjq(VuJb{Fm-u6R(LHEP%+1>MDXU>_;3nmk6 z(Ob~~0N9dOr&FjKHZ`9fRHd&~x|B#BaFbsm{($ zWPSveR3kg9WD5BRfb{={$J)}r0AO7r$`i?_ZE5 zJ;S2v7d?B|+iN$dw!CU`c@Pu&^_K1fusxhyG42CrZSp1#v2#!)L&)NG50Emh>^>wh0(m$W$iXl$y~7) zg-d+Q;RMYWpsXx^qGxz}ch1>@lCR!*B^fw%vnVjP}gDG|zX?Gme?n-^fDGS2C06nz?`?)|dFGc{XQfz^bl*I08a!#uFFQ8BrGe>`M<2Chub7IK(o$G9D4qBE zC4$tqUl1iR_B&ZVpC9WZmQM&Ld1M74)1Vx{t!F%ojFi)3o|1x@w9WlZErN66s@mD! zdu1;TiH+@B#V$YfLUX4g8LUD@soQZb6d{rHWW@}R+z32FyK6iIDjj8&^5N^3RZ}DT z3iKQD0iB4afaMT`h)09KI02!p z?nni)vHy^Gks?!C)L%y!cH9fW@gM`c&yfL=2vps ztt7(2j@z`>JR*Ph)|fOK!)pWAn=Z8Vo1bhPsTW5zggq=t2V;*m-Z^&~V~iK+Ui#@p znv2#&c1n)4u?FkJAvpFb+Fl#R{Dr)ya)14_@dKt`cyH*iz*!(qD^c%QT5)}cm8x;< zfi`?WFL!+MZWHIG;I^BtFQwt}ry~4m zo!*&uLs(IipgF?TmGy0rCl*!^%n2Z@4Ml?p?DB;X$%rr_8A;7Uv5P6_%3>I0LVdT6 VD)U;g)gTWEARQ$8)gL&O^Ecssbw2 + + + + + + +xtensor: xt::extension::xrepeat_base_impl< Tag, CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xrepeat_base_impl< Tag, CT, X > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT, class X>
    +struct xt::extension::xrepeat_base_impl< Tag, CT, X >
    +

    Definition at line 35 of file xrepeat.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html new file mode 100644 index 000000000..4e0267fbe --- /dev/null +++ b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html new file mode 100644 index 000000000..fa338ec5c --- /dev/null +++ b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_x_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xrepeat_optional< CT, X >
     
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X >
    +

    Definition at line 709 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::extension::xrepeat_base_impl< xoptional_expression_tag, CT, X >::type = xrepeat_optional<CT, X>
    +
    + +

    Definition at line 711 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html new file mode 100644 index 000000000..4f8ae74b5 --- /dev/null +++ b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html new file mode 100644 index 000000000..af3ace876 --- /dev/null +++ b/structxt_1_1extension_1_1xrepeat__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_x_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X >
    +

    Definition at line 38 of file xrepeat.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::extension::xrepeat_base_impl< xtensor_expression_tag, CT, X >::type = xtensor_empty_base
    +
    + +

    Definition at line 40 of file xrepeat.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__base.html b/structxt_1_1extension_1_1xscalar__base.html new file mode 100644 index 000000000..8baead074 --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xscalar_base< CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xscalar_base< CT > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xscalar_base< CT >:
    +
    +
    + + +xt::extension::xscalar_base_impl< get_expression_tag_t< std::decay_t< CT > >, CT > + +
    +

    Detailed Description

    +
    template<class CT>
    +struct xt::extension::xscalar_base< CT >
    +

    Definition at line 44 of file xscalar.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__base.png b/structxt_1_1extension_1_1xscalar__base.png new file mode 100644 index 0000000000000000000000000000000000000000..a21d231c74f634b0aaf221a7b29964bca1d39107 GIT binary patch literal 1342 zcmb`H`#02i7{|YsY?9ROM#ywAN*AeI5-FoW-$ABf5sBS0Q88#{N^Y%eRwqq;b00IT z^L1%lCK{B{jNNKVJB=D7Cdv*mO-3=pFqr*rd(NKy1NQU7=Xsvb^FHT&&hxy^CmVm* z+i02jG5`RKz(ZI90O-h&9KTc-xtEov)*`_I?;Gf;)oPJ+?4yc8`@PC}=a%?21;VlR z_IBhw0P3nndIn^|;Q#=sznnc^(YpaauLHzl0x#%{GvttT>+(!GwI`6T{kF77ouQ|O z7=3q9K3iO}cYTv#oXsz+jKTSJIk+7wJha;rq6I;lI+o(ZXfq60jJC1?Z=KY0gbhKe z`HX^cYdD0IbO4nQt)xa~1(8&C48=fGeCv^sDf@K(;*H^k>qfkT#pt(UdnAg)l0TyI``>2XS>ZI)*X|{07!}!-qW#IlJ0s)`bb&{2P|DAo*eWhX z>N+2^;uMGLNP6uNZ4uelZK@h+egA=Mx$AgD%i3g7t#M1~j!a@Dv7b>Ie%{Ub{Ji8c z^+$Y7i~nlxlWU|Hp{l{pca&SiN*EZYq*J}HS+Jk@VxJ9d)iq7>r&yLkkNPsapj=bi zxtt2x<)v6X=>GIj_g#r=x}Y_v{`!@om&eiD$+5TJ$GL^)N~7*|d>BO8J$XW!qt~I1 z(sU)vH%{bj<|b0NSEuw-Rj9SYM_jJ6&XpDp3Q>7X0^M|cmS5PVnSCu*oJ*i7e=}Gk z*ei@N6_ryh7PCs2G^)i9m#GI}R?mh|xtGJND$k;O-2_0rbNEi(M&P6;n*;a`5Xk0W!P324LXb5KauN zbYHhF+Z(fAvInquNdFQ7EwB;;ngbhcKwWn|>lomdGDN#7 z7ZD*A|EtJXT#*ZHt;o$X^n?hIGTJ%@yjq5~1ramrEg298?fK$4NV_aCm>th+8wrQn zo{gSbOk21KTgXA!T4tNtsX23O0fJrS_3)^r!~NZ(G@pvzJ4ufwUr@tLSS|damv+kxbIK=m;0!csGxqRuAdK(GN)^Iyy>cuwpCfnI-4eM zhx8`8&WJk0Rnr6P=EjgS>MxkhE^j)~#(?|tCkKN_VC%1nWPcw54odR^`zyw5DAqC^ yoEZ8J1BOD#wtNW4w*EW7{a^tB$I2xz>$HH#u>vptXr)1ZIso)MjIH;G%=inpWRu(g literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xscalar__base__impl.html b/structxt_1_1extension_1_1xscalar__base__impl.html new file mode 100644 index 000000000..e4e02cd74 --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__base__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xscalar_base_impl< Tag, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xscalar_base_impl< Tag, CT > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT>
    +struct xt::extension::xscalar_base_impl< Tag, CT >
    +

    Definition at line 35 of file xscalar.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4-members.html b/structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4-members.html new file mode 100644 index 000000000..076466692 --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xscalar_base_impl< xoptional_expression_tag, CT > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html b/structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html new file mode 100644 index 000000000..5b6d3187f --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__base__impl_3_01xoptional__expression__tag_00_01_c_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xscalar_base_impl< xoptional_expression_tag, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xscalar_base_impl< xoptional_expression_tag, CT > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xscalar_optional_base< CT >
     
    +

    Detailed Description

    +
    template<class CT>
    +struct xt::extension::xscalar_base_impl< xoptional_expression_tag, CT >
    +

    Definition at line 324 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_base_impl< xoptional_expression_tag, CT >::type = xscalar_optional_base<CT>
    +
    + +

    Definition at line 326 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4-members.html b/structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4-members.html new file mode 100644 index 000000000..b03974a34 --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xscalar_base_impl< xtensor_expression_tag, CT > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html b/structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html new file mode 100644 index 000000000..49f44dcce --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__base__impl_3_01xtensor__expression__tag_00_01_c_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xscalar_base_impl< xtensor_expression_tag, CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xscalar_base_impl< xtensor_expression_tag, CT > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT>
    +struct xt::extension::xscalar_base_impl< xtensor_expression_tag, CT >
    +

    Definition at line 38 of file xscalar.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_base_impl< xtensor_expression_tag, CT >::type = xtensor_empty_base
    +
    + +

    Definition at line 40 of file xscalar.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__optional__traits-members.html b/structxt_1_1extension_1_1xscalar__optional__traits-members.html new file mode 100644 index 000000000..d73741104 --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__optional__traits-members.html @@ -0,0 +1,124 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xscalar_optional_traits< CT > Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::xscalar_optional_traits< CT >, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    closure_type typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    const_flag_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    const_flag_expression typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    const_raw_flag_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    const_raw_value_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    const_value_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    const_value_expression typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    flag_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    flag_expression typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    is_const (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >static
    is_ref (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >static
    raw_closure_type typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    raw_flag_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    raw_value_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    unref_closure_type typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    value_closure typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    value_expression typedef (defined in xt::extension::xscalar_optional_traits< CT >)xt::extension::xscalar_optional_traits< CT >
    +
    + + + + diff --git a/structxt_1_1extension_1_1xscalar__optional__traits.html b/structxt_1_1extension_1_1xscalar__optional__traits.html new file mode 100644 index 000000000..b5c41af4f --- /dev/null +++ b/structxt_1_1extension_1_1xscalar__optional__traits.html @@ -0,0 +1,481 @@ + + + + + + + +xtensor: xt::extension::xscalar_optional_traits< CT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xscalar_optional_traits< CT > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using closure_type = CT
     
    using unref_closure_type = std::remove_reference_t< closure_type >
     
    using raw_closure_type = std::decay_t< CT >
     
    using raw_value_closure = typename raw_closure_type::value_closure
     
    using raw_flag_closure = typename raw_closure_type::flag_closure
     
    using const_raw_value_closure = std::add_const_t< raw_value_closure >
     
    using const_raw_flag_closure = std::add_const_t< raw_flag_closure >
     
    using value_closure = std::conditional_t< is_ref, std::add_lvalue_reference_t< raw_value_closure >, raw_value_closure >
     
    using flag_closure = std::conditional_t< is_ref, std::add_lvalue_reference_t< raw_flag_closure >, raw_flag_closure >
     
    using const_value_closure = std::conditional_t< is_ref, std::add_lvalue_reference_t< const_raw_value_closure >, raw_value_closure >
     
    using const_flag_closure = std::conditional_t< is_ref, std::add_lvalue_reference_t< const_raw_flag_closure >, raw_flag_closure >
     
    using value_expression = xscalar< std::conditional_t< is_const, const_value_closure, value_closure > >
     
    using flag_expression = xscalar< std::conditional_t< is_const, const_flag_closure, flag_closure > >
     
    using const_value_expression = xscalar< const_value_closure >
     
    using const_flag_expression = xscalar< const_flag_closure >
     
    + + + + + +

    +Static Public Attributes

    static constexpr bool is_ref = std::is_reference<closure_type>::value
     
    static constexpr bool is_const = std::is_const<unref_closure_type>::value
     
    +

    Detailed Description

    +
    template<class CT>
    +struct xt::extension::xscalar_optional_traits< CT >
    +

    Definition at line 278 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ closure_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::closure_type = CT
    +
    + +

    Definition at line 280 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_flag_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::const_flag_closure = std:: conditional_t<is_ref, std::add_lvalue_reference_t<const_raw_flag_closure>, raw_flag_closure>
    +
    + +

    Definition at line 295 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_flag_expression

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::const_flag_expression = xscalar<const_flag_closure>
    +
    + +

    Definition at line 301 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_raw_flag_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::const_raw_flag_closure = std::add_const_t<raw_flag_closure>
    +
    + +

    Definition at line 289 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_raw_value_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::const_raw_value_closure = std::add_const_t<raw_value_closure>
    +
    + +

    Definition at line 288 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_value_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::const_value_closure = std:: conditional_t<is_ref, std::add_lvalue_reference_t<const_raw_value_closure>, raw_value_closure>
    +
    + +

    Definition at line 293 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_value_expression

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::const_value_expression = xscalar<const_value_closure>
    +
    + +

    Definition at line 300 of file xoptional.hpp.

    + +
    +
    + +

    ◆ flag_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::flag_closure = std::conditional_t<is_ref, std::add_lvalue_reference_t<raw_flag_closure>, raw_flag_closure>
    +
    + +

    Definition at line 292 of file xoptional.hpp.

    + +
    +
    + +

    ◆ flag_expression

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::flag_expression = xscalar<std::conditional_t<is_const, const_flag_closure, flag_closure> >
    +
    + +

    Definition at line 299 of file xoptional.hpp.

    + +
    +
    + +

    ◆ raw_closure_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::raw_closure_type = std::decay_t<CT>
    +
    + +

    Definition at line 284 of file xoptional.hpp.

    + +
    +
    + +

    ◆ raw_flag_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::raw_flag_closure = typename raw_closure_type::flag_closure
    +
    + +

    Definition at line 287 of file xoptional.hpp.

    + +
    +
    + +

    ◆ raw_value_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::raw_value_closure = typename raw_closure_type::value_closure
    +
    + +

    Definition at line 286 of file xoptional.hpp.

    + +
    +
    + +

    ◆ unref_closure_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::unref_closure_type = std::remove_reference_t<closure_type>
    +
    + +

    Definition at line 282 of file xoptional.hpp.

    + +
    +
    + +

    ◆ value_closure

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::value_closure = std::conditional_t<is_ref, std::add_lvalue_reference_t<raw_value_closure>, raw_value_closure>
    +
    + +

    Definition at line 291 of file xoptional.hpp.

    + +
    +
    + +

    ◆ value_expression

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::extension::xscalar_optional_traits< CT >::value_expression = xscalar<std::conditional_t<is_const, const_value_closure, value_closure> >
    +
    + +

    Definition at line 298 of file xoptional.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ is_const

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + +
    constexpr bool xt::extension::xscalar_optional_traits< CT >::is_const = std::is_const<unref_closure_type>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 283 of file xoptional.hpp.

    + +
    +
    + +

    ◆ is_ref

    + +
    +
    +
    +template<class CT >
    + + + + + +
    + + + + +
    constexpr bool xt::extension::xscalar_optional_traits< CT >::is_ref = std::is_reference<closure_type>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 281 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xstrided__view__base.html b/structxt_1_1extension_1_1xstrided__view__base.html new file mode 100644 index 000000000..ce30ddab6 --- /dev/null +++ b/structxt_1_1extension_1_1xstrided__view__base.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::extension::xstrided_view_base< CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xstrided_view_base< CT, S, L, FST > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xstrided_view_base< CT, S, L, FST >:
    +
    +
    + + +xt::extension::xstrided_view_base_impl< xexpression_tag_t< CT >, CT, S, L, FST > + +
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::extension::xstrided_view_base< CT, S, L, FST >
    +

    Definition at line 48 of file xstrided_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xstrided__view__base.png b/structxt_1_1extension_1_1xstrided__view__base.png new file mode 100644 index 0000000000000000000000000000000000000000..09588cfc812a854f517736f7218e19ef16fe3fb7 GIT binary patch literal 1437 zcmb_ceKgYx82)J`#4OT6!>u3rJe#hM$&g!OI3pb8l6>Z4a~aniZtaxgmn&sB z-9p8f$!ES=p+(!dBU;0_bMmolOP0{uUH89x?!Wi_<9(m^eV%jPKi=oOSAz+@dO9XL z008LW{Z57efX2KU2W!F9**MeVth$&62Zs5mR4O%GdauYVWjA0kHmL`0jV%oh4yxy& z(D(y2r=1Z(2nE#rKjFHgY61XuS>sQ7hmkZ^tC!OkTy&{bj7JQL>InDz^F26_j0!Ta zk6tOmYs`Hp8~o|uNE-Eq7)#gLjW71&*A-&$IpGK^JWq!WE=PD*f*y$$biZ_dPxe&b zQBI1)aZ?7H)o*8#FkaAfB62P*KSx8bcr=4(R@qDgh>i)?ypry!xsG%njKJToV6tiIYe!MPR} zjq0>E-Phuhn=pZp{Wg;^=|1VuRKzfke80Nm3YBau)?>9D<`i|D>NHM%QJPJ?jr9z4 z3K}|9FBN2Di=sv~iF>(1x4lH(%Vw!;hTHVW+jY#AT7Ae68IwA@BMlSvD+n3n{s@`4%BH$vXB-KHgmFJ?7H>vzzmKrxYZ%P9KAvu{a%h3Oc5gJl`rNP3lIl}B7NS))6*{}Q?1%nPku6`}Acy84b2Axu6kb2gNE zP1`eHH{TWMb_ESe&@^!SKD?zd3l-1h)8gKGRtmcX1w*LXW>rmUqD-e9wXlgYLmr*j zwh<5w`YlxYGxJvk@u(Wch&$b(*nTGGNT5&;<5?l^fOi@9UmR;Py#ZvB$2gCpGT6qeRM$s^%E=9UXGh*dPwS*yn$ORbJ-E9jAk$+3ReU@-UWv3ZHt38A({r$?0kjOR%X6_P22} zg1{n>Q&-3Y$>E3!P`w&ji10oO;UuBdse6})DVVxgNHiI@Cfc3byS2XMo-b1ADz^(> z#~_bGln@o34Q1SW`mvY^G87Z*NmG>lN_V!a2Dt325L0z9P`34?Njk zeMo326+HfE&3JdSq*1&-{@1@=7o)E`ccSZQ-wCi_)BO*pA+oKDO(w7Y$@Xldi~L%u zC)#jc(Zuq;{@8L_KMPMXk{lLn!6JHyqZD4E>`P<@uk2XZ=u~m)6m#6TI3=|AFfKiE zGA8a~V;87=;2DH%=`!GUZyEFoN-JJ49_mf71 z9Y|#5SzrD61C|X`k?XRp_N<8?pQth)Oe?YEwEy=wc3J_@g+8r@@(}B~^4t}4 YoAh=f&61U^exv~2hj6m_hjWF00~vd>?*IS* literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xstrided__view__base__impl.html b/structxt_1_1extension_1_1xstrided__view__base__impl.html new file mode 100644 index 000000000..3fee24a62 --- /dev/null +++ b/structxt_1_1extension_1_1xstrided__view__base__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xstrided_view_base_impl< Tag, CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xstrided_view_base_impl< Tag, CT, S, L, FST > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT, class S, layout_type L, class FST>
    +struct xt::extension::xstrided_view_base_impl< Tag, CT, S, L, FST >
    +

    Definition at line 39 of file xstrided_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html new file mode 100644 index 000000000..c2b07fc01 --- /dev/null +++ b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xstrided_view_optional< CT, S, L, FST >
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >
    +

    Definition at line 744 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST >::type = xstrided_view_optional<CT, S, L, FST>
    +
    + +

    Definition at line 746 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_4a6b46e0ed70869936639a514f730fbb.html b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_4a6b46e0ed70869936639a514f730fbb.html new file mode 100644 index 000000000..46bea96b8 --- /dev/null +++ b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_4a6b46e0ed70869936639a514f730fbb.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xstrided_view_base_impl< xoptional_expression_tag, CT, S, L, FST > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html new file mode 100644 index 000000000..24a25fa9b --- /dev/null +++ b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >
    +

    Definition at line 42 of file xstrided_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST >::type = xtensor_empty_base
    +
    + +

    Definition at line 44 of file xstrided_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01b284f3952f1f4d8d4ad036b645dd2641.html b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01b284f3952f1f4d8d4ad036b645dd2641.html new file mode 100644 index 000000000..8da653dc7 --- /dev/null +++ b/structxt_1_1extension_1_1xstrided__view__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01b284f3952f1f4d8d4ad036b645dd2641.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xstrided_view_base_impl< xtensor_expression_tag, CT, S, L, FST > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html new file mode 100644 index 000000000..a75e12704 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html b/structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html new file mode 100644 index 000000000..1e4b0eead --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__adaptor__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using traits = xtensor_adaptor_optional_traits< EC, N, L >
     
    using type = xcontainer_optional_base< traits >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >
    +

    Definition at line 451 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ traits

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >::traits = xtensor_adaptor_optional_traits<EC, N, L>
    +
    + +

    Definition at line 453 of file xoptional.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_adaptor_base< EC, N, L, xoptional_expression_tag >::type = xcontainer_optional_base<traits>
    +
    + +

    Definition at line 454 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__adaptor__optional__traits-members.html b/structxt_1_1extension_1_1xtensor__adaptor__optional__traits-members.html new file mode 100644 index 000000000..b353f5e62 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__adaptor__optional__traits-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html b/structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html new file mode 100644 index 000000000..a6a28e8ed --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__adaptor__optional__traits.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::extension::xtensor_adaptor_optional_traits< EC, N, L > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_adaptor_optional_traits< EC, N, L > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xtensor_adaptor_optional_traits< EC, N, L >:
    +
    +
    + + +xt::extension::xtensor_optional_traits< EC, N, L > + +
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using derived_type = xtensor_adaptor< EC, N, L, xoptional_expression_tag >
     
    - Public Types inherited from xt::extension::xtensor_optional_traits< EC, N, L >
    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xtensor_adaptor< value_container &, N, L >
     
    using flag_expression = xtensor_adaptor< flag_container &, N, L >
     
    using const_value_expression = xtensor_adaptor< const value_container &, N, L >
     
    using const_flag_expression = xtensor_adaptor< const flag_container &, N, L >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_adaptor_optional_traits< EC, N, L >
    +

    Definition at line 445 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ derived_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_adaptor_optional_traits< EC, N, L >::derived_type = xtensor_adaptor<EC, N, L, xoptional_expression_tag>
    +
    + +

    Definition at line 447 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__adaptor__optional__traits.png b/structxt_1_1extension_1_1xtensor__adaptor__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8806f280be8831ffcfe4f695ad58c8518e1ab4 GIT binary patch literal 1204 zcmeAS@N?(olHy`uVBq!ia0y~yUm)$`lH)&qqA;r)AhLFVdOeV(QA>4Y&0BUm<~-umK8?|b!S*J@W?+53k7T8@&XUHjY1HJ@JG z|9Vr~p!i_>lMKbP2@egv2~S9s;r?9pNx^JR>c%xUkIjx%uGsx1X}@>LFB6r_FNfBe zXI_|JV-s?Fr|E1DZu#mNnKPx!)m|-WIvDtRMYKv!ZOrF6FH0A>vs%2|vUjax^rC&| zrCoGq7$34MOk3-IQh#^t!tug4`oI4A zmvPs=ysFx2@A*Nw`K5>6f8AOpd-Y)2+X)<{oSyp@h`-YC{O2EQ$>+IG_5Z)gPeT8? zEvja_dCGT^x1{)_JxeSW%v`J@xys&Qipu{9lQcZtv^poHEP*rfT(;-l4!XT9*N~~f zejz`D2crW}6$8tw$I26#9Oi(TY$ibF3?TD}Rwa`IP%ndvRwsQJ|M)Hjd3jC^@|qB! zqN(Z$OhJ=GR;p-u0#gu_VdPS~hx-Np{-e?ISw&TT<=bME~#Xo_|-IzsD}Yv~R*4|u0A;JvRr2C(f!;T#7q7Q@LgPPmu=Vo`o){T zC3P`syVfoCTW|jLVW#X_8L6&oucL35f)dx?FTlig=kQv4hN~Ul|Ci~;_HSN4JMR9s ztII>Iedm6tu3cN^Ub-RDdWm1G(n{&IeO{N|U)0|HYvSDB-{U8V{pxr5UK6qBo~d;I z^cD71ohr5$Q-KL>lE|w2ULlkIEt|AL#Z{}*D`*Lvk>}#AsT%5~Y50p>WSh9|6 + + + + + + +xtensor: xt::extension::xtensor_container_base< EC, N, L, Tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_container_base< EC, N, L, Tag > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::extension::xtensor_container_base< EC, N, L, Tag >
    +

    Definition at line 33 of file xtensor.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html new file mode 100644 index 000000000..3816b82f3 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html new file mode 100644 index 000000000..92a0a79fc --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using traits = xtensor_container_optional_traits< EC, N, L >
     
    using type = xcontainer_optional_base< traits >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag >
    +

    Definition at line 431 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ traits

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag >::traits = xtensor_container_optional_traits<EC, N, L>
    +
    + +

    Definition at line 433 of file xoptional.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_container_base< EC, N, L, xoptional_expression_tag >::type = xcontainer_optional_base<traits>
    +
    + +

    Definition at line 434 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4-members.html new file mode 100644 index 000000000..c41f219db --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html new file mode 100644 index 000000000..56579b239 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__container__base_3_01_e_c_00_01_n_00_01_l_00_01xtensor__expression__tag_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag >
    +

    Definition at line 36 of file xtensor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_container_base< EC, N, L, xtensor_expression_tag >::type = xtensor_empty_base
    +
    + +

    Definition at line 38 of file xtensor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__optional__traits-members.html b/structxt_1_1extension_1_1xtensor__container__optional__traits-members.html new file mode 100644 index 000000000..9c0b6a546 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__container__optional__traits-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__optional__traits.html b/structxt_1_1extension_1_1xtensor__container__optional__traits.html new file mode 100644 index 000000000..ca7892fae --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__container__optional__traits.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::extension::xtensor_container_optional_traits< EC, N, L > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_container_optional_traits< EC, N, L > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xtensor_container_optional_traits< EC, N, L >:
    +
    +
    + + +xt::extension::xtensor_optional_traits< EC, N, L > + +
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using derived_type = xtensor_container< EC, N, L, xoptional_expression_tag >
     
    - Public Types inherited from xt::extension::xtensor_optional_traits< EC, N, L >
    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xtensor_adaptor< value_container &, N, L >
     
    using flag_expression = xtensor_adaptor< flag_container &, N, L >
     
    using const_value_expression = xtensor_adaptor< const value_container &, N, L >
     
    using const_flag_expression = xtensor_adaptor< const flag_container &, N, L >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_container_optional_traits< EC, N, L >
    +

    Definition at line 425 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ derived_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_container_optional_traits< EC, N, L >::derived_type = xtensor_container<EC, N, L, xoptional_expression_tag>
    +
    + +

    Definition at line 427 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__container__optional__traits.png b/structxt_1_1extension_1_1xtensor__container__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..36b3e07f620b035dece43cf6504d89c75e4fbd46 GIT binary patch literal 1216 zcmeAS@N?(olHy`uVBq!ia0y~yV2lQ`12~w0WWz$W6+lWlz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEE`yYDmIV0)GXVKuV9qrA3IhX+x2KC^NCo5DxexQcXz{qT zcZQt(ZU6CZo)ZJ}ZcnN2uj6(mT{+S%TWs)5e_Cp!)9Fn*+qt5>F)8!jh#_~TVs;F1}I2+S__soo+OPh;~%=_oBjjAVC)*YCp;y!EB z+?{WaP0e@yD}J+V_wSlDYhL?nrf=OBvANUa!_A!g$9C=cmU;ht?VUf@o?WYX_|s{V z+|SxAqP`B#clj=n^vOB4OU!6%a?-s2J2qyAna&K$dAswxpj%|v#`T-tnsutUTip`& z$-KgI>*-WekdYrZo_@8A_wlzJcGtuMPwK356p!6IXX)`>>GoRtH*>tE6+fBw_QrFj z=sR004YkjU=e^ybZnEy`$`|YRe9p;V z8(n=cL_S`>*RX-{_I5ktZJle5XKwpkH@o=Nx_9?qZlCGVxM}{OqQ?Gn<+bA9@yPJ$9P3yu|p{is(rtmzHl(J?S5e68fNMxY+!5la6;r5BH|w`DJWMnqnpAJn%8DIvL>+Fx4sIL>v( z53%KT%Wb_juT$Ioyn9L2lkXS9Oc?pE$$-}dJmvr{~uFc6izv!{?2iXE6%da`J)1qtF zSqeOT;ia|sqr?aO+s4VezqZc}{&`7eXR7r#%QI!=`H$zOWDC9(y!Bz5{+?C0x9NT@ z-sVv2zkxf?eA_;C^_=@ZWm2uHHhEW`FS{cwb^Vpg*YJCl+hXtD@?ONX!R+5hCAOUV zzxLQ(Uw^}|W^zdX<(%h#&DI~EAam`UdmT}8T?f{TcVuZ zbJh#_O|jaKZ$0mQKT*N{=N;88f!ilNS@NGf+VfX6*S1Md7AI(X+QAuB8+FVdQ&MBb@0GiBj;s5{u literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xtensor__empty__base-members.html b/structxt_1_1extension_1_1xtensor__empty__base-members.html new file mode 100644 index 000000000..e245cd9b8 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__empty__base-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_empty_base Member List
    +
    +
    + +

    This is the complete list of members for xt::extension::xtensor_empty_base, including all inherited members.

    + + +
    expression_tag typedef (defined in xt::extension::xtensor_empty_base)xt::extension::xtensor_empty_base
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__empty__base.html b/structxt_1_1extension_1_1xtensor__empty__base.html new file mode 100644 index 000000000..ba8d4af85 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__empty__base.html @@ -0,0 +1,137 @@ + + + + + + + +xtensor: xt::extension::xtensor_empty_base Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_empty_base Struct Reference
    +
    +
    + + + + +

    +Public Types

    using expression_tag = xtensor_expression_tag
     
    +

    Detailed Description

    +
    +

    Definition at line 376 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ expression_tag

    + +
    +
    + +

    Definition at line 378 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__optional__traits-members.html b/structxt_1_1extension_1_1xtensor__optional__traits-members.html new file mode 100644 index 000000000..89093932c --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__optional__traits-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_optional_traits< EC, N, L > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__optional__traits.html b/structxt_1_1extension_1_1xtensor__optional__traits.html new file mode 100644 index 000000000..0c0f564aa --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__optional__traits.html @@ -0,0 +1,251 @@ + + + + + + + +xtensor: xt::extension::xtensor_optional_traits< EC, N, L > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_optional_traits< EC, N, L > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xtensor_optional_traits< EC, N, L >:
    +
    +
    + + +xt::extension::xtensor_adaptor_optional_traits< EC, N, L > +xt::extension::xtensor_container_optional_traits< EC, N, L > +xt::extension::xtensor_view_optional_traits< EC, N, L > + +
    + + + + + + + + + + + + + + +

    +Public Types

    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xtensor_adaptor< value_container &, N, L >
     
    using flag_expression = xtensor_adaptor< flag_container &, N, L >
     
    using const_value_expression = xtensor_adaptor< const value_container &, N, L >
     
    using const_flag_expression = xtensor_adaptor< const flag_container &, N, L >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_optional_traits< EC, N, L >
    +

    Definition at line 414 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_flag_expression

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_optional_traits< EC, N, L >::const_flag_expression = xtensor_adaptor<const flag_container&, N, L>
    +
    + +

    Definition at line 421 of file xoptional.hpp.

    + +
    +
    + +

    ◆ const_value_expression

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_optional_traits< EC, N, L >::const_value_expression = xtensor_adaptor<const value_container&, N, L>
    +
    + +

    Definition at line 420 of file xoptional.hpp.

    + +
    +
    + +

    ◆ flag_container

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_optional_traits< EC, N, L >::flag_container = typename std::remove_reference_t<EC>::flag_container_type
    +
    + +

    Definition at line 417 of file xoptional.hpp.

    + +
    +
    + +

    ◆ flag_expression

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_optional_traits< EC, N, L >::flag_expression = xtensor_adaptor<flag_container&, N, L>
    +
    + +

    Definition at line 419 of file xoptional.hpp.

    + +
    +
    + +

    ◆ value_container

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_optional_traits< EC, N, L >::value_container = typename std::remove_reference_t<EC>::base_container_type
    +
    + +

    Definition at line 416 of file xoptional.hpp.

    + +
    +
    + +

    ◆ value_expression

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_optional_traits< EC, N, L >::value_expression = xtensor_adaptor<value_container&, N, L>
    +
    + +

    Definition at line 418 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__optional__traits.png b/structxt_1_1extension_1_1xtensor__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c0f2528a65c32bc6ea6e831c72cf15b4421b5c GIT binary patch literal 2062 zcmb_cdpwle8vfjmYiEX?d$wUD+Y}02L^8#X8N)^?6s0tcYcgSs%lU@0&+q(ke&_si)*s(`*Lv3bu4ldP^L`m_E{@6y zS_%LFD1%ODcL0z^LbltVq@b^6tX&&4X}e)PPi$^(Lgwe0Z!tMfs}Gv(xuj9h^O?H0h()?8oX?S37jZiTFuqe6{YB6}gnJC8wG?K3tArM$}doc|OD6v1khQnZ*ui=1f zKr}uhJzWVe4@j9ErlZklS-Nzxgods+0)de7mSh82y^7S=tquFz2II*!cOH_OE5pfA zj>Mkmb(S8X+Ju!<@3(c#g^ENVm}^g=z&}T$`n8un`(RHAf1?6sz^4kNmH(URpZZxo zH|Ip*heBD!MX?=kRySg()2>g-(CFbg-p}s$jOxWSH-AX8VypGn z7v2iv)Mgb<4e{svo6c2?l$VYUwTN8JtLnM~=gQ9q-Y!m0Kf3*d&af7tPXViO?Cx{~ z9=hi+ZbX^cNQfKzJ2F-)8zQ>t*xwoL_O9FMQaN`^$UNi!Wx`?o$qUgZN9>7F?L{Usvpk_Y z47=y{`1y%kgDonyX)T!?yI+wJ)vwBX&y3O98Mp*$A)SuOhYb-Qjd>7r|sB-knX!~4sf zmO0J*s+q=dIE=KrdZak`SKP&y#@RkZrz9GY4yiResZsRa$bWi{W5=}o1DyqeHqW-gFAbo}0yu+Ub zGytgp;A`Xdtn|oA%n90aBQ<)d0Ny87h5)@JwaOj}-7HpxS`Mul)MKSEu zp)d9E9exWId+U^-j)`HhcS@a%7#4d+UiyCqFKRnp#*5#T%CYHNG&}e)zKj>7^VOy= z%A$u7WXR{{%b0>EDPvg<)T$u7JlNd^ts!pUj~&$9Djgp-CI5dxOQz=FK*b!REnyiRA6eQn z@Sa5)54+lkv@KjQ7@Da3cBHf=c^Op+5(cYkP?-EX%owIfotWo&z1eq0X)3$0>ha4f z%jJPiyynbCvR0(1wE^`G47+J`8f7>BHo&@4`LBW~%tiOn1NXwnZv8Js_yZPT@R3sz zai+BH`otW^`K1fhtfG7SL+VDjIs}c`bZ$HAhvC#F4_oKsn=KkSt~aV0P8-B-7)%w$ zDXidxwIn=;Xw5oB+30|mJ16=(|EBiE9%H)0d-0s!SPqjLP3{>Adi8P6 z9wtl7dk6M=mhxu>tAp_mOR=rGgX4?Ws>7w?PGa4M{Z!(!6IADBQ6tF-`V1IRVMR^2 z>ruNCXvb)mQ}y?+k;j!tCPideW{If22?dKWrPKB-0S^~(g{x3dJ*Jen?rUTmGMx3q zu1e>u?E~8K2f~~>^&axq+3Bfu5*Mc!Rj~ZyfQm0B(PW(K$#@^UkV6%iV-gVyF*!Tc z(@fr7frM1F68lYVKCjB3cBLz?({^6~sFfLIbTqMR_uhAdUV;677oM};a?>4*;+Osm zuBPgRB&JGkaPRNP6YxzJ2+|+azJ!|UgT5*<#vm_frLUywR_T8Jdk0&RM9xq0pjP3g zIdqBeQWw-4D1GqIlVs!`%`~WOUc)K*DT-bcsQv#d)Kh@`6ko=L8j`g~;c^*oxM$I( eRXYt@m-LWJC=9iDmuK|=G{6%s=-T4}fB6R&pv9vA literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html b/structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html new file mode 100644 index 000000000..6d1f48687 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html b/structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html new file mode 100644 index 000000000..c279e5707 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__view__base_3_01_e_c_00_01_n_00_01_l_00_01xoptional__expression__tag_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using traits = xtensor_view_optional_traits< EC, N, L >
     
    using type = xcontainer_optional_base< traits >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag >
    +

    Definition at line 471 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ traits

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag >::traits = xtensor_view_optional_traits<EC, N, L>
    +
    + +

    Definition at line 473 of file xoptional.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_view_base< EC, N, L, xoptional_expression_tag >::type = xcontainer_optional_base<traits>
    +
    + +

    Definition at line 474 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__view__optional__traits-members.html b/structxt_1_1extension_1_1xtensor__view__optional__traits-members.html new file mode 100644 index 000000000..e8ba8ad74 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__view__optional__traits-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xtensor_view_optional_traits< EC, N, L > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__view__optional__traits.html b/structxt_1_1extension_1_1xtensor__view__optional__traits.html new file mode 100644 index 000000000..1eb8229f5 --- /dev/null +++ b/structxt_1_1extension_1_1xtensor__view__optional__traits.html @@ -0,0 +1,162 @@ + + + + + + + +xtensor: xt::extension::xtensor_view_optional_traits< EC, N, L > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xtensor_view_optional_traits< EC, N, L > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xtensor_view_optional_traits< EC, N, L >:
    +
    +
    + + +xt::extension::xtensor_optional_traits< EC, N, L > + +
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using derived_type = xtensor_view< EC, N, L, xoptional_expression_tag >
     
    - Public Types inherited from xt::extension::xtensor_optional_traits< EC, N, L >
    using value_container = typename std::remove_reference_t< EC >::base_container_type
     
    using flag_container = typename std::remove_reference_t< EC >::flag_container_type
     
    using value_expression = xtensor_adaptor< value_container &, N, L >
     
    using flag_expression = xtensor_adaptor< flag_container &, N, L >
     
    using const_value_expression = xtensor_adaptor< const value_container &, N, L >
     
    using const_flag_expression = xtensor_adaptor< const flag_container &, N, L >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L>
    +struct xt::extension::xtensor_view_optional_traits< EC, N, L >
    +

    Definition at line 465 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ derived_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L>
    + + + + +
    using xt::extension::xtensor_view_optional_traits< EC, N, L >::derived_type = xtensor_view<EC, N, L, xoptional_expression_tag>
    +
    + +

    Definition at line 467 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xtensor__view__optional__traits.png b/structxt_1_1extension_1_1xtensor__view__optional__traits.png new file mode 100644 index 0000000000000000000000000000000000000000..0b82ba1ec224e6aa82761b3ca1b204908023aef3 GIT binary patch literal 1180 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Yo12~w0Wc>S>?LbO8z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aCi@K+aV@L(#+qtj%UYqf> zxF;tVzW;y3H|g}QOXhjiMFDJb3d>wOf2mBW->7q1C~8`2rJ9b4q|!-st_GEt0Sqdh z?Mw=uRw4|Zmlg^)bgHnQT|4dPA@@lpUp{S)>E0`y_;bm5{r}R-SNVoN{_ESIl6i`8 zf=ap(V^rSm!qyuL{^m9uwygaZcI|8MDev|Adw0&xe6;!Iy<@)?y*YgE|MAMt(bCbI z4?S;9`TOL%&r~xA z4DatB*taQMd(G9VeWy7O1j}f)|K37z!RM^cn>B;;nQ(t&qT3Tr| z`AKN4;DN7oUqYv=_?GIaRC?Fd{r@iQG0Co0-(k`pZg7AzcueABb(mD5!7yowvwp+r zO*#uxBd57DHLSnJ&(Ol~U?!6SgU$8x{sJrw$GI99KE&wPISMe$(_&z1@NVR1kO7K4 z2w-4g07fB$g$M)VfrShl3_ueZ3N(O9oEZhErQ}ytgXU5ZFU_UtPLq~QP_YeUn4;3o zv_QpDghBP>LIw>_zEXzgCcMYmU*yj}9ol}~B0FPaxw6jut^LpHABSu`+4KOYX4${3 z-L(cAIWH95?$tiR_SU!Iuwe}(=@=s=om+{~+3_Z;yHaOA|63npv4879bH$oCm8<@B z^FQV}TkLQ2d?lx9dS0r33OE66|7$++syurG`)85p*~=!JFw^Nrq7pJzrQp0 zK7MOX^!-NvmxqKKz8*Kbx9V|O><$aF>1F(O^)t#J#;n{H^8S5FvEe5H&#S>%3sh>i z{+sOZ{G^U&+dqW^Uw`mVd(Rfb`K83q)9ONQT_LmT$;JCQfU4%BL + + + + + + +xtensor: xt::extension::xview_base< CT, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xview_base< CT, S > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::extension::xview_base< CT, S >:
    +
    +
    + + +xt::extension::xview_base_impl< xexpression_tag_t< CT >, CT, S... > + +
    +

    Detailed Description

    +
    template<class CT, class... S>
    +struct xt::extension::xview_base< CT, S >
    +

    Definition at line 56 of file xview.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xview__base.png b/structxt_1_1extension_1_1xview__base.png new file mode 100644 index 0000000000000000000000000000000000000000..62adea02445ab9db06dabd013d1304c13f40e452 GIT binary patch literal 1261 zcmb_c`%_bA5dCg617r+X6{#qY=*2M>hiVal8s17S0|CR^f?5hv(geb@KzM{g5n2l2 zCOnKlYYi_2l>`C;6>0|?1g#~CK!Rh(NFyOIN?AblDJF|Oc%Yx~C zM1nN|06;`&z6<~$J{AX?Zoxd*RBU2?Z*V~9DWlPdg_`;0jLLg0E+0}j@7IoLhK7c) zdfuh1+=*Pu&XI=rp8b~zwn(fCc!eLLRj?U{g= zbGkDRnvd?r>3MpqQHjIV_^91>_q&3k?|p z2X;~#HRnP~fgM0*;(TZ2gO+TG`=hN|jZ6S*P!E=}@mOv8*O z#z{LsQaN$qDN8zOH@(1|m?0_E(C`8$?4+&5lwz($^y$FQ%#LAp{+ZmMX9HY$rZeF) z_nw8#bSK2TI+?cr%6(sj%my8iAw4O<;3?OJ9@>$UHZa^GamT3wI9<7fk}H}C*2ysU zfNff{b&V|Xb2_``_VrCvGH>S4(iX$Etd;dIJDJ^SxcX)i-PWZiM$<3|&! z)V7GJ%iW!_LihgDwX|l>6@7K#e3@1#NI547w{_bZd+=D8V^xMSq;7^wy>7x7?2Swt zc^Ej@@j$_H%KymJ*maieXb>KEIr{2U6uW@auS_=A)I8^sI{ft2 z_PG{9DzawC1i$^!Y0MJ{(q}Bo&E-i7Xyh^+p<}uAk)4}FL{ax_dDKG|BV1ZNm!+<* z$FE1m+D+yNj~@GaNc;ubb@+HOyuqx=M#eQVGV(~@D0tnv*vqw*pH1v9`ZE3vg|rdP z#SKK;Bi0+HmAzy*aXHW&UMn(0@c3$@H&hJUPH;Z3nBt00JHc17SaSaT?kR{?ZH|CB?h=x15NYTzd5qtN#k1__&JRx_^ z_U!yP+OqQ3U+R>g6sESfB+*b&Gpv{>K$z2FrOP4SVbaU8%%W`<31YV`D?M;taAi|_ zu4ZYrM-kJIzLflUCP!4Pdh|HUL3$2avxf)qaY5(z$Qygu+0v|XO?NENOWc4dGn7&{}Xra6)*O}qRl_ErW9 YZD;tC)fy=qdrSa1Mfbhwec`LW0g8b>SpWb4 literal 0 HcmV?d00001 diff --git a/structxt_1_1extension_1_1xview__base__impl.html b/structxt_1_1extension_1_1xview__base__impl.html new file mode 100644 index 000000000..8c190d920 --- /dev/null +++ b/structxt_1_1extension_1_1xview__base__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::extension::xview_base_impl< Tag, CT, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xview_base_impl< Tag, CT, S > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class CT, class... S>
    +struct xt::extension::xview_base_impl< Tag, CT, S >
    +

    Definition at line 47 of file xview.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html b/structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html new file mode 100644 index 000000000..e93d94b0b --- /dev/null +++ b/structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xview_base_impl< xoptional_expression_tag, CT, S... > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html b/structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html new file mode 100644 index 000000000..ea6af3e56 --- /dev/null +++ b/structxt_1_1extension_1_1xview__base__impl_3_01xoptional__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xview_base_impl< xoptional_expression_tag, CT, S... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xview_base_impl< xoptional_expression_tag, CT, S... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xview_optional< CT, S... >
     
    +

    Detailed Description

    +
    template<class CT, class... S>
    +struct xt::extension::xview_base_impl< xoptional_expression_tag, CT, S... >
    +

    Definition at line 779 of file xoptional.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::extension::xview_base_impl< xoptional_expression_tag, CT, S... >::type = xview_optional<CT, S...>
    +
    + +

    Definition at line 781 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html b/structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html new file mode 100644 index 000000000..9eda7ed16 --- /dev/null +++ b/structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::extension::xview_base_impl< xtensor_expression_tag, CT, S... > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html b/structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html new file mode 100644 index 000000000..67a126449 --- /dev/null +++ b/structxt_1_1extension_1_1xview__base__impl_3_01xtensor__expression__tag_00_01_c_t_00_01_s_8_8_8_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::extension::xview_base_impl< xtensor_expression_tag, CT, S... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::extension::xview_base_impl< xtensor_expression_tag, CT, S... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtensor_empty_base
     
    +

    Detailed Description

    +
    template<class CT, class... S>
    +struct xt::extension::xview_base_impl< xtensor_expression_tag, CT, S... >
    +

    Definition at line 50 of file xview.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::extension::xview_base_impl< xtensor_expression_tag, CT, S... >::type = xtensor_empty_base
    +
    + +

    Definition at line 52 of file xview.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1filter__fixed__shape.html b/structxt_1_1filter__fixed__shape.html new file mode 100644 index 000000000..1d298c67f --- /dev/null +++ b/structxt_1_1filter__fixed__shape.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::filter_fixed_shape< S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::filter_fixed_shape< S > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::filter_fixed_shape< S >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class S>
    +struct xt::filter_fixed_shape< S >
    +

    Definition at line 567 of file xshape.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1filter__fixed__shape.png b/structxt_1_1filter__fixed__shape.png new file mode 100644 index 0000000000000000000000000000000000000000..f09f9b1f0ac3697ba745d31b4e90a048baadd16b GIT binary patch literal 846 zcmeAS@N?(olHy`uVBq!ia0vp^4}ds;gBeJgTXrr3QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nstdb&7&GVC&1k3Dx@Tkpm>#5i7lN`$#bC=tcFjlkIGk8pLe7N>X?$3n`&nh3cJo;-= z^k<_<<(Io>{_KAKeEZz(mEu=7Ju?gap7UtR-fl`&$BXJJZ`_47cH90 zJTL5`t?T64^^X~$B@vytCu%CUC4bS`m1KbrfR1OQG@&q)rPi9rp^EKLvV}He%b8V<$=D*?^(Zz zJG~EF5_)y(X+e>z7ec;dM5;AQf9^EVd!hTM>e@Y}`<~ZcYevP?Fg-YwJd;1Ux^wQ_ z%^4PN3?HR4c)u%S{9I$Qv93_;=DxNK%;AFXmuILqJ!Dw>li^0k%%9>4P7{CDus93u zoU!QH+IzBJQtn#6VAx;CzJ2kn_474_QNsD(>i0nZh<|O}Tq9+0wLLg~ek2dWidDa2 xE;FxMRTse>5LyZh-q5QPzcPsk&W!laxT%?cv9o{vDqzZI@O1TaS?83{1OQjUi7NmA literal 0 HcmV?d00001 diff --git a/structxt_1_1fixed__xreducer__shape__type.html b/structxt_1_1fixed__xreducer__shape__type.html new file mode 100644 index 000000000..e16b4b3ea --- /dev/null +++ b/structxt_1_1fixed__xreducer__shape__type.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::fixed_xreducer_shape_type< S1, S2 > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::fixed_xreducer_shape_type< S1, S2 > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class S1, class S2>
    +struct xt::fixed_xreducer_shape_type< S1, S2 >
    +

    Definition at line 197 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4-members.html b/structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..d730d914f --- /dev/null +++ b/structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html b/structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..695056eb0 --- /dev/null +++ b/structxt_1_1fixed__xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::fixed_xreducer_shape_type_impl< sizeof...(I) - 1, fixed_shape< I... >, fixed_shape< J... >, fixed_shape<> >::type
     
    +

    Detailed Description

    +
    template<std::size_t... I, std::size_t... J>
    +struct xt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >
    +

    Definition at line 1238 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I, std::size_t... J>
    + + + + +
    using xt::fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >::type = typename detail:: fixed_xreducer_shape_type_impl<sizeof...(I) - 1, fixed_shape<I...>, fixed_shape<J...>, fixed_shape<> >::type
    +
    + +

    Definition at line 1240 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1forbid__simd.html b/structxt_1_1forbid__simd.html new file mode 100644 index 000000000..11738ccbe --- /dev/null +++ b/structxt_1_1forbid__simd.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::forbid_simd< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::forbid_simd< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::forbid_simd< T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::forbid_simd< T >
    +

    Definition at line 299 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1forbid__simd.png b/structxt_1_1forbid__simd.png new file mode 100644 index 0000000000000000000000000000000000000000..396e75b377f014ea200faa7c756c39390158c577 GIT binary patch literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^)j%A;!3-q%ihk_?QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#J8&db&7pz;FGGh7QQp~^PRlq{t(+8gGywW~%Mvc>LQt*}=DwbjQPxEEpJQB2h^V=@< z>o?AQGr#H2zumpyz02fUnf01n$1S2;uC5K%om{f^xS5f;{R#K|XMWZ`U6&>Gj zMvH#l5H3r$_q^_xd@s%Zew*I2-?umRg_rG@{xUf#`^cJ}o$sfJO_lWwt1`c@Tc&=0 zVy*Rk!+9Ie#kTcFI&0MpuV=jBxycA~(l)v*j;#&73JGx#kqQ17n)O)78&qol`;+ E0A}VHlK=n! literal 0 HcmV?d00001 diff --git a/structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html b/structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..cad8a8065 --- /dev/null +++ b/structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::forbid_simd< const std::vector< bool, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::forbid_simd< const std::vector< bool, A > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::forbid_simd< const std::vector< bool, A > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class A>
    +struct xt::forbid_simd< const std::vector< bool, A > >
    +

    Definition at line 309 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.png b/structxt_1_1forbid__simd_3_01const_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba49476ecbf587b5b5781e633678836cb70a9a5 GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0y~yU=#+j12~vLB4-l+04eDJpAgso|NjG-FW!7D?LV~K z!a%b?V)~gE2M!zniU&`+yaFi4SrX(I%mCzrfjQIcD+~-wzdT(WLn;{G&b>S9k%9p0 z>ilPOzSlpxIzxVzfbqF^DSy(egR~r(ruY_nySNAnMk}hU%ve{XlwZKPYxmF3r+50)&>ob&$vKA-Qm(>#Ca=@kiG3cGbGD0+45 z^g9n{J=l5fWWwF-nmHDdrrwv#3!mPzEG^pqZJ}x2v?ckEcF9=ZU}&~Dx$x?eS=^J~ z@jsnBce2{rH*^1-t1)^%_v;oblKV?z)_%Sf3A>_qv!a%|Gv4hbJFkWJFDu?yfwXB=@Rhy#?x;l z#dW9dz4)`>=W*}c+>Gqp@3|+|{{OZu{=v5wCileWTHKkQ=4PCoxh z*YUe%a&y`HTyq=i@@tuM=2^eJcQU%%w)~nV&#&#z``#{-nPCfEN1HFsk!?#*Ps1t-zj|ipUKlB+lmdK II;Vst0JfW`FaQ7m literal 0 HcmV?d00001 diff --git a/structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html b/structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..bb2dd4039 --- /dev/null +++ b/structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::forbid_simd< const xtl::xdynamic_bitset< B, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::forbid_simd< const xtl::xdynamic_bitset< B, A > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::forbid_simd< const xtl::xdynamic_bitset< B, A > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class B, class A>
    +struct xt::forbid_simd< const xtl::xdynamic_bitset< B, A > >
    +

    Definition at line 319 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.png b/structxt_1_1forbid__simd_3_01const_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..26c1540dcba7e87e45e3b4c2936fa77f0f5d58ec GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0y~yU^D@;12~w03f*F8(FfeDDeT9L6Il$A!F{Fa=?c9rHw-p3f z)8mWY|F18Mjh^JVz-#uFjm5iqkC`SUnCg7+a&Zw9ER=Pc#O1lm%X9J)6; zdIeol(LCwBR5v(Z@Q>jX^Qb$M)I2@oRCV(%AA6j9`J=}D|8jlrM13Cz)&DM9pFdmm zye9wV^Q-JjGWYC#ZMbh= zUi&0$``-Imi$pK%sl4&F*r3+@_Jz_JMHbPA?%AIIx$8ug=Us=pP9}%*Zx^3lvhIDK z;hvk?`KyjI7jo2}xlwy|-T9A7{Q39HwkmHaK2wyxZdKr4*UY!4x4n(k2+sV?d49>) zo%Sb}DrcT{$ewSw$?ozuDfL^&-p-tocKk!ksV(;|{`giMdU?-om9>8l>TD{kE!Qre zl6kwcUPbrKb7Skv$G$B#&VBU4^6$GXk?y;d-saEA+`DD6ac=KM+lcww(~IS0@6S7% zXR*_EcP!B5_0?wUx5rKOU2=T;^Rmv|$?t=T?)J<*y7~9#%4IjdNq_D??8Ey%GV{CY zE#29<|Fzeh{qk}}QEZ*Zvc2IG?9-}mecK&yDaYE=bMspj)wA0sPcgaeS2S5nFwn&% b=9&1CvKlp4`KK(v49DQ<>gTe~DWM4fWLMZh literal 0 HcmV?d00001 diff --git a/structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html b/structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..83008a0a3 --- /dev/null +++ b/structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::forbid_simd< std::vector< bool, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::forbid_simd< std::vector< bool, A > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::forbid_simd< std::vector< bool, A > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class A>
    +struct xt::forbid_simd< std::vector< bool, A > >
    +

    Definition at line 304 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.png b/structxt_1_1forbid__simd_3_01std_1_1vector_3_01bool_00_01_a_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..92edf5a023f2e08793d35528f30139ff8a91af84 GIT binary patch literal 753 zcmVvTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007f zNklB0 zSC(3?Hbd$Gm$>~Z;0>tk*%RQcZjyYDt_$f?;QQY?D7L#v@;$mLX>G*ihKK8*aL4<) zEcPd7cm?c^@*4OH&u|LqoTaPul~Z>Wvdba(&MZxmKT!fE$;%c^pl<~* z0Q9T?27sOwzyQ#*0vG^#RsaJ)&kA4w=ve^_06i;!0ib6EFaY$d00w}b6~F+{vjP|Z z{z7JEBMBx+<0yb7sb>YSB=xKYxKym(h*YcpZ4BG4AB~md%0cgu(I^Yea9E&jc~r0U(w^qX5AzISGq=D9IhS#Q_9@A0Vj)X(BR%F{M9<-@#0Nu|61 zEK^(Dijs11k?-0bG^Ia(W>P8b6sv!J+RDn_u*%(KKU=S~Azg2nN!pNGj}Ix6eDUjT zKUz&uue{mo*2)XOJIKEUb|GE$*E!F9RBcv@=;XUKaAoBQ;BqE+k=G&pBCuqu(t3C| zI$Zq?9(LL2+{0~}FiDk6DrM^oulsk;aJ9nyGu$rq> + + + + + + +xtensor: xt::forbid_simd< xtl::xdynamic_bitset< B, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::forbid_simd< xtl::xdynamic_bitset< B, A > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::forbid_simd< xtl::xdynamic_bitset< B, A > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class B, class A>
    +struct xt::forbid_simd< xtl::xdynamic_bitset< B, A > >
    +

    Definition at line 314 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.png b/structxt_1_1forbid__simd_3_01xtl_1_1xdynamic__bitset_3_01_b_00_01_a_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..aa775634e7c1653b3638cbc6bdc575a644e72514 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0y~yU=#$h12~w0B&X%ZgFs3;z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TNoE(!7rW&rZRz?^CJ6$S=oHcuDFkP61Pb1#-XQQ&bt z>b>;;|3_!jm?BzC-fo$E@@1jcdp?1jBEx5*OQ%c{lM|WblkG30nCYdY;_KP6M6+{( zNvvl|_Z6l(sh_#hQ(Zh}=_v(G(>NWv|KAEm`L|!+GbX&{Xpa8>Dfw;xVU?dsyW2bz zcPB007F9gsk+7cUoYNgX`*uA&#yRn(f#<$sdN!uZUH;ks-ZG1S@{{a0n@(AI{`Ksu zh-wuoj$K*nFMCsv^J$9z6a8xw-(K0W`&d@a?uIuZSBk&6zn7X+bIeRhrE=!oz7tUn z+jBbpPkN$S_FU#>*fbZ9PrX25)+7$kV5rNvCkAl|I3cTeQd^}kiG&>m#fZSy&Ob4d8FwB_5!4NFOnBb*EiR5?1ATQ0# zhmI4MZ26`l=($Wq>Esj_m6?+|R4zL#G4GmuE9&3fw)*^gwu{P1oj0?VteAKr=izhf4T6_&jKYjn!=M(cDY%5zo zclLD2{a4H1uFtM5DdqoqcGovKBeyk%*Y6pmpXrz{7l z&a6seH~+jnS3HsJt4L2GyVA208tmVJVJ)*^XYZME(^)^`ap6S5nD_ zugiTkJ{&LiJ@Gj6EdRd0>o~L5i+e{L`xtxKt8TxvYUx(vq>giWv*X-VUdDcVWLk6j z?`D^mdKI;Vst0GhIr*8l(j literal 0 HcmV?d00001 diff --git a/structxt_1_1get__init__type.html b/structxt_1_1get__init__type.html new file mode 100644 index 000000000..8d7f39a4d --- /dev/null +++ b/structxt_1_1get__init__type.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::get_init_type< V, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_init_type< V, S > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class V, class S>
    +struct xt::get_init_type< V, S >
    +

    Definition at line 238 of file xfixed.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4-members.html b/structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..e710fb59b --- /dev/null +++ b/structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_init_type< V, fixed_shape< X... > > Member List
    +
    +
    + +

    This is the complete list of members for xt::get_init_type< V, fixed_shape< X... > >, including all inherited members.

    + + +
    type typedef (defined in xt::get_init_type< V, fixed_shape< X... > >)xt::get_init_type< V, fixed_shape< X... > >
    +
    + + + + diff --git a/structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html b/structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..cbf56c8b1 --- /dev/null +++ b/structxt_1_1get__init__type_3_01_v_00_01fixed__shape_3_01_x_8_8_8_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::get_init_type< V, fixed_shape< X... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_init_type< V, fixed_shape< X... > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::get_init_type_impl< V, X... >::type
     
    +

    Detailed Description

    +
    template<class V, std::size_t... X>
    +struct xt::get_init_type< V, fixed_shape< X... > >
    +

    Definition at line 241 of file xfixed.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class V , std::size_t... X>
    + + + + +
    using xt::get_init_type< V, fixed_shape< X... > >::type = typename detail::get_init_type_impl<V, X...>::type
    +
    + +

    Definition at line 243 of file xfixed.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__rank-members.html b/structxt_1_1get__rank-members.html new file mode 100644 index 000000000..808721c7b --- /dev/null +++ b/structxt_1_1get__rank-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_rank< E, typename > Member List
    +
    +
    + +

    This is the complete list of members for xt::get_rank< E, typename >, including all inherited members.

    + + +
    value (defined in xt::get_rank< E, typename >)xt::get_rank< E, typename >static
    +
    + + + + diff --git a/structxt_1_1get__rank.html b/structxt_1_1get__rank.html new file mode 100644 index 000000000..255a6d063 --- /dev/null +++ b/structxt_1_1get__rank.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::get_rank< E, typename > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_rank< E, typename > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::size_t value = SIZE_MAX
     
    +

    Detailed Description

    +
    template<class E, typename = void>
    +struct xt::get_rank< E, typename >
    +

    Definition at line 948 of file xutils.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class E , typename = void>
    + + + + + +
    + + + + +
    constexpr std::size_t xt::get_rank< E, typename >::value = SIZE_MAX
    +
    +staticconstexpr
    +
    + +

    Definition at line 950 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4-members.html b/structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4-members.html new file mode 100644 index 000000000..0ea05bcc7 --- /dev/null +++ b/structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_rank< E, decltype((void) E::rank, void())> Member List
    +
    +
    + +

    This is the complete list of members for xt::get_rank< E, decltype((void) E::rank, void())>, including all inherited members.

    + + +
    value (defined in xt::get_rank< E, decltype((void) E::rank, void())>)xt::get_rank< E, decltype((void) E::rank, void())>static
    +
    + + + + diff --git a/structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html b/structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html new file mode 100644 index 000000000..ce0347377 --- /dev/null +++ b/structxt_1_1get__rank_3_01_e_00_01decltype_07_07void_08_01_e_1_1rank_00_01void_07_08_08_4.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::get_rank< E, decltype((void) E::rank, void())> Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_rank< E, decltype((void) E::rank, void())> Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::size_t value = E::rank
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::get_rank< E, decltype((void) E::rank, void())>
    +

    Definition at line 954 of file xutils.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class E >
    + + + + + +
    + + + + +
    constexpr std::size_t xt::get_rank< E, decltype((void) E::rank, void())>::value = E::rank
    +
    +staticconstexpr
    +
    + +

    Definition at line 956 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__strides__type-members.html b/structxt_1_1get__strides__type-members.html new file mode 100644 index 000000000..2ef14eb5d --- /dev/null +++ b/structxt_1_1get__strides__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_strides_type< S > Member List
    +
    +
    + +

    This is the complete list of members for xt::get_strides_type< S >, including all inherited members.

    + + +
    type typedef (defined in xt::get_strides_type< S >)xt::get_strides_type< S >
    +
    + + + + diff --git a/structxt_1_1get__strides__type.html b/structxt_1_1get__strides__type.html new file mode 100644 index 000000000..811c69611 --- /dev/null +++ b/structxt_1_1get__strides__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::get_strides_type< S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_strides_type< S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename rebind_container< std::ptrdiff_t, S >::type
     
    +

    Detailed Description

    +
    template<class S>
    +struct xt::get_strides_type< S >
    +

    Definition at line 894 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class S >
    + + + + +
    using xt::get_strides_type< S >::type = typename rebind_container<std::ptrdiff_t, S>::type
    +
    + +

    Definition at line 896 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html b/structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..cf8c380a1 --- /dev/null +++ b/structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_strides_type< fixed_shape< I... > > Member List
    +
    +
    + +

    This is the complete list of members for xt::get_strides_type< fixed_shape< I... > >, including all inherited members.

    + + +
    type typedef (defined in xt::get_strides_type< fixed_shape< I... > >)xt::get_strides_type< fixed_shape< I... > >
    +
    + + + + diff --git a/structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html b/structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..db07be144 --- /dev/null +++ b/structxt_1_1get__strides__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::get_strides_type< fixed_shape< I... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_strides_type< fixed_shape< I... > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::array< std::ptrdiff_t, sizeof...(I)>
     
    +

    Detailed Description

    +
    template<std::size_t... I>
    +struct xt::get_strides_type< fixed_shape< I... > >
    +

    Definition at line 900 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I>
    + + + + +
    using xt::get_strides_type< fixed_shape< I... > >::type = std::array<std::ptrdiff_t, sizeof...(I)>
    +
    + +

    Definition at line 905 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html b/structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html new file mode 100644 index 000000000..fb49a10cd --- /dev/null +++ b/structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_strides_type< xbuffer_adaptor< CP, O, A > > Member List
    +
    +
    + +

    This is the complete list of members for xt::get_strides_type< xbuffer_adaptor< CP, O, A > >, including all inherited members.

    + + +
    type typedef (defined in xt::get_strides_type< xbuffer_adaptor< CP, O, A > >)xt::get_strides_type< xbuffer_adaptor< CP, O, A > >
    +
    + + + + diff --git a/structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html b/structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..b2b9905ec --- /dev/null +++ b/structxt_1_1get__strides__type_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::get_strides_type< xbuffer_adaptor< CP, O, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_strides_type< xbuffer_adaptor< CP, O, A > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::vector< typename xbuffer_adaptor< CP, O, A >::value_type, typename xbuffer_adaptor< CP, O, A >::allocator_type >
     
    +

    Detailed Description

    +
    template<class CP, class O, class A>
    +struct xt::get_strides_type< xbuffer_adaptor< CP, O, A > >
    +

    Definition at line 912 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::get_strides_type< xbuffer_adaptor< CP, O, A > >::type = std::vector< typename xbuffer_adaptor<CP, O, A>::value_type, typename xbuffer_adaptor<CP, O, A>::allocator_type>
    +
    + +

    Definition at line 917 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__value__type-members.html b/structxt_1_1get__value__type-members.html new file mode 100644 index 000000000..25b9867db --- /dev/null +++ b/structxt_1_1get__value__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_value_type< T, class > Member List
    +
    +
    + +

    This is the complete list of members for xt::get_value_type< T, class >, including all inherited members.

    + + +
    type typedef (defined in xt::get_value_type< T, class >)xt::get_value_type< T, class >
    +
    + + + + diff --git a/structxt_1_1get__value__type.html b/structxt_1_1get__value__type.html new file mode 100644 index 000000000..04d6e8443 --- /dev/null +++ b/structxt_1_1get__value__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::get_value_type< T, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_value_type< T, class > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T, class = void_t<>>
    +struct xt::get_value_type< T, class >
    +

    Definition at line 484 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class = void_t<>>
    + + + + +
    using xt::get_value_type< T, class >::type = T
    +
    + +

    Definition at line 486 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4-members.html b/structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4-members.html new file mode 100644 index 000000000..0508839a4 --- /dev/null +++ b/structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::get_value_type< T, void_t< typename T::value_type > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html b/structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html new file mode 100644 index 000000000..79c33a2b1 --- /dev/null +++ b/structxt_1_1get__value__type_3_01_t_00_01void__t_3_01typename_01_t_1_1value__type_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::get_value_type< T, void_t< typename T::value_type > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::get_value_type< T, void_t< typename T::value_type > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename T::value_type
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::get_value_type< T, void_t< typename T::value_type > >
    +

    Definition at line 490 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::get_value_type< T, void_t< typename T::value_type > >::type = typename T::value_type
    +
    + +

    Definition at line 492 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__assign__conversion-members.html b/structxt_1_1has__assign__conversion-members.html new file mode 100644 index 000000000..5a3d811c5 --- /dev/null +++ b/structxt_1_1has__assign__conversion-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_assign_conversion< FROM, TO > Member List
    +
    +
    + +

    This is the complete list of members for xt::has_assign_conversion< FROM, TO >, including all inherited members.

    + + + + +
    argument_type typedef (defined in xt::has_assign_conversion< FROM, TO >)xt::has_assign_conversion< FROM, TO >
    result_type typedef (defined in xt::has_assign_conversion< FROM, TO >)xt::has_assign_conversion< FROM, TO >
    value (defined in xt::has_assign_conversion< FROM, TO >)xt::has_assign_conversion< FROM, TO >static
    +
    + + + + diff --git a/structxt_1_1has__assign__conversion.html b/structxt_1_1has__assign__conversion.html new file mode 100644 index 000000000..bdecbb454 --- /dev/null +++ b/structxt_1_1has__assign__conversion.html @@ -0,0 +1,195 @@ + + + + + + + +xtensor: xt::has_assign_conversion< FROM, TO > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::has_assign_conversion< FROM, TO > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using argument_type = std::decay_t< FROM >
     
    using result_type = std::decay_t< TO >
     
    + + + +

    +Static Public Attributes

    static const bool value
     
    +

    Detailed Description

    +
    template<class FROM, class TO>
    +struct xt::has_assign_conversion< FROM, TO >
    +

    Definition at line 641 of file xassign.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ argument_type

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + +
    using xt::has_assign_conversion< FROM, TO >::argument_type = std::decay_t<FROM>
    +
    + +

    Definition at line 643 of file xassign.hpp.

    + +
    +
    + +

    ◆ result_type

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + +
    using xt::has_assign_conversion< FROM, TO >::result_type = std::decay_t<TO>
    +
    + +

    Definition at line 644 of file xassign.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + + +
    + + + + +
    const bool xt::has_assign_conversion< FROM, TO >::value
    +
    +static
    +
    +Initial value:
    = is_narrowing_conversion<argument_type, result_type>::value
    +
    || has_sign_conversion<argument_type, result_type>::value
    +
    +

    Definition at line 646 of file xassign.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__assign__to.html b/structxt_1_1has__assign__to.html new file mode 100644 index 000000000..114924862 --- /dev/null +++ b/structxt_1_1has__assign__to.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_assign_to< E1, E2, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_assign_to< E1, E2, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_assign_to< E1, E2, class >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E1, class E2, class = void>
    +struct xt::has_assign_to< E1, E2, class >
    +

    Definition at line 853 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__assign__to.png b/structxt_1_1has__assign__to.png new file mode 100644 index 0000000000000000000000000000000000000000..32f41b230fe7d9c1499b7c4d6887f15738d363d6 GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)-|+nGzpc+d*YSRgn*X@#?c1W@y=o_|UooVl$h>s6$v2$- z?sR#r+%`Lhn;$>5bfw!eX1!4d%1Rm&($db0-ZYB2@l&5bM!|6TYQBs>>0+R8Nx_OfmH(Bo<%bKy-9!-HsH z4hEZSCdP(zUj>E_YdBdLfWBoouvtxjq2d|~6T|sg4h#<>F%*@jq?t`hm}JtYHbJHG z8p|Y=^I8pu4x64?eD&?mt?n;hkZdgTi|pLYCybm_&r zBa!-ztF~mysBfHNWw<2fgOlX9HyuAcCueWD%65vmJkB}y!Y2z?f%`06sZkQ^g5Jq! z-2boT)cRj&!L5?ckmWIw&rZodjhV^2Uik~tiv`c5j(aY?m&4`mAfEMt;{_;~^{!vw z+p=|)$gvPG>6217e=+;SFKJL{Q`#HaK=bbG}azy?+Pb!Hww=aF0A34dd zgfXM^!OX8$ma2QJE?uncf1G14uY%|O;OkQ+FNx1)@|*+=RL@UqSWleEQTWUFp!I)| TC(Axi!e;Pv^>bP0l+XkKDneCx literal 0 HcmV?d00001 diff --git a/structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html b/structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html new file mode 100644 index 000000000..8feb85893 --- /dev/null +++ b/structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E1, class E2>
    +struct xt::has_assign_to< E1, E2, void_t< decltype(std::declval< const E2 & >().assign_to(std::declval< E1 & >()))> >
    +

    Definition at line 858 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.png b/structxt_1_1has__assign__to_3_01_e1_00_01_e2_00_01void__t_3_01decltype_07std_1_1declval_3_01cons059ed553ffd14856020f06c40d9ce771.png new file mode 100644 index 0000000000000000000000000000000000000000..af42ee0084ee8c8c5fea4cd2c4933fedfda903c6 GIT binary patch literal 1483 zcmcIkYfzF|82&Wf%GshxTgz(}rFPL~b;4C~voV$Nx+;{Z=;RuUh>|3zV71xJW*P!q z-A$C8@s@ZgvhczHR<^p{NHY{ak+n=yKvqx;N!ibS_jk{aci!`y=Y7t5-t(SQ5*r=1 z!^Xh|0Dv8+@Q^qFu%ttN?6xhCefr`YWC6$6$b>Uyvl((fs#o$DFY5hHc#`&(4}9$E z>Voii)|-dW+V;zF(eVH@|1uDk6{7%PjX{M3C*)gbDu>Ie+jm=4V-M@il24t)EtXc} z*tXflDz#gkquULh-4Rh7dJm6x8vQoh17*XqgX5i;F|6zG9qu|*-2IyAkRS;4<@CCv zf?2n0jqv#!xWd_Em32ouN^8nX=&Z}9XV^7LH;BybtgUk~51vOZYRxV!3daYxr3TP- z)nMSmZ$jZ`OP?ld1}`I&+1NzM{ag=J$^kAsuK<3L@H%fklw#-1C3VoTBz%61 zyn1OaP2oC9wdRUgsi=kBkY;1x2X@VV)NP2kRzJA_N~Q0xP}WBwu_7kUpN&R!?*IB} zJ;O&x5X&0nFcc-`@nSbi^^N5&Am|~Spnk)(n;MQLhD&DDpX=ux$F9l zb>paDHPH1q(!Yor)pqN>TfMuG2@8FqNPdLN+=xaDWe?y=@;z0l_nIZ79$W5Xjf;{g z70{e|+qy5%IwnF=u9#^$V){mrvG5WFm*0uY5=Ib~&!(%qCgt7Um|T{2TK|0}@@7?J zYU9+?<9C(V#Hl3z#r|<7LgWm3jkG2YC>M?fA~`r?{`}mkeubDN^{8qk){i+i_;8~N z&RwPUjRX#7bINr^r7POMWGU_5y>q&?2j=q=GOtpRsBG0h{>AD_uvoEEF;p96$X>?p z7M5ceu)he$@ef2;KwPyn!=zyoSC6z56sCp&G)V|GJzB|yEXr^T4 z#LzqD=c$L3dIFeE#e<`&V&5jEghw}#I~8Y440Y&LC*LUK_;(T_L(@R^A1T!~i0mg9 z?Fb(NJXTa0oSlDTFSf^e9&3S%HV@H&&rb~&7&DrusRixNZq3vt4 zxoDK}XaR*j%w~SPKdi7RG{^yu;1Wqa#oWFzdciXfE^giaf(j#kSt7L-R8L{WCS8+_ ztU80N_9C{<>l-x#F25-#GzFoEJ#I)V5cB=(%HU0sXNqyRbPGnUg&0K+kaPr)*Y6G)lHa@vX1KNu0 literal 0 HcmV?d00001 diff --git a/structxt_1_1has__data__interface.html b/structxt_1_1has__data__interface.html new file mode 100644 index 000000000..a5564b72d --- /dev/null +++ b/structxt_1_1has__data__interface.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_data_interface< E, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_data_interface< E, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_data_interface< E, class >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E, class = void>
    +struct xt::has_data_interface< E, class >
    +

    Definition at line 651 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__data__interface.png b/structxt_1_1has__data__interface.png new file mode 100644 index 0000000000000000000000000000000000000000..65abd3fb44d3fe8a07ddd357d68578b036bee3c6 GIT binary patch literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^XMs3?gBeKn&SE?Uq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)BfKli_bSP>>Z7Q{|)Mhp$-!h|P#xuhn2S-C*bbAD8Yi%XgyLye<7gF)}IML&Pe;gm5ZT$`qujCTl?soL+_nqD7VRiD$Qmb{TpJuFE_Q~k~?%Zw5j!!S0^7rQa z<$=pZ_BBKb>v4J)Z`rC>p3@ImIc}D{UGS58^Qu>zv7aBC snXg*4T-0RMDmyS?D%;y}LgyFj;?!S%R1WBE047ETPgg&ebxsLQ05=|OmH+?% literal 0 HcmV?d00001 diff --git a/structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html b/structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html new file mode 100644 index 000000000..fade672bb --- /dev/null +++ b/structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_data_interface< E, void_t< decltype(std::declval< E >().data())> > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_data_interface< E, void_t< decltype(std::declval< E >().data())> > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_data_interface< E, void_t< decltype(std::declval< E >().data())> >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::has_data_interface< E, void_t< decltype(std::declval< E >().data())> >
    +

    Definition at line 656 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.png b/structxt_1_1has__data__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8data_07_08_08_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..31cacadd81fa3010be7e85d1e5988c01ae59ca37 GIT binary patch literal 1133 zcmeAS@N?(olHy`uVBq!ia0y~yU|a!Y2XHV0$?98zMnFnBz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEE`#)NmIV0)GXVKuV9qrA3IhZ44^J1zkP61PbMICyHsEn_ zH=kSiU;Q2n&x!g8CENc7gz2htn%&scuY3Q{86898-R1_9d^|p#TcR>m7%85dujD#0g&|19lT87}c%XO+>^)P44}~?14onQ+ z)m#}5{QddME1036I!J`!&iwY}CaetQ>aL6q96`biEDAsd&ik{(nw(b8vcSYHOdQGoMQM2B)Z=9ZfPHl5Xl-=E;4V(D9 zJhy7dnR~B3f9UbzSDV*XOT&c3s{_mF`z^Ud4&42G_pb-)D5aFx+(2y0)iv+vDpL&$xu{wY2{Gx-`c~_Ig2r z(azIL9?!D5UUPPl{?gx77BhDxpS@Cjh`+?Y_A6JRdG0fbu&ax#+V{Qvwbb{q>`M zr^3y*pEdDI-w~(fdsATN$tCYX>%vQ=;vGrZrhMYgbxnb71E01jEe`51XcV?OP=6SoKt^|b6|K-NLD*njx zmFu(D-;6wK_9p12^`bQERq;PRbFk^2pZ9w9On3X+fy-CEPjb(7|F^Pt`uP=^ud4s| zWC{KFett!6oBsI~pQr7rsQcM-%SCtbN8=c;RlNInfBxKCvghpww~&=tLGdRwZqEfe zCURf-L%%K0BqWYMi~p3pd*v;y>&x%FIIjD%qDJAd@V1Xuvv-+&^$a>(=;nE;_ebM~ zKezrJ%u@*spW3IA=`ek|%F0K)fv<~Z+SLW>dgd2gJ!f8(eg0OzsH$gU;q#yQv#S>N ztKIbuI{RPQYZBAsMJk#M!02U~0AqX*NKKnIW9Hpi_Der;A37hqxf@t8FnGH9xvX + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + diff --git a/structxt_1_1has__fixed__rank.html b/structxt_1_1has__fixed__rank.html new file mode 100644 index 000000000..6e1365d46 --- /dev/null +++ b/structxt_1_1has__fixed__rank.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::has_fixed_rank< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::has_fixed_rank< E > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::integral_constant< bool, get_rank< std::decay_t< E > >::value !=SIZE_MAX >
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::has_fixed_rank< E >
    +

    Definition at line 964 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::has_fixed_rank< E >::type = std::integral_constant<bool, get_rank<std::decay_t<E> >::value != SIZE_MAX>
    +
    + +

    Definition at line 966 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__iterator__interface.html b/structxt_1_1has__iterator__interface.html new file mode 100644 index 000000000..31a6314e1 --- /dev/null +++ b/structxt_1_1has__iterator__interface.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_iterator_interface< E, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_iterator_interface< E, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_iterator_interface< E, class >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E, class = void>
    +struct xt::has_iterator_interface< E, class >
    +

    Definition at line 671 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__iterator__interface.png b/structxt_1_1has__iterator__interface.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca67f29c2d2f0aab586b89bdc27ffdf4ff9a165 GIT binary patch literal 750 zcmVvTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007c zNklET{X=N6AmcaPHY5A$fOYd*f$caG%qdmE9gOQSK9siR zZ*-61k)q_^Bzc;CA$G}wLFq{H8cjNqjHyXSk}b1c0cTbN~=jlMVo4YSIBfOielfh^a{j05LV`03fC&9RS4CqyvDMnsfjV zQKuk?K060r#X2S|5NrP(ANm5KrI!TJDiY|ZbFfXRQ^>4kk-QGCZXX%rq zQt!p&0NooLlGLiQzvbYoL7&k*-tL$zoowpy$9Ff~q6bJKU;Zy|FcVx z=GDG+6CuaWq~gh~t*^+;ZHs!;+Uth{YB?ac-HJkHjz1yJwZ3 zyS=sZ-d@i1n|lB1d*_Dwxuu7B>A%qB1ZwD3%a+pb(79RV%#2dzST}Y(-^$EPUu|aA z3D6u)l?T0S*^ON_tBPHnTat>W44U`N2fSNVUeWE{yN~HiQl+c!U9M!!^-o2ybk|qE zJgV+(=t{erxl=QX8_?Fw?Aw0Ll%!wQAvZsudmiIe!zF1)$JPlGJ4yOjlTMOiYSKwk gObt(GW;Uw+0I=T<{gul$I{*Lx07*qoM6N<$f*IU;LI3~& literal 0 HcmV?d00001 diff --git a/structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html b/structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html new file mode 100644 index 000000000..91e277015 --- /dev/null +++ b/structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::has_iterator_interface< E, void_t< decltype(std::declval< E >().begin())> >
    +

    Definition at line 676 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.png b/structxt_1_1has__iterator__interface_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8begin_07_08_08_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..aef69f69b1d6af6a647156932a0592e6cad9a61a GIT binary patch literal 1165 zcmeAS@N?(olHy`uVBq!ia0y~yVB8O62XHV0$$cxj7XvBj0G|-o|Ns93nJ?aaE$u(F z+`>S!Kw|ot7Y7a;0E!1sy1W7?$5|5O7t8?UgMm5I>?;fmEE1kBjv*C{Z|B}ldacFd z;;ujU=YRcsE7vk zwtw3=Wj^nib7A+}YoFXFRi1o%Uaooj*VhJ{_vzQKUZ;96HScA=y!Wp2YA0isd`o}w z^T+hRZ!361Z*k4!Pc5rwc0ayz_eb+nY9~XU?6=SVTU+-_+4>xa_f5R^%(?jLl-LZP z+Hd#t{+0fVk$Cer^pEn%_|(1j;eov;Q-iV}J?Fi7e@FMxwIQ!WJ?iQwJvp5NbfWeD zuKmX~fB%{D>y*4_TFUH#pCH%Q_k-N0S+6p4I-JpNZ@l@?869PY59ewa92gliHR~BB zOzZC#;$VmbGu!t8nVul#%uVbJK-~-zrhlRjqq4d_EvyH?>}SGl6e-Ep1U6Jy#4U^pQEflyz3{46yCMpm}JgWUVnP~ZJljzC+Qx| zUvz%W`L^wImQGeaxO|r(&!_A0?!W)tzsogO^m_cd%{LBAySZh*U&3lR^ zUU)vc#^s+p>ROYleXQnt?);E%_DlEc4YlV+JFe}z`u(vC%e>G3a=!OhcV723D4c0E z^X-DP>TS;iQ?@nOS?_7PI#;h|ceB%JaowZaU%oi6nx|f~Rr4HQ8{7Love#pt=byLK zznA`JXH@Rl;8oY z|NWDB+q2`SGl$&#^*4WVZ$0$0`+KvB>7Adm=kEVE=Zw2SMrGK#{4~2?t3R91y3GAN zU)yTG-m;JHQ|r|@p#4V)rz~BVWYBF8{NeUwqEDI{I1EskO&;sM^cfPbmEI zuEhLv-)i~y{+?WOKKf7kcl^%*gU5cq7v`y$`WMgi%$jGmoST2rl@Cq(OO5}A6ngG@ zux_sY7qQ2`*8hGTTD#ibvr74!fXYex|E&ii + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_rank< E, N > Member List
    +
    +
    + +

    This is the complete list of members for xt::has_rank< E, N >, including all inherited members.

    + + +
    type typedef (defined in xt::has_rank< E, N >)xt::has_rank< E, N >
    +
    + + + + diff --git a/structxt_1_1has__rank.html b/structxt_1_1has__rank.html new file mode 100644 index 000000000..f5b2d2aab --- /dev/null +++ b/structxt_1_1has__rank.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::has_rank< E, N > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::has_rank< E, N > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::integral_constant< bool, get_rank< std::decay_t< E > >::value==N >
     
    +

    Detailed Description

    +
    template<class E, size_t N>
    +struct xt::has_rank< E, N >
    +

    Definition at line 977 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E , size_t N>
    + + + + +
    using xt::has_rank< E, N >::type = std::integral_constant<bool, get_rank<std::decay_t<E> >::value == N>
    +
    + +

    Definition at line 979 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__sign__conversion-members.html b/structxt_1_1has__sign__conversion-members.html new file mode 100644 index 000000000..bf95f0924 --- /dev/null +++ b/structxt_1_1has__sign__conversion-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_sign_conversion< FROM, TO > Member List
    +
    +
    + +

    This is the complete list of members for xt::has_sign_conversion< FROM, TO >, including all inherited members.

    + + + + +
    argument_type typedef (defined in xt::has_sign_conversion< FROM, TO >)xt::has_sign_conversion< FROM, TO >
    result_type typedef (defined in xt::has_sign_conversion< FROM, TO >)xt::has_sign_conversion< FROM, TO >
    value (defined in xt::has_sign_conversion< FROM, TO >)xt::has_sign_conversion< FROM, TO >static
    +
    + + + + diff --git a/structxt_1_1has__sign__conversion.html b/structxt_1_1has__sign__conversion.html new file mode 100644 index 000000000..b4f64fc1a --- /dev/null +++ b/structxt_1_1has__sign__conversion.html @@ -0,0 +1,193 @@ + + + + + + + +xtensor: xt::has_sign_conversion< FROM, TO > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::has_sign_conversion< FROM, TO > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using argument_type = std::decay_t< FROM >
     
    using result_type = std::decay_t< TO >
     
    + + + +

    +Static Public Attributes

    static const bool value = xtl::is_signed<argument_type>::value != xtl::is_signed<result_type>::value
     
    +

    Detailed Description

    +
    template<class FROM, class TO>
    +struct xt::has_sign_conversion< FROM, TO >
    +

    Definition at line 632 of file xassign.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ argument_type

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + +
    using xt::has_sign_conversion< FROM, TO >::argument_type = std::decay_t<FROM>
    +
    + +

    Definition at line 634 of file xassign.hpp.

    + +
    +
    + +

    ◆ result_type

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + +
    using xt::has_sign_conversion< FROM, TO >::result_type = std::decay_t<TO>
    +
    + +

    Definition at line 635 of file xassign.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + + +
    + + + + +
    const bool xt::has_sign_conversion< FROM, TO >::value = xtl::is_signed<argument_type>::value != xtl::is_signed<result_type>::value
    +
    +static
    +
    + +

    Definition at line 637 of file xassign.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__simd__apply.html b/structxt_1_1has__simd__apply.html new file mode 100644 index 000000000..8d3974751 --- /dev/null +++ b/structxt_1_1has__simd__apply.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_simd_apply< F, B > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_apply< F, B > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_apply< F, B >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class F, class B>
    +struct xt::has_simd_apply< F, B >
    +

    Definition at line 291 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1has__simd__apply.png b/structxt_1_1has__simd__apply.png new file mode 100644 index 0000000000000000000000000000000000000000..2f4fae1e853fe70f7d6fcd8513b37014c2e2397b GIT binary patch literal 1139 zcmeAS@N?(olHy`uVBq!ia0vp^&w;pugBeI_cks*wQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NuUdAc};R4~4s`*zl91)di5 zdaIrPwe8j|ayYO)YaZm>BH)_WEtryZ@(Gc~8pME}Zn_>#x{z z8}BTcto?uTldZpupU>R(aNcB<{1A|fK~BGTKvU^aJi~|Fy$lZ+t2my&{>pQqy?}2< zKSM27`ju#g4@(}fFxYeXF??7|0%M1#k`li_i^^SX3(rgaO_Npro+wziC&d5s>AaRT z2hX*n?MTkwwJa*j+T+p-o%EkYR>J3sCM}uxR3&oj#>L|Ek68AKZ zPnnlCbH}-3pL?Dd9Jj5Gs9UD``blI}`s{uS&77#X>vo}RTYJBnz0fRzf9&S5owxSw?OUeIp3+`CYno9- ztMSgbleg{CA8tQ8)%RSLSKgkJuK#SV@%t&-il@`KqWgX zy?9>co|GFq=4;Q6J-g%Z_u}Tyvwm9^Kl>GS<#y)8jqWEl>6)3kspngNE&H>1>y?z$ zi)OEL-K@X-RXM4z72kcg|3&-#d)=1D3(A;p$>v*5f4}4FroCrlJM7EmNee2S{Qh(6{!m-c;sg?;+DrR$#T z$=!VRS<>=*ef6b#V-K&oxbO4dkkGvzJG*3m9IM-NlH2llM83=Ip6zqYlm0FJyr)!o q|M8Wpe%Z1vU$sgeOn`& + + + + + + +xtensor: xt::has_simd_interface< E, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_interface< E, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_interface< E, T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E, class T = typename std::decay_t<E>::value_type>
    +struct xt::has_simd_interface< E, T >
    +

    Definition at line 268 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface.png b/structxt_1_1has__simd__interface.png new file mode 100644 index 0000000000000000000000000000000000000000..4af0926e322cdabc12f238540d157579b7146f03 GIT binary patch literal 2171 zcmcImX;f2577lPkVRX<|WN~3YP(%SW0sbU{pJaX3v0lHmIDqFWP1{Uj_9}&2pU5K0wMFTk8@_`@66PXs$0vcbMN=v`&DK8 zki6FD8tY;(m^A>wos7X~AgJBGN(=3Cy2B{wu*v6$zlU0_M$PwAiVJxUp#yt%#v7Ij z-?z87qw9X)&|lF#o%3Xp9|oO&X%3p@=tZlv0e3h5Bn>HhByq}W^@_u`BTBU`e@oNK z_Qck{_`ZY>me+~7Mw&$yA=z1$W@f2>F^BWb4T!hQS-xb8?p)9ch%E94_H_^>Z3Q&^ zU0lV~fa0Qk$!JUsmpGUy+fpc7Y$z*}^n9?3q-u-9}b1akp z=r+fkvA={aDL@LHFBE)7zhy4Yacm%+*A%RedL<1SkB|aVeh`TJrgUZ(Ab7Mp06aNY zKsJ%hsqQ;k!{F(TwguGpbaQdh*AObXM9|1002C$>epn7Q1~X@xs<8osEAq$K^7)Ug zF6mq7w_nd3x~KcX9awRvvPknMU$TbK62_nqV6a51OGfB{Tu}FWPhiEKO74HVExXF~ zblc6B+0#-uztEH^`WLwwO9w-_lSg4k11WH|C#G248`68m9X~g0VkiN7sl&!%+U{ zzRcMPwo?+HGn`kTbP+k0R}k2JOoD(BZQB3{*a!)UP(COh-UN*YbEgO2pWUDLOLLy$ z>T#wK3?hC7RzMuqn!*z|V(|jMqvV;m-{B7ZV3bak^+vc*3LDiEsyVT4gjaSq0PnB2<1F`T6!}G{G2KT0=}~OZ;*Y-*-RuW z%gpSd_9c^t1_w1>d<(4j`1i@`8qMP70?LWSKwcbNOxF4Hz^HJY2}t zdctdKEetIlJ;t1`|4}=4p@bXyDk@_WP|S6hJ3)rVrSzF3C9~prj39%+NaT1aUfxX% z@f5DN*T5ffeUSX)rnj{1vCs{*y0e?1H@QDlyitIjH>eD<6n!Q#Qrv$g+r2a`sd6J6!5n9cFZhf zAQ4xVjE~!om|WZ7P4yd?B+&d0-iJ?x_eOQm+MLQ`2iR|}S2YBV#DZt{Le3)|Y8%xw zzpJv{X)cUD;gQ2{%R#2Mjd(~VYP<@p;9ZkHB=3>Q9waOQn>pTsIo$cs-L;CnHt`(o zkg37xN%G7sM{7LUWw#H@tm+B{@Cjl8iW+3ZQ@C8R(VH@pSeZjw&+=mn`L z;YP1sVnQNhLx%Rs?>IVGpF0wFD5_@^q9^7vOLg?>7T@*TtDba6!0c3ORq@`FCl@Y8 zbZ0OcP3(tNg2>s0+L_661Fq+n;Y#%fHJ|%TjiLynAA_fP+rfq_(ZLSxFe= z$kWt?4vC*it8ju&`Odmgi;4Wo%LdM4flKL##U*B3Iam*|r`c>nFA4u0{+R@y?MH!8 znHfCzRbBom?=F9+kUeH`Egz$cF+p|CAT%^WzdZ-kebL!L4O$U@ldJj6m-v5_!sXJL zb0cpv%gI`0k|h+HVTaPeG8WYn=oRj-Tq!nby&dzk*x#PWYJRg>o-d4u&WkxE_>u7kXPD!^& zXAEy)hn0U=&k7FWG}2ou3R`Q_hMtoYT*g*)eQ57txXHVN?kzaHNL%R`=u}yrE~-%t;)bLnIfzi`knB0YT7J`-uZ{zP3s7X_(zazGJl3`NHbTkHlvd&7adfY` z^|u>@F^^Lq{_5vKq4QahGwLrX71_zCK`5))woA8Mv2q4(GT&+$7fYDMiY!8eN3g`G q$X|`n*oJbK;p_VLivpeMNaO8}?OJQ-U5|bfFn|Zi{q~{nulxg|-zF~r literal 0 HcmV?d00001 diff --git a/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4-members.html b/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4-members.html new file mode 100644 index 000000000..d7b143edf --- /dev/null +++ b/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_interface< xfunction< F, CT... >, T > Member List
    +
    +
    + +

    This is the complete list of members for xt::has_simd_interface< xfunction< F, CT... >, T >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html b/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html new file mode 100644 index 000000000..278c583df --- /dev/null +++ b/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: xt::has_simd_interface< xfunction< F, CT... >, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::has_simd_interface< xfunction< F, CT... >, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_interface< xfunction< F, CT... >, T >:
    +
    +
    + + +xtl::conjunction< has_simd_type< T >, has_simd_apply< F, xt_simd::simd_type< T > >, has_simd_interface< std::decay_t< CT >, T >... > + +
    + + + + + +

    +Additional Inherited Members

    - Public Attributes inherited from xtl::conjunction< has_simd_type< T >, has_simd_apply< F, xt_simd::simd_type< T > >, has_simd_interface< std::decay_t< CT >, T >... >
    constexpr bool value
     
    +

    Detailed Description

    +
    template<class T, class F, class... CT>
    +struct xt::has_simd_interface< xfunction< F, CT... >, T >
    +

    Definition at line 158 of file xfunction.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.png b/structxt_1_1has__simd__interface_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5a33daa3ad20ed50de98a24b79eedcea99384449 GIT binary patch literal 1772 zcmZ|Qdsx!v9suy4w<0|hrOxt-i8Ec!woFYIikXhc^r(5wG(Bp_Mb=SK@Y2XlcAPgd zHBrd&p3Gc9+X1{`*{o^a%7$2GDJWPc1w=v)+xauk`^V?~zTfwGFVFM7@ALi;dO8Sf zY-tPt02ujoKo|fRKy+~^$UtXLO)^|pS%sd8IHA>Qb)i@)&nh2i^*ZEC*jw{h+}GEq z%ZJk@+H`$8GQ&=X1G@HK#Z#X?2>{!O$N)q{j-ISx`Qq!&J%(4p1})^9A$h!;R-mR| zbEL<*!*`Bb?znJWvb6cgJvh9!1#LXx9?aZ%1!jaarmZ~>fY8if&L4XgbYrFt)c6DXtW0*!v-Ha? zXzH!PrU+60!A{kGroQmS8{o@3$PLp!;ylk-VbnyyE!$-rw#CPRrpR`rM%Ap06cG9~ z+zuisjb*18pnvrK1~5%)zl5agSY4Ry?~a z=qA16t{0kL>|JrX8r$_A5;KI#$(4{q^GE3hC)58BV9eXmZWO{I|&utdF*z zyH4I$B)Wd8EU%zI^DJMa42A?Nd?Gm`WZ8TZ1`<0pWgFsrwIhp|iR(G?oT0WtF@rA@l^BnGCt8vubU{`%*%U8S`67DtrR4G`DeYv+^!JT~wS^}~9SZX> z5}b&nas@L$Nknln#vJ`*cK$mhsR>o;fT$1b|7|Q}e8dk@d`;earJ{FfxyR0^J3Xnr z4JGro&Ndx^r*A$jvzh6~`7OUfTs_BPi^%uSdVGq`SWM{YUi&gFhDfeAEBai(cHG3W zG$&lnkjpJ*rIjv88Q76&PDH-#;6jU7FviV^!^JNuyAYQxiB;dij?^2XT|r1v5vCk9 zK6zNFNFm zZGqu+{BA=(0Q3=k+I`Jcdrmq#R)r0>9`BYV3i~;}bkG3jGOlX@XMjIOrk=b^(EWN)fFp5dcC99gB?JStJmAiiM1ZHNMTkjo|{fI8bf!$m(nov zH;uaAXpSAIt_cK_4Ta6=4T&2MXTO(j!~B}57PJ3(*SmJJ^_Rb8ldq|Y&$!U2&_GJ` zt6M*mWW7F4i3WEbUr-+5Wn>hC3L+u0S*)i_4`D6nu~GKZ)-NEWm60Y%yX46a&A9j| z^BcRPqwIGgo|#uWeO4rEY4)F1VDf&3E=cn~rN+8^Zp$`7mWUn(f zpkj-XR*Lv|kN2?CBYVoaDfM17miG2T^P@T(Au_DPK=I&{A6Lt#UMf<_8SF#%e#iPe zkBmLHaUjEtk0-|bL+e{RZQI8YIGGG^w9bs4;Tb;8GXTQLA7-8srmQ(_;MC8kwpcY? ym$Sk8{6D9EiZeW~J95E6YS_sgf8B&P0+n5iUrQ;flJMtW1|UzI4*1DGk@8>s!a}+L literal 0 HcmV?d00001 diff --git a/structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html b/structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html new file mode 100644 index 000000000..2c621aa99 --- /dev/null +++ b/structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::has_simd_interface< xfunctor_adaptor< F, CT >, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_interface< xfunctor_adaptor< F, CT >, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_interface< xfunctor_adaptor< F, CT >, T >:
    +
    +
    + + +xt::has_simd_interface< xfunctor_applier_base< xfunctor_adaptor< F, CT > >, T > + +
    +

    Detailed Description

    +
    template<class F, class CT, class T>
    +struct xt::has_simd_interface< xfunctor_adaptor< F, CT >, T >
    +

    Definition at line 492 of file xfunctor_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png b/structxt_1_1has__simd__interface_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9bc5515e52c0c61f0537f4273a160fa89d3323 GIT binary patch literal 3524 zcmdT{d010d77rqe3P=!96ePxoMvx^GlmgMTK@tSixFBmVY{dW(5F!G>;#2~qNCL77 zwh%TYL4<&8AuS+;wFV86NEn5Jh=B@(urm*)GqvA*{pP>UH}8-4?mg$c^X@t4_q*@h zgtJa|s$2JL1%W`SSPU8m0&Ri-<9TIy;QqFdX$w5|o^`ljySBCl4Bvf_hTr|E__zuD z+U|_5cU&$Pke{dbl>oXe*KtngLBM?DI<_h21>o}x7LB@aLr#)Aft&eUeY0E6kyBG^ zElPw#0$&L%W$L6C?&`0$^!`wy%(yU(U=MFi!*wXz(vx7?*!L9>x(^KA8i%3N7@FIl z*i&?zAr(;AFNDRFmDe|h*Y2AvYZ(%wVm(tvrAMhS)#ZaIWT>sns(aJo!t%5%`%L-_ zv+bsA#jEZpwkhib3`46H!AxIzAf=!Y;M~e)(JZ8JTn6Pnk+n87H_yM@-#BV3=viPFOwQIQo`IL{7 z@v4B#Obd{F@Uj7^oJ?G|fv?XQ8x{oAUn~?}`q#pf&H`Zp_1pJp{XQ*hTE7I2u>uZ>f8LnuZoxDd~qaW%aiB=HsOQv6H40; zEwkh(RJKOn7JkfZ&cRXhoskO~X1*z<7e-wC9Kc~}_Mu%@6oDZ9)v=3OJ*Xzqo4F-N zSDmf=i&+jStD;>2fscGMg5%>F9_}+XZXck98ASIuKPCySoqh73H39evmxdta|EmnG-%*NWmvE+}5I*upkMhs8~5azm!c9 z=!NSpB8LOV$fCt#GEu3Z^{eEz*g;Q-gK6OHL7yCbW?DWQ>&3W+$3< zIW8Gu9ZxHaR||hkvB)DPjFX3#X@08Na^AI^qCy|JoYg)J&-&}z9lIyIb%v~WF`a|O zAN!~c2c;ZVdE1$=?DxnOFa4H?*nAo7>80Wt2OIO0A`Uv93`x(W~#yF9% zWu>qekrrp96#QJbVV*A;pgDx7F1*`u&<{_m8geHTsnD_aeX>4ovE3s)r#LQ%>44N% z>TCOWwp$@jyS^NKr{>up@?V3{-L%oT{=8gNx>AJRiHl@>3adjC9zagdydLr-K~(Ii zPxAD+8J}Z2jPPC$)G3`&@e7Cw8BrgNx{U4k ztTioXWWE)tX}ZuJ!#7fLDKRjm&l0RpOjkX`@{i4&Jh{D%;>}G}Sa=*EwBPq>_8VN8}96pDDJCW?%x z${V^b_3K~qpMRGvqj)8kqY>f9cc1HNqP`M_Ua1YSdKisPwZIN}Y9K0)yO~vDBH>hCsf|z(aib6uz44 z%kh0}LehU;7b&b24phTMs#OXxD>V+LQl}wFEzSKB<2xd$K#1a4!@vm*1`Os^HV<0{O$OSAsn6NN@#vSDTLV^X2}Cq zs}mBNQ2U{7(zeo-!*N3g2w^`raQclzf8%W>g>)H7FLhf{_RwTKV#yFX^r=o`<(G;g z9>gy3gY;YKtFcF)GOen70%6$gkL*0VweGVTg=@bCuj$j_to?d1`7Iv|o(vg733uC0 zcV!;QIa=*@H`xp$J6EKFm@Ev~KQ(U{@FrXS_>G!aT^>_K1MIOBqV1D#;|xHqG%91z zg}}c@6qh7;mkcjJWzQpC#x{}3{@0f+H+WUc5-!{Hx5?Z9UNus{U_0w0?UA;NI+kP2 zkpX+zLUVUqw6m;yhi5O8KxCHmd$DK^=PeRetgosv6HLZq;0FimZI0196K6wyIZ!t< zXHX8-jg{Os)C7m5)}MAjw>&b_WKpSlKg!G5=qx$o=Mv(g58Fs8l_u@b)>&_8$2Koy z$n9IF(i-{1eE>$B9KBsX<9BW#==I${0_u-w>!^nm_l^7f2FyOttpExMq{sy&{j&|4 z^ZOELbK*AoqbbTOpfxh_1{xo(nn3=4)(HLHhJ7FOdw*LfaCKy|vt5aj3J6=bhPohOsMs@D()_+t6W-yv@Asuf9V0guFW3Ka`ncW`W)VsAq_^8>94%A#&G@+Fxw zyf&oUs-bgTLq!rN@L6Yc=hG`7)mN?s+((NdN0m;~2>k$IR%7qsaq>;)j;9E>th-x~DmO=J0Jsz@*jA1=J@z zaYwT7U(I74fEfn%-U)kVo*%OBV%ZH9wAZ9(ng)=xy_@#w`lmQOh2Ku9zq!aDE7P@D zRtO+@#2z3W*-y#_^B^Ag;B0+Kk47q`*)KQexWMJ^3EA!-D}u&+cFo-8T5Ha(Rc-<4 z`LLUUWo!=8tv4&u&~)OlOG@FhDs7*fUvFL_4!Rn=H_s%(`qCT|T=bqQGzwU`;K9hH z)_!Wl$Uv<#k-2tY=p5lHQ%e5G-6MV}Rf&_&5l@>ml2s#o(^()730~x-5*Hh v3Zm(T>e1f{{9h3exr?!J1jxkMYtL^tL?o$Ma@4(n^A-qe>x5=~;T87}3_vgR literal 0 HcmV?d00001 diff --git a/structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html b/structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html new file mode 100644 index 000000000..b70cb9263 --- /dev/null +++ b/structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::has_simd_interface< xfunctor_applier_base< D >, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_interface< xfunctor_applier_base< D >, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_interface< xfunctor_applier_base< D >, T >:
    +
    +
    + + +xtl::conjunction< has_simd_type< T >, has_simd_interface< xfunctor_applier_base< D >::xexpression_type >, detail::has_simd_interface_impl< xfunctor_applier_base< D >, T > > + +
    +

    Detailed Description

    +
    template<class D, class T>
    +struct xt::has_simd_interface< xfunctor_applier_base< D >, T >
    +

    Definition at line 361 of file xfunctor_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.png b/structxt_1_1has__simd__interface_3_01xfunctor__applier__base_3_01_d_01_4_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9ee5370f51fd4518c92a4cea2097c92461232 GIT binary patch literal 2173 zcmdT^YgCh07X6e~9%?~g7Aj(B2`{U`QHLOrAW9mdfINbLKthX!A_NdgP%wc?rGQE# zfIMQLDg+3a6aq-V5U8{`BCsU#2%iwe@{m`|gakq$nLyXfTJxi`=I`7e_wIe~UHhDS z&bcSs#~Z!VV6OoH06Q@r?tTEEv!=y9dOF%UACuduUCezvu_%p3qlGi`aw7GYDyPHt z3A>A4&UAEiX!reT!fNfAev+TJKcMBC1HP618UXb4Fz#;Ht6LTr?-IEu4Be?kB~c1B zXC>zJR>$46Mz2+cjCB1B@Ockyc(v!4mwz!c+CX^B>+4cx^p0Yvy@%i33QLTYk@V~) z(Ao9ppng{xZwJQt?aTt-u%A!bF{ElMrxd?Tqcu*Wnd71pMuQf@ZkK&g%We=`QC`Kg zlV~e#$w~JbE{^gjf$>DQL_-afV~z2q0;s%Yd5}7<6`L5DHTQ=gQ`ucwl{-jSq$`tx znf>T*O$lA2l}foc5$nG@VC8H&eI*KAjz$I0ly8e2AP!SKzrIbZ!HJQvvEa!|Q46X; z>B4-?v!GDPeUA&>B`X4Fx$|_x^ICzj?T&aHN%x}qo#(x|NX8`R%NfLEf@=`ZPBB9uuQ`sW;Of0 zjx=vSG!WTHZ1=D7_H|wic%2J3i(CIV+fXLwV4J>FPhAa3bC`(#?9nP1#!~PQR|kX1 zO&Eo4P}Bpu7jdSYD4Kd##bnR&Bd^n$b#It$A-*gn z`e2|gJYT84m+tL@AGN6+CZlmWPQf9zv<1f+t`Avgl9u0;LOpSzO879;Ysh-3OOyKx zBS&L+UY-k`65m>(TMO!BoZ2^;!4)ZuH`fk!H1Bi)l>#SX+amK=+qQ<1R8FRDGbRwH z0=$QYsJ~aEkFlwUNwx^-TZKR!e<7o9U;b`dV-i4S%ld66FpKc2LFuW{YIwG!APB{O zHHHP9B}Xn7WN^;$5lbnl)#k5D2e<_mgnXM<-9zA0NR;5fd}OQjbFi0Ej~c!0FO|qg z?9b5i+9uM-??}0G!5VBpKh$@9JV(RS@G@n>o=TT(bVWNdhJY}5y1S9sI^J0OG_Gq( zPQb&y$6V-^=1V-s?kza0jQe`OcCEfd-&a{j;$<#Hr-scYMjQC`*L%0u5z5P`wqyMI z8L~PuyQMTLILto>$AGZ>`GLzd)g-Y^nB+ic9;+Vqp&v`UviI!3=WyxS0joDeJB&kk zkr&2!`pK!nig^F!J(v_*amf;nq4x8oAcvB%a{Xz6ow}!U@OW#AWKKg{0-}EF_dJA& z4?jA|ApBzhC{I#(GTP0hJqE+7kGcaYH47<|=TB%VGgNTZPf&ijK%~?NW|!ay0o3I= zmw~6=ZSFAUG{`Xmb4pxjb|Jg3|fUO;O*L3uNEtbG-w=P2?Eq7W|naOoN zNe2$^*yVZ>&;#Coe6U^(u>?Lz_sv?_vh^geJI7;_YE5m@tgQbpnps)kcgnu<2fs7= zl?6w(nS!4+Tf`zp6ngG!e}I$!9jt$I&s5wi9}4G7)?3G2ah+B|TSdo@(c)D%$fT^l zIW-iAtlzIyUAO*%0#g1;y(K0cO@YLgx!8t+*s|vU+Q1fIXxh5t06q1hW6B8|5m zkL!M}wS(%42OS~`FCV%a;0TiO^C|a<>aP;o`UJjxY`p6iYJRi{Xrmqf@0du`|wE98clE01GY5s!ujZ=&2~RQj{YK85q_>F@L-voB63?))HB7;A`o z0%Akv=2Rp?n+LKy2|HFN+=x%H)`tuNBw@_bVa!(aL-Tr^HmPb9jPbK@JA@n$y1tBj zftb)_16*B#YGJc-RO!h{l#Tp*Yp-q;SE}Xz0+3z!GxiVuRhxTmXto>#5 literal 0 HcmV?d00001 diff --git a/structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html b/structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html new file mode 100644 index 000000000..2d589a144 --- /dev/null +++ b/structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::has_simd_interface< xfunctor_view< F, CT >, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_interface< xfunctor_view< F, CT >, T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_interface< xfunctor_view< F, CT >, T >:
    +
    +
    + + +xt::has_simd_interface< xfunctor_applier_base< xfunctor_view< F, CT > >, T > + +
    +

    Detailed Description

    +
    template<class F, class CT, class T>
    +struct xt::has_simd_interface< xfunctor_view< F, CT >, T >
    +

    Definition at line 415 of file xfunctor_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png b/structxt_1_1has__simd__interface_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..60002ce1026dffaaf9eb476af9fa365a51287e03 GIT binary patch literal 3246 zcmd5`!&_{)IcDRCc?uN1p=)B1MS6c)&ll~M5+Va^bdF)a#JdmKy!Ll8h7LAJqIgT zluq7@>9)2upx>AD=05Q5+gOy3F9>-4a@nsbcnbn)>_)i$d?-;xP{@xqp{)Nq8P#sU zRbH)r#NGOvX-}yFcN*eWKBE5095I)N^0Y3`IaTF+4XTUS`8$|&dNvhk!B(weGr}Ep zZFHQu=Xp@gnO4W!7f0)nDV5;f`vRtD{=JEI4v*E+#ZU-DMHab=(ssEFZ{3tzR@}w< zRN}F}*8W*^0&56g&t@U@TA!xXHZ0jVoR_rN#+!A+x~ANcvVYOwLHVkZ?Jv_!e3EZ{^G0r!^u-~@-`uW@rgTurH^m6kf+mAI z7SW`X&8_22S!LB!`DR4xTE%8qhpl?@@^^;7E^eRv+v+|@Df+UXNg0GJs0r*cV1ppg zZV%7%(vlpM7p(ji3Z${DVg>4igKoK}Isdq(?VT!Ut-<;JC;LD;3Q)jByRfwvsbJ7L zk3a}0g8;JnNe$?oU3*al1vmylKpI(3;eU8;kg0qbTvh{Kola--WxyTi1Hl0IzcNMb zK~Gpk4(f$;e>T(v;r^AV=W^j?J0SM_bFKBeTKJVK?^6}g3hAfF#_p5~u%LHTz8U5w zN`;=`?w)AL12bCa91&i6o{$v1%%5kXk|{T3(Tc>R0-2o6W(TB1LZJM;Fcf44B>*4F z37X#m*}fF6#N+71sHV~M5$XHSFRv%;wWM2c!o&-aC!`hoNJfVZMY2j`8gq1M`J0~llDX746|`iTm>J_@w5M!FBlk9 z)(vrGNqAflE1h;uBIDv-H)FO}VOsNcLirYnk0tv^D+g0L9alUdxlV*VV%2KX&<|-| zrIJ6ntOhWl6YfFE&Up%0DnNEgm+$Qb1Fc&D>8yh3Rmy~@t9*esv+iSn(I1HG z)Bj6g11|nmZVYWL-{9*Bo0OLVu|iG067_VlLp|cCqSu8iUt^}}x##Y1WZZnb|NBRU zW($$ew(*Hm^jCTK`7v#tj2zoOAAp;yOAX-_NlTh>dmg{o7RzeMqEsCA;ox4XBJ^+% z$6$$P*!4G{dqu!rzBC?Nip<%gZ0|sl#$$WbJI_*jDOq};Q#QC=kk(mZu4$+!52qT=_~G}60~rL0+2=HdmXAAbe#{hp|12?n^U}5- zy3WYi5iwCYkz9s1Wdg}$DN!A?Zdqm0#K{7)k>QpB%0A~Ba-Rf-3q{8BjzfkjOl_^D zM&V_94-c_KQ*K=BM1Dpk_t5l>At%1qWF^e`#XEl}A$A*@akKMnY@`O+!hV~BO!%_R z>=#9O(H&7+*y+4XpLwQ}Nd<4y(yI@Rf^*_P*8CgExHddYGXoK?gU=p1`&f)wdc~9G zywBv0=q{pWe{j;BN-_8_#Y&F>#&xc8_p!jS+vxMgYi~Q6m$NExUEq6^m-Lre<;6oc z-xTh?J(n^Tdi=8+QV)`;kRF2{h8oU&T&|hzsb%AsjtfSHx^DUHW~_An_zS&=)&^Uy z#%UcUQ#$}l^$6D}XRVj3<9{FU&0Zfm2!&DmJ;`y;u8^af!HkvaomHVx1s6GFAlve~ zdz^M#($}d%*cFYEQ{J~YBUjH7j79Ac?z=S3I9lcs>T)6)oMFwTA{(*rCuKA;(@k*i z3_VwHHv)zs`P7qx`fx^w$j+H0xYJ!IznI6bg5MXPg217McF(m%rlHRtjjQ9iwu-hi z%TNBKO=21yLrImSmYHxZflS?w3t3gozL}b@l!;0(P)0mq9XV?P#=sXpi?^>%1NwP~LWEX>BondWk?JTFH!zpSrrLDZbYV zoON-%bd|UPDL-%}ok-Lr{9_^|p2l?!lLo$KF~kRB{pDBfT87A~#akH|R|Be}pTDDU zETqTH6}l1$cXhpX?6Pn$2CJ)OJr7~bJv?H3_c~Q5=$wp<-yE)B%f+5SrpKRO}!fx)P_tWET28DU0ZxpTNS4$RR!z@1{l<%c2 z$D0E!3RIO>zz2<=rNlYvdvdo-ZyjxlEI^x?^?I)is0|$6%kO5NW~dQHk)B9&avYLg z`N4$~>uO^yEwPPt)Su)T8w=-_B&RsOp(h^4Bo@+%eeGjC4uwhCrBAvqZThU!-@X32 z0(alq(n+6FiQk#gRFB}BTaF`A>O$I&)f0&^E9^9<9waLrxmaUs6+A}pZ+NhD4Sdoc ziI|;kE2K78neDe5l)p8wMHX+Ia=(+8PIQ<67Iaj7#>yk^5c1M$*SVxjyYC9--;3wP zhWG?GL4bw&7Ndr%S@RFpYwcf-SqdC%3<0FS)YWU8Jk=4)%h$5~?BFvi+0w|}M5s^l zzhkanQ z68R*kxw$S+IF9tU8gkSLi&ly6+>lK-h>6xCW{^d(a&~NBXoVFQl>+dn^-UV_8*Q!g z*S=1wqmUhWJsl@@s?n2k1g6AZo_Scfa2gve z4y^Zt*Ln}23vS7+iZnlQ`_VJX!bm_SPZkF+`jw>MJt^TDEg9;K8+Ys7F&DhPaj?+* zAR}Kp9FNUkPOx0m$Oc~`36VnN^aOm&fop_MvXu3ZbV~0gO@TTciHF*>c#mZ7tVgW;thez`f7@c z6ERqd6fs|`w69OiO Ut0OtUp9Kiv=HptmFW}dI0*&24 + + + + + + +xtensor: xt::has_simd_interface< xtensor_view< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_interface< xtensor_view< EC, N, L, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_interface< xtensor_view< EC, N, L, Tag > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::has_simd_interface< xtensor_view< EC, N, L, Tag > >
    +

    Definition at line 399 of file xtensor.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png b/structxt_1_1has__simd__interface_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ef006e60b84106f108abe045a37f3c812f6774 GIT binary patch literal 1177 zcmeAS@N?(olHy`uVBq!ia0y~yU3f*F8(FfeDDeT9L6Ma9#_F{Fa=?cCdCPqcVk zy!BW9`mb+io13F@pltc#GpFWgoE9~o(S75^Cobd7lV(QFN>GVZI;kQWJn2lRq3X#P zI3v~Y?dq0z_s5ra-|>~$zn*7D^z+$wURuxmb!@x);s3oWZ(g>k-gDRf{qlw1e_H*^ zU+=O1?47i)`}W03Z+d@$=Z5$P@BGKps{dxLZ=dkw_o;+mN1i6O#Q!UFc8<5ccwo!j z11Gll*G;mhtA28^qjG)mVxc+aotZW+7L_N~KHhMXQ-7VB%bJP*B=^ma`DjyQ_A1@* z@8@!sw@oX5zf-EP^5FN_-?MyQM>Ff?1ef`soQ&jo6Z_?kAr%Lf z-;ZDI)Ax4QjWhTv->iK8y3p%=^Y^a${ZJ|DKL6_9DnBQe)*kxl=lMzdm!;4AuMbc8 zzGItHx8LUB#9N+5?)&fh$39d!De{+XnaWS|P#;gD@S{^yis6i}30Y}jM#iUw82(8A zVrURzSh8{klfx=IJ1#ATlvN<6oCmiSg9?bbtxJR935c<-OOq~)SMo_<*Le&3O!AsE zWl55j=T5Cc7?{t_(Y^`qFjp z*^r=$Fk!dXDlbh_+5K(86)e7c1YJ;Hdvj)AdB*Rw-`OUQ7apIHob=^f?ziH1`wr}@ zC>Q@Ob>@ECwvX+Kbx|!>&fEZ|Al9j(>kGd~UhaFOr%`5as%dk4{k`Wiw;JAN%iZ() z-Sn*IyvKX>>oXsp*)SzOH|bX10pqW$>!z-}{UYKl?^iY1jr*(P4YtlNn%KB(aob1c z)`|`LzMMGWdhkb-)x#}Qvn^&v`Ne#a`lX*#Z}+Df$ zntSeYVr!Uw7i_V6c*0KqXq|`Z^^Nv(OFc{b{#yE;wVr8W6JBRk74hY=VL{u>gH74X z_TK%K)b>N^a_5P)^W&EOyIf=SS8TsUFNnKRYi_(OX8Wy2M-GP_d@`;1TZ&mlp2v5+*xu6p zp=q90;pdl6`qEtz*y-nfr~aqT<+tnf%Xa!C@)_**0oXP|DP!PsY|w()K5Gb nGN~xkM^!T%g#k-}m+D`hoO4C+$LoW@LWIH7)z4*}Q$iB}IUGxN literal 0 HcmV?d00001 diff --git a/structxt_1_1has__simd__type.html b/structxt_1_1has__simd__type.html new file mode 100644 index 000000000..9293a981e --- /dev/null +++ b/structxt_1_1has__simd__type.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_simd_type< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_simd_type< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_simd_type< T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::has_simd_type< T >
    +

    Definition at line 273 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1has__simd__type.png b/structxt_1_1has__simd__type.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff82d2c771e635acba5f6d8c5e5f0a9a242c174 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0y~yV7vlk2XHV0$?5A$RDhIpfKQ0)|NsAi%olIImi8Z7 zZegHVATj;SivtG^0L6nRU0wl{<17jC3uXZF!N8npHqaoJEKe85kP61Pb8lBYR^VxI zH=kSiU;Unmor2%C$LnwAZh3Y5ieZA{kBKGR#+#?ijFdU(VdOd~a7uuu(F`FiPqttu z)sqQcD^w(Xc&~g-eXrfz{zgBxCokx-p~)lb==E%Ilb)2`{N%nVEBE-x-!(s);)TUM zidJ2|sUDyo_3L)Frp^_*E;!>`)ddF9U(>udVA8-0?AP`CN7ADcI` z_MBDf??cfAYTEICm+yU=da-l*>+N~^c^j{u(NOxO9m{&|S+n`0m9l*G(ptjnb~;Sj zyKVA~^Gn_-L~fN`HF2qA>A$?yO3&0tez>GtIhtK6q~X3v`Fo2|a?^0dRc zc1Eb>CiNlT3G6w#)W+a+Q2q z!1K61;e_hNvu3EhjG8Pvt66qUwTaEWvkSSI*VqO1FZlIg#ijS0S5%Ed1H7*@UMUKj z+N!I*m!b64QyAansMmuFgUhLt#rS#`x5T=vajCgU7P52 zscNp{++`EPm4SK|*!1!3vE4TLi}i`0wR6ocZC@wGd+y~`kGE@h{L)2Mx=kyaR_Fa> z?v*PaUDs{?^mJC$qo-?@ePg# zzHupPYTfE&jbg2LN57fvz4xzb*1OBcoaWY5>#M&kkIb2WDQ2SC3G)@~KetAeTisFp zoR$xCboH;E&GD^&e{4JcB71(F=ch$^wJwv&zx+FTZ)a1o)1-Q5^99>dQ+GT2UQ|0N zf3b9N`P?5b@BTQ?{&k+p{Z-Zzf2mcdNc!1roctvI;@L0WlQbv&=>;bs&Z#QRnhPhT z7^sF!;#tNX0#0udj0fr$=`(mRI>@MoFmx@;-=(5^`$KJ(d2zkk2-vCOG*|AzGFe=08@i%70ovT83dsWVObBK^fNV1D1O z7aNbCzO~h6l|{5&#hIJ-CD#*cBh@ODCwY0VnDixWX2{mR;V)mO*)5#<^J+!@l6}(e zuBU(eyW-34qw$uXzb;jZ`r+{`ihXar$-{ekx}NhFFa%uhvGLr`9#GEQ-K#6?f9XAY z;@=Zrq8&?Te%1)z9x%P=b?=u}OXbi>_f{=m%-zL!#nU%8tAO7$dzH#x + + + + + + +xtensor: xt::has_storage_type< T, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_storage_type< T, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_storage_type< T, class >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T, class = void>
    +struct xt::has_storage_type< T, class >
    +

    Definition at line 632 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__storage__type.png b/structxt_1_1has__storage__type.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e5d3baeb0b09f72273418ddf0f4a57453bead4 GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^M}RnhgBeH`_G|F~Dd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=B-=o-U3d6^w7^#!hNh5NN56 zyHxvMczvf5&x5qyG~;C}7V#?Ce|9vkY@K=YDy#Cz>}-b#DJ;AklX?~iD@^13WV0>I z{Fz<#{d)|7J{6oDzvua9{tEQ`Y;*5&vF-Gqw%;T6`AvOh?D_7pB8PIZW_(dkXtd?I zeybuIcf}Zwdpef;;uWkOdlt>_ySbr!)hvxSUTx)n^ijv`@UrPkGyfId-nM0V z|M!bKAOGEc=W6xei`UL*X-;32`Y!0qRn8@roRecBvv=yQe`dFAUtNmvg1J|ZKUw^l zdv?gQv=>>+r|y}vq+?;!+LnywyG<+Dc72{Y#XIhH>jUOU@j9lB7Hc*JGaHu2l;8Qe z@||t{x;Yy;A3A+#p0@p(-`B#j?+Y3;w(r{Jc6IgM%t=Kb-2>VJ;VbJh{V^*vQxWXY`QFU=>1L4N#_FV5A|q!&aTp& zB`Xm9f0eBG7G^7P?@3vEw=GVee}rx6`5BW+mfcHG_xu$P4-^x}88c&J?0GM|e=Bd& SzZaM;89ZJ6T-G@yGywo_JW}fb literal 0 HcmV?d00001 diff --git a/structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html b/structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html new file mode 100644 index 000000000..74ab64696 --- /dev/null +++ b/structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::has_storage_type< T, void_t< typename xcontainer_inner_types< T >::storage_type > >
    +

    Definition at line 640 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.png b/structxt_1_1has__storage__type_3_01_t_00_01void__t_3_01typename_01xcontainer__inner__types_3_01_650a1762a9f827a241fdd5fca766bcf6.png new file mode 100644 index 0000000000000000000000000000000000000000..f73cd6c6e89406601791abcbc95f70efa158491d GIT binary patch literal 1915 zcmd6o>01)m8o<$}(VTL+lS|X0cS=QETivk@A~aO6+(;cwQ4laqaYGxe8RyC^Mii|~ zXRaG=cMKJD#@!hzmjM@W0mY?oWyuV2!MseL`vdOz@cX^zoacR>^PF?u=lz$D7wmxE z5j_9^Z~%S{f&u`vDVo?vcaMfwQM?(Aj{01`0o~o*)r5;uWg@kQ;dBag=WyY`Vpms} zX5E)IQl;73mw@u}1!(3Uhog289{|w#91gj3BUwvUEFy_q_Cp*)UDkF($zP$3L(H8E z`q?^xlW?=l&vf-O{ZSsEYoLmMR^(e;rj=i$X~UmhjYj@0#3xn3sn7Nlwqcqd;|pT@ zIzqf??mW4CaFt$V2P-MLK;uikH@M{pW*z%l8s75Q8ovDYuC2%LK1WIv+sJ&$HY9MF zFgsljg)a~J&bS7V)ftnVx*TxqeEg+CZz@9|-^8A`iCxD8jdFUn;8nAV*w4y;5Ww(?028_2RiM{j|i{^3funQ6BybJ&zt}Y>nt} zTIwgJC7y;W$3IwyT4GH%w`~}3A&gdoMB8F`2c#(Hz+ZK%o(6yDRrE0LlhEx3(kP@< zl7na`<>n8wTb_H=!1C_TE&aI=y_6Zr;<)s-s*EQc(BjktyH##)WK1HrDo^?7u--SM zGo*wcb%ZF?X?<3}ntsNO`rK*M5+q{;%d~$7#Oul*LBFjZ?qp8r8Ph$mSc+ zaL#yYlUeazGX`uo~EIkZ{izA=3&VxNJ#O$n|H3xQTsMJD$w+2nQ?w{{wGS2h z#cu4_-0g?btCjWH62Y2xTvDNG<)vbxbyhX4#@*Z9O&+VmrI|{KB74F&)%L9*iTXd; z^VsQVrou*@9>nH2ymxyndp(GGmNfz)yU5t-M;!&62;N9w{FsoVnW~TlhsI& z39NvP*ni)JCW6m-^VWL*s8t1e#jxoLXY_0i!m<1hh>d+-@WZ5$5OLM7VK#zdB!wxFqU$SliCaD(1)%>qy9Vi82Z{{qD|gO%w4o`~nSQxn@3#aaUTG(9YX2CvSl-DVZSXgEhkL_@ zopGsPX2%;(aP!%igh4R8FxK zGrSr~_T|k8l)IvvJv~#V<>lEb!>i-KLiQffhv|O=HOaczQHMUIwF=J1kNbB|OHu3G Y#2aLKS%1gYv`GLQ>IM1r^0!(41LNDo>;M1& literal 0 HcmV?d00001 diff --git a/structxt_1_1has__strides.html b/structxt_1_1has__strides.html new file mode 100644 index 000000000..5c3ceaba3 --- /dev/null +++ b/structxt_1_1has__strides.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_strides< E, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_strides< E, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_strides< E, class >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E, class = void>
    +struct xt::has_strides< E, class >
    +

    Definition at line 661 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__strides.png b/structxt_1_1has__strides.png new file mode 100644 index 0000000000000000000000000000000000000000..57132ece9a30ca7b3d9b5238bfcdc9d858f170a4 GIT binary patch literal 662 zcmeAS@N?(olHy`uVBq!ia0vp^3xPO*gBeJ=IX<-jQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NroJzX3_Dj46+y?AYo0#A#& zx%KCN{xS8gjIP?t@?K`1D-1ipVkfle&Y?3o83#Rz5?B>Ie~GlHybLx^G&&!*&D1}w zsO^An#E$>9hvsMa{`W6V{yOXT>-S<8m(JI{bbV#v51&cXUn!Uv*{7;Azd7c$|JG{d z4Ye&-t4jGkKN4@@t)H|fB!AlN7W?VJ6QBOvWOdB0eUtjx+NqaL1kHWADKJ{*jmM`x zndci^D~kBS4^2P+aMr=C)4C^bzmmOs+V;aA>vShSNmg~5^yW%;OR?jUjH&xoZZ3R( zK|q$j?$+NV{1`Z#(_vI9BVL~z#3ULA%Xi+?d3xF9v}!)Hm^!iqzj1qDYwaxR|6 zcwn^x3&Z>-0frhbCx#E29E=B+;}v*WuVP{>9cADt72&AiX~()y<>waVJ68Lj#_?YI zeX35=({oj+zFFQO>2K-xe{np&pS0Sn^wNb-tCA)iQ(t_uFiU^^;@sIO8*P4UVVawq z5%e`@t<5y?nEh|gYTr)UKIzo*Z6+&gvhEw5zP;^~r_n__m1u#e^>?Ly7e~y$yJxA@ z8FS9dciMHfb8z1l3z)oN*8X!vuVgpx@pmb1PB+w z>?Aj_cqkv&33t1`bJCQ g%2Wb+FmgY`zk5eI7T)BH0j3}ZPgg&ebxsLQ0K&XBF8}}l literal 0 HcmV?d00001 diff --git a/structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html b/structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html new file mode 100644 index 000000000..1cfb4d0fd --- /dev/null +++ b/structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::has_strides< E, void_t< decltype(std::declval< E >().strides())> > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::has_strides< E, void_t< decltype(std::declval< E >().strides())> > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::has_strides< E, void_t< decltype(std::declval< E >().strides())> >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::has_strides< E, void_t< decltype(std::declval< E >().strides())> >
    +

    Definition at line 666 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.png b/structxt_1_1has__strides_3_01_e_00_01void__t_3_01decltype_07std_1_1declval_3_01_e_01_4_07_08_8strides_07_08_08_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a62d68123e3849ee3209138ce0daeba2ee76f451 GIT binary patch literal 1090 zcmeAS@N?(olHy`uVBq!ia0y~yVC)3412~w0l|Gb)9YS^FLdy3W* zpWN0`@%SY6OG79)QE&PE`bjAjwXf!C?Di5;nW=R0GLVvV^lVa5*6^H=!UFaVJE!sH zDKl?wWoo$nnwuerp0^41)sD-wZAR zlNcH}yo4A896gyBlr%gU9Dt@VbSwZW0tOCM71=en%#1vB=1tN;6-`yo=~|v1K|s4a zyB4S@dIIfI(QJ|u%6>lKywSp%{j>5f&sX8S8Y$uPwoQ(?U95dyua0NYT1koO`+YKP z$x$DSyzEsAlm6|D{$8ze%lFTO7L~29;_A1o(5VpYYCZDh<%8&jac--WKfLjI-0!*h z@6*-uckjNQ+qijyjFacOtcwQjN2$?aAQvs<(F#mCK_o|)~Oo?3Kv$=bJPviE)4qrX`D!{&!K{5)!d{;s?J zCS*SQ_00T7&wTbb=dP=FpPl*L>7l&&-E)7=&DKs{`&4||t$XXfN6%Pwr(A%~KdJqw zVCN&(>2uxImlf|m;9Zn^R@+*o?M~X~W^J2U7uDuXpVnocy1Dtf_pMu#-tRi_wtcap zVamny@QjrEv?}A@_sYv3g;?C%A)NZ^pR3%p z&b8me=4O0)_WkvdFeUz1N3y-=+TULz{QF_WVm}>~Wos)>r!G0~cXdf=-t3dBd~UPv z-gqHCb~<0!=Q{V<_ov!EPu{wCqw4$q@|2jTw^EALWOB + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::index_from_shape< S > Member List
    +
    +
    + +

    This is the complete list of members for xt::index_from_shape< S >, including all inherited members.

    + + +
    type typedef (defined in xt::index_from_shape< S >)xt::index_from_shape< S >
    +
    + + + + diff --git a/structxt_1_1index__from__shape.html b/structxt_1_1index__from__shape.html new file mode 100644 index 000000000..09971a34d --- /dev/null +++ b/structxt_1_1index__from__shape.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::index_from_shape< S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::index_from_shape< S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::index_from_shape_impl< S >::type
     
    +

    Detailed Description

    +
    template<class S>
    +struct xt::index_from_shape< S >
    +

    Definition at line 536 of file xshape.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class S >
    + + + + +
    using xt::index_from_shape< S >::type = typename detail::index_from_shape_impl<S>::type
    +
    + +

    Definition at line 538 of file xshape.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1initializer__dimension-members.html b/structxt_1_1initializer__dimension-members.html new file mode 100644 index 000000000..c0dfd9946 --- /dev/null +++ b/structxt_1_1initializer__dimension-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::initializer_dimension< U > Member List
    +
    +
    + +

    This is the complete list of members for xt::initializer_dimension< U >, including all inherited members.

    + + +
    value (defined in xt::initializer_dimension< U >)xt::initializer_dimension< U >static
    +
    + + + + diff --git a/structxt_1_1initializer__dimension.html b/structxt_1_1initializer__dimension.html new file mode 100644 index 000000000..7d6de2990 --- /dev/null +++ b/structxt_1_1initializer__dimension.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::initializer_dimension< U > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::initializer_dimension< U > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::size_t value = detail::initializer_depth_impl<U>::value
     
    +

    Detailed Description

    +
    template<class U>
    +struct xt::initializer_dimension< U >
    +

    Definition at line 171 of file xshape.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class U >
    + + + + + +
    + + + + +
    constexpr std::size_t xt::initializer_dimension< U >::value = detail::initializer_depth_impl<U>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 173 of file xshape.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1inner__aligned__mode.html b/structxt_1_1inner__aligned__mode.html new file mode 100644 index 000000000..ec8329d45 --- /dev/null +++ b/structxt_1_1inner__aligned__mode.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::inner_aligned_mode Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::inner_aligned_mode Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 212 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1inner__reference-members.html b/structxt_1_1inner__reference-members.html new file mode 100644 index 000000000..9932002b1 --- /dev/null +++ b/structxt_1_1inner__reference-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::inner_reference< ST > Member List
    +
    +
    + +

    This is the complete list of members for xt::inner_reference< ST >, including all inherited members.

    + + + +
    storage_type typedef (defined in xt::inner_reference< ST >)xt::inner_reference< ST >
    type typedef (defined in xt::inner_reference< ST >)xt::inner_reference< ST >
    +
    + + + + diff --git a/structxt_1_1inner__reference.html b/structxt_1_1inner__reference.html new file mode 100644 index 000000000..917eeeb7c --- /dev/null +++ b/structxt_1_1inner__reference.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::inner_reference< ST > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::inner_reference< ST > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using storage_type = std::decay_t< ST >
     
    using type = std::conditional_t< std::is_const< std::remove_reference_t< ST > >::value, typename storage_type::const_reference, typename storage_type::reference >
     
    +

    Detailed Description

    +
    template<class ST>
    +struct xt::inner_reference< ST >
    +

    Definition at line 931 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ storage_type

    + +
    +
    +
    +template<class ST >
    + + + + +
    using xt::inner_reference< ST >::storage_type = std::decay_t<ST>
    +
    + +

    Definition at line 933 of file xutils.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class ST >
    + + + + +
    using xt::inner_reference< ST >::type = std::conditional_t< std::is_const<std::remove_reference_t<ST> >::value, typename storage_type::const_reference, typename storage_type::reference>
    +
    + +

    Definition at line 934 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1invalid__type.html b/structxt_1_1invalid__type.html new file mode 100644 index 000000000..de25d0e76 --- /dev/null +++ b/structxt_1_1invalid__type.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::invalid_type Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::invalid_type Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 99 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__chunked__t.html b/structxt_1_1is__chunked__t.html new file mode 100644 index 000000000..70e036bb9 --- /dev/null +++ b/structxt_1_1is__chunked__t.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_chunked_t< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_chunked_t< E > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_chunked_t< E >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::is_chunked_t< E >
    +

    Definition at line 24 of file xchunked_view.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1is__chunked__t.png b/structxt_1_1is__chunked__t.png new file mode 100644 index 0000000000000000000000000000000000000000..86ea8c64c7aa1a80ab2ba1cfa06bc681abc2caf3 GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^hk-bNgBeIp4mK+1yGK&B*-tA0mugfbEer>7#Ns>JzX3_Dj46+y*ur&0!K^x zY@_%8kK8_H#<;li<@rlrHmGlw?rf4*s^%7)IGKCVs;Vs2=2cmHCOL+h#`PsumgbwL zPQE4iw`Z+R>Att^25qrz$8MDytypFDMWy*f%IRJk<*N#B%zMZy zeLdIS<>{)U1;1yWe-p~~Jjw7%WqkZeUAE1K|5V&fapg(tr+o`w_2Sc)cg?T8Q=g`M%+B4uV|~Q+<#R8-_P&?BSpTc@m*10Cy?XxT zqQd*s8SiF$zt(UrU%Kj5-zS-n(8p7GR;~Kz#TI(CB39DH<(w|Vk2QJ>1x0@u4nHlb z>yS^_p)^PCk+{SreZ~Xk8j=hOaVHrVfa)1K!i^Xl_Do`Acr=xVL129fLqmlsGs6*W zG$jYtxw!c0ad^&)I_WS8sBcowb;GvGy!61!dyMqjUIo82QmORtH=2;*yxwTSlR{o2 zpUFOx^6F!col@64wtHIO%)0UnXRc*`0f3*ArxO{(%#Z!IZaGdG;xI?n>`@RG_<4Ng{cJ^nE+_NzW=j zTi!XnaMjYUwFR#EZubl1<#>dT-N}%u&HQ&oV`XUks_#Gb|I2%P`u#=8`Q)8MaeqDK plWm`5JdEPtKA7t0^5o7h=8w#8{-~|YX#u7=22WQ%mvv4FO#m-ZPq6?1 literal 0 HcmV?d00001 diff --git a/structxt_1_1is__contiguous__container.html b/structxt_1_1is__contiguous__container.html new file mode 100644 index 000000000..7fa80d96c --- /dev/null +++ b/structxt_1_1is__contiguous__container.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_contiguous_container< C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_contiguous_container< C > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_contiguous_container< C >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class C>
    +struct xt::is_contiguous_container< C >
    +

    Definition at line 37 of file xstorage.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__contiguous__container.png b/structxt_1_1is__contiguous__container.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4128d1534af68b9c0adf87f860a8d2dfb04b05 GIT binary patch literal 712 zcmV;(0yq7MP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~00070 zNkl*cSu$Tf2-wzx1c(H_8lTut8 z@7)(Wi>y8N7GC;duBdg7D*AlgxQdEdYS7UhMUw9@TaaW2{-ed%#Ph1>e@XHp-^s=H ze?3WF;ae3&lKlt^lJr4XkfaX=3p2C30{|c90RXq>CoCS1U(omoi$UTCG=9S(_9y`G zLRbKR55fWfd=M4@;DfLL03U<}0Qev*0Kf-f0RTP-3jpvzSO9(G+8@w6gEkBZ7Yian~*7mLNR-5l*N z%RJK_l}^hNw#Jw@yWKult)Q0w7n1Z2U4lr`dmLGejaK#F7K$X*X^0_77wD0T&(2Vi uj_6cTlJrHwLXvzC7Lw$H!NSb!?)(FMnek + + + + + + +xtensor: xt::is_contiguous_container< xiterator< St, S, L > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_contiguous_container< xiterator< St, S, L > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_contiguous_container< xiterator< St, S, L > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class St, class S, layout_type L>
    +struct xt::is_contiguous_container< xiterator< St, S, L > >
    +

    Definition at line 347 of file xiterator.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.png b/structxt_1_1is__contiguous__container_3_01xiterator_3_01_st_00_01_s_00_01_l_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebf5e71ff8c8d84bd0fc8def0ac9976d5084972 GIT binary patch literal 943 zcmeAS@N?(olHy`uVBq!ia0y~yVAKP$12~w0dIj%N z(e!;eX^F}EOQ!avwH0^#_|?7$&i@)*V!Bx)cG9)S)v`yw6c-oljjPMg&fOJPeWqMr zefI51Uzp<7YcKhlp&usg9BsW${_7{z?_#lcPk&#zZI;Ewt;TVa;ttH7R2Y9U%-2$|tS#KlW|O`;9NvJ=Z_}yEWVYy5rlZlE2GtZB@Co$=K{_ z)~&za%8y0!{ogb_NLy)9M~4T)ht3*C5e7*waffN^*MDN2u%v`BW#mEHtDh>@{;!>X{_nGyKH=Lpr}UJbxU#KGChYK~Ydo`lt>OKxJbiVZW$qiBO}h@= zvyG~K9e?BQ#XC~}gA9LJG{62P-PhdaF5kPy^vlVN-Il-fcUSLIOP+r_xiMmCUW!bm z*YOuVCHi}wd~T_XDQ*)Eo-bF|Jq)2E2pQj`|g`{v%N0AX{nuW zdEmmW^;2IijAi4UJN?hLx6IdWrQY`ctn8Tcn|01L{o8gA=dD})vG}>Qb>G`(9!EC3 z75`|ytuCdswvX%fzvX`djBb6)Uw|C+ptyh~kq_)&+DqQV$IL$p%vubdu6{1-oD!M< DcBa_P literal 0 HcmV?d00001 diff --git a/structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html b/structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html new file mode 100644 index 000000000..814d78388 --- /dev/null +++ b/structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::is_contiguous_container< xiterator_adaptor< I, CI > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_contiguous_container< xiterator_adaptor< I, CI > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_contiguous_container< xiterator_adaptor< I, CI > >:
    +
    +
    + + +xt::is_contiguous_container< I > + +
    +

    Detailed Description

    +
    template<class I, class CI>
    +struct xt::is_contiguous_container< xiterator_adaptor< I, CI > >
    +

    Definition at line 487 of file xbuffer_adaptor.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.png b/structxt_1_1is__contiguous__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2b06e0187dd3f7498d1f2bab80a01aee9138f5e8 GIT binary patch literal 1451 zcmcIkX;V`N6n%uz5k+mN6>vd_0hd9RL4SNCuh(c)^JN*gm{c!I&_kKAu=ghsdpT$_Y zeBE*Y09G=6>1+Tn3NT>dGGjxBn+bfwSie6Y#9Ob|8{qKxY;yjiN>`_CCoM|R;g*&b z!#-G~zGb+XB(Yh+fPw#06rA)q04#A~()Wg>8cmeFO{}4sF71tyJzH>}3N$u)UEqv+izP%F}u?%A;ny)jVTOBnIjU_7|oS73vXafOEUpo&o1I^_Ar*z7Oloe_5*vYh&XMv)bP+urfjoO>E?9S)D4c0W zSReixUr0-ff7(;G>*&VZx+F{84#(5;-`bIL`ZPfu5v+CBl~k*SaY@#$AJMS zvcC-<>N5EybX6rHu8vu|y6t##^yYf zb7NkDa>}CNQY1J#Z;;cpfvTKUm4g+kXHt`FUi96X-s3)1OkB1?QBeaopI zHn0W!k(tWFxD6|3lb&NhjX7uL_@?yu7Ym#B6j|cy{C(K^?TAv$iyyD-^wNBqAJ+Gj zuUFT92+?*m*H+HS&LS@b$xg_#=%xov4WEmek4oI~boLaNw9e};YW|DsrM#qvolq#j zB|l7?xE-$wqK)p$in^E3=opmowmFzGgHXb~2R8`5mk*J~)>LIlN_j`t%wOdc*M`vQ zQ(b-DRee4y{aQzysgS}GwXsP5Xixfib4XD&eF44Ss^eN^JC~GF}(W_dSu+voNcx68XaBVk6_RC1MTlaxXKv%J_EkJk&on_e8L?JwfhPER;| zg;&)rw6A(B6#8mD+{&_>erFlO)hNxs!6#(T1-QmS4EnP6T%oTgX){4ofC_~~BAGzA fB>mS-i5}oy>Aw;b7x~EWRsp6ri+;!R*tx#})-AH! literal 0 HcmV?d00001 diff --git a/structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html b/structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html new file mode 100644 index 000000000..4637fbd62 --- /dev/null +++ b/structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +xtensor: xt::is_contiguous_container< xiterator_owner_adaptor< C, IG > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_contiguous_container< xiterator_owner_adaptor< C, IG > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_contiguous_container< xiterator_owner_adaptor< C, IG > >:
    +
    +
    + + +xt::is_contiguous_container< IG::iterator > + +
    +

    Detailed Description

    +
    template<class C, class IG>
    +struct xt::is_contiguous_container< xiterator_owner_adaptor< C, IG > >
    +

    Definition at line 568 of file xbuffer_adaptor.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.png b/structxt_1_1is__contiguous__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b42e3ab786bf24d64753e4b40f0df747795463ad GIT binary patch literal 1624 zcmb`IX;4#F6vrQnQ?V>fp)9hb#8yNYA|k6uMtFj3i2@-;0ug~Q2o{t@ZG#a(2s!S@PFe^y6oB_1hpT4I2mq{^@&|W@9oKk$K~&!0p$mvEZXQz8<_1z0 z&Hw{j=(4BwJ=!rj&y45oY#WU(RSYeZh2gdE0=A9E)L?JB?l4YaSOW@ zeZ`o(AGlv*_RK?Am_izlicZJ zk-{~R!gQgJ4eCoeofOP5K^#Fz3h8jtT_Btlg~GDX7-tL!M$O66n(F8rI|iVvU$%Os zxQ;nZE)4`@&tWRis1B}~6V;|4Cyv(0(4tnVJerqJ7^hma=7vh&uBfb(#b$1#!Cw9T zeO6}UjFQTGE_|BRc`eqSyi%fU97u_ixu4wm*d9OEISZInWN6Lr& zW8M3K>6KsbpoD~NflG#z`xzP`ZrYh}-Y#{#e%m=V0$y^{zyAe7vGu!hg}Qbh;_Qw$ zp&1~!8lOW&AYjbtbQp8+etsDmHF-buq%b}5NqXclcYw^(`Wm=V3wQh86k<_>1Y_Xk z`7AFJFn~cYuebW2K=?Px&{cntYB0dF-{RC=U6xFl0XeQtsVGSe(;YEC$YV80_$GM_ z$=EAl;B{@c_0s7GTu{Tt5sK`+D$zq&Ord<$2FJcW+Mk3eID%GW&qDPH+nm_vCBi}h zhOGSwB4eK-GX3&Jm#n^?Kh!=idE!-?Fl8zKP>`SWAj*~cGm6KoZGj1iN z=x(CppdgE|S$f8He_$h8{Peh;Z>MqhekUhxNptE%La;hlHJ`uBY9L5(>kTshX?5DhrB8P{xjiwNE(Jjeh9l zDVL>9GnxYGHKIcev(w&L%#+1nbq-Q8wofp}x{VhlOUjU&vrOWV5fOt)ypv^0q1dFV zT55KPO&3K@o*U$CCW({`1kJtk+@lgE@c?B}-&)M$<^Qwsf4^XlX&UXwL&?^YzVIIa N`0v7kt= + + + + + + +xtensor: xt::is_evaluation_strategy< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_evaluation_strategy< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_evaluation_strategy< T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::is_evaluation_strategy< T >
    +

    Definition at line 243 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1is__evaluation__strategy.png b/structxt_1_1is__evaluation__strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..6bab320b0c2f16acd0640ad9b42f68095ee2a2ab GIT binary patch literal 1090 zcmeAS@N?(olHy`uVBq!ia0y~yVDtjA12~w0q{rDabwElwz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aC^I1<9$B+ufw{vfotv29s zao3;w^S{1bX4A&h9508HnY*@3E0;bXUio`b_>7sVX=&k&6H}ZfUH6!(BI&eB<)lE6 zs%P5-El;Bszo(xz?0ao1|2^;as;|AjOx2@A;d?y9h1$bVXdU&!# zsLaYa-**~c`5h{k85UY+y}x_^!?M)f65IX1FHdc~;~ab7-_@Y67b9h#{d>cszy8$o ztp}~%J=9S9T$ot$pUYR{d5BbG_r%!D$IU0lD*a%b^BMC+qP7bs@vZ(M3!tl zdLk<3^jrJ%b%L+j<^SY`@>RXjU-RtougrCuxR1EMUDEgZjc>7i*W8~uhb2Pq%yGZ} z(_@+agU1X1c06rZGyhNPosJjGm2-BKhEIuq9(r!^jk*2Yi&dtsz5VZyLgZPy%C$k?{n=J)4yG91>+i`2XJ{@h`3=Tyn(g2KKhL#CHB`rYBR8msY=4HJ3$eA}<2A*CjFQrxn zO#)gsNyKT@lqCW|OI2DwXid#t-@fa9$gaIN@^94I8l0Mxrux!!Ps~!4zb8DFs+_Hi zdwSW?^OAAP>OJMxb^d>^-!3jUKkU@x>W_by|GiZjkahR=)#L7K-7jC7yCllaXQ|KQ zORHr6Nbl9)uVsIFc}erLz46DNUFTl2??J=*-FX$SOJ{E|zo>t#tX;QhR{7+u5;7fj zUY=Z!Wwl~&JbhO`=fP9059~GZsc-kcPWXFuP3!!a?;^EZ_r7cRKKq1!`c58x*$?-e zviHev+^1vy{P??5$60t2a~?cpSg0%lItJMrhZ>j@H9sDO~Qs=)t9_~_Qpo) yvwBu3*MDm8zVzD@Ij|;ZscN>&h6Je6e+I|%Q%c+Csj~rdJA + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_indexed_stepper< T > Member List
    +
    +
    + +

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

    + + +
    value (defined in xt::is_indexed_stepper< T >)xt::is_indexed_stepper< T >static
    +
    + + + + diff --git a/structxt_1_1is__indexed__stepper.html b/structxt_1_1is__indexed__stepper.html new file mode 100644 index 000000000..e0bc8d96f --- /dev/null +++ b/structxt_1_1is__indexed__stepper.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::is_indexed_stepper< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::is_indexed_stepper< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static const bool value = false
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::is_indexed_stepper< T >
    +

    Definition at line 216 of file xiterator.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    const bool xt::is_indexed_stepper< T >::value = false
    +
    +static
    +
    + +

    Definition at line 218 of file xiterator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4-members.html b/structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4-members.html new file mode 100644 index 000000000..6cf804207 --- /dev/null +++ b/structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_indexed_stepper< xindexed_stepper< T, B > > Member List
    +
    +
    + +

    This is the complete list of members for xt::is_indexed_stepper< xindexed_stepper< T, B > >, including all inherited members.

    + + +
    value (defined in xt::is_indexed_stepper< xindexed_stepper< T, B > >)xt::is_indexed_stepper< xindexed_stepper< T, B > >static
    +
    + + + + diff --git a/structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html b/structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html new file mode 100644 index 000000000..33aa9fd61 --- /dev/null +++ b/structxt_1_1is__indexed__stepper_3_01xindexed__stepper_3_01_t_00_01_b_01_4_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::is_indexed_stepper< xindexed_stepper< T, B > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::is_indexed_stepper< xindexed_stepper< T, B > > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static const bool value = true
     
    +

    Detailed Description

    +
    template<class T, bool B>
    +struct xt::is_indexed_stepper< xindexed_stepper< T, B > >
    +

    Definition at line 222 of file xiterator.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class T , bool B>
    + + + + + +
    + + + + +
    const bool xt::is_indexed_stepper< xindexed_stepper< T, B > >::value = true
    +
    +static
    +
    + +

    Definition at line 224 of file xiterator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__iterator.html b/structxt_1_1is__iterator.html new file mode 100644 index 000000000..0ab282a92 --- /dev/null +++ b/structxt_1_1is__iterator.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_iterator< E, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_iterator< E, class > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_iterator< E, class >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E, class = void>
    +struct xt::is_iterator< E, class >
    +

    Definition at line 685 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__iterator.png b/structxt_1_1is__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f8814df5d91690f1dd22f847bfc7427c16131a GIT binary patch literal 663 zcmeAS@N?(olHy`uVBq!ia0vp^Gl4jOgBeKLrmBAdQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nt8JY5_^Dj46+y?tr1fALD_TuGBso4*?|lnva1*lOqn(9&Bqy{xlx-~bAq;1o?K+c zcwn^xGsFBQ9)=n&BZd!}Cm0Sa$1Cu%UJ+An2J zqX)MMO!@{;C1DU+^D?9ZtUcdz+(?fKT{$4lK_E&Z1HMfIRr;ce?koqW%) zlWWt0zGp6q{C4*3;f&npDet#DNm-GkbMegam(Q*?CfY>3uRXK*QOhxxY>oG}YSu2s ztQ&l8-_nibU*f$j|4QexcfW#7Ui(&ETyyBtx%5f1mY0U*E-EY8&eV5N=Gn~|Z?1pN zQNO)vo&4EdT)~xVwP#(t_dn7yKX|s~ul3o%lipo&SGzYc_xZoRf19rsF7}?}5A)HM f2{UJ&T_NxDe^ + + + + + + +xtensor: xt::is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::is_iterator< E, void_t< decltype(*std::declval< const E >(), std::declval< const E >()==std::declval< const E >(), std::declval< const E >() !=std::declval< const E >(),++(*std::declval< E * >()),(*std::declval< E * >())++, std::true_type())> >
    +

    Definition at line 690 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.png b/structxt_1_1is__iterator_3_01_e_00_01void__t_3_01decltype_07_5std_1_1declval_3_01const_01_e_01_41da12c429c255d2c81e18d875fbe6e98.png new file mode 100644 index 0000000000000000000000000000000000000000..706ab9250f927fedbf1a9781a6dad5b5440fa0b1 GIT binary patch literal 2143 zcmdT`ZB!Fi8V!`GA zErB0;9dl;fUKku4MCS4I(N-j8cRVo`k3z<)SHQZuUr{Jq6%e)$EVNmiy8CrqkaO6B z_B!sosp(mB=eF-Q-XB&B?Q_TdCuMClLC9g<6Q&?~;e1#8wrFlKCZYd3oS zHF==Ry4U$Ts}m#C#jow!s#RVe|1XDUJ!V}i58Rek;rcq+Z+viiU0|mLWq)Cnznx}! ze`51jgoFDmCi!RUk+4<4WZB1~)+0Q2huFF&$>xQ8V+Op=s{O>qO&XIfN{Eqpu-1U39F)1tlbY14 zp~tT*UGpfP))&-FG)zoSx*6=ERA7i##&p}U`y-EY*k;z5_MC+X9-I9hu;;d{*m%Pe zyL6e?55~}k9~iHlfmmVB#1Och?~GiGx9Fawq@=ZAfcq^&tQ!q8>4 zUiXCLS?Sy1%PCfYg&Pb~T|xKUz#M=#qLTFS&<4!=F1o)*F$BLztTQ%T2~_9{F7rN-fdU z7AUa&Wm4x2Msk9X-~j*c!!a2i`m~1aoBDBKx-{udB9nIH9Ly+}Y|3<%c;oc!j?q#V z^YeUuW@Bv2S%qnX1}%E8DL{XBc#D*r|Esn@7btxmCQZXd0&?aAJ62Xjm+mFx!==|% zO_cNbr9KcTMU)C_2umMB=yJs^foRW_CRlA--KJg{pq?2S5BWjeJyKi^*SYk4e%FPM zo+!Bd7T0iAis{QL<*A9^omcQ`FPG&GbcKeAT#(0YiUpSBb34D!TC7xpU(tgPjd3@p zvsqt;_y`HZ%fAOb?JiHPG<-zBCF;zTCq~DQD5N*B0%0S(iN+?EVlksm+%9YhCr+v^ zQe1I=>&fGqXl|#Vq>L-#2JzTdr!r`0rN_Zb;mbcA5Sl<~%YQaGS*)!KIA zMRS2#t-@&i_%L<0UhpuObly7_RJ>-$> z*2HEJe~g8Eo9+$OEGp)ZFCu5jF(otn#-<7npmc=d5KEWWC6&WAo?zOa(D1 zG_Kae;3x5>@2teNlRe3e8+6HVYWG=O+v51Bt+6LN6L1o{;C0dd4Z+Y}2zYu!KO0Fe zp1Rn$MN=W*<~7%+yDiS%Ml&h&`jM_V{&K!ZWq5z(Z#$?kea2zM;bg*v7@Pb`Z~6@8 zo}`A{Z>nR}dYoGW`3|zmgKI#F?0-{pa#%sHS1zQGk@Pqx7iMyH%SIydD}VyRW5YW3 IfAQ_V0miEn(*OVf literal 0 HcmV?d00001 diff --git a/structxt_1_1is__narrowing__conversion-members.html b/structxt_1_1is__narrowing__conversion-members.html new file mode 100644 index 000000000..ca63cb3fd --- /dev/null +++ b/structxt_1_1is__narrowing__conversion-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_narrowing_conversion< FROM, TO > Member List
    +
    +
    + +

    This is the complete list of members for xt::is_narrowing_conversion< FROM, TO >, including all inherited members.

    + + + + +
    argument_type typedef (defined in xt::is_narrowing_conversion< FROM, TO >)xt::is_narrowing_conversion< FROM, TO >
    result_type typedef (defined in xt::is_narrowing_conversion< FROM, TO >)xt::is_narrowing_conversion< FROM, TO >
    value (defined in xt::is_narrowing_conversion< FROM, TO >)xt::is_narrowing_conversion< FROM, TO >static
    +
    + + + + diff --git a/structxt_1_1is__narrowing__conversion.html b/structxt_1_1is__narrowing__conversion.html new file mode 100644 index 000000000..835a45f73 --- /dev/null +++ b/structxt_1_1is__narrowing__conversion.html @@ -0,0 +1,197 @@ + + + + + + + +xtensor: xt::is_narrowing_conversion< FROM, TO > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::is_narrowing_conversion< FROM, TO > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using argument_type = std::decay_t< FROM >
     
    using result_type = std::decay_t< TO >
     
    + + + +

    +Static Public Attributes

    static const bool value
     
    +

    Detailed Description

    +
    template<class FROM, class TO>
    +struct xt::is_narrowing_conversion< FROM, TO >
    +

    Definition at line 620 of file xassign.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ argument_type

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + +
    using xt::is_narrowing_conversion< FROM, TO >::argument_type = std::decay_t<FROM>
    +
    + +

    Definition at line 622 of file xassign.hpp.

    + +
    +
    + +

    ◆ result_type

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + +
    using xt::is_narrowing_conversion< FROM, TO >::result_type = std::decay_t<TO>
    +
    + +

    Definition at line 623 of file xassign.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class FROM , class TO >
    + + + + + +
    + + + + +
    const bool xt::is_narrowing_conversion< FROM, TO >::value
    +
    +static
    +
    +Initial value:
    = xtl::is_arithmetic<result_type>::value
    +
    && (sizeof(result_type) < sizeof(argument_type)
    +
    || (xtl::is_integral<result_type>::value
    +
    && std::is_floating_point<argument_type>::value))
    +
    +

    Definition at line 625 of file xassign.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__not__xdummy__iterator.html b/structxt_1_1is__not__xdummy__iterator.html new file mode 100644 index 000000000..db981e8e6 --- /dev/null +++ b/structxt_1_1is__not__xdummy__iterator.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_not_xdummy_iterator< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_not_xdummy_iterator< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_not_xdummy_iterator< T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::is_not_xdummy_iterator< T >
    +

    Definition at line 453 of file xscalar.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__not__xdummy__iterator.png b/structxt_1_1is__not__xdummy__iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..fb80914fd383e975cf92b327cfb70fabe5b755f6 GIT binary patch literal 717 zcmV;;0y6!HP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~00075 zNkl5JOczE$x5Bsy?3A0|BP?j-0kiSm1CK`9sYLO5Xd@Xe5-_b-c6FvsR!T4v*eAV zm72vAKcVN9bmCVK)2TneuXU5;Q|dO)L;T;*^@Y{DN%ARmrf$UnmDBexEK7^-Tz;qb zFZfvsT=9o{Kbj}qJT8gTb>z%(*zI4qc}VgVMSPO%)tB%?hQ@Qwze%!3-#`8GSDGYW z)(G>EA>H8=jx&(!>L<8Smc^G}YyZXN&_r-csy zqqOh=V3Za<0F2VY2Y^vp_y90U3m*VRY2gFFC@p*d7^Q^|0Hd_<0brCCJ^+l;!Uuq+ z%*^H$Op<2R!k45`TKJMQN(Fvu+;6JZ`}fDNjjRuDFA?t+j zuvb?p@ZGlDvU${>pl7+5Cj@ivUtCqgKc|%xCgr7#-;O%7yLy_`#xKm%iSO6iU2;Bh zuY3F=Q;Sx7I~VihgZ-y&Ek)#i3;Y-peEqqBDr48TAY+C&R2+8P|^L#0t00000NkvXXu0mjftr2YE literal 0 HcmV?d00001 diff --git a/structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html b/structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html new file mode 100644 index 000000000..73933e849 --- /dev/null +++ b/structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_not_xdummy_iterator< xdummy_iterator< is_const, CT > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_not_xdummy_iterator< xdummy_iterator< is_const, CT > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<bool is_const, class CT>
    +struct xt::is_not_xdummy_iterator< xdummy_iterator< is_const, CT > >
    +

    Definition at line 458 of file xscalar.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.png b/structxt_1_1is__not__xdummy__iterator_3_01xdummy__iterator_3_01is__const_00_01_c_t_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..81e5e9f89ab20dc5cc16053b46de1010a9b6292a GIT binary patch literal 984 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%12~w0r149>O+ZRIz$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aCbF!z4V@L(#+qt)kRvQSg zRL2{A{vTf>GrPOxz{bfH{C>GzY6>jfQk7r4TwDYNC$cJfwyHc0IHjsNHAv5M<&+{% zuccGGgS4K9+U>pmt7@Z++@4Rfedc`+ytgM^bNZ6_r^R;1bGKLQnRoto>bd*puFGA% zdir2N&>@5c!Ax!`oedKU!Ip{Rd2D(@MslLYkb(1dFrU9 zo=*A_4JNB;buixc;{_i<{+eceV=gnxSy}skm-EY^K zZ`(ca*qJN;+4yPu-1^9$=U?6U7VB2{`rNku8B_09t(SlCx&HUoB&*r`pDw$!G;vn& z_4?BvZ{65)>iOnt%kNm}^5(v_SQLI;^4Q)lyZ=S&ZV{?F&#zrxQ6H_P&s+O@lWF++ z{A;o~AthbAj&EE0_QmDbTjnoV`{Ki{yW#h0Coikyoc7XK?#Y8?U!FxCzPiEu_QtNq z*B;J|k5A9P!+!XG(9gy%)~C!5esX^Lck{EU%lfy(x$fsuy?RsndqBnGS8*HOc*r*| z-TUza`!@T@e4$?^-kkm_^xphh&C<5Q{!{YY)AZARmg)Xfx@>kjO1L<&|MtW#-ejIL z?`MWSZ!CPD_H)xd`-x9K&v+L4LLuVW)ZKHfJ~NeN^H<+#)4Ztj^E3ayu)W!`?q6P6 z9o{j$E_Z|P!AteCS3dsWa{FDx<~!Ts-TkKSv9j0rKK0Y + + + + + + +xtensor: xt::is_reducer_options< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_reducer_options< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_reducer_options< T >:
    +
    +
    + + +xt::is_reducer_options_impl< std::decay_t< T > > + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::is_reducer_options< T >
    +

    Definition at line 183 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__reducer__options.png b/structxt_1_1is__reducer__options.png new file mode 100644 index 0000000000000000000000000000000000000000..b6911a3626a864a41204f1c7f91f7fd947d5eddd GIT binary patch literal 1393 zcmb`HX;71A5XWC^2U-;|z+mMTW@0%ChA2wyt45Lvh{PsLX(Svf1m#c?PD4Uk8IWLs zfhZaYZ#o48L2ij6qIdveQcyr*hympeIfN!LOgYk5X39*zyYtNcf4lo_cb{b+4?1GH z(Rw2Q0H*$aSONeT*~6Us)fccgj!51Di_P)CV4T5VfN@r-ODTL(wQrY8;y2esvz?ut zaGqE^SPj>{P9_8q0XSZ>y&Fo00N~4Ie=H_A-AGlYD4uZLY;4mOTcKx-bMjS@9sx*> zFiOuLs++Qme6yZK1i0X?5MFG~Yj00Xb11S;(_6}^Y4~-xa2Ha=>B^`6zP@=fxS2Jym?GG<6>yjVb&me6Y< zN^`>O5I5o#`s@ew>fupaauQf|Mk2iX%l;q5jlvsZwYp)V?$!l!+k`|rhY@REFikJk zWVFTH+}R7ZLo6S?^0yW~`BHof6r|xO%sGa|-YNC!X>U-iK0lSD8JJK*PX7UIfEeKN=M@4HV3{&S1y81B`kcXGR|TI-3b@%LQd%DzI8902=J{GvMrntVy0SzE_1*D4o`w_2 z|2$Gr!=+O zNp<4o*yueD4JmPjObMo+bX2qYCK^>60zYrwFjX9;sVSY?N>=-rSY*jwC!n+~IQzniOVU1(&Ttf|^kkIWkl*%r>M zw}*P(%~{oqffAY>XIQV(K2BlkcR%H+pp(BJb7e&8wP#aKWfo_2ckCV{iVDPkC}SyY zB^d=iZb!3Me$6b&NClT9sBJPHxtIOQ{rQ4rEWSSU@l}W{U3guPlu6Tt{g6oGayxQL zPwzr27X59|Ek!-_`;{}id1D2I;uBUHnjgbYzX36K%0RZEOMT%EfA1^`y%btxk8ZJ) zqtHj!!ADLiiAD&U-7SCvY)`;wmoFXgdiZeC#1R8SQ0k;fWPuhSV`u=O!o(3r|IBjW z7~Z8amk_|kuyeN}5Y7V@h$1HtfpA#|{7{m7_UA%9Yhh?SwOn#UX~-4xf_u}~Q<+Z5M3d}laZcpuMbguX>RnhW+k z+{Xb|;a#w(Tib;3!r&JXgLNx51m%PdN6p1ywO`)A>-8-GOtT1}g&pV(8zZBxdE1IrV{YGz+7a z=#()7jGsz5wWA{(#l6K##G3tWNdDp^$IWSc&+^B2;kRaZ)DLf`!b({rJoZ_ZAMASm g--b{9SpVD0CLTkO2UmS&9zKqMKQ0Jce>n2uzwuVGv;Y7A literal 0 HcmV?d00001 diff --git a/structxt_1_1is__reducer__options__impl.html b/structxt_1_1is__reducer__options__impl.html new file mode 100644 index 000000000..1fa2911d1 --- /dev/null +++ b/structxt_1_1is__reducer__options__impl.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_reducer_options_impl< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_reducer_options_impl< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_reducer_options_impl< T >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::is_reducer_options_impl< T >
    +

    Definition at line 173 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__reducer__options__impl.png b/structxt_1_1is__reducer__options__impl.png new file mode 100644 index 0000000000000000000000000000000000000000..3697b0577c13b3bf5907098170df385560b1919b GIT binary patch literal 729 zcmeAS@N?(olHy`uVBq!ia0vp^hk-bNgBeIp4mK+1yGK&B*-tA0mugfbEer>7#NsRJY5_^Dj46+y*X)}0#A#z z`Q^X={A*-f6&v3U1@g)4AOyt-qF_aI%7zZBozm+P0MW+c&-~ zOMkt5@i!aijrXM`_9@$Kef~4;ZdzU3`P<=<^FDW(Sl>0dtWxP$F41$w{pW<(HOIWH z^GlyUzLQcQ_tWR(yV`^oHzq%^ynAk`-Qg)RuPeOP8qJ*b{^>H$PgC-)m8gr?=uI`R zbKTshqW|(_)eFNnR}P;Nh~v+mx2AUGiiV}%zx=*5t!e*4{fSRfRoN!(S^fW{!SuYY zib}PU)?B~%zMh|}qOYwp-Q$xY*u@~H`|_lvy%%Hnvt}Q|gQvfkdE(>WxBp<~5kB-< z@gLLS7v2mXq)j9k6ylm086KIEz~Dgf=o=GC>4=Q+mTqUusU3t^zCzFq+ zFFv9)~~5INrP{)b++Yk0ELU$`Imy0qqF?Mc%w zi;n-;S2D#r{MRIvzddq4fnJ!`C-LoH@1!luPd)oE{eI=q#XOTrf*;;@oK&})ty$%0 lwt+{`9yK=O&E>D + + + + + + +xtensor: xt::is_reducer_options_impl< std::tuple< X... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_reducer_options_impl< std::tuple< X... > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_reducer_options_impl< std::tuple< X... > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class... X>
    +struct xt::is_reducer_options_impl< std::tuple< X... > >
    +

    Definition at line 178 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.png b/structxt_1_1is__reducer__options__impl_3_01std_1_1tuple_3_01_x_8_8_8_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3946785fab1727e7b01091d55d1d4ddfe2f8f8a6 GIT binary patch literal 919 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y!~12~w0ymgus-`Sy|q~ylosim@V`4x{Kuay&*ObJr< z)LiN|DQI1oasM{HDyv`j|7L;sdLhEwCqAl+60hAq@85l2AKtTPcmDl${K~z1)0UJM z&7C!2+v2?u>#m(%=zag;u7F)3zMKA-M#-%>ndf~;dZ)!gxm7noEyu3-;>GUCxtrt=s+3Jn^d6h4(af&MuoF z-M@Sme{p_o(mnUAoZmguuiW?+{AbCml|N^C>SQhZJpb&TTL0gRX4w7S`?73a@`Haj zE>+g%y)-tx8})46?aSY{)pfj_`nvl0@f`ExpB7cJy;k_V*>`=e>iw|C1$8BxZ_RtX zt}5_x%(L|E=6$)nvoZ_s{{1#JG2i{h+l}?FFYNrEwfMu6_qq#zo!_#W=k=w{^Z)%@ zkrr`fU;eMcYxD1Y-SDYdQdRzyPFj$qde*U)UFvrh&a#xAAGFzj#m9|_xz68{O)uxP zEwSpF#ccVz#cIX#vpIZ=)!r8^OY>RrdBsiEqnTG!w!YcmG~e}Xgwyw}%c5UTy6P$O z=4#7bxt~gJGWzR7vv*x<-})@zY;)A+6_MXMOcwr<&HDYad_~!uvh6_1owIa@v#wB8 z@8_>4`L?b#{@Jz7cGFd<+jZRQc|P1)Qdg$gf5qo(&Ue + + + + + + +xtensor: xt::is_xoptional_expression< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_xoptional_expression< E > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_xoptional_expression< E >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::is_xoptional_expression< E >
    +

    Definition at line 398 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1is__xoptional__expression.png b/structxt_1_1is__xoptional__expression.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a55f308fffb663c40a64fe9b3fe44af8e22a7f GIT binary patch literal 1167 zcmeAS@N?(olHy`uVBq!ia0y~yU~C4m12~w0y~>+v^wn44h~Oj9v@}iQ%?1ZOj9e!D|_bZ!xkp`Tg>qa#zlNi=D2rbA7*i^}z;}=F%yQp8FQ7%kDG(V=i%L@{5U{ z=BB?FoLu)b@#K#7xz+FfPGg+jemj2W?W!IByH}UqvAScm^z6EGYl?sBTuL*0{o(uX zi%-8@*=eubz{#wfZM-S_EL)uIJ$D@$vDuGyn|@h*O*_;1bDQtk70D*u?_|HtymWnT z*^jy9&U@5ZA1D{{Nd2z7IOjq^Y|RT()3$cCZJn>pL}$yqoW9)Ce81_h*h`kOVYvlY z3@p?enij8gHDfA8y?QM>PGzrWo%G3S=WTV|eB%I@Em zFq{(kJM)fOsrQci*Gn*Fjb8f{H7l52{d zTI9W;?m#OK zC`#u}V)Q(wB{?Bw4V;n3bLLD?T3R4eLw$5S!vv-V165`Qj;q(hofsNCz)W68AkzWJ z>6`0r zotCrr+!c|?qw;d+F91(f!*U zD7(5u+wX72{;o!!&)4eX!u*Y{-zs-@Pv0GBGEMF0Gu~Jw6Yj#)z+D@}w*Iuf@@v+L z$DekdzOen-b`|NZ>$bdq;r2Otqb>is#R4Z6@P5{4PF=Wb>1?A9@~56ZyX5B(ba~w( zfq?FsBh_0o<{#W5_Vw@IWiQPRPOeorx%Gd6{FTK;@+YfU-p^t8mss<7o%_##Zl6zU z*XHbhVY8z9$+bn^hmOD6t+i2Ndil~L71LfnKUA>R=Baah_pXbxQuEI-d+u@*pT|C_ zBtZWBOLaD7Pk+&K2`Bg2sj9wgwR@-GY45d@9~fHplN(k3%BeDYc7+;ESOSbZDC4fg hjG0T%oLTgReOuS9eW!LQO$HVn44$rjF6*2Ung9!S8$SR5 literal 0 HcmV?d00001 diff --git a/structxt_1_1is__xtensor__expression.html b/structxt_1_1is__xtensor__expression.html new file mode 100644 index 000000000..f5fc43b91 --- /dev/null +++ b/structxt_1_1is__xtensor__expression.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::is_xtensor_expression< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::is_xtensor_expression< E > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::is_xtensor_expression< E >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class E>
    +struct xt::is_xtensor_expression< E >
    +

    Definition at line 393 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1is__xtensor__expression.png b/structxt_1_1is__xtensor__expression.png new file mode 100644 index 0000000000000000000000000000000000000000..69e66bbd777f368ff790f31f3b36ad81ecb00254 GIT binary patch literal 1116 zcmeAS@N?(olHy`uVBq!ia0y~yV5|bN12~w0q=KEF8<3I?@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHvap1rKpm^}4%PW9#oFzei!3;n?7??B7zQVx3{M^&UF{Fa=?c9sAZfo(h zxSLyl{^wt_X=AVI0ZY&5#rgZMPV3A*FzJWjBeAqJRpZT9nx_0{{36_wf-)8`s!?5^}mTvmcENTv%GMB_dJ!!U-hac)vVpR`WM6B@>4dSpDmp5 zRdM>Z>AL&peZEuue!JwIIJy6~{`cwMdH*bHd-bf_&Q{OnPAt`nU;CwFV`SFCA1~&9 zlzu#Kf%&H#x3ae}NB-@5A9#5G+01>9UGl%yOfoaEzZhL)#+3bjga3pBbAF*Bi)xFi?U2=L!RKcyFbJBG&Z|cs= zYu~rG)8Sz+e=oZ^<@0v;ve2{6Yu|6)ZYcA9ftdG}vhX{?UsNhr|La_QzDH$;%E``u zGJmH9*NY!%kMGy}ZuFr}L;kq+*1!Fa)J`stpZc|a_fM6dJKuFxD^^X?5v`i!6Sh$O zqzH%+2x8b?m_2jqnKNSC40Y@FF)UzVSRML;QNcMr{-_*-PzZ?0{|U&vw)z6I!z3;n zh9xV23}70d3*$xlVsm5dnKRdl`AqVfv?Z)HZcTzY!^egEk>c@?vhf4}&++g4^p?z@YxkM-|-{{GqN=)a*a zQfF;H`GGCK=z3apX`g)Yo$r&5K2x^}PW-E_eg06>WuXfT=kfIOx7(>@-{zfs<>jA( zB-1yEYrejIkiMw@bk2+Kn~Gbn3C~{io%u6wZ=GuEHm*9SgCDi`X;?IFx!>Lx5k8@6 z^535BQ&WSA#Ns#C9_+NGk-SpPSt#OmCWhAbhzGU_nb!S-Z=P{Z|I4H)i=6a5RXwZR l;b8%1@P7ek+M~btHwa!>d$oAM7hpNS;OXk;vd$@?2>@N7Ca3@a literal 0 HcmV?d00001 diff --git a/structxt_1_1keep__dims__type.html b/structxt_1_1keep__dims__type.html new file mode 100644 index 000000000..f87987dd3 --- /dev/null +++ b/structxt_1_1keep__dims__type.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: xt::keep_dims_type Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::keep_dims_type Struct Reference
    +
    +
    +
    +Inheritance diagram for xt::keep_dims_type:
    +
    +
    + +
    +

    Detailed Description

    +
    +

    Definition at line 42 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1keep__dims__type.png b/structxt_1_1keep__dims__type.png new file mode 100644 index 0000000000000000000000000000000000000000..4430d16a335421d3eb5f0d4fed774d4730da248a GIT binary patch literal 601 zcmV-f0;c_mP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0005x zNkl}``NP3H~KRv5x4x;FzI2NtO%o|g^6 zQj1#Gvz7bwT%;8x7wMWMd}f>B9IUY$Y$}b5%67pJ(i4OHlp*FiK5{bJTr~bWC*5Nx zM%zQSCXN4-dZ=P0!b&;}bM=rI4vZKuRpz(VXZj%`TC6W%_iz!h6^V={1gKK zboKiT$6#++d&6i5FW%mI%QlV+Q#{oCz9nqR`-=BL92l??9b}qtf;uD{_R|Val_#~V z2~LxXcvU^B8H|%+)Y8<-X!|@v$WD4)F_>K0%NH**xky8GqI#V(wDVO)0VwI#r0I(` zn4@|CSV_w;Sr3Up*H(z%OkZ?!kD0W?rjbo`9TG9!$u700000NkvXXu0mjfs)Gv* literal 0 HcmV?d00001 diff --git a/structxt_1_1make__invalid__type-members.html b/structxt_1_1make__invalid__type-members.html new file mode 100644 index 000000000..4540efac2 --- /dev/null +++ b/structxt_1_1make__invalid__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::make_invalid_type< T > Member List
    +
    +
    + +

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

    + + +
    type typedef (defined in xt::make_invalid_type< T >)xt::make_invalid_type< T >
    +
    + + + + diff --git a/structxt_1_1make__invalid__type.html b/structxt_1_1make__invalid__type.html new file mode 100644 index 000000000..09b8926d3 --- /dev/null +++ b/structxt_1_1make__invalid__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::make_invalid_type< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::make_invalid_type< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = invalid_type
     
    +

    Detailed Description

    +
    template<class... T>
    +struct xt::make_invalid_type< T >
    +

    Definition at line 104 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... T>
    + + + + +
    using xt::make_invalid_type< T >::type = invalid_type
    +
    + +

    Definition at line 106 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1make__void-members.html b/structxt_1_1make__void-members.html new file mode 100644 index 000000000..7acaaef63 --- /dev/null +++ b/structxt_1_1make__void-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::make_void< T > Member List
    +
    +
    + +

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

    + + +
    type typedef (defined in xt::make_void< T >)xt::make_void< T >
    +
    + + + + diff --git a/structxt_1_1make__void.html b/structxt_1_1make__void.html new file mode 100644 index 000000000..84f71dfa9 --- /dev/null +++ b/structxt_1_1make__void.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::make_void< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::make_void< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = void
     
    +

    Detailed Description

    +
    template<class... T>
    +struct xt::make_void< T >
    +

    Definition at line 89 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... T>
    + + + + +
    using xt::make_void< T >::type = void
    +
    + +

    Definition at line 91 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1abs__fun-members.html b/structxt_1_1math_1_1abs__fun-members.html new file mode 100644 index 000000000..5c04e04eb --- /dev/null +++ b/structxt_1_1math_1_1abs__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::abs_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::abs_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::abs_fun)xt::math::abs_funinline
    simd_apply(const B &arg) const (defined in xt::math::abs_fun)xt::math::abs_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1abs__fun.html b/structxt_1_1math_1_1abs__fun.html new file mode 100644 index 000000000..ce3944601 --- /dev/null +++ b/structxt_1_1math_1_1abs__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::abs_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::abs_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 295 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::abs_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 295 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::abs_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 295 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1acos__fun-members.html b/structxt_1_1math_1_1acos__fun-members.html new file mode 100644 index 000000000..a201e7a4b --- /dev/null +++ b/structxt_1_1math_1_1acos__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::acos_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::acos_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::acos_fun)xt::math::acos_funinline
    simd_apply(const B &arg) const (defined in xt::math::acos_fun)xt::math::acos_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1acos__fun.html b/structxt_1_1math_1_1acos__fun.html new file mode 100644 index 000000000..49641c48a --- /dev/null +++ b/structxt_1_1math_1_1acos__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::acos_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::acos_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 319 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::acos_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 319 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::acos_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 319 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1acosh__fun-members.html b/structxt_1_1math_1_1acosh__fun-members.html new file mode 100644 index 000000000..1f96ddd1f --- /dev/null +++ b/structxt_1_1math_1_1acosh__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::acosh_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::acosh_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::acosh_fun)xt::math::acosh_funinline
    simd_apply(const B &arg) const (defined in xt::math::acosh_fun)xt::math::acosh_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1acosh__fun.html b/structxt_1_1math_1_1acosh__fun.html new file mode 100644 index 000000000..940cf704b --- /dev/null +++ b/structxt_1_1math_1_1acosh__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::acosh_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::acosh_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 326 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::acosh_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 326 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::acosh_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 326 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1arg__fun-members.html b/structxt_1_1math_1_1arg__fun-members.html new file mode 100644 index 000000000..2af365230 --- /dev/null +++ b/structxt_1_1math_1_1arg__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::arg_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::arg_fun, including all inherited members.

    + + + +
    operator()(const T &t) const (defined in xt::math::arg_fun)xt::math::arg_funinline
    simd_apply(const B &t) const (defined in xt::math::arg_fun)xt::math::arg_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1arg__fun.html b/structxt_1_1math_1_1arg__fun.html new file mode 100644 index 000000000..7d075a6e6 --- /dev/null +++ b/structxt_1_1math_1_1arg__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::arg_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::arg_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &t) const
     
    template<class B >
    constexpr auto simd_apply (const B &t) const
     
    +

    Detailed Description

    +
    +

    Definition at line 194 of file xcomplex.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::arg_fun::operator() (const T & t) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 194 of file xcomplex.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::arg_fun::simd_apply (const B & t) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 194 of file xcomplex.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xcomplex.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1asin__fun-members.html b/structxt_1_1math_1_1asin__fun-members.html new file mode 100644 index 000000000..5396a676e --- /dev/null +++ b/structxt_1_1math_1_1asin__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::asin_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::asin_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::asin_fun)xt::math::asin_funinline
    simd_apply(const B &arg) const (defined in xt::math::asin_fun)xt::math::asin_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1asin__fun.html b/structxt_1_1math_1_1asin__fun.html new file mode 100644 index 000000000..61e6d16e1 --- /dev/null +++ b/structxt_1_1math_1_1asin__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::asin_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::asin_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 318 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::asin_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 318 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::asin_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 318 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1asinh__fun-members.html b/structxt_1_1math_1_1asinh__fun-members.html new file mode 100644 index 000000000..a530dc0e6 --- /dev/null +++ b/structxt_1_1math_1_1asinh__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::asinh_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::asinh_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::asinh_fun)xt::math::asinh_funinline
    simd_apply(const B &arg) const (defined in xt::math::asinh_fun)xt::math::asinh_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1asinh__fun.html b/structxt_1_1math_1_1asinh__fun.html new file mode 100644 index 000000000..137241e1c --- /dev/null +++ b/structxt_1_1math_1_1asinh__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::asinh_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::asinh_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 325 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::asinh_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 325 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::asinh_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 325 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1atan2__fun-members.html b/structxt_1_1math_1_1atan2__fun-members.html new file mode 100644 index 000000000..3a28f8231 --- /dev/null +++ b/structxt_1_1math_1_1atan2__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::atan2_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::atan2_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::atan2_fun)xt::math::atan2_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::atan2_fun)xt::math::atan2_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1atan2__fun.html b/structxt_1_1math_1_1atan2__fun.html new file mode 100644 index 000000000..047c77506 --- /dev/null +++ b/structxt_1_1math_1_1atan2__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::atan2_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::atan2_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 321 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::atan2_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 321 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::atan2_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 321 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1atan__fun-members.html b/structxt_1_1math_1_1atan__fun-members.html new file mode 100644 index 000000000..39a44321d --- /dev/null +++ b/structxt_1_1math_1_1atan__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::atan_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::atan_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::atan_fun)xt::math::atan_funinline
    simd_apply(const B &arg) const (defined in xt::math::atan_fun)xt::math::atan_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1atan__fun.html b/structxt_1_1math_1_1atan__fun.html new file mode 100644 index 000000000..fb590fd09 --- /dev/null +++ b/structxt_1_1math_1_1atan__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::atan_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::atan_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 320 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::atan_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 320 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::atan_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 320 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1atanh__fun-members.html b/structxt_1_1math_1_1atanh__fun-members.html new file mode 100644 index 000000000..cda4405aa --- /dev/null +++ b/structxt_1_1math_1_1atanh__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::atanh_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::atanh_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::atanh_fun)xt::math::atanh_funinline
    simd_apply(const B &arg) const (defined in xt::math::atanh_fun)xt::math::atanh_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1atanh__fun.html b/structxt_1_1math_1_1atanh__fun.html new file mode 100644 index 000000000..7e5747344 --- /dev/null +++ b/structxt_1_1math_1_1atanh__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::atanh_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::atanh_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 327 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::atanh_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 327 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::atanh_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 327 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1cbrt__fun-members.html b/structxt_1_1math_1_1cbrt__fun-members.html new file mode 100644 index 000000000..23b0ac778 --- /dev/null +++ b/structxt_1_1math_1_1cbrt__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::cbrt_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::cbrt_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::cbrt_fun)xt::math::cbrt_funinline
    simd_apply(const B &arg) const (defined in xt::math::cbrt_fun)xt::math::cbrt_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1cbrt__fun.html b/structxt_1_1math_1_1cbrt__fun.html new file mode 100644 index 000000000..76850f75e --- /dev/null +++ b/structxt_1_1math_1_1cbrt__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::cbrt_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::cbrt_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 313 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::cbrt_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 313 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::cbrt_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 313 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1ceil__fun-members.html b/structxt_1_1math_1_1ceil__fun-members.html new file mode 100644 index 000000000..e26b4f9bc --- /dev/null +++ b/structxt_1_1math_1_1ceil__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::ceil_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::ceil_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::ceil_fun)xt::math::ceil_funinline
    simd_apply(const B &arg) const (defined in xt::math::ceil_fun)xt::math::ceil_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1ceil__fun.html b/structxt_1_1math_1_1ceil__fun.html new file mode 100644 index 000000000..e67cb1e77 --- /dev/null +++ b/structxt_1_1math_1_1ceil__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::ceil_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::ceil_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 332 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::ceil_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 332 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::ceil_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 332 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1clamp__fun-members.html b/structxt_1_1math_1_1clamp__fun-members.html new file mode 100644 index 000000000..1516a7a41 --- /dev/null +++ b/structxt_1_1math_1_1clamp__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::clamp_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::clamp_fun, including all inherited members.

    + + + +
    operator()(const A1 &v, const A2 &lo, const A3 &hi) const (defined in xt::math::clamp_fun)xt::math::clamp_funinline
    simd_apply(const A1 &v, const A2 &lo, const A3 &hi) const (defined in xt::math::clamp_fun)xt::math::clamp_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1clamp__fun.html b/structxt_1_1math_1_1clamp__fun.html new file mode 100644 index 000000000..c0a87ad5a --- /dev/null +++ b/structxt_1_1math_1_1clamp__fun.html @@ -0,0 +1,217 @@ + + + + + + + +xtensor: xt::math::clamp_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::clamp_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class A1 , class A2 , class A3 >
    constexpr auto operator() (const A1 &v, const A2 &lo, const A3 &hi) const
     
    template<class A1 , class A2 , class A3 >
    constexpr auto simd_apply (const A1 &v, const A2 &lo, const A3 &hi) const
     
    +

    Detailed Description

    +
    +

    Definition at line 603 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class A1 , class A2 , class A3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::clamp_fun::operator() (const A1 & v,
    const A2 & lo,
    const A3 & hi 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 606 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class A1 , class A2 , class A3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::clamp_fun::simd_apply (const A1 & v,
    const A2 & lo,
    const A3 & hi 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 612 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1conj__impl__fun-members.html b/structxt_1_1math_1_1conj__impl__fun-members.html new file mode 100644 index 000000000..cdf5adea7 --- /dev/null +++ b/structxt_1_1math_1_1conj__impl__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::conj_impl_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::conj_impl_fun, including all inherited members.

    + + + +
    operator()(const T &t) const (defined in xt::math::conj_impl_fun)xt::math::conj_impl_funinline
    simd_apply(const B &t) const (defined in xt::math::conj_impl_fun)xt::math::conj_impl_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1conj__impl__fun.html b/structxt_1_1math_1_1conj__impl__fun.html new file mode 100644 index 000000000..5b1d3a12f --- /dev/null +++ b/structxt_1_1math_1_1conj__impl__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::conj_impl_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::conj_impl_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &t) const
     
    template<class B >
    constexpr auto simd_apply (const B &t) const
     
    +

    Detailed Description

    +
    +

    Definition at line 195 of file xcomplex.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::conj_impl_fun::operator() (const T & t) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 195 of file xcomplex.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::conj_impl_fun::simd_apply (const B & t) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 195 of file xcomplex.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xcomplex.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1cos__fun-members.html b/structxt_1_1math_1_1cos__fun-members.html new file mode 100644 index 000000000..7e0b3c97c --- /dev/null +++ b/structxt_1_1math_1_1cos__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::cos_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::cos_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::cos_fun)xt::math::cos_funinline
    simd_apply(const B &arg) const (defined in xt::math::cos_fun)xt::math::cos_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1cos__fun.html b/structxt_1_1math_1_1cos__fun.html new file mode 100644 index 000000000..0f85db54f --- /dev/null +++ b/structxt_1_1math_1_1cos__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::cos_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::cos_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 316 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::cos_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 316 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::cos_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 316 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1cosh__fun-members.html b/structxt_1_1math_1_1cosh__fun-members.html new file mode 100644 index 000000000..10124bb87 --- /dev/null +++ b/structxt_1_1math_1_1cosh__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::cosh_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::cosh_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::cosh_fun)xt::math::cosh_funinline
    simd_apply(const B &arg) const (defined in xt::math::cosh_fun)xt::math::cosh_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1cosh__fun.html b/structxt_1_1math_1_1cosh__fun.html new file mode 100644 index 000000000..3ae3b4e95 --- /dev/null +++ b/structxt_1_1math_1_1cosh__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::cosh_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::cosh_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 323 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::cosh_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 323 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::cosh_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 323 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1deg2rad-members.html b/structxt_1_1math_1_1deg2rad-members.html new file mode 100644 index 000000000..daeada16a --- /dev/null +++ b/structxt_1_1math_1_1deg2rad-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::deg2rad Member List
    +
    +
    + +

    This is the complete list of members for xt::math::deg2rad, including all inherited members.

    + + + + + +
    operator()(const A &a) const noexcept (defined in xt::math::deg2rad)xt::math::deg2radinline
    operator()(const A &a) const noexcept (defined in xt::math::deg2rad)xt::math::deg2radinline
    simd_apply(const A &a) const noexcept (defined in xt::math::deg2rad)xt::math::deg2radinline
    simd_apply(const A &a) const noexcept (defined in xt::math::deg2rad)xt::math::deg2radinline
    +
    + + + + diff --git a/structxt_1_1math_1_1deg2rad.html b/structxt_1_1math_1_1deg2rad.html new file mode 100644 index 000000000..6f07d534e --- /dev/null +++ b/structxt_1_1math_1_1deg2rad.html @@ -0,0 +1,251 @@ + + + + + + + +xtensor: xt::math::deg2rad Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::deg2rad Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Member Functions

    template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    constexpr double operator() (const A &a) const noexcept
     
    template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    constexpr auto operator() (const A &a) const noexcept
     
    template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    constexpr double simd_apply (const A &a) const noexcept
     
    template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    constexpr auto simd_apply (const A &a) const noexcept
     
    +

    Detailed Description

    +
    +

    Definition at line 618 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()() [1/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr double xt::math::deg2rad::operator() (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 621 of file xmath.hpp.

    + +
    +
    + +

    ◆ operator()() [2/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::deg2rad::operator() (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 627 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply() [1/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr double xt::math::deg2rad::simd_apply (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 633 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply() [2/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::deg2rad::simd_apply (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 639 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1erf__fun-members.html b/structxt_1_1math_1_1erf__fun-members.html new file mode 100644 index 000000000..b7eaba293 --- /dev/null +++ b/structxt_1_1math_1_1erf__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::erf_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::erf_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::erf_fun)xt::math::erf_funinline
    simd_apply(const B &arg) const (defined in xt::math::erf_fun)xt::math::erf_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1erf__fun.html b/structxt_1_1math_1_1erf__fun.html new file mode 100644 index 000000000..f0543b73e --- /dev/null +++ b/structxt_1_1math_1_1erf__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::erf_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::erf_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 328 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::erf_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 328 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::erf_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 328 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1erfc__fun-members.html b/structxt_1_1math_1_1erfc__fun-members.html new file mode 100644 index 000000000..74d4b5418 --- /dev/null +++ b/structxt_1_1math_1_1erfc__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::erfc_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::erfc_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::erfc_fun)xt::math::erfc_funinline
    simd_apply(const B &arg) const (defined in xt::math::erfc_fun)xt::math::erfc_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1erfc__fun.html b/structxt_1_1math_1_1erfc__fun.html new file mode 100644 index 000000000..2bad4e1ce --- /dev/null +++ b/structxt_1_1math_1_1erfc__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::erfc_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::erfc_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 329 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::erfc_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 329 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::erfc_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 329 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1exp2__fun-members.html b/structxt_1_1math_1_1exp2__fun-members.html new file mode 100644 index 000000000..ab44de7e9 --- /dev/null +++ b/structxt_1_1math_1_1exp2__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::exp2_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::exp2_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::exp2_fun)xt::math::exp2_funinline
    simd_apply(const B &arg) const (defined in xt::math::exp2_fun)xt::math::exp2_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1exp2__fun.html b/structxt_1_1math_1_1exp2__fun.html new file mode 100644 index 000000000..52380773d --- /dev/null +++ b/structxt_1_1math_1_1exp2__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::exp2_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::exp2_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 305 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::exp2_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 305 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::exp2_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 305 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1exp__fun-members.html b/structxt_1_1math_1_1exp__fun-members.html new file mode 100644 index 000000000..ee103748d --- /dev/null +++ b/structxt_1_1math_1_1exp__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::exp_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::exp_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::exp_fun)xt::math::exp_funinline
    simd_apply(const B &arg) const (defined in xt::math::exp_fun)xt::math::exp_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1exp__fun.html b/structxt_1_1math_1_1exp__fun.html new file mode 100644 index 000000000..0d0e4bdd6 --- /dev/null +++ b/structxt_1_1math_1_1exp__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::exp_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::exp_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 304 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::exp_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 304 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::exp_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 304 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1expm1__fun-members.html b/structxt_1_1math_1_1expm1__fun-members.html new file mode 100644 index 000000000..7a918ef71 --- /dev/null +++ b/structxt_1_1math_1_1expm1__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::expm1_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::expm1_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::expm1_fun)xt::math::expm1_funinline
    simd_apply(const B &arg) const (defined in xt::math::expm1_fun)xt::math::expm1_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1expm1__fun.html b/structxt_1_1math_1_1expm1__fun.html new file mode 100644 index 000000000..1f331439b --- /dev/null +++ b/structxt_1_1math_1_1expm1__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::expm1_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::expm1_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 306 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::expm1_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 306 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::expm1_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 306 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1fabs__fun-members.html b/structxt_1_1math_1_1fabs__fun-members.html new file mode 100644 index 000000000..19fbd4d8e --- /dev/null +++ b/structxt_1_1math_1_1fabs__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::fabs_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::fabs_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::fabs_fun)xt::math::fabs_funinline
    simd_apply(const B &arg) const (defined in xt::math::fabs_fun)xt::math::fabs_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1fabs__fun.html b/structxt_1_1math_1_1fabs__fun.html new file mode 100644 index 000000000..aa48d2644 --- /dev/null +++ b/structxt_1_1math_1_1fabs__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::fabs_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::fabs_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 297 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::fabs_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 297 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::fabs_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 297 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1fdim__fun-members.html b/structxt_1_1math_1_1fdim__fun-members.html new file mode 100644 index 000000000..caa542617 --- /dev/null +++ b/structxt_1_1math_1_1fdim__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::fdim_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::fdim_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::fdim_fun)xt::math::fdim_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::fdim_fun)xt::math::fdim_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1fdim__fun.html b/structxt_1_1math_1_1fdim__fun.html new file mode 100644 index 000000000..cc2f7edca --- /dev/null +++ b/structxt_1_1math_1_1fdim__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::fdim_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::fdim_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 303 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fdim_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 303 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fdim_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 303 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1floor__fun-members.html b/structxt_1_1math_1_1floor__fun-members.html new file mode 100644 index 000000000..09aeb5fa1 --- /dev/null +++ b/structxt_1_1math_1_1floor__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::floor_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::floor_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::floor_fun)xt::math::floor_funinline
    simd_apply(const B &arg) const (defined in xt::math::floor_fun)xt::math::floor_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1floor__fun.html b/structxt_1_1math_1_1floor__fun.html new file mode 100644 index 000000000..ba98595b3 --- /dev/null +++ b/structxt_1_1math_1_1floor__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::floor_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::floor_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 333 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::floor_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 333 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::floor_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 333 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1fma__fun-members.html b/structxt_1_1math_1_1fma__fun-members.html new file mode 100644 index 000000000..0b24529b4 --- /dev/null +++ b/structxt_1_1math_1_1fma__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::fma_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::fma_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2, const T3 &arg3) const (defined in xt::math::fma_fun)xt::math::fma_funinline
    simd_apply(const B &arg1, const B &arg2, const B &arg3) const (defined in xt::math::fma_fun)xt::math::fma_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1fma__fun.html b/structxt_1_1math_1_1fma__fun.html new file mode 100644 index 000000000..f045c7eaf --- /dev/null +++ b/structxt_1_1math_1_1fma__fun.html @@ -0,0 +1,217 @@ + + + + + + + +xtensor: xt::math::fma_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::fma_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 , class T3 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2, const T3 &arg3) const
     
    template<class B >
    auto simd_apply (const B &arg1, const B &arg2, const B &arg3) const
     
    +

    Detailed Description

    +
    +

    Definition at line 300 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 , class T3 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fma_fun::operator() (const T1 & arg1,
    const T2 & arg2,
    const T3 & arg3 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 300 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    auto xt::math::fma_fun::simd_apply (const B & arg1,
    const B & arg2,
    const B & arg3 
    ) const
    +
    +inline
    +
    + +

    Definition at line 300 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1fmax__fun-members.html b/structxt_1_1math_1_1fmax__fun-members.html new file mode 100644 index 000000000..724f8e54a --- /dev/null +++ b/structxt_1_1math_1_1fmax__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::fmax_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::fmax_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::fmax_fun)xt::math::fmax_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::fmax_fun)xt::math::fmax_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1fmax__fun.html b/structxt_1_1math_1_1fmax__fun.html new file mode 100644 index 000000000..022c4ea88 --- /dev/null +++ b/structxt_1_1math_1_1fmax__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::fmax_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::fmax_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 301 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fmax_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 301 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fmax_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 301 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1fmin__fun-members.html b/structxt_1_1math_1_1fmin__fun-members.html new file mode 100644 index 000000000..7c111d7f5 --- /dev/null +++ b/structxt_1_1math_1_1fmin__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::fmin_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::fmin_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::fmin_fun)xt::math::fmin_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::fmin_fun)xt::math::fmin_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1fmin__fun.html b/structxt_1_1math_1_1fmin__fun.html new file mode 100644 index 000000000..4f616fc50 --- /dev/null +++ b/structxt_1_1math_1_1fmin__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::fmin_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::fmin_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 302 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fmin_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 302 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fmin_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 302 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1fmod__fun-members.html b/structxt_1_1math_1_1fmod__fun-members.html new file mode 100644 index 000000000..09e35fbb2 --- /dev/null +++ b/structxt_1_1math_1_1fmod__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::fmod_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::fmod_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::fmod_fun)xt::math::fmod_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::fmod_fun)xt::math::fmod_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1fmod__fun.html b/structxt_1_1math_1_1fmod__fun.html new file mode 100644 index 000000000..b1d9ca7b4 --- /dev/null +++ b/structxt_1_1math_1_1fmod__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::fmod_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::fmod_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 298 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fmod_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 298 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::fmod_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 298 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1hypot__fun-members.html b/structxt_1_1math_1_1hypot__fun-members.html new file mode 100644 index 000000000..27d874d90 --- /dev/null +++ b/structxt_1_1math_1_1hypot__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::hypot_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::hypot_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::hypot_fun)xt::math::hypot_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::hypot_fun)xt::math::hypot_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1hypot__fun.html b/structxt_1_1math_1_1hypot__fun.html new file mode 100644 index 000000000..5ffefa56b --- /dev/null +++ b/structxt_1_1math_1_1hypot__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::hypot_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::hypot_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 314 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::hypot_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 314 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::hypot_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 314 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1isfinite__fun-members.html b/structxt_1_1math_1_1isfinite__fun-members.html new file mode 100644 index 000000000..13033baa2 --- /dev/null +++ b/structxt_1_1math_1_1isfinite__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::isfinite_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::isfinite_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::isfinite_fun)xt::math::isfinite_funinline
    simd_apply(const B &arg) const (defined in xt::math::isfinite_fun)xt::math::isfinite_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1isfinite__fun.html b/structxt_1_1math_1_1isfinite__fun.html new file mode 100644 index 000000000..5b221caba --- /dev/null +++ b/structxt_1_1math_1_1isfinite__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::isfinite_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::isfinite_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 338 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::isfinite_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 338 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::isfinite_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 338 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1isinf__fun-members.html b/structxt_1_1math_1_1isinf__fun-members.html new file mode 100644 index 000000000..36856b357 --- /dev/null +++ b/structxt_1_1math_1_1isinf__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::isinf_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::isinf_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::isinf_fun)xt::math::isinf_funinline
    simd_apply(const B &arg) const (defined in xt::math::isinf_fun)xt::math::isinf_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1isinf__fun.html b/structxt_1_1math_1_1isinf__fun.html new file mode 100644 index 000000000..cf7d09c10 --- /dev/null +++ b/structxt_1_1math_1_1isinf__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::isinf_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::isinf_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 339 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::isinf_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 339 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::isinf_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 339 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1isnan__fun-members.html b/structxt_1_1math_1_1isnan__fun-members.html new file mode 100644 index 000000000..53371e738 --- /dev/null +++ b/structxt_1_1math_1_1isnan__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::isnan_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::isnan_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::isnan_fun)xt::math::isnan_funinline
    simd_apply(const B &arg) const (defined in xt::math::isnan_fun)xt::math::isnan_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1isnan__fun.html b/structxt_1_1math_1_1isnan__fun.html new file mode 100644 index 000000000..07bc9463a --- /dev/null +++ b/structxt_1_1math_1_1isnan__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::isnan_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::isnan_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 340 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::isnan_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 340 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::isnan_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 340 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1lgamma__fun-members.html b/structxt_1_1math_1_1lgamma__fun-members.html new file mode 100644 index 000000000..a7ee0db06 --- /dev/null +++ b/structxt_1_1math_1_1lgamma__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::lgamma_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::lgamma_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::lgamma_fun)xt::math::lgamma_funinline
    simd_apply(const B &arg) const (defined in xt::math::lgamma_fun)xt::math::lgamma_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1lgamma__fun.html b/structxt_1_1math_1_1lgamma__fun.html new file mode 100644 index 000000000..076940668 --- /dev/null +++ b/structxt_1_1math_1_1lgamma__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::lgamma_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::lgamma_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 331 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::lgamma_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 331 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::lgamma_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 331 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1log10__fun-members.html b/structxt_1_1math_1_1log10__fun-members.html new file mode 100644 index 000000000..8bedce359 --- /dev/null +++ b/structxt_1_1math_1_1log10__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::log10_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::log10_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::log10_fun)xt::math::log10_funinline
    simd_apply(const B &arg) const (defined in xt::math::log10_fun)xt::math::log10_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1log10__fun.html b/structxt_1_1math_1_1log10__fun.html new file mode 100644 index 000000000..80e3d9dfb --- /dev/null +++ b/structxt_1_1math_1_1log10__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::log10_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::log10_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 308 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log10_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 308 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log10_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 308 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1log1p__fun-members.html b/structxt_1_1math_1_1log1p__fun-members.html new file mode 100644 index 000000000..c2ed22e52 --- /dev/null +++ b/structxt_1_1math_1_1log1p__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::log1p_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::log1p_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::log1p_fun)xt::math::log1p_funinline
    simd_apply(const B &arg) const (defined in xt::math::log1p_fun)xt::math::log1p_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1log1p__fun.html b/structxt_1_1math_1_1log1p__fun.html new file mode 100644 index 000000000..a6ef1adf6 --- /dev/null +++ b/structxt_1_1math_1_1log1p__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::log1p_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::log1p_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 310 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log1p_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 310 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log1p_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 310 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1log2__fun-members.html b/structxt_1_1math_1_1log2__fun-members.html new file mode 100644 index 000000000..2e99d0926 --- /dev/null +++ b/structxt_1_1math_1_1log2__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::log2_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::log2_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::log2_fun)xt::math::log2_funinline
    simd_apply(const B &arg) const (defined in xt::math::log2_fun)xt::math::log2_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1log2__fun.html b/structxt_1_1math_1_1log2__fun.html new file mode 100644 index 000000000..1e50e34f4 --- /dev/null +++ b/structxt_1_1math_1_1log2__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::log2_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::log2_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 309 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log2_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 309 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log2_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 309 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1log__fun-members.html b/structxt_1_1math_1_1log__fun-members.html new file mode 100644 index 000000000..d83b921a8 --- /dev/null +++ b/structxt_1_1math_1_1log__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::log_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::log_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::log_fun)xt::math::log_funinline
    simd_apply(const B &arg) const (defined in xt::math::log_fun)xt::math::log_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1log__fun.html b/structxt_1_1math_1_1log__fun.html new file mode 100644 index 000000000..67261e558 --- /dev/null +++ b/structxt_1_1math_1_1log__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::log_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::log_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 307 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 307 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::log_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 307 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1maximum-members.html b/structxt_1_1math_1_1maximum-members.html new file mode 100644 index 000000000..9f89276a9 --- /dev/null +++ b/structxt_1_1math_1_1maximum-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::maximum< T > Member List
    +
    +
    + +

    This is the complete list of members for xt::math::maximum< T >, including all inherited members.

    + + + +
    operator()(const A1 &t1, const A2 &t2) const noexcept (defined in xt::math::maximum< T >)xt::math::maximum< T >inline
    simd_apply(const A1 &t1, const A2 &t2) const noexcept (defined in xt::math::maximum< T >)xt::math::maximum< T >inline
    +
    + + + + diff --git a/structxt_1_1math_1_1maximum.html b/structxt_1_1math_1_1maximum.html new file mode 100644 index 000000000..a86c7f33f --- /dev/null +++ b/structxt_1_1math_1_1maximum.html @@ -0,0 +1,210 @@ + + + + + + + +xtensor: xt::math::maximum< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::maximum< T > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class A1 , class A2 >
    constexpr auto operator() (const A1 &t1, const A2 &t2) const noexcept
     
    template<class A1 , class A2 >
    constexpr auto simd_apply (const A1 &t1, const A2 &t2) const noexcept
     
    +

    Detailed Description

    +
    template<class T = void>
    +struct xt::math::maximum< T >
    +

    Definition at line 588 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T = void>
    +
    +template<class A1 , class A2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::maximum< T >::operator() (const A1 & t1,
    const A2 & t2 
    ) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 591 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class T = void>
    +
    +template<class A1 , class A2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::maximum< T >::simd_apply (const A1 & t1,
    const A2 & t2 
    ) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 597 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1minimum-members.html b/structxt_1_1math_1_1minimum-members.html new file mode 100644 index 000000000..853f15a6c --- /dev/null +++ b/structxt_1_1math_1_1minimum-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::minimum< T > Member List
    +
    +
    + +

    This is the complete list of members for xt::math::minimum< T >, including all inherited members.

    + + + +
    operator()(const A1 &t1, const A2 &t2) const noexcept (defined in xt::math::minimum< T >)xt::math::minimum< T >inline
    simd_apply(const A1 &t1, const A2 &t2) const noexcept (defined in xt::math::minimum< T >)xt::math::minimum< T >inline
    +
    + + + + diff --git a/structxt_1_1math_1_1minimum.html b/structxt_1_1math_1_1minimum.html new file mode 100644 index 000000000..9f6fe9ebc --- /dev/null +++ b/structxt_1_1math_1_1minimum.html @@ -0,0 +1,210 @@ + + + + + + + +xtensor: xt::math::minimum< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::minimum< T > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class A1 , class A2 >
    constexpr auto operator() (const A1 &t1, const A2 &t2) const noexcept
     
    template<class A1 , class A2 >
    constexpr auto simd_apply (const A1 &t1, const A2 &t2) const noexcept
     
    +

    Detailed Description

    +
    template<class T = void>
    +struct xt::math::minimum< T >
    +

    Definition at line 572 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T = void>
    +
    +template<class A1 , class A2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::minimum< T >::operator() (const A1 & t1,
    const A2 & t2 
    ) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 575 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class T = void>
    +
    +template<class A1 , class A2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::minimum< T >::simd_apply (const A1 & t1,
    const A2 & t2 
    ) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 581 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1nearbyint__fun-members.html b/structxt_1_1math_1_1nearbyint__fun-members.html new file mode 100644 index 000000000..ab0a81472 --- /dev/null +++ b/structxt_1_1math_1_1nearbyint__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::nearbyint_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::nearbyint_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::nearbyint_fun)xt::math::nearbyint_funinline
    simd_apply(const B &arg) const (defined in xt::math::nearbyint_fun)xt::math::nearbyint_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1nearbyint__fun.html b/structxt_1_1math_1_1nearbyint__fun.html new file mode 100644 index 000000000..adf3b3c54 --- /dev/null +++ b/structxt_1_1math_1_1nearbyint__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::nearbyint_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::nearbyint_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 336 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::nearbyint_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 336 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::nearbyint_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 336 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1norm__fun-members.html b/structxt_1_1math_1_1norm__fun-members.html new file mode 100644 index 000000000..ccdc0e393 --- /dev/null +++ b/structxt_1_1math_1_1norm__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::norm_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::norm_fun, including all inherited members.

    + + + +
    operator()(const T &t) const (defined in xt::math::norm_fun)xt::math::norm_funinline
    simd_apply(const B &t) const (defined in xt::math::norm_fun)xt::math::norm_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1norm__fun.html b/structxt_1_1math_1_1norm__fun.html new file mode 100644 index 000000000..a2133d7bd --- /dev/null +++ b/structxt_1_1math_1_1norm__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::norm_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::norm_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &t) const
     
    template<class B >
    constexpr auto simd_apply (const B &t) const
     
    +

    Detailed Description

    +
    +

    Definition at line 193 of file xcomplex.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::norm_fun::operator() (const T & t) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 193 of file xcomplex.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::norm_fun::simd_apply (const B & t) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 193 of file xcomplex.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xcomplex.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1pow__fun-members.html b/structxt_1_1math_1_1pow__fun-members.html new file mode 100644 index 000000000..43f6272af --- /dev/null +++ b/structxt_1_1math_1_1pow__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::pow_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::pow_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::pow_fun)xt::math::pow_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::pow_fun)xt::math::pow_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1pow__fun.html b/structxt_1_1math_1_1pow__fun.html new file mode 100644 index 000000000..dcb38a33a --- /dev/null +++ b/structxt_1_1math_1_1pow__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::pow_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::pow_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 311 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::pow_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 311 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::pow_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 311 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1rad2deg-members.html b/structxt_1_1math_1_1rad2deg-members.html new file mode 100644 index 000000000..4b646bb8c --- /dev/null +++ b/structxt_1_1math_1_1rad2deg-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::rad2deg Member List
    +
    +
    + +

    This is the complete list of members for xt::math::rad2deg, including all inherited members.

    + + + + + +
    operator()(const A &a) const noexcept (defined in xt::math::rad2deg)xt::math::rad2deginline
    operator()(const A &a) const noexcept (defined in xt::math::rad2deg)xt::math::rad2deginline
    simd_apply(const A &a) const noexcept (defined in xt::math::rad2deg)xt::math::rad2deginline
    simd_apply(const A &a) const noexcept (defined in xt::math::rad2deg)xt::math::rad2deginline
    +
    + + + + diff --git a/structxt_1_1math_1_1rad2deg.html b/structxt_1_1math_1_1rad2deg.html new file mode 100644 index 000000000..1f4ce1371 --- /dev/null +++ b/structxt_1_1math_1_1rad2deg.html @@ -0,0 +1,251 @@ + + + + + + + +xtensor: xt::math::rad2deg Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::rad2deg Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Member Functions

    template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    constexpr double operator() (const A &a) const noexcept
     
    template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    constexpr auto operator() (const A &a) const noexcept
     
    template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    constexpr double simd_apply (const A &a) const noexcept
     
    template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    constexpr auto simd_apply (const A &a) const noexcept
     
    +

    Detailed Description

    +
    +

    Definition at line 645 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()() [1/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr double xt::math::rad2deg::operator() (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 648 of file xmath.hpp.

    + +
    +
    + +

    ◆ operator()() [2/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::rad2deg::operator() (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 654 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply() [1/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< xtl::is_integral< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr double xt::math::rad2deg::simd_apply (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 660 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply() [2/2]

    + +
    +
    +
    +template<class A , std::enable_if_t< std::is_floating_point< A >::value, int > = 0>
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::rad2deg::simd_apply (const A & a) const
    +
    +inlineconstexprnoexcept
    +
    + +

    Definition at line 666 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1remainder__fun-members.html b/structxt_1_1math_1_1remainder__fun-members.html new file mode 100644 index 000000000..d3acf6e6b --- /dev/null +++ b/structxt_1_1math_1_1remainder__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::remainder_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::remainder_fun, including all inherited members.

    + + + +
    operator()(const T1 &arg1, const T2 &arg2) const (defined in xt::math::remainder_fun)xt::math::remainder_funinline
    simd_apply(const B &arg1, const B &arg2) const (defined in xt::math::remainder_fun)xt::math::remainder_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1remainder__fun.html b/structxt_1_1math_1_1remainder__fun.html new file mode 100644 index 000000000..e1aa7afd3 --- /dev/null +++ b/structxt_1_1math_1_1remainder__fun.html @@ -0,0 +1,205 @@ + + + + + + + +xtensor: xt::math::remainder_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::remainder_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T1 , class T2 >
    constexpr auto operator() (const T1 &arg1, const T2 &arg2) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg1, const B &arg2) const
     
    +

    Detailed Description

    +
    +

    Definition at line 299 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::remainder_fun::operator() (const T1 & arg1,
    const T2 & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 299 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto xt::math::remainder_fun::simd_apply (const B & arg1,
    const B & arg2 
    ) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 299 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1rint__fun-members.html b/structxt_1_1math_1_1rint__fun-members.html new file mode 100644 index 000000000..9842419f0 --- /dev/null +++ b/structxt_1_1math_1_1rint__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::rint_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::rint_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::rint_fun)xt::math::rint_funinline
    simd_apply(const B &arg) const (defined in xt::math::rint_fun)xt::math::rint_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1rint__fun.html b/structxt_1_1math_1_1rint__fun.html new file mode 100644 index 000000000..8358899ee --- /dev/null +++ b/structxt_1_1math_1_1rint__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::rint_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::rint_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 337 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::rint_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 337 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::rint_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 337 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1round__fun-members.html b/structxt_1_1math_1_1round__fun-members.html new file mode 100644 index 000000000..670c4bc7e --- /dev/null +++ b/structxt_1_1math_1_1round__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::round_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::round_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::round_fun)xt::math::round_funinline
    simd_apply(const B &arg) const (defined in xt::math::round_fun)xt::math::round_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1round__fun.html b/structxt_1_1math_1_1round__fun.html new file mode 100644 index 000000000..50e81a1b3 --- /dev/null +++ b/structxt_1_1math_1_1round__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::round_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::round_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 335 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::round_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 335 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::round_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 335 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1sign__fun-members.html b/structxt_1_1math_1_1sign__fun-members.html new file mode 100644 index 000000000..a14519d8b --- /dev/null +++ b/structxt_1_1math_1_1sign__fun-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::sign_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::sign_fun, including all inherited members.

    + + +
    operator()(const T &x) const (defined in xt::math::sign_fun)xt::math::sign_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1sign__fun.html b/structxt_1_1math_1_1sign__fun.html new file mode 100644 index 000000000..70ff604b3 --- /dev/null +++ b/structxt_1_1math_1_1sign__fun.html @@ -0,0 +1,152 @@ + + + + + + + +xtensor: xt::math::sign_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::sign_fun Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &x) const
     
    +

    Detailed Description

    +
    +

    Definition at line 855 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sign_fun::operator() (const T & x) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 858 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1sign__impl-members.html b/structxt_1_1math_1_1sign__impl-members.html new file mode 100644 index 000000000..acc5c9e2c --- /dev/null +++ b/structxt_1_1math_1_1sign__impl-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::sign_impl< T > Member List
    +
    +
    + +

    This is the complete list of members for xt::math::sign_impl< T >, including all inherited members.

    + + + + +
    run(T x) (defined in xt::math::sign_impl< T >)xt::math::sign_impl< T >inlinestatic
    run(T x) (defined in xt::math::sign_impl< T >)xt::math::sign_impl< T >inlinestatic
    run(T x) (defined in xt::math::sign_impl< T >)xt::math::sign_impl< T >inlinestatic
    +
    + + + + diff --git a/structxt_1_1math_1_1sign__impl.html b/structxt_1_1math_1_1sign__impl.html new file mode 100644 index 000000000..01a42b6f1 --- /dev/null +++ b/structxt_1_1math_1_1sign__impl.html @@ -0,0 +1,225 @@ + + + + + + + +xtensor: xt::math::sign_impl< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::sign_impl< T > Struct Template Reference
    +
    +
    + + + + + + + + + + + +

    +Static Public Member Functions

    template<class XT = T>
    static constexpr std::enable_if_t< xtl::is_signed< XT >::value, T > run (T x)
     
    template<class XT = T>
    static constexpr std::enable_if_t< xtl::is_complex< XT >::value, T > run (T x)
     
    template<class XT = T>
    static constexpr std::enable_if_t< std::is_unsigned< XT >::value, T > run (T x)
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::math::sign_impl< T >
    +

    Definition at line 827 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ run() [1/3]

    + +
    +
    +
    +template<class T >
    +
    +template<class XT = T>
    + + + + + +
    + + + + + + + + +
    static constexpr std::enable_if_t< xtl::is_signed< XT >::value, T > xt::math::sign_impl< T >::run (x)
    +
    +inlinestaticconstexpr
    +
    + +

    Definition at line 830 of file xmath.hpp.

    + +
    +
    + +

    ◆ run() [2/3]

    + +
    +
    +
    +template<class T >
    +
    +template<class XT = T>
    + + + + + +
    + + + + + + + + +
    static constexpr std::enable_if_t< xtl::is_complex< XT >::value, T > xt::math::sign_impl< T >::run (x)
    +
    +inlinestaticconstexpr
    +
    + +

    Definition at line 838 of file xmath.hpp.

    + +
    +
    + +

    ◆ run() [3/3]

    + +
    +
    +
    +template<class T >
    +
    +template<class XT = T>
    + + + + + +
    + + + + + + + + +
    static constexpr std::enable_if_t< std::is_unsigned< XT >::value, T > xt::math::sign_impl< T >::run (x)
    +
    +inlinestaticconstexpr
    +
    + +

    Definition at line 849 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4-members.html b/structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4-members.html new file mode 100644 index 000000000..623b5fc60 --- /dev/null +++ b/structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::sign_impl< xtl::xoptional< T, B > > Member List
    +
    +
    + +

    This is the complete list of members for xt::math::sign_impl< xtl::xoptional< T, B > >, including all inherited members.

    + + +
    run(const xtl::xoptional< T, B > &x) (defined in xt::math::sign_impl< xtl::xoptional< T, B > >)xt::math::sign_impl< xtl::xoptional< T, B > >inlinestatic
    +
    + + + + diff --git a/structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html b/structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html new file mode 100644 index 000000000..3ae88f566 --- /dev/null +++ b/structxt_1_1math_1_1sign__impl_3_01xtl_1_1xoptional_3_01_t_00_01_b_01_4_01_4.html @@ -0,0 +1,152 @@ + + + + + + + +xtensor: xt::math::sign_impl< xtl::xoptional< T, B > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::sign_impl< xtl::xoptional< T, B > > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Member Functions

    static constexpr auto run (const xtl::xoptional< T, B > &x)
     
    +

    Detailed Description

    +
    template<class T, class B>
    +struct xt::math::sign_impl< xtl::xoptional< T, B > >
    +

    Definition at line 1245 of file xoptional.hpp.

    +

    Member Function Documentation

    + +

    ◆ run()

    + +
    +
    +
    +template<class T , class B >
    + + + + + +
    + + + + + + + + +
    static constexpr auto xt::math::sign_impl< xtl::xoptional< T, B > >::run (const xtl::xoptional< T, B > & x)
    +
    +inlinestaticconstexpr
    +
    + +

    Definition at line 1247 of file xoptional.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1sin__fun-members.html b/structxt_1_1math_1_1sin__fun-members.html new file mode 100644 index 000000000..a8a423ad4 --- /dev/null +++ b/structxt_1_1math_1_1sin__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::sin_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::sin_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::sin_fun)xt::math::sin_funinline
    simd_apply(const B &arg) const (defined in xt::math::sin_fun)xt::math::sin_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1sin__fun.html b/structxt_1_1math_1_1sin__fun.html new file mode 100644 index 000000000..fb2488d0e --- /dev/null +++ b/structxt_1_1math_1_1sin__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::sin_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::sin_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 315 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sin_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 315 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sin_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 315 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1sinh__fun-members.html b/structxt_1_1math_1_1sinh__fun-members.html new file mode 100644 index 000000000..7f9d7f4da --- /dev/null +++ b/structxt_1_1math_1_1sinh__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::sinh_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::sinh_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::sinh_fun)xt::math::sinh_funinline
    simd_apply(const B &arg) const (defined in xt::math::sinh_fun)xt::math::sinh_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1sinh__fun.html b/structxt_1_1math_1_1sinh__fun.html new file mode 100644 index 000000000..4bd78c4f2 --- /dev/null +++ b/structxt_1_1math_1_1sinh__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::sinh_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::sinh_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 322 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sinh_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 322 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sinh_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 322 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1sqrt__fun-members.html b/structxt_1_1math_1_1sqrt__fun-members.html new file mode 100644 index 000000000..1125b2507 --- /dev/null +++ b/structxt_1_1math_1_1sqrt__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::sqrt_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::sqrt_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::sqrt_fun)xt::math::sqrt_funinline
    simd_apply(const B &arg) const (defined in xt::math::sqrt_fun)xt::math::sqrt_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1sqrt__fun.html b/structxt_1_1math_1_1sqrt__fun.html new file mode 100644 index 000000000..ed3f5060d --- /dev/null +++ b/structxt_1_1math_1_1sqrt__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::sqrt_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::sqrt_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 312 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sqrt_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 312 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::sqrt_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 312 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1tan__fun-members.html b/structxt_1_1math_1_1tan__fun-members.html new file mode 100644 index 000000000..440639032 --- /dev/null +++ b/structxt_1_1math_1_1tan__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::tan_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::tan_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::tan_fun)xt::math::tan_funinline
    simd_apply(const B &arg) const (defined in xt::math::tan_fun)xt::math::tan_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1tan__fun.html b/structxt_1_1math_1_1tan__fun.html new file mode 100644 index 000000000..565028e5a --- /dev/null +++ b/structxt_1_1math_1_1tan__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::tan_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::tan_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 317 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::tan_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 317 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::tan_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 317 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1tanh__fun-members.html b/structxt_1_1math_1_1tanh__fun-members.html new file mode 100644 index 000000000..b740b9e45 --- /dev/null +++ b/structxt_1_1math_1_1tanh__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::tanh_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::tanh_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::tanh_fun)xt::math::tanh_funinline
    simd_apply(const B &arg) const (defined in xt::math::tanh_fun)xt::math::tanh_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1tanh__fun.html b/structxt_1_1math_1_1tanh__fun.html new file mode 100644 index 000000000..f5ebaa7e6 --- /dev/null +++ b/structxt_1_1math_1_1tanh__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::tanh_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::tanh_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 324 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::tanh_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 324 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::tanh_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 324 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1tgamma__fun-members.html b/structxt_1_1math_1_1tgamma__fun-members.html new file mode 100644 index 000000000..a98f78042 --- /dev/null +++ b/structxt_1_1math_1_1tgamma__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::tgamma_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::tgamma_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::tgamma_fun)xt::math::tgamma_funinline
    simd_apply(const B &arg) const (defined in xt::math::tgamma_fun)xt::math::tgamma_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1tgamma__fun.html b/structxt_1_1math_1_1tgamma__fun.html new file mode 100644 index 000000000..073d95d3a --- /dev/null +++ b/structxt_1_1math_1_1tgamma__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::tgamma_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::tgamma_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 330 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::tgamma_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 330 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::tgamma_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 330 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1math_1_1trunc__fun-members.html b/structxt_1_1math_1_1trunc__fun-members.html new file mode 100644 index 000000000..a104e0857 --- /dev/null +++ b/structxt_1_1math_1_1trunc__fun-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::math::trunc_fun Member List
    +
    +
    + +

    This is the complete list of members for xt::math::trunc_fun, including all inherited members.

    + + + +
    operator()(const T &arg) const (defined in xt::math::trunc_fun)xt::math::trunc_funinline
    simd_apply(const B &arg) const (defined in xt::math::trunc_fun)xt::math::trunc_funinline
    +
    + + + + diff --git a/structxt_1_1math_1_1trunc__fun.html b/structxt_1_1math_1_1trunc__fun.html new file mode 100644 index 000000000..d4bab2a1b --- /dev/null +++ b/structxt_1_1math_1_1trunc__fun.html @@ -0,0 +1,185 @@ + + + + + + + +xtensor: xt::math::trunc_fun Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::math::trunc_fun Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    template<class T >
    constexpr auto operator() (const T &arg) const
     
    template<class B >
    constexpr auto simd_apply (const B &arg) const
     
    +

    Detailed Description

    +
    +

    Definition at line 334 of file xmath.hpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::trunc_fun::operator() (const T & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 334 of file xmath.hpp.

    + +
    +
    + +

    ◆ simd_apply()

    + +
    +
    +
    +template<class B >
    + + + + + +
    + + + + + + + + +
    constexpr auto xt::math::trunc_fun::simd_apply (const B & arg) const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 334 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1meta__identity-members.html b/structxt_1_1meta__identity-members.html new file mode 100644 index 000000000..25ef14bbc --- /dev/null +++ b/structxt_1_1meta__identity-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::meta_identity< T > Member List
    +
    +
    + +

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

    + + +
    type typedef (defined in xt::meta_identity< T >)xt::meta_identity< T >
    +
    + + + + diff --git a/structxt_1_1meta__identity.html b/structxt_1_1meta__identity.html new file mode 100644 index 000000000..8e2d73f25 --- /dev/null +++ b/structxt_1_1meta__identity.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::meta_identity< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::meta_identity< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::meta_identity< T >
    +

    Definition at line 117 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::meta_identity< T >::type = T
    +
    + +

    Definition at line 119 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1missing__type.html b/structxt_1_1missing__type.html new file mode 100644 index 000000000..b19f8c7a4 --- /dev/null +++ b/structxt_1_1missing__type.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::missing_type Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::missing_type Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 34 of file xexception.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1nested__initializer__list-members.html b/structxt_1_1nested__initializer__list-members.html new file mode 100644 index 000000000..ce37f4556 --- /dev/null +++ b/structxt_1_1nested__initializer__list-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::nested_initializer_list< T, I > Member List
    +
    +
    + +

    This is the complete list of members for xt::nested_initializer_list< T, I >, including all inherited members.

    + + +
    type typedef (defined in xt::nested_initializer_list< T, I >)xt::nested_initializer_list< T, I >
    +
    + + + + diff --git a/structxt_1_1nested__initializer__list.html b/structxt_1_1nested__initializer__list.html new file mode 100644 index 000000000..98ae4e0ff --- /dev/null +++ b/structxt_1_1nested__initializer__list.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::nested_initializer_list< T, I > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::nested_initializer_list< T, I > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::initializer_list< typename nested_initializer_list< T, I - 1 >::type >
     
    +

    Detailed Description

    +
    template<class T, std::size_t I>
    +struct xt::nested_initializer_list< T, I >
    +

    Definition at line 302 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , std::size_t I>
    + + + + +
    using xt::nested_initializer_list< T, I >::type = std::initializer_list<typename nested_initializer_list<T, I - 1>::type>
    +
    + +

    Definition at line 304 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1nested__initializer__list_3_01_t_00_010_01_4-members.html b/structxt_1_1nested__initializer__list_3_01_t_00_010_01_4-members.html new file mode 100644 index 000000000..2884604fe --- /dev/null +++ b/structxt_1_1nested__initializer__list_3_01_t_00_010_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::nested_initializer_list< T, 0 > Member List
    +
    +
    + +

    This is the complete list of members for xt::nested_initializer_list< T, 0 >, including all inherited members.

    + + +
    type typedef (defined in xt::nested_initializer_list< T, 0 >)xt::nested_initializer_list< T, 0 >
    +
    + + + + diff --git a/structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html b/structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html new file mode 100644 index 000000000..9f37486bf --- /dev/null +++ b/structxt_1_1nested__initializer__list_3_01_t_00_010_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::nested_initializer_list< T, 0 > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::nested_initializer_list< T, 0 > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::nested_initializer_list< T, 0 >
    +

    Definition at line 308 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::nested_initializer_list< T, 0 >::type = T
    +
    + +

    Definition at line 310 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1no__ownership.html b/structxt_1_1no__ownership.html new file mode 100644 index 000000000..03c9edade --- /dev/null +++ b/structxt_1_1no__ownership.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::no_ownership Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::no_ownership Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 27 of file xbuffer_adaptor.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1norm__type-members.html b/structxt_1_1norm__type-members.html new file mode 100644 index 000000000..540d83001 --- /dev/null +++ b/structxt_1_1norm__type-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::norm_type< T > Member List
    +
    +
    + +

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

    + + + +
    base_type typedef (defined in xt::norm_type< T >)xt::norm_type< T >
    type typedef (defined in xt::norm_type< T >)xt::norm_type< T >
    +
    + + + + diff --git a/structxt_1_1norm__type.html b/structxt_1_1norm__type.html new file mode 100644 index 000000000..19d596911 --- /dev/null +++ b/structxt_1_1norm__type.html @@ -0,0 +1,211 @@ + + + + + + + +xtensor: xt::norm_type< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::norm_type< T > Struct Template Reference
    +
    +
    + +

    Traits class for the result type of the norm_l2() function. + More...

    + +

    #include <xnorm.hpp>

    +
    +Inheritance diagram for xt::norm_type< T >:
    +
    +
    + + +xt::traits_detail::norm_type_base< T > + +
    + + + + + + + + + + + + + +

    +Public Types

    using base_type = traits_detail::norm_type_base< T >
     
    using type = typename std::conditional< base_type::norm_of_vector::value, typename base_type::norm_of_vector::norm_type, typename base_type::norm_of_scalar::norm_type >::type
     
    - Public Types inherited from xt::traits_detail::norm_type_base< T >
    using T = std::decay_t< T >
     
    using norm_of_scalar = norm_of_scalar_impl< T >
     
    using norm_of_vector = norm_of_vector_impl< T >
     
    + + + + +

    +Additional Inherited Members

    - Static Public Attributes inherited from xt::traits_detail::norm_type_base< T >
    static const bool value
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::norm_type< T >

    Traits class for the result type of the norm_l2() function.

    +

    Member 'type' defines the result of norm_l2(t), where t is of type

    Template Parameters
    + + + + + + +
    T.It implements the following rules designed to minimize the potential for overflow:
      +
    • +
    +
    Tis an arithmetic type: 'type' is the result type of abs(t).
      +
    • +
    +
    Tis a container of 'long double' elements: 'type' is long double.
      +
    • +
    +
    Tis a container of another arithmetic type: 'type' is double.
      +
    • +
    +
    Tis a container of some other type: 'type' is the element's norm type,
    +
    +
    +

    Containers are recognized by having an embedded typedef 'value_type'. To change the behavior for a case not covered here, specialize the traits_detail::norm_type_base template.

    + +

    Definition at line 153 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ base_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::norm_type< T >::base_type = traits_detail::norm_type_base<T>
    +
    + +

    Definition at line 155 of file xnorm.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::norm_type< T >::type = typename std::conditional< base_type::norm_of_vector::value, typename base_type::norm_of_vector::norm_type, typename base_type::norm_of_scalar::norm_type>::type
    +
    + +

    Definition at line 157 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1norm__type.png b/structxt_1_1norm__type.png new file mode 100644 index 0000000000000000000000000000000000000000..56737349883027fd6f6262e73d95274c5e6e7a54 GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#7gBeJ!GHK8QQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nu9JzX3_Dj46+eZOh70?(1@ zrOP(I|9|8<)2IF0qjLKVzU)YEX*to~QgdvR&gl(@oF+AAU7DCOe^!ag&E;HH!FyX0 z4TCFE^L4`~<-F{Dzc1j}Uk{_pe!Il)XI^}J?^0{YdKq)8?4Cd0j^41jvGVKHb4v`b zHJVyFKbkdfV)VnucH%o0yj;0kV`{Or)7y>heQi&Zosa%K_H)OAk_CzXQpC)+{9eno zvy9LEM%PMx8^&&*%UQS%wSCi4iK8+GCg& zanR$^f>|Y#t}IuZtMYXv_lrK38xLRao~ttV+TRy^Zc~;_w{lJoS9_jwt#SS*=ik$F zzGYVSy-9hdqiMH&!Q{YyE#~UxPa7|Z@}`>yUYxt;Lh;m0dpV|-H7TbihgU6izj)@Z z=05v{-fOpQ;%-SQdGszOXr}v%JFz}cB z(^Fn!gZHKIugX@pZEB`n`akK5>tDO_f7Q*GJTI*`d8x9}-`C3XRj~G4!(%hDh6 V+npk7Q3Fh$44$rjF6*2Ung9XfdO!dG literal 0 HcmV?d00001 diff --git a/structxt_1_1numeric__constants-members.html b/structxt_1_1numeric__constants-members.html new file mode 100644 index 000000000..9a7fe44dc --- /dev/null +++ b/structxt_1_1numeric__constants-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::numeric_constants< T > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1numeric__constants.html b/structxt_1_1numeric__constants.html new file mode 100644 index 000000000..ac55f3a62 --- /dev/null +++ b/structxt_1_1numeric__constants.html @@ -0,0 +1,456 @@ + + + + + + + +xtensor: xt::numeric_constants< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::numeric_constants< T > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Attributes

    static constexpr T PI = 3.141592653589793238463
     
    static constexpr T PI_2 = 1.57079632679489661923
     
    static constexpr T PI_4 = 0.785398163397448309616
     
    static constexpr T D_1_PI = 0.318309886183790671538
     
    static constexpr T D_2_PI = 0.636619772367581343076
     
    static constexpr T D_2_SQRTPI = 1.12837916709551257390
     
    static constexpr T SQRT2 = 1.41421356237309504880
     
    static constexpr T SQRT1_2 = 0.707106781186547524401
     
    static constexpr T E = 2.71828182845904523536
     
    static constexpr T LOG2E = 1.44269504088896340736
     
    static constexpr T LOG10E = 0.434294481903251827651
     
    static constexpr T LN2 = 0.693147180559945309417
     
    +

    Detailed Description

    +
    template<class T = double>
    +struct xt::numeric_constants< T >
    +

    Definition at line 39 of file xmath.hpp.

    +

    Member Data Documentation

    + +

    ◆ D_1_PI

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::D_1_PI = 0.318309886183790671538
    +
    +staticconstexpr
    +
    + +

    Definition at line 44 of file xmath.hpp.

    + +
    +
    + +

    ◆ D_2_PI

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::D_2_PI = 0.636619772367581343076
    +
    +staticconstexpr
    +
    + +

    Definition at line 45 of file xmath.hpp.

    + +
    +
    + +

    ◆ D_2_SQRTPI

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::D_2_SQRTPI = 1.12837916709551257390
    +
    +staticconstexpr
    +
    + +

    Definition at line 46 of file xmath.hpp.

    + +
    +
    + +

    ◆ E

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::E = 2.71828182845904523536
    +
    +staticconstexpr
    +
    + +

    Definition at line 49 of file xmath.hpp.

    + +
    +
    + +

    ◆ LN2

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::LN2 = 0.693147180559945309417
    +
    +staticconstexpr
    +
    + +

    Definition at line 52 of file xmath.hpp.

    + +
    +
    + +

    ◆ LOG10E

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::LOG10E = 0.434294481903251827651
    +
    +staticconstexpr
    +
    + +

    Definition at line 51 of file xmath.hpp.

    + +
    +
    + +

    ◆ LOG2E

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::LOG2E = 1.44269504088896340736
    +
    +staticconstexpr
    +
    + +

    Definition at line 50 of file xmath.hpp.

    + +
    +
    + +

    ◆ PI

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::PI = 3.141592653589793238463
    +
    +staticconstexpr
    +
    + +

    Definition at line 41 of file xmath.hpp.

    + +
    +
    + +

    ◆ PI_2

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::PI_2 = 1.57079632679489661923
    +
    +staticconstexpr
    +
    + +

    Definition at line 42 of file xmath.hpp.

    + +
    +
    + +

    ◆ PI_4

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::PI_4 = 0.785398163397448309616
    +
    +staticconstexpr
    +
    + +

    Definition at line 43 of file xmath.hpp.

    + +
    +
    + +

    ◆ SQRT1_2

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::SQRT1_2 = 0.707106781186547524401
    +
    +staticconstexpr
    +
    + +

    Definition at line 48 of file xmath.hpp.

    + +
    +
    + +

    ◆ SQRT2

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + +
    constexpr T xt::numeric_constants< T >::SQRT2 = 1.41421356237309504880
    +
    +staticconstexpr
    +
    + +

    Definition at line 47 of file xmath.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1print__options_1_1print__options__impl-members.html b/structxt_1_1print__options_1_1print__options__impl-members.html new file mode 100644 index 000000000..387c65cb8 --- /dev/null +++ b/structxt_1_1print__options_1_1print__options__impl-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::print_options::print_options_impl Member List
    +
    + +
    + + + + diff --git a/structxt_1_1print__options_1_1print__options__impl.html b/structxt_1_1print__options_1_1print__options__impl.html new file mode 100644 index 000000000..7d4b58310 --- /dev/null +++ b/structxt_1_1print__options_1_1print__options__impl.html @@ -0,0 +1,191 @@ + + + + + + + +xtensor: xt::print_options::print_options_impl Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::print_options::print_options_impl Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    int edge_items = 3
     
    int line_width = 75
     
    int threshold = 1000
     
    int precision = -1
     
    +

    Detailed Description

    +
    +

    Definition at line 37 of file xio.hpp.

    +

    Member Data Documentation

    + +

    ◆ edge_items

    + +
    +
    + + + + +
    int xt::print_options::print_options_impl::edge_items = 3
    +
    + +

    Definition at line 39 of file xio.hpp.

    + +
    +
    + +

    ◆ line_width

    + +
    +
    + + + + +
    int xt::print_options::print_options_impl::line_width = 75
    +
    + +

    Definition at line 40 of file xio.hpp.

    + +
    +
    + +

    ◆ precision

    + +
    +
    + + + + +
    int xt::print_options::print_options_impl::precision = -1
    +
    + +

    Definition at line 42 of file xio.hpp.

    + +
    +
    + +

    ◆ threshold

    + +
    +
    + + + + +
    int xt::print_options::print_options_impl::threshold = 1000
    +
    + +

    Definition at line 41 of file xio.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xio.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1promote__shape-members.html b/structxt_1_1promote__shape-members.html new file mode 100644 index 000000000..8db7e55bc --- /dev/null +++ b/structxt_1_1promote__shape-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::promote_shape< S > Member List
    +
    +
    + +

    This is the complete list of members for xt::promote_shape< S >, including all inherited members.

    + + +
    type typedef (defined in xt::promote_shape< S >)xt::promote_shape< S >
    +
    + + + + diff --git a/structxt_1_1promote__shape.html b/structxt_1_1promote__shape.html new file mode 100644 index 000000000..57a051d69 --- /dev/null +++ b/structxt_1_1promote__shape.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::promote_shape< S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::promote_shape< S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::promote_index< S... >::type
     
    +

    Detailed Description

    +
    template<class... S>
    +struct xt::promote_shape< S >
    +

    Definition at line 512 of file xshape.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... S>
    + + + + +
    using xt::promote_shape< S >::type = typename detail::promote_index<S...>::type
    +
    + +

    Definition at line 514 of file xshape.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1promote__strides-members.html b/structxt_1_1promote__strides-members.html new file mode 100644 index 000000000..cbce9cbb8 --- /dev/null +++ b/structxt_1_1promote__strides-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::promote_strides< S > Member List
    +
    +
    + +

    This is the complete list of members for xt::promote_strides< S >, including all inherited members.

    + + +
    type typedef (defined in xt::promote_strides< S >)xt::promote_strides< S >
    +
    + + + + diff --git a/structxt_1_1promote__strides.html b/structxt_1_1promote__strides.html new file mode 100644 index 000000000..3dbf9963f --- /dev/null +++ b/structxt_1_1promote__strides.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::promote_strides< S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::promote_strides< S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::promote_index< S... >::type
     
    +

    Detailed Description

    +
    template<class... S>
    +struct xt::promote_strides< S >
    +

    Definition at line 524 of file xshape.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... S>
    + + + + +
    using xt::promote_strides< S >::type = typename detail::promote_index<S...>::type
    +
    + +

    Definition at line 526 of file xshape.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1rebind__container.html b/structxt_1_1rebind__container.html new file mode 100644 index 000000000..713e337a7 --- /dev/null +++ b/structxt_1_1rebind__container.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::rebind_container< X, C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::rebind_container< X, C > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class X, class C>
    +struct xt::rebind_container< X, C >
    +

    Definition at line 79 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4-members.html b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4-members.html new file mode 100644 index 000000000..a9a405d1e --- /dev/null +++ b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::rebind_container< X, C< T, A > > Member List
    +
    +
    + +

    This is the complete list of members for xt::rebind_container< X, C< T, A > >, including all inherited members.

    + + + + +
    allocator typedef (defined in xt::rebind_container< X, C< T, A > >)xt::rebind_container< X, C< T, A > >
    traits typedef (defined in xt::rebind_container< X, C< T, A > >)xt::rebind_container< X, C< T, A > >
    type typedef (defined in xt::rebind_container< X, C< T, A > >)xt::rebind_container< X, C< T, A > >
    +
    + + + + diff --git a/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..e0210b98c --- /dev/null +++ b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_a_01_4_01_4.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::rebind_container< X, C< T, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::rebind_container< X, C< T, A > > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using traits = std::allocator_traits< A >
     
    using allocator = typename traits::template rebind_alloc< X >
     
    using type = C< X, allocator >
     
    +

    Detailed Description

    +
    template<class X, template< class, class > class C, class T, class A>
    +struct xt::rebind_container< X, C< T, A > >
    +

    Definition at line 868 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ allocator

    + +
    +
    +
    +template<class X , template< class, class > class C, class T , class A >
    + + + + +
    using xt::rebind_container< X, C< T, A > >::allocator = typename traits::template rebind_alloc<X>
    +
    + +

    Definition at line 871 of file xutils.hpp.

    + +
    +
    + +

    ◆ traits

    + +
    +
    +
    +template<class X , template< class, class > class C, class T , class A >
    + + + + +
    using xt::rebind_container< X, C< T, A > >::traits = std::allocator_traits<A>
    +
    + +

    Definition at line 870 of file xutils.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class X , template< class, class > class C, class T , class A >
    + + + + +
    using xt::rebind_container< X, C< T, A > >::type = C<X, allocator>
    +
    + +

    Definition at line 872 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4-members.html b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4-members.html new file mode 100644 index 000000000..e12fd5157 --- /dev/null +++ b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::rebind_container< X, C< T, N > > Member List
    +
    +
    + +

    This is the complete list of members for xt::rebind_container< X, C< T, N > >, including all inherited members.

    + + +
    type typedef (defined in xt::rebind_container< X, C< T, N > >)xt::rebind_container< X, C< T, N > >
    +
    + + + + diff --git a/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html new file mode 100644 index 000000000..4eec63569 --- /dev/null +++ b/structxt_1_1rebind__container_3_01_x_00_01_c_3_01_t_00_01_n_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::rebind_container< X, C< T, N > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::rebind_container< X, C< T, N > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = C< X, N >
     
    +

    Detailed Description

    +
    template<class X, template< class, std::size_t > class C, class T, std::size_t N>
    +struct xt::rebind_container< X, C< T, N > >
    +

    Definition at line 883 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class X , template< class, std::size_t > class C, class T , std::size_t N>
    + + + + +
    using xt::rebind_container< X, C< T, N > >::type = C<X, N>
    +
    + +

    Definition at line 885 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4-members.html b/structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4-members.html new file mode 100644 index 000000000..7b32ac4b5 --- /dev/null +++ b/structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::rebind_container< X, svector< T, N, A, B > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html b/structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html new file mode 100644 index 000000000..2522409c1 --- /dev/null +++ b/structxt_1_1rebind__container_3_01_x_00_01svector_3_01_t_00_01_n_00_01_a_00_01_b_01_4_01_4.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::rebind_container< X, svector< T, N, A, B > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::rebind_container< X, svector< T, N, A, B > > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using traits = std::allocator_traits< A >
     
    using allocator = typename traits::template rebind_alloc< X >
     
    using type = svector< X, N, allocator, B >
     
    +

    Detailed Description

    +
    template<class X, class T, std::size_t N, class A, bool B>
    +struct xt::rebind_container< X, svector< T, N, A, B > >
    +

    Definition at line 1415 of file xstorage.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ allocator

    + +
    +
    +
    +template<class X , class T , std::size_t N, class A , bool B>
    + + + + +
    using xt::rebind_container< X, svector< T, N, A, B > >::allocator = typename traits::template rebind_alloc<X>
    +
    + +

    Definition at line 1418 of file xstorage.hpp.

    + +
    +
    + +

    ◆ traits

    + +
    +
    +
    +template<class X , class T , std::size_t N, class A , bool B>
    + + + + +
    using xt::rebind_container< X, svector< T, N, A, B > >::traits = std::allocator_traits<A>
    +
    + +

    Definition at line 1417 of file xstorage.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class X , class T , std::size_t N, class A , bool B>
    + + + + +
    using xt::rebind_container< X, svector< T, N, A, B > >::type = svector<X, N, allocator, B>
    +
    + +

    Definition at line 1419 of file xstorage.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1reducer__options-members.html b/structxt_1_1reducer__options-members.html new file mode 100644 index 000000000..2b8ce3087 --- /dev/null +++ b/structxt_1_1reducer__options-members.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::reducer_options< R, T > Member List
    +
    +
    + +

    This is the complete list of members for xt::reducer_options< R, T >, including all inherited members.

    + + + + + + + + + + + +
    d_t typedef (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >
    evaluation_strategy typedef (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >
    has_initial_value (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >static
    initial_val_idx (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >static
    initial_value (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >
    keep_dims typedef (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >
    rebind(NR initial, const reducer_options< R, T > &) const (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >inline
    rebind_t typedef (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >
    reducer_options()=default (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >
    reducer_options(const T &tpl) (defined in xt::reducer_options< R, T >)xt::reducer_options< R, T >inline
    +
    + + + + diff --git a/structxt_1_1reducer__options.html b/structxt_1_1reducer__options.html new file mode 100644 index 000000000..c8c13b903 --- /dev/null +++ b/structxt_1_1reducer__options.html @@ -0,0 +1,381 @@ + + + + + + + +xtensor: xt::reducer_options< R, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::reducer_options< R, T > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  initial_tester
     
    struct  initial_tester< const xinitial< X > >
     
    struct  initial_tester< xinitial< X > >
     
    + + + + + + + + + + +

    +Public Types

    using d_t = std::decay_t< T >
     
    using evaluation_strategy = std::conditional_t< tuple_idx_of< xt::evaluation_strategy::immediate_type, d_t >::value !=-1, xt::evaluation_strategy::immediate_type, xt::evaluation_strategy::lazy_type >
     
    using keep_dims = std::conditional_t< tuple_idx_of< xt::keep_dims_type, d_t >::value !=-1, std::true_type, std::false_type >
     
    template<class NR >
    using rebind_t = reducer_options< NR, T >
     
    + + + + + + +

    +Public Member Functions

     reducer_options (const T &tpl)
     
    template<class NR >
    auto rebind (NR initial, const reducer_options< R, T > &) const
     
    + + + +

    +Public Attributes

    initial_value
     
    + + + + + +

    +Static Public Attributes

    static constexpr std::size_t initial_val_idx = xtl::mpl::find_if<initial_tester, d_t>::value
     
    static constexpr bool has_initial_value = initial_val_idx != std::tuple_size<d_t>::value
     
    +

    Detailed Description

    +
    template<class R, class T>
    +struct xt::reducer_options< R, T >
    +

    Definition at line 108 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ d_t

    + +
    +
    +
    +template<class R , class T >
    + + + + +
    using xt::reducer_options< R, T >::d_t = std::decay_t<T>
    +
    + +

    Definition at line 126 of file xreducer.hpp.

    + +
    +
    + +

    ◆ evaluation_strategy

    + +
    +
    +
    +template<class R , class T >
    + + + + +
    using xt::reducer_options< R, T >::evaluation_strategy = std::conditional_t< tuple_idx_of<xt::evaluation_strategy::immediate_type, d_t>::value != -1, xt::evaluation_strategy::immediate_type, xt::evaluation_strategy::lazy_type>
    +
    + +

    Definition at line 148 of file xreducer.hpp.

    + +
    +
    + +

    ◆ keep_dims

    + +
    +
    +
    +template<class R , class T >
    + + + + +
    using xt::reducer_options< R, T >::keep_dims = std:: conditional_t<tuple_idx_of<xt::keep_dims_type, d_t>::value != -1, std::true_type, std::false_type>
    +
    + +

    Definition at line 153 of file xreducer.hpp.

    + +
    +
    + +

    ◆ rebind_t

    + +
    +
    +
    +template<class R , class T >
    +
    +template<class NR >
    + + + + +
    using xt::reducer_options< R, T >::rebind_t = reducer_options<NR, T>
    +
    + +

    Definition at line 161 of file xreducer.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ reducer_options()

    + +
    +
    +
    +template<class R , class T >
    + + + + + +
    + + + + + + + + +
    xt::reducer_options< R, T >::reducer_options (const T & tpl)
    +
    +inline
    +
    + +

    Definition at line 131 of file xreducer.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ rebind()

    + +
    +
    +
    +template<class R , class T >
    +
    +template<class NR >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto xt::reducer_options< R, T >::rebind (NR initial,
    const reducer_options< R, T > &  
    ) const
    +
    +inline
    +
    + +

    Definition at line 164 of file xreducer.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ has_initial_value

    + +
    +
    +
    +template<class R , class T >
    + + + + + +
    + + + + +
    constexpr bool xt::reducer_options< R, T >::has_initial_value = initial_val_idx != std::tuple_size<d_t>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 156 of file xreducer.hpp.

    + +
    +
    + +

    ◆ initial_val_idx

    + +
    +
    +
    +template<class R , class T >
    + + + + + +
    + + + + +
    constexpr std::size_t xt::reducer_options< R, T >::initial_val_idx = xtl::mpl::find_if<initial_tester, d_t>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 128 of file xreducer.hpp.

    + +
    +
    + +

    ◆ initial_value

    + +
    +
    +
    +template<class R , class T >
    + + + + +
    R xt::reducer_options< R, T >::initial_value
    +
    + +

    Definition at line 158 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1reducer__options.js b/structxt_1_1reducer__options.js new file mode 100644 index 000000000..5dc29a95a --- /dev/null +++ b/structxt_1_1reducer__options.js @@ -0,0 +1,6 @@ +var structxt_1_1reducer__options = +[ + [ "initial_tester", "structxt_1_1reducer__options_1_1initial__tester.html", null ], + [ "initial_tester< const xinitial< X > >", "structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html", null ], + [ "initial_tester< xinitial< X > >", "structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html", null ] +]; \ No newline at end of file diff --git a/structxt_1_1reducer__options_1_1initial__tester.html b/structxt_1_1reducer__options_1_1initial__tester.html new file mode 100644 index 000000000..58aead5b0 --- /dev/null +++ b/structxt_1_1reducer__options_1_1initial__tester.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: xt::reducer_options< R, T >::initial_tester< X > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::reducer_options< R, T >::initial_tester< X > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::reducer_options< R, T >::initial_tester< X >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class R, class T>
    +template<class X>
    +struct xt::reducer_options< R, T >::initial_tester< X >
    +

    Definition at line 111 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1reducer__options_1_1initial__tester.png b/structxt_1_1reducer__options_1_1initial__tester.png new file mode 100644 index 0000000000000000000000000000000000000000..67bfb2012c3e3aafc6668fe0c38ecffc1760b242 GIT binary patch literal 913 zcmeAS@N?(olHy`uVBq!ia0y~yU=#$h12~w0B&X%ZgFs3;z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TNoE(!7rW&rZRz?^CJ6$S=o8BZ6-kP61Pb8pYOt-#aL zK6`HEfAw{*g{2PUP0Eug*REfDB!Taddq?z?Ag`#301uyyo-IpW z8Y#UtDc!bdzg)$Kg=>FFOf-1=-~CCsiO=^xe>R;po4)Lc}<93}_`6;%$ z!9#I%(n7r*E4%;hxz5^H%qti@e}3n#8^TJ>|3LDuuJm;J98Xvs&mU-G7OQhJeNs(( z?Bq!H!1v45_EmJRll9zp*=~Znn+xBk6K+r1pH6)1l2h(`LgsX>(Z1|&hrfM(CpD?& zW|)#n<;1%aPRwz*p3$*irLys^wOiPIpwsKlpt?U(DacDR^DARR^bK)_C8~l961T61 zD=`X8aba-rbr9lgSf#?mkav=~L9>&=04Tjoh3NoLZpI`IhF~Ga1TQ59A5RtvBwyOO zcxkHY+GtFgvd!MpWs+v6hmoqF=Q0(glUD>Rk9@Y-zVbNp+-Gm@O0gnN(;Cdj4uYyLQh@Wm*0?bxkM!SosNlB?%LI=?8s zYMpynbK=pv&7r1>zd0tFPCK8xy>o_u@81)<>$jeLc3p1n?)kjGzRBbUUYR@V-qphr znSbgVPJCE0_sPW15|&n`i$zNfFXg36E7wljqMD~(vEjAtL?zeK>`JqK8{Z`!f!lUJ ze6?XtO~G}O?Opdxzn*_T>xAVU?YpHHT-=?X{NM@=486NB_k)>Z+wNnhCM`O&NtN}g zjgsg6r1iW%-sX8+(*7pv^6bgehZ>&#H}6+otWfaOznz=pGAS=HUqQ+9{|0D)PjOM1 mIjKYCvdfYwL6=^A=6>H8Fx{&mW)Cp)FnGH9xvXVF literal 0 HcmV?d00001 diff --git a/structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html b/structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html new file mode 100644 index 000000000..f51ec6046 --- /dev/null +++ b/structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: xt::reducer_options< R, T >::initial_tester< const xinitial< X > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::reducer_options< R, T >::initial_tester< const xinitial< X > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::reducer_options< R, T >::initial_tester< const xinitial< X > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class R, class T>
    +template<class X>
    +struct xt::reducer_options< R, T >::initial_tester< const xinitial< X > >
    +

    Definition at line 122 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.png b/structxt_1_1reducer__options_1_1initial__tester_3_01const_01xinitial_3_01_x_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2693996d5622d76dec17389287622135d874ac85 GIT binary patch literal 1041 zcmeAS@N?(olHy`uVBq!ia0y~yV9W=y12~w0(_I9NHyDR<+G?|7E4aE#_30*X=$A^BRLEv`FI#LeDR%BxFmm4k8k1`znpj7d|&l+&mxXvYt^^!+y8&de3$=5o_q&aJWpM& zQS#|_y^w3B{5OWb9l!4W&^uM}+WNJ*=e{FB{$d-yp4`b>7v8gt>Fl-ZyW8&ET=2C; zB|hz|@1(__UhaFITzK}$r|By0PvlR%FI5J*Z8FgD7f~EPqh|I@)wDE0h6C!KSQ$7O zS|;pcROng1UWAV!a7jJ`NAjh)hZq$)zVI?kT$0Psp{mxs`n=td{SN}zSBK3YQpSLEuB!AkU(EF204%b}2$)>vUyyu1e52G(# z)Jv`X{yywZjs9;vqtnmIcYaxZ|Lf6nInAqAC++@x!DN$N)t$XPXN^6zZWZ4zX8D~` z_o?Wwa@zg;OB?UFN#0j`Sn($BuKbT_C%2|PO}_JW&)=%OU+*QY%34$N>eBa(h2pNp zm9d9?w4x=KNB>aS_h=gXYb!?IH)nOLZCA$KluLgvU%&TT?Aslm*Zfv_HRt=&Kc`ZQ zeN6OLS*(8YBJX0Y{`S|u9@H*R|8wiR(&HnMp9Amyj@y6zb^eA^W%F~5WOH>J?tK@# zK5u9BoU?~~&rEFzzJGgH=&CEGtCRPvRbSh2`OmsHHXrV;brk>l+iL&$SDyLq{hx08 zUyNLSH)QvJ_n&v?)#}Yy+f-__?Q3q(%~>7sYwzp-Hd~paSMK+!e1FoL=Sx%eeSKB_ zJ9p0Y_qm^n{(V{#fB$Krh5Yln+9&zTD{H50f4c6=-ITc8U3UAopM357s^jK&)t%3_ zJ$&ssw`u!pu|o6L9$L2o_p83t{gZQOd%L3NE17{v;9iU(=RYz$5tN_L-4MX<`TE8MBW~y=XCQ3o!FCc)I$ztaD0e F0suRn9uWWl literal 0 HcmV?d00001 diff --git a/structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html b/structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html new file mode 100644 index 000000000..1b8e77cce --- /dev/null +++ b/structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: xt::reducer_options< R, T >::initial_tester< xinitial< X > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::reducer_options< R, T >::initial_tester< xinitial< X > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::reducer_options< R, T >::initial_tester< xinitial< X > >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class R, class T>
    +template<class X>
    +struct xt::reducer_options< R, T >::initial_tester< xinitial< X > >
    +

    Definition at line 116 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.png b/structxt_1_1reducer__options_1_1initial__tester_3_01xinitial_3_01_x_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ccfa26fefa4aa28731e5a89e72de574a5b9793e5 GIT binary patch literal 996 zcmeAS@N?(olHy`uVBq!ia0y~yVDtg912~w0r0eB9mOx56z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#eo9{fa1ZEF0TN}ah3%61v3EoU|`NP`w9aCbH1mGV@L(#+qt)!9$E0P zdg~XT`(OXjNRcJpsljoxY?UsEP&dU{Ur@$_1h z;uR#M8a!!|MeiBY9^F}oH~7tB0P~yA>}V0V-tT*P>;6CccSWGae+wK|^m zhd5K(O7e4`U%S2Q@RYhkoR_}J7?ro=O8#_tb}!lU7w5U6GxJaV`J3fAGLChy$ocRpyMUq!l~(d^a5(;~~4Em;=Z|1<3D?w~DGf4q~puh+Kf*`z54 zwSp)49V$N=^Xkm3=C{jL<~FQ9d&cw)(9!>0y_Tt{1{$eqcEY^yNXZ!NGl>TM2jUKl zA1qac724zXpHg$+0l;j`NB+yEnY`*POX+uFJ_SZ&kdO<*El7{@8UguWH{59XhQ*V6}p0@p0c>K&C3NN;&-rBd_S$O~N^V4>p z+>^KJWM{;_71{qk?X1h@-hMFDW%KmZ7e<@>_U^BhjSky%cgyuuJ;9vruie}0|H~EM zzhAgD?{&pR`w1@#uCF_I=lJfp^<{smU++E}bU4ELb-=S<*J|@_IL|(pCj2>W&RhAq z#EW_5!3meOZyU<*>(}krEC2U%;Ij>L=kAO(>c4p_exduKWveTT43AiPTEuPXU-SOW zOPgtxcV99qUM{TAE4HmUzC8WJWxJ^|`?i0LdzE_c(XDew#GXHRmbl~fqQlc|?g&>~ zJx{iK|0ywzFS_3G*}JO+1?h6>&lV@|+rHS)xLjZ-Mj9FfBxOSZ`StLW>c$I^?ug9a!O`W z>8i(v_r34#Z(X?ZS?v9?%VnwW^l!0zT{7qXd!O5W56_GF@E_jxKh-Ejue_#SA?LTQ zU3XH)fo=6oms6JI)?3#*F3bIIj~R2_XF58RlpZDjV|0_Bb?*3rl}~~Bk-^i|&t;uc GLK6Uys_DJ} literal 0 HcmV?d00001 diff --git a/structxt_1_1remove__class.html b/structxt_1_1remove__class.html new file mode 100644 index 000000000..6582c4d86 --- /dev/null +++ b/structxt_1_1remove__class.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::remove_class< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::remove_class< T > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class T>
    +struct xt::remove_class< T >
    +

    Definition at line 127 of file xutils.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4-members.html b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4-members.html new file mode 100644 index 000000000..295d8cc6a --- /dev/null +++ b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::remove_class< R(C::*)(Args...) const > Member List
    +
    +
    + +

    This is the complete list of members for xt::remove_class< R(C::*)(Args...) const >, including all inherited members.

    + + +
    type typedef (defined in xt::remove_class< R(C::*)(Args...) const >)xt::remove_class< R(C::*)(Args...) const >
    +
    + + + + diff --git a/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html new file mode 100644 index 000000000..635e0a127 --- /dev/null +++ b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_01const_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::remove_class< R(C::*)(Args...) const > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::remove_class< R(C::*)(Args...) const > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    typedef R type(Args...)
     
    +

    Detailed Description

    +
    template<class C, class R, class... Args>
    +struct xt::remove_class< R(C::*)(Args...) const >
    +

    Definition at line 138 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class C , class R , class... Args>
    + + + + +
    typedef R xt::remove_class< R(C::*)(Args...) const >::type(Args...)
    +
    + +

    Definition at line 140 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4-members.html b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4-members.html new file mode 100644 index 000000000..9c9c77df6 --- /dev/null +++ b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::remove_class< R(C::*)(Args...)> Member List
    +
    +
    + +

    This is the complete list of members for xt::remove_class< R(C::*)(Args...)>, including all inherited members.

    + + +
    type typedef (defined in xt::remove_class< R(C::*)(Args...)>)xt::remove_class< R(C::*)(Args...)>
    +
    + + + + diff --git a/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html new file mode 100644 index 000000000..d2d5e46c7 --- /dev/null +++ b/structxt_1_1remove__class_3_01_r_07_c_1_1_5_08_07_args_8_8_8_08_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::remove_class< R(C::*)(Args...)> Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::remove_class< R(C::*)(Args...)> Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    typedef R type(Args...)
     
    +

    Detailed Description

    +
    template<class C, class R, class... Args>
    +struct xt::remove_class< R(C::*)(Args...)>
    +

    Definition at line 132 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class C , class R , class... Args>
    + + + + +
    typedef R xt::remove_class< R(C::*)(Args...)>::type(Args...)
    +
    + +

    Definition at line 134 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1select__dim__mapping__type-members.html b/structxt_1_1select__dim__mapping__type-members.html new file mode 100644 index 000000000..02ab66ce9 --- /dev/null +++ b/structxt_1_1select__dim__mapping__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::select_dim_mapping_type< T > Member List
    +
    +
    + +

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

    + + +
    type typedef (defined in xt::select_dim_mapping_type< T >)xt::select_dim_mapping_type< T >
    +
    + + + + diff --git a/structxt_1_1select__dim__mapping__type.html b/structxt_1_1select__dim__mapping__type.html new file mode 100644 index 000000000..50120e4b8 --- /dev/null +++ b/structxt_1_1select__dim__mapping__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::select_dim_mapping_type< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::select_dim_mapping_type< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::select_dim_mapping_type< T >
    +

    Definition at line 784 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::select_dim_mapping_type< T >::type = T
    +
    + +

    Definition at line 786 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html b/structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..febcf80c7 --- /dev/null +++ b/structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::select_dim_mapping_type< fixed_shape< I... > > Member List
    +
    +
    + +

    This is the complete list of members for xt::select_dim_mapping_type< fixed_shape< I... > >, including all inherited members.

    + + +
    type typedef (defined in xt::select_dim_mapping_type< fixed_shape< I... > >)xt::select_dim_mapping_type< fixed_shape< I... > >
    +
    + + + + diff --git a/structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html b/structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..14cd7e78e --- /dev/null +++ b/structxt_1_1select__dim__mapping__type_3_01fixed__shape_3_01_i_8_8_8_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::select_dim_mapping_type< fixed_shape< I... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::select_dim_mapping_type< fixed_shape< I... > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::array< std::size_t, sizeof...(I)>
     
    +

    Detailed Description

    +
    template<std::size_t... I>
    +struct xt::select_dim_mapping_type< fixed_shape< I... > >
    +

    Definition at line 790 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I>
    + + + + +
    using xt::select_dim_mapping_type< fixed_shape< I... > >::type = std::array<std::size_t, sizeof...(I)>
    +
    + +

    Definition at line 792 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1select__iterable__base-members.html b/structxt_1_1select__iterable__base-members.html new file mode 100644 index 000000000..10da6a9b6 --- /dev/null +++ b/structxt_1_1select__iterable__base-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::select_iterable_base< L1, L2, T > Member List
    +
    +
    + +

    This is the complete list of members for xt::select_iterable_base< L1, L2, T >, including all inherited members.

    + + +
    type typedef (defined in xt::select_iterable_base< L1, L2, T >)xt::select_iterable_base< L1, L2, T >
    +
    + + + + diff --git a/structxt_1_1select__iterable__base.html b/structxt_1_1select__iterable__base.html new file mode 100644 index 000000000..8916d2d61 --- /dev/null +++ b/structxt_1_1select__iterable__base.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::select_iterable_base< L1, L2, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::select_iterable_base< L1, L2, T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::conditional_t< L1==L2 &&L1 !=layout_type::dynamic, xcontiguous_iterable< T >, xiterable< T > >
     
    +

    Detailed Description

    +
    template<layout_type L1, layout_type L2, class T>
    +struct xt::select_iterable_base< L1, L2, T >
    +

    Definition at line 57 of file xstrided_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<layout_type L1, layout_type L2, class T >
    + + + + +
    using xt::select_iterable_base< L1, L2, T >::type = std::conditional_t<L1 == L2 && L1 != layout_type::dynamic, xcontiguous_iterable<T>, xiterable<T> >
    +
    + +

    Definition at line 59 of file xstrided_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1select__layout-members.html b/structxt_1_1select__layout-members.html new file mode 100644 index 000000000..75eb6422d --- /dev/null +++ b/structxt_1_1select__layout-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::select_layout< L, S > Member List
    +
    +
    + +

    This is the complete list of members for xt::select_layout< L, S >, including all inherited members.

    + + + + +
    is_any (defined in xt::select_layout< L, S >)xt::select_layout< L, S >static
    static_dimension (defined in xt::select_layout< L, S >)xt::select_layout< L, S >static
    value (defined in xt::select_layout< L, S >)xt::select_layout< L, S >static
    +
    + + + + diff --git a/structxt_1_1select__layout.html b/structxt_1_1select__layout.html new file mode 100644 index 000000000..97197b1ea --- /dev/null +++ b/structxt_1_1select__layout.html @@ -0,0 +1,214 @@ + + + + + + + +xtensor: xt::select_layout< L, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::select_layout< L, S > Struct Template Reference
    +
    +
    + +

    Compute a layout based on a layout and a shape type. + More...

    + +

    #include <xshape.hpp>

    + + + + + + + + +

    +Static Public Attributes

    static constexpr std::ptrdiff_t static_dimension = xt::static_dimension<S>::value
     
    static constexpr bool is_any
     
    static constexpr layout_type value = is_any ? layout_type::any : L
     
    +

    Detailed Description

    +
    template<layout_type L, class S>
    +struct xt::select_layout< L, S >

    Compute a layout based on a layout and a shape type.

    +

    The main functionality of this function is that it reduces vectors to xt::layout_type::any so that assigning a row major 1D container to another row_major container becomes free.

    + +

    Definition at line 263 of file xshape.hpp.

    +

    Member Data Documentation

    + +

    ◆ is_any

    + +
    +
    +
    +template<layout_type L, class S >
    + + + + + +
    + + + + +
    constexpr bool xt::select_layout< L, S >::is_any
    +
    +staticconstexpr
    +
    +Initial value:
    = static_dimension != -1 && static_dimension <= 1
    + + +
    +

    Definition at line 266 of file xshape.hpp.

    + +
    +
    + +

    ◆ static_dimension

    + +
    +
    +
    +template<layout_type L, class S >
    + + + + + +
    + + + + +
    constexpr std::ptrdiff_t xt::select_layout< L, S >::static_dimension = xt::static_dimension<S>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 265 of file xshape.hpp.

    + +
    +
    + +

    ◆ value

    + +
    +
    +
    +template<layout_type L, class S >
    + + + + + +
    + + + + +
    constexpr layout_type xt::select_layout< L, S >::value = is_any ? layout_type::any : L
    +
    +staticconstexpr
    +
    + +

    Definition at line 268 of file xshape.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1squared__norm__type-members.html b/structxt_1_1squared__norm__type-members.html new file mode 100644 index 000000000..70271ee5a --- /dev/null +++ b/structxt_1_1squared__norm__type-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::squared_norm_type< T > Member List
    +
    +
    + +

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

    + + + +
    base_type typedef (defined in xt::squared_norm_type< T >)xt::squared_norm_type< T >
    type typedef (defined in xt::squared_norm_type< T >)xt::squared_norm_type< T >
    +
    + + + + diff --git a/structxt_1_1squared__norm__type.html b/structxt_1_1squared__norm__type.html new file mode 100644 index 000000000..f83a8b960 --- /dev/null +++ b/structxt_1_1squared__norm__type.html @@ -0,0 +1,215 @@ + + + + + + + +xtensor: xt::squared_norm_type< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::squared_norm_type< T > Struct Template Reference
    +
    +
    + +

    Traits class for the result type of the norm_sq() function. + More...

    + +

    #include <xnorm.hpp>

    +
    +Inheritance diagram for xt::squared_norm_type< T >:
    +
    +
    + + +xt::traits_detail::norm_type_base< T > + +
    + + + + + + + + + + + + + +

    +Public Types

    using base_type = traits_detail::norm_type_base< T >
     
    using type = typename std::conditional< base_type::norm_of_vector::value, typename base_type::norm_of_vector::squared_norm_type, typename base_type::norm_of_scalar::squared_norm_type >::type
     
    - Public Types inherited from xt::traits_detail::norm_type_base< T >
    using T = std::decay_t< T >
     
    using norm_of_scalar = norm_of_scalar_impl< T >
     
    using norm_of_vector = norm_of_vector_impl< T >
     
    + + + + +

    +Additional Inherited Members

    - Static Public Attributes inherited from xt::traits_detail::norm_type_base< T >
    static const bool value
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::squared_norm_type< T >

    Traits class for the result type of the norm_sq() function.

    +

    Member 'type' defines the result of norm_sq(t), where t is of type

    Template Parameters
    + + + + + + + +
    T.It implements the following rules designed to minimize the potential for overflow:
      +
    • +
    +
    Tis an arithmetic type: 'type' is the result type of t*t.
      +
    • +
    +
    Tis a container of 'long double' elements: 'type' is long double.
      +
    • +
    +
    Tis a container of another floating-point type: 'type' is double.
      +
    • +
    +
    Tis a container of integer elements: 'type' is uint64_t.
      +
    • +
    +
    Tis a container of some other type: 'type' is the element's squared norm type,
    +
    +
    +

    Containers are recognized by having an embedded typedef 'value_type'. To change the behavior for a case not covered here, specialize the traits_detail::norm_type_base template.

    + +

    Definition at line 186 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ base_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::squared_norm_type< T >::base_type = traits_detail::norm_type_base<T>
    +
    + +

    Definition at line 188 of file xnorm.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::squared_norm_type< T >::type = typename std::conditional< base_type::norm_of_vector::value, typename base_type::norm_of_vector::squared_norm_type, typename base_type::norm_of_scalar::squared_norm_type>::type
    +
    + +

    Definition at line 190 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1squared__norm__type.png b/structxt_1_1squared__norm__type.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ac90f003d19fadc6d90a1289490b3d9c0f9e9c GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#7gBeJ!GHK8QQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#NuLdAc};R4~4s`?~M70#8eO z=ayOD>mN;SEl|&WvCNirx2dZ#a-I%eVG#Gf|;3ilV<>1oJj%&?z%wD#8DF!r5g ze405&?QDcj)p(W~)jnFh`G3X&*Zw^*t?}=IQx+{cJ$H3&OKRq(SzEc=mY2NSqIOlM zTu!Fwy4|iTv%a=_Jo@(h_`f6b=A1bkG5?HGR^qBUbN@HqCGYga7;g(2^}pWAz5SnH z?D4(Tt?z2TpS%2X+B5Sy6I1)*YsUQ9Ii0E2mXFL|Jd&-rW_+0KSGAhwKXcZyNqYkS zmVEOwpX5GC*6Z+;@L${Ff41E^ddy`~`73KbHP3y{-F+&@uYd#UGBDiEYBBs+P{)uE z$kGSMCt z-&L;aodW)Lmfce2^_-MmdKI;Vst0HxZEApigX literal 0 HcmV?d00001 diff --git a/structxt_1_1static__dimension-members.html b/structxt_1_1static__dimension-members.html new file mode 100644 index 000000000..daef807c6 --- /dev/null +++ b/structxt_1_1static__dimension-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::static_dimension< S > Member List
    +
    +
    + +

    This is the complete list of members for xt::static_dimension< S >, including all inherited members.

    + + +
    value (defined in xt::static_dimension< S >)xt::static_dimension< S >static
    +
    + + + + diff --git a/structxt_1_1static__dimension.html b/structxt_1_1static__dimension.html new file mode 100644 index 000000000..0ec79d1fa --- /dev/null +++ b/structxt_1_1static__dimension.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::static_dimension< S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::static_dimension< S > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::ptrdiff_t value = detail::static_dimension_impl<S>::value
     
    +

    Detailed Description

    +
    template<class S>
    +struct xt::static_dimension< S >
    +

    Definition at line 248 of file xshape.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class S >
    + + + + + +
    + + + + +
    constexpr std::ptrdiff_t xt::static_dimension< S >::value = detail::static_dimension_impl<S>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 250 of file xshape.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1static__string-members.html b/structxt_1_1static__string-members.html new file mode 100644 index 000000000..21be35feb --- /dev/null +++ b/structxt_1_1static__string-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::static_string Member List
    +
    +
    + +

    This is the complete list of members for xt::static_string, including all inherited members.

    + + + + + +
    data (defined in xt::static_string)xt::static_string
    size (defined in xt::static_string)xt::static_string
    static_string(const char(&a)[N]) (defined in xt::static_string)xt::static_stringinlineexplicit
    static_string(const char *a, const std::size_t sz) (defined in xt::static_string)xt::static_stringinline
    +
    + + + + diff --git a/structxt_1_1static__string.html b/structxt_1_1static__string.html new file mode 100644 index 000000000..9bc5c8e78 --- /dev/null +++ b/structxt_1_1static__string.html @@ -0,0 +1,233 @@ + + + + + + + +xtensor: xt::static_string Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::static_string Struct Reference
    +
    +
    + + + + + + + +

    +Public Member Functions

    template<std::size_t N>
     static_string (const char(&a)[N])
     
     static_string (const char *a, const std::size_t sz)
     
    + + + + + +

    +Public Attributes

    const char *const data
     
    const std::size_t size
     
    +

    Detailed Description

    +
    +

    Definition at line 50 of file xinfo.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ static_string() [1/2]

    + +
    +
    +
    +template<std::size_t N>
    + + + + + +
    + + + + + + + + +
    xt::static_string::static_string (const char(&) a[N])
    +
    +inlineexplicit
    +
    + +

    Definition at line 53 of file xinfo.hpp.

    + +
    +
    + +

    ◆ static_string() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xt::static_string::static_string (const char * a,
    const std::size_t sz 
    )
    +
    +inline
    +
    + +

    Definition at line 58 of file xinfo.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ data

    + +
    +
    + + + + +
    const char* const xt::static_string::data
    +
    + +

    Definition at line 63 of file xinfo.hpp.

    + +
    +
    + +

    ◆ size

    + +
    +
    + + + + +
    const std::size_t xt::static_string::size
    +
    + +

    Definition at line 64 of file xinfo.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xinfo.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1stepper__tools-members.html b/structxt_1_1stepper__tools-members.html new file mode 100644 index 000000000..68efd8987 --- /dev/null +++ b/structxt_1_1stepper__tools-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::stepper_tools< L > Member List
    +
    +
    + +

    This is the complete list of members for xt::stepper_tools< L >, including all inherited members.

    + + + + + + + + + + + + + +
    decrement_stepper(S &stepper, IT &index, const ST &shape) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >static
    decrement_stepper(S &stepper, IT &index, const ST &shape, typename S::size_type n) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >static
    decrement_stepper(S &stepper, IT &index, const ST &shape) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    decrement_stepper(S &stepper, IT &index, const ST &shape, typename S::size_type n) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    decrement_stepper(S &stepper, IT &index, const ST &shape) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    decrement_stepper(S &stepper, IT &index, const ST &shape, typename S::size_type n) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    increment_stepper(S &stepper, IT &index, const ST &shape) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >static
    increment_stepper(S &stepper, IT &index, const ST &shape, typename S::size_type n) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >static
    increment_stepper(S &stepper, IT &index, const ST &shape) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    increment_stepper(S &stepper, IT &index, const ST &shape, typename S::size_type n) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    increment_stepper(S &stepper, IT &index, const ST &shape) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    increment_stepper(S &stepper, IT &index, const ST &shape, typename S::size_type n) (defined in xt::stepper_tools< L >)xt::stepper_tools< L >
    +
    + + + + diff --git a/structxt_1_1stepper__tools.html b/structxt_1_1stepper__tools.html new file mode 100644 index 000000000..5b54f8c95 --- /dev/null +++ b/structxt_1_1stepper__tools.html @@ -0,0 +1,468 @@ + + + + + + + +xtensor: xt::stepper_tools< L > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::stepper_tools< L > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    void increment_stepper (S &stepper, IT &index, const ST &shape)
     
    void increment_stepper (S &stepper, IT &index, const ST &shape, typename S::size_type n)
     
    void decrement_stepper (S &stepper, IT &index, const ST &shape)
     
    void decrement_stepper (S &stepper, IT &index, const ST &shape, typename S::size_type n)
     
    void increment_stepper (S &stepper, IT &index, const ST &shape)
     
    void increment_stepper (S &stepper, IT &index, const ST &shape, typename S::size_type n)
     
    void decrement_stepper (S &stepper, IT &index, const ST &shape)
     
    void decrement_stepper (S &stepper, IT &index, const ST &shape, typename S::size_type n)
     
    + + + + + + + + + + + + + +

    +Static Public Member Functions

    +template<class S , class IT , class ST >
    static void increment_stepper (S &stepper, IT &index, const ST &shape)
     
    +template<class S , class IT , class ST >
    static void decrement_stepper (S &stepper, IT &index, const ST &shape)
     
    +template<class S , class IT , class ST >
    static void increment_stepper (S &stepper, IT &index, const ST &shape, typename S::size_type n)
     
    +template<class S , class IT , class ST >
    static void decrement_stepper (S &stepper, IT &index, const ST &shape, typename S::size_type n)
     
    +

    Detailed Description

    +
    template<layout_type L>
    +struct xt::stepper_tools< L >
    +

    Definition at line 153 of file xiterator.hpp.

    +

    Member Function Documentation

    + +

    ◆ decrement_stepper() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::row_major >::decrement_stepper (S & stepper,
    IT & index,
    const ST & shape 
    )
    +
    + +

    Definition at line 709 of file xiterator.hpp.

    + +
    +
    + +

    ◆ decrement_stepper() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::column_major >::decrement_stepper (S & stepper,
    IT & index,
    const ST & shape 
    )
    +
    + +

    Definition at line 892 of file xiterator.hpp.

    + +
    +
    + +

    ◆ decrement_stepper() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::row_major >::decrement_stepper (S & stepper,
    IT & index,
    const ST & shape,
    typename S::size_type n 
    )
    +
    + +

    Definition at line 739 of file xiterator.hpp.

    + +
    +
    + +

    ◆ decrement_stepper() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::column_major >::decrement_stepper (S & stepper,
    IT & index,
    const ST & shape,
    typename S::size_type n 
    )
    +
    + +

    Definition at line 923 of file xiterator.hpp.

    + +
    +
    + +

    ◆ increment_stepper() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::row_major >::increment_stepper (S & stepper,
    IT & index,
    const ST & shape 
    )
    +
    + +

    Definition at line 604 of file xiterator.hpp.

    + +
    +
    + +

    ◆ increment_stepper() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::column_major >::increment_stepper (S & stepper,
    IT & index,
    const ST & shape 
    )
    +
    + +

    Definition at line 786 of file xiterator.hpp.

    + +
    +
    + +

    ◆ increment_stepper() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::row_major >::increment_stepper (S & stepper,
    IT & index,
    const ST & shape,
    typename S::size_type n 
    )
    +
    + +

    Definition at line 648 of file xiterator.hpp.

    + +
    +
    + +

    ◆ increment_stepper() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void xt::stepper_tools< layout_type::column_major >::increment_stepper (S & stepper,
    IT & index,
    const ST & shape,
    typename S::size_type n 
    )
    +
    + +

    Definition at line 830 of file xiterator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1check__strides__functor-members.html b/structxt_1_1strided__assign__detail_1_1check__strides__functor-members.html new file mode 100644 index 000000000..be14cff18 --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1check__strides__functor-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::strided_assign_detail::check_strides_functor< L, S > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1check__strides__functor.html b/structxt_1_1strided__assign__detail_1_1check__strides__functor.html new file mode 100644 index 000000000..f81564327 --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1check__strides__functor.html @@ -0,0 +1,318 @@ + + + + + + + +xtensor: xt::strided_assign_detail::check_strides_functor< L, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::strided_assign_detail::check_strides_functor< L, S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using strides_type = S
     
    + + + + + + + + + + + + + + + +

    +Public Member Functions

     check_strides_functor (const S &strides)
     
    template<class T , layout_type LE = L>
    std::enable_if_t< LE==layout_type::row_major, std::size_t > operator() (const T &el)
     
    template<class T , layout_type LE = L>
    std::enable_if_t< LE==layout_type::column_major, std::size_t > operator() (const T &el)
     
    template<class T >
    std::size_t operator() (const xt::xscalar< T > &)
     
    template<class F , class... CT>
    std::size_t operator() (const xt::xfunction< F, CT... > &xf)
     
    +

    Detailed Description

    +
    template<layout_type L, class S>
    +struct xt::strided_assign_detail::check_strides_functor< L, S >
    +

    Definition at line 958 of file xassign.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ strides_type

    + +
    +
    +
    +template<layout_type L, class S >
    + + + + +
    using xt::strided_assign_detail::check_strides_functor< L, S >::strides_type = S
    +
    + +

    Definition at line 960 of file xassign.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ check_strides_functor()

    + +
    +
    +
    +template<layout_type L, class S >
    + + + + + +
    + + + + + + + + +
    xt::strided_assign_detail::check_strides_functor< L, S >::check_strides_functor (const S & strides)
    +
    +inline
    +
    + +

    Definition at line 962 of file xassign.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator()() [1/4]

    + +
    +
    +
    +template<layout_type L, class S >
    +
    +template<class T , layout_type LE = L>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< LE==layout_type::row_major, std::size_t > xt::strided_assign_detail::check_strides_functor< L, S >::operator() (const T & el)
    +
    +inline
    +
    + +

    Definition at line 969 of file xassign.hpp.

    + +
    +
    + +

    ◆ operator()() [2/4]

    + +
    +
    +
    +template<layout_type L, class S >
    +
    +template<class T , layout_type LE = L>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< LE==layout_type::column_major, std::size_t > xt::strided_assign_detail::check_strides_functor< L, S >::operator() (const T & el)
    +
    +inline
    +
    + +

    Definition at line 981 of file xassign.hpp.

    + +
    +
    + +

    ◆ operator()() [3/4]

    + +
    +
    +
    +template<layout_type L, class S >
    +
    +template<class F , class... CT>
    + + + + + +
    + + + + + + + + +
    std::size_t xt::strided_assign_detail::check_strides_functor< L, S >::operator() (const xt::xfunction< F, CT... > & xf)
    +
    +inline
    +
    + +

    Definition at line 999 of file xassign.hpp.

    + +
    +
    + +

    ◆ operator()() [4/4]

    + +
    +
    +
    +template<layout_type L, class S >
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    std::size_t xt::strided_assign_detail::check_strides_functor< L, S >::operator() (const xt::xscalar< T > & )
    +
    +inline
    +
    + +

    Definition at line 993 of file xassign.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1idx__tools.html b/structxt_1_1strided__assign__detail_1_1idx__tools.html new file mode 100644 index 000000000..08ef3cd4b --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1idx__tools.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::strided_assign_detail::idx_tools< layout > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::strided_assign_detail::idx_tools< layout > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<layout_type layout>
    +struct xt::strided_assign_detail::idx_tools< layout >
    +

    Definition at line 864 of file xassign.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4-members.html b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4-members.html new file mode 100644 index 000000000..334b46fb6 --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::strided_assign_detail::idx_tools< layout_type::column_major > Member List
    +
    +
    + +

    This is the complete list of members for xt::strided_assign_detail::idx_tools< layout_type::column_major >, including all inherited members.

    + + + +
    next_idx(T &outer_index, T &outer_shape) (defined in xt::strided_assign_detail::idx_tools< layout_type::column_major >)xt::strided_assign_detail::idx_tools< layout_type::column_major >inlinestatic
    nth_idx(size_t n, T &outer_index, const T &outer_shape) (defined in xt::strided_assign_detail::idx_tools< layout_type::column_major >)xt::strided_assign_detail::idx_tools< layout_type::column_major >inlinestatic
    +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html new file mode 100644 index 000000000..a5f9378cd --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1column__major_01_4.html @@ -0,0 +1,211 @@ + + + + + + + +xtensor: xt::strided_assign_detail::idx_tools< layout_type::column_major > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::strided_assign_detail::idx_tools< layout_type::column_major > Struct Reference
    +
    +
    + + + + + + + + +

    +Static Public Member Functions

    template<class T >
    static void next_idx (T &outer_index, T &outer_shape)
     
    template<class T >
    static void nth_idx (size_t n, T &outer_index, const T &outer_shape)
     
    +

    Detailed Description

    +
    +

    Definition at line 910 of file xassign.hpp.

    +

    Member Function Documentation

    + +

    ◆ next_idx()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void xt::strided_assign_detail::idx_tools< layout_type::column_major >::next_idx (T & outer_index,
    T & outer_shape 
    )
    +
    +inlinestatic
    +
    + +

    Definition at line 913 of file xassign.hpp.

    + +
    +
    + +

    ◆ nth_idx()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void xt::strided_assign_detail::idx_tools< layout_type::column_major >::nth_idx (size_t n,
    T & outer_index,
    const T & outer_shape 
    )
    +
    +inlinestatic
    +
    + +

    Definition at line 933 of file xassign.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4-members.html b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4-members.html new file mode 100644 index 000000000..97941c3a8 --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::strided_assign_detail::idx_tools< layout_type::row_major > Member List
    +
    +
    + +

    This is the complete list of members for xt::strided_assign_detail::idx_tools< layout_type::row_major >, including all inherited members.

    + + + +
    next_idx(T &outer_index, T &outer_shape) (defined in xt::strided_assign_detail::idx_tools< layout_type::row_major >)xt::strided_assign_detail::idx_tools< layout_type::row_major >inlinestatic
    nth_idx(size_t n, T &outer_index, const T &outer_shape) (defined in xt::strided_assign_detail::idx_tools< layout_type::row_major >)xt::strided_assign_detail::idx_tools< layout_type::row_major >inlinestatic
    +
    + + + + diff --git a/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html new file mode 100644 index 000000000..0b9c55b9e --- /dev/null +++ b/structxt_1_1strided__assign__detail_1_1idx__tools_3_01layout__type_1_1row__major_01_4.html @@ -0,0 +1,211 @@ + + + + + + + +xtensor: xt::strided_assign_detail::idx_tools< layout_type::row_major > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::strided_assign_detail::idx_tools< layout_type::row_major > Struct Reference
    +
    +
    + + + + + + + + +

    +Static Public Member Functions

    template<class T >
    static void next_idx (T &outer_index, T &outer_shape)
     
    template<class T >
    static void nth_idx (size_t n, T &outer_index, const T &outer_shape)
     
    +

    Detailed Description

    +
    +

    Definition at line 867 of file xassign.hpp.

    +

    Member Function Documentation

    + +

    ◆ next_idx()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static void xt::strided_assign_detail::idx_tools< layout_type::row_major >::next_idx (T & outer_index,
    T & outer_shape 
    )
    +
    +inlinestatic
    +
    + +

    Definition at line 870 of file xassign.hpp.

    + +
    +
    + +

    ◆ nth_idx()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void xt::strided_assign_detail::idx_tools< layout_type::row_major >::nth_idx (size_t n,
    T & outer_index,
    const T & outer_shape 
    )
    +
    +inlinestatic
    +
    + +

    Definition at line 888 of file xassign.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1temporary__container-members.html b/structxt_1_1temporary__container-members.html new file mode 100644 index 000000000..4f0a9cb81 --- /dev/null +++ b/structxt_1_1temporary__container-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_container< C > Member List
    +
    +
    + +

    This is the complete list of members for xt::temporary_container< C >, including all inherited members.

    + + +
    type typedef (defined in xt::temporary_container< C >)xt::temporary_container< C >
    +
    + + + + diff --git a/structxt_1_1temporary__container.html b/structxt_1_1temporary__container.html new file mode 100644 index 000000000..d7f1cc17c --- /dev/null +++ b/structxt_1_1temporary__container.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::temporary_container< C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_container< C > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = C
     
    +

    Detailed Description

    +
    template<class C>
    +struct xt::temporary_container< C >
    +

    Definition at line 585 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class C >
    + + + + +
    using xt::temporary_container< C >::type = C
    +
    + +

    Definition at line 587 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html b/structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html new file mode 100644 index 000000000..11eabbc06 --- /dev/null +++ b/structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_container< xbuffer_adaptor< CP, O, A > > Member List
    +
    +
    + +

    This is the complete list of members for xt::temporary_container< xbuffer_adaptor< CP, O, A > >, including all inherited members.

    + + +
    type typedef (defined in xt::temporary_container< xbuffer_adaptor< CP, O, A > >)xt::temporary_container< xbuffer_adaptor< CP, O, A > >
    +
    + + + + diff --git a/structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html b/structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html new file mode 100644 index 000000000..0ae362e46 --- /dev/null +++ b/structxt_1_1temporary__container_3_01xbuffer__adaptor_3_01_c_p_00_01_o_00_01_a_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::temporary_container< xbuffer_adaptor< CP, O, A > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_container< xbuffer_adaptor< CP, O, A > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename xbuffer_adaptor< CP, O, A >::temporary_type
     
    +

    Detailed Description

    +
    template<class CP, class O, class A>
    +struct xt::temporary_container< xbuffer_adaptor< CP, O, A > >
    +

    Definition at line 591 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class CP , class O , class A >
    + + + + +
    using xt::temporary_container< xbuffer_adaptor< CP, O, A > >::type = typename xbuffer_adaptor<CP, O, A>::temporary_type
    +
    + +

    Definition at line 593 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html b/structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html new file mode 100644 index 000000000..0770b2e5c --- /dev/null +++ b/structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_container< xiterator_adaptor< I, CI > > Member List
    +
    +
    + +

    This is the complete list of members for xt::temporary_container< xiterator_adaptor< I, CI > >, including all inherited members.

    + + +
    type typedef (defined in xt::temporary_container< xiterator_adaptor< I, CI > >)xt::temporary_container< xiterator_adaptor< I, CI > >
    +
    + + + + diff --git a/structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html b/structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html new file mode 100644 index 000000000..2b6782171 --- /dev/null +++ b/structxt_1_1temporary__container_3_01xiterator__adaptor_3_01_i_00_01_c_i_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::temporary_container< xiterator_adaptor< I, CI > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_container< xiterator_adaptor< I, CI > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename xiterator_adaptor< I, CI >::temporary_type
     
    +

    Detailed Description

    +
    template<class I, class CI>
    +struct xt::temporary_container< xiterator_adaptor< I, CI > >
    +

    Definition at line 597 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class I , class CI >
    + + + + +
    using xt::temporary_container< xiterator_adaptor< I, CI > >::type = typename xiterator_adaptor<I, CI>::temporary_type
    +
    + +

    Definition at line 599 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html b/structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html new file mode 100644 index 000000000..3bd4a623f --- /dev/null +++ b/structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_container< xiterator_owner_adaptor< C, IG > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html b/structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html new file mode 100644 index 000000000..dad21e959 --- /dev/null +++ b/structxt_1_1temporary__container_3_01xiterator__owner__adaptor_3_01_c_00_01_i_g_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::temporary_container< xiterator_owner_adaptor< C, IG > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_container< xiterator_owner_adaptor< C, IG > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename xiterator_owner_adaptor< C, IG >::temporary_type
     
    +

    Detailed Description

    +
    template<class C, class IG>
    +struct xt::temporary_container< xiterator_owner_adaptor< C, IG > >
    +

    Definition at line 603 of file xbuffer_adaptor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class C , class IG >
    + + + + +
    using xt::temporary_container< xiterator_owner_adaptor< C, IG > >::type = typename xiterator_owner_adaptor<C, IG>::temporary_type
    +
    + +

    Definition at line 605 of file xbuffer_adaptor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__type-members.html b/structxt_1_1temporary__type-members.html new file mode 100644 index 000000000..9e1101895 --- /dev/null +++ b/structxt_1_1temporary__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_type< T, class > Member List
    +
    +
    + +

    This is the complete list of members for xt::temporary_type< T, class >, including all inherited members.

    + + +
    type typedef (defined in xt::temporary_type< T, class >)xt::temporary_type< T, class >
    +
    + + + + diff --git a/structxt_1_1temporary__type.html b/structxt_1_1temporary__type.html new file mode 100644 index 000000000..9dc224cc6 --- /dev/null +++ b/structxt_1_1temporary__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::temporary_type< T, class > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_type< T, class > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename temporary_type_from_tag< xexpression_tag_t< T >, T >::type
     
    +

    Detailed Description

    +
    template<class T, class = void>
    +struct xt::temporary_type< T, class >
    +

    Definition at line 146 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class = void>
    + + + + +
    using xt::temporary_type< T, class >::type = typename temporary_type_from_tag<xexpression_tag_t<T>, T>::type
    +
    + +

    Definition at line 148 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4-members.html b/structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4-members.html new file mode 100644 index 000000000..a41ec59bc --- /dev/null +++ b/structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html b/structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html new file mode 100644 index 000000000..3c67d15eb --- /dev/null +++ b/structxt_1_1temporary__type_3_01_t_00_01void__t_3_01typename_01std_1_1decay__t_3_01_t_01_4_1_1temporary__type_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename std::decay_t< T >::temporary_type
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >
    +

    Definition at line 152 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::temporary_type< T, void_t< typename std::decay_t< T >::temporary_type > >::type = typename std::decay_t<T>::temporary_type
    +
    + +

    Definition at line 154 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__type__from__tag.html b/structxt_1_1temporary__type__from__tag.html new file mode 100644 index 000000000..4ad5f2cf7 --- /dev/null +++ b/structxt_1_1temporary__type__from__tag.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::temporary_type_from_tag< Tag, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::temporary_type_from_tag< Tag, T > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class Tag, class T>
    +struct xt::temporary_type_from_tag< Tag, T >
    +

    Definition at line 133 of file xexpression_traits.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4-members.html b/structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4-members.html new file mode 100644 index 000000000..8e6c77b76 --- /dev/null +++ b/structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html b/structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html new file mode 100644 index 000000000..07ac6af84 --- /dev/null +++ b/structxt_1_1temporary__type__from__tag_3_01xtensor__expression__tag_00_01_t_01_4.html @@ -0,0 +1,233 @@ + + + + + + + +xtensor: xt::temporary_type_from_tag< xtensor_expression_tag, T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::temporary_type_from_tag< xtensor_expression_tag, T > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using I = std::decay_t< T >
     
    using shape_type = typename I::shape_type
     
    using value_type = typename I::value_type
     
    using type = typename detail::xtype_for_shape< shape_type >::template type< value_type, static_layout >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type static_layout = ::xt::layout_type::row_major
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::temporary_type_from_tag< xtensor_expression_tag, T >
    +

    Definition at line 136 of file xexpression_traits.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ I

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::temporary_type_from_tag< xtensor_expression_tag, T >::I = std::decay_t<T>
    +
    + +

    Definition at line 138 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::temporary_type_from_tag< xtensor_expression_tag, T >::shape_type = typename I::shape_type
    +
    + +

    Definition at line 139 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::temporary_type_from_tag< xtensor_expression_tag, T >::type = typename detail::xtype_for_shape<shape_type>::template type<value_type, static_layout>
    +
    + +

    Definition at line 142 of file xexpression_traits.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::temporary_type_from_tag< xtensor_expression_tag, T >::value_type = typename I::value_type
    +
    + +

    Definition at line 140 of file xexpression_traits.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ static_layout

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    constexpr layout_type xt::temporary_type_from_tag< xtensor_expression_tag, T >::static_layout = ::xt::layout_type::row_major
    +
    +staticconstexpr
    +
    + +

    Definition at line 141 of file xexpression_traits.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1tracking__allocator-members.html b/structxt_1_1tracking__allocator-members.html new file mode 100644 index 000000000..807975af6 --- /dev/null +++ b/structxt_1_1tracking__allocator-members.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tracking_allocator< T, A, P > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1tracking__allocator.html b/structxt_1_1tracking__allocator.html new file mode 100644 index 000000000..53c012d54 --- /dev/null +++ b/structxt_1_1tracking__allocator.html @@ -0,0 +1,329 @@ + + + + + + + +xtensor: xt::tracking_allocator< T, A, P > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::tracking_allocator< T, A, P > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::tracking_allocator< T, A, P >:
    +
    +
    + +
    + + + + +

    +Classes

    struct  rebind
     
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using base_type = A
     
    using value_type = typename A::value_type
     
    using reference = typename A::reference
     
    using const_reference = typename A::const_reference
     
    using pointer = typename A::pointer
     
    using const_pointer = typename A::const_pointer
     
    using size_type = typename A::size_type
     
    using difference_type = typename A::difference_type
     
    + + + +

    +Public Member Functions

    T * allocate (std::size_t n)
     
    +

    Detailed Description

    +
    template<class T, class A, alloc_tracking::policy P>
    +struct xt::tracking_allocator< T, A, P >
    +

    Definition at line 792 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ base_type

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::base_type = A
    +
    + +

    Definition at line 794 of file xutils.hpp.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::const_pointer = typename A::const_pointer
    +
    + +

    Definition at line 799 of file xutils.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::const_reference = typename A::const_reference
    +
    + +

    Definition at line 797 of file xutils.hpp.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::difference_type = typename A::difference_type
    +
    + +

    Definition at line 801 of file xutils.hpp.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::pointer = typename A::pointer
    +
    + +

    Definition at line 798 of file xutils.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::reference = typename A::reference
    +
    + +

    Definition at line 796 of file xutils.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::size_type = typename A::size_type
    +
    + +

    Definition at line 800 of file xutils.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + +
    using xt::tracking_allocator< T, A, P >::value_type = typename A::value_type
    +
    + +

    Definition at line 795 of file xutils.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ allocate()

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    + + + + + +
    + + + + + + + + +
    T * xt::tracking_allocator< T, A, P >::allocate (std::size_t n)
    +
    +inline
    +
    + +

    Definition at line 805 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1tracking__allocator.js b/structxt_1_1tracking__allocator.js new file mode 100644 index 000000000..635ed5963 --- /dev/null +++ b/structxt_1_1tracking__allocator.js @@ -0,0 +1,4 @@ +var structxt_1_1tracking__allocator = +[ + [ "rebind", "structxt_1_1tracking__allocator_1_1rebind.html", null ] +]; \ No newline at end of file diff --git a/structxt_1_1tracking__allocator.png b/structxt_1_1tracking__allocator.png new file mode 100644 index 0000000000000000000000000000000000000000..64a46a4593be05d13b8059a080bd35efe2ee4cd2 GIT binary patch literal 618 zcmeAS@N?(olHy`uVBq!ia0vp^hk!VMgBeKHOpNjdQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#JA8db&7^sPn`SD=BrijO<7X1K)lNVc$f^;+VXQ;vz=a@pLP1|ren9J)CHBS%+9sb ztC9)vixEHb{}#i0?GqvK-cydx*cLk7;?sfJi(Z@lZ@!oNdDY9%Be|_Py2mSbPS|FC zLvKU)v2RSPPt4NNa=#M$d&{D2_qC=}E8gE9>hakw_(XDaYw~r&sr5JZ`ts&>=5VbH z(NMn0y>j`7RTEyV>)&)iuC6z!++~6+G{O!sT;_f${8F@>gm;nlo0_uLq_I22WQ%mvv4FO#o6p B9{~UW literal 0 HcmV?d00001 diff --git a/structxt_1_1tracking__allocator_1_1rebind-members.html b/structxt_1_1tracking__allocator_1_1rebind-members.html new file mode 100644 index 000000000..9b250dbbb --- /dev/null +++ b/structxt_1_1tracking__allocator_1_1rebind-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tracking_allocator< T, A, P >::rebind< U > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1tracking__allocator_1_1rebind.html b/structxt_1_1tracking__allocator_1_1rebind.html new file mode 100644 index 000000000..e2eba4b4e --- /dev/null +++ b/structxt_1_1tracking__allocator_1_1rebind.html @@ -0,0 +1,165 @@ + + + + + + + +xtensor: xt::tracking_allocator< T, A, P >::rebind< U > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::tracking_allocator< T, A, P >::rebind< U > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using traits = std::allocator_traits< A >
     
    using other = tracking_allocator< U, typename traits::template rebind_alloc< U >, P >
     
    +

    Detailed Description

    +
    template<class T, class A, alloc_tracking::policy P>
    +template<class U>
    +struct xt::tracking_allocator< T, A, P >::rebind< U >
    +

    Definition at line 829 of file xutils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ other

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    +
    +template<class U >
    + + + + +
    using xt::tracking_allocator< T, A, P >::rebind< U >::other = tracking_allocator<U, typename traits::template rebind_alloc<U>, P>
    +
    + +

    Definition at line 832 of file xutils.hpp.

    + +
    +
    + +

    ◆ traits

    + +
    +
    +
    +template<class T , class A , alloc_tracking::policy P>
    +
    +template<class U >
    + + + + +
    using xt::tracking_allocator< T, A, P >::rebind< U >::traits = std::allocator_traits<A>
    +
    + +

    Definition at line 831 of file xutils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html new file mode 100644 index 000000000..6b10e424c --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_array_elements_impl< T, integral, floating > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_array_elements_impl< T, integral, floating > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class T, bool integral = xtl::is_integral<T>::value, bool floating = std::is_floating_point<T>::value>
    +struct xt::traits_detail::norm_of_array_elements_impl< T, integral, floating >
    +

    Definition at line 60 of file xnorm.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4-members.html new file mode 100644 index 000000000..5ba2b67d3 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_array_elements_impl< T, false, false > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html new file mode 100644 index 000000000..75cf2490e --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01false_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_array_elements_impl< T, false, false > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_array_elements_impl< T, false, false > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = typename norm_type< T >::type
     
    using squared_norm_type = typename squared_norm_type< T >::type
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::traits_detail::norm_of_array_elements_impl< T, false, false >
    +

    Definition at line 70 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< T, false, false >::norm_type = typename norm_type<T>::type
    +
    + +

    Definition at line 72 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< T, false, false >::squared_norm_type = typename squared_norm_type<T>::type
    +
    + +

    Definition at line 73 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4-members.html new file mode 100644 index 000000000..69fbe0125 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_array_elements_impl< T, false, true > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html new file mode 100644 index 000000000..d37f7460d --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01false_00_01true_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_array_elements_impl< T, false, true > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_array_elements_impl< T, false, true > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = double
     
    using squared_norm_type = double
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::traits_detail::norm_of_array_elements_impl< T, false, true >
    +

    Definition at line 89 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< T, false, true >::norm_type = double
    +
    + +

    Definition at line 91 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< T, false, true >::squared_norm_type = double
    +
    + +

    Definition at line 92 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4-members.html new file mode 100644 index 000000000..b00f7be7a --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_array_elements_impl< T, true, false > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html new file mode 100644 index 000000000..412b67184 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01_t_00_01true_00_01false_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_array_elements_impl< T, true, false > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_array_elements_impl< T, true, false > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = double
     
    using squared_norm_type = uint64_t
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::traits_detail::norm_of_array_elements_impl< T, true, false >
    +

    Definition at line 77 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< T, true, false >::norm_type = double
    +
    + +

    Definition at line 84 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< T, true, false >::squared_norm_type = uint64_t
    +
    + +

    Definition at line 85 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4-members.html new file mode 100644 index 000000000..84dd12a33 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_array_elements_impl< long double, false, true > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html new file mode 100644 index 000000000..7478fef9b --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01long_01double_00_01false_00_01true_01_4.html @@ -0,0 +1,155 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_array_elements_impl< long double, false, true > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_array_elements_impl< long double, false, true > Struct Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = long double
     
    using squared_norm_type = long double
     
    +

    Detailed Description

    +
    +

    Definition at line 96 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< long double, false, true >::norm_type = long double
    +
    + +

    Definition at line 98 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< long double, false, true >::squared_norm_type = long double
    +
    + +

    Definition at line 99 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4-members.html new file mode 100644 index 000000000..db1549257 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_array_elements_impl< void *, false, false > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html new file mode 100644 index 000000000..6c2cbbd66 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__array__elements__impl_3_01void_01_5_00_01false_00_01false_01_4.html @@ -0,0 +1,155 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_array_elements_impl< void *, false, false > Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_array_elements_impl< void *, false, false > Struct Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = void *
     
    using squared_norm_type = void *
     
    +

    Detailed Description

    +
    +

    Definition at line 63 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< void *, false, false >::norm_type = void*
    +
    + +

    Definition at line 65 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    + + + + +
    using xt::traits_detail::norm_of_array_elements_impl< void *, false, false >::squared_norm_type = void*
    +
    + +

    Definition at line 66 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__scalar__impl.html b/structxt_1_1traits__detail_1_1norm__of__scalar__impl.html new file mode 100644 index 000000000..9fd26b67d --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__scalar__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_scalar_impl< T, scalar > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_scalar_impl< T, scalar > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class T, bool scalar = xtl::is_arithmetic<T>::value>
    +struct xt::traits_detail::norm_of_scalar_impl< T, scalar >
    +

    Definition at line 41 of file xnorm.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4-members.html new file mode 100644 index 000000000..763b0d792 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_scalar_impl< T, false > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html new file mode 100644 index 000000000..87838bc57 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01false_01_4.html @@ -0,0 +1,193 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_scalar_impl< T, false > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_scalar_impl< T, false > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = void *
     
    using squared_norm_type = void *
     
    + + + +

    +Static Public Attributes

    static const bool value = false
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::traits_detail::norm_of_scalar_impl< T, false >
    +

    Definition at line 44 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_scalar_impl< T, false >::norm_type = void*
    +
    + +

    Definition at line 47 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_scalar_impl< T, false >::squared_norm_type = void*
    +
    + +

    Definition at line 48 of file xnorm.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    const bool xt::traits_detail::norm_of_scalar_impl< T, false >::value = false
    +
    +static
    +
    + +

    Definition at line 46 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4-members.html b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4-members.html new file mode 100644 index 000000000..8f8c8946e --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_scalar_impl< T, true > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html new file mode 100644 index 000000000..cb745eaf7 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__scalar__impl_3_01_t_00_01true_01_4.html @@ -0,0 +1,193 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_scalar_impl< T, true > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_scalar_impl< T, true > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using norm_type = xtl::promote_type_t< T >
     
    using squared_norm_type = xtl::promote_type_t< T >
     
    + + + +

    +Static Public Attributes

    static const bool value = true
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt::traits_detail::norm_of_scalar_impl< T, true >
    +

    Definition at line 52 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_scalar_impl< T, true >::norm_type = xtl::promote_type_t<T>
    +
    + +

    Definition at line 55 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt::traits_detail::norm_of_scalar_impl< T, true >::squared_norm_type = xtl::promote_type_t<T>
    +
    + +

    Definition at line 56 of file xnorm.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    const bool xt::traits_detail::norm_of_scalar_impl< T, true >::value = true
    +
    +static
    +
    + +

    Definition at line 54 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__vector__impl-members.html b/structxt_1_1traits__detail_1_1norm__of__vector__impl-members.html new file mode 100644 index 000000000..29bb236d2 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__vector__impl-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_of_vector_impl< ARRAY > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__of__vector__impl.html b/structxt_1_1traits__detail_1_1norm__of__vector__impl.html new file mode 100644 index 000000000..389c469c2 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__of__vector__impl.html @@ -0,0 +1,224 @@ + + + + + + + +xtensor: xt::traits_detail::norm_of_vector_impl< ARRAY > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_of_vector_impl< ARRAY > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using T = decltype(test(std::declval< ARRAY * >()))
     
    using norm_type = typename norm_of_array_elements_impl< T >::norm_type
     
    using squared_norm_type = typename norm_of_array_elements_impl< T >::squared_norm_type
     
    + + + + + + +

    +Static Public Member Functions

    +static void * test (...)
     
    +template<class U >
    static U::value_type test (U *, typename U::value_type *=0)
     
    + + + +

    +Static Public Attributes

    static const bool value = !std::is_same<T, void*>::value
     
    +

    Detailed Description

    +
    template<class ARRAY>
    +struct xt::traits_detail::norm_of_vector_impl< ARRAY >
    +

    Definition at line 103 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_type

    + +
    +
    +
    +template<class ARRAY >
    + + + + +
    using xt::traits_detail::norm_of_vector_impl< ARRAY >::norm_type = typename norm_of_array_elements_impl<T>::norm_type
    +
    + +

    Definition at line 114 of file xnorm.hpp.

    + +
    +
    + +

    ◆ squared_norm_type

    + +
    +
    +
    +template<class ARRAY >
    + + + + +
    using xt::traits_detail::norm_of_vector_impl< ARRAY >::squared_norm_type = typename norm_of_array_elements_impl<T>::squared_norm_type
    +
    + +

    Definition at line 115 of file xnorm.hpp.

    + +
    +
    + +

    ◆ T

    + +
    +
    +
    +template<class ARRAY >
    + + + + +
    using xt::traits_detail::norm_of_vector_impl< ARRAY >::T = decltype(test(std::declval<ARRAY*>()))
    +
    + +

    Definition at line 110 of file xnorm.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class ARRAY >
    + + + + + +
    + + + + +
    const bool xt::traits_detail::norm_of_vector_impl< ARRAY >::value = !std::is_same<T, void*>::value
    +
    +static
    +
    + +

    Definition at line 112 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__type__base-members.html b/structxt_1_1traits__detail_1_1norm__type__base-members.html new file mode 100644 index 000000000..8cf95e26f --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__type__base-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::traits_detail::norm_type_base< U > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1traits__detail_1_1norm__type__base.html b/structxt_1_1traits__detail_1_1norm__type__base.html new file mode 100644 index 000000000..6931d5b42 --- /dev/null +++ b/structxt_1_1traits__detail_1_1norm__type__base.html @@ -0,0 +1,213 @@ + + + + + + + +xtensor: xt::traits_detail::norm_type_base< U > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::traits_detail::norm_type_base< U > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using T = std::decay_t< U >
     
    using norm_of_scalar = norm_of_scalar_impl< T >
     
    using norm_of_vector = norm_of_vector_impl< T >
     
    + + + +

    +Static Public Attributes

    static const bool value = norm_of_scalar::value || norm_of_vector::value
     
    +

    Detailed Description

    +
    template<class U>
    +struct xt::traits_detail::norm_type_base< U >
    +

    Definition at line 119 of file xnorm.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ norm_of_scalar

    + +
    +
    +
    +template<class U >
    + + + + +
    using xt::traits_detail::norm_type_base< U >::norm_of_scalar = norm_of_scalar_impl<T>
    +
    + +

    Definition at line 128 of file xnorm.hpp.

    + +
    +
    + +

    ◆ norm_of_vector

    + +
    +
    +
    +template<class U >
    + + + + +
    using xt::traits_detail::norm_type_base< U >::norm_of_vector = norm_of_vector_impl<T>
    +
    + +

    Definition at line 129 of file xnorm.hpp.

    + +
    +
    + +

    ◆ T

    + +
    +
    +
    +template<class U >
    + + + + +
    using xt::traits_detail::norm_type_base< U >::T = std::decay_t<U>
    +
    + +

    Definition at line 121 of file xnorm.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class U >
    + + + + + +
    + + + + +
    const bool xt::traits_detail::norm_type_base< U >::value = norm_of_scalar::value || norm_of_vector::value
    +
    +static
    +
    + +

    Definition at line 131 of file xnorm.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of-members.html b/structxt_1_1tuple__idx__of-members.html new file mode 100644 index 000000000..42bd6395e --- /dev/null +++ b/structxt_1_1tuple__idx__of-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tuple_idx_of< T, Tuple > Member List
    +
    +
    + +

    This is the complete list of members for xt::tuple_idx_of< T, Tuple >, including all inherited members.

    + + +
    value (defined in xt::tuple_idx_of< T, Tuple >)xt::tuple_idx_of< T, Tuple >static
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of.html b/structxt_1_1tuple__idx__of.html new file mode 100644 index 000000000..62b1b9916 --- /dev/null +++ b/structxt_1_1tuple__idx__of.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::tuple_idx_of< T, Tuple > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::tuple_idx_of< T, Tuple > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::ptrdiff_t value = tuple_idx_of_impl<0, std::decay_t<T>, typename decay_all<Tuple>::type>::value
     
    +

    Detailed Description

    +
    template<class T, class Tuple>
    +struct xt::tuple_idx_of< T, Tuple >
    +

    Definition at line 101 of file xreducer.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class T , class Tuple >
    + + + + + +
    + + + + +
    constexpr std::ptrdiff_t xt::tuple_idx_of< T, Tuple >::value = tuple_idx_of_impl<0, std::decay_t<T>, typename decay_all<Tuple>::type>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 104 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl.html b/structxt_1_1tuple__idx__of__impl.html new file mode 100644 index 000000000..7bcc77ffc --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::tuple_idx_of_impl< I, T, Tuple > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tuple_idx_of_impl< I, T, Tuple > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<std::ptrdiff_t I, class T, class Tuple>
    +struct xt::tuple_idx_of_impl< I, T, Tuple >
    +

    Definition at line 71 of file xreducer.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4-members.html b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..846116da3 --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..16de166d5 --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_t_00_01_types_8_8_8_01_4_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::ptrdiff_t value = I
     
    +

    Detailed Description

    +
    template<std::ptrdiff_t I, class T, class... Types>
    +struct xt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > >
    +

    Definition at line 80 of file xreducer.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<std::ptrdiff_t I, class T , class... Types>
    + + + + + +
    + + + + +
    constexpr std::ptrdiff_t xt::tuple_idx_of_impl< I, T, std::tuple< T, Types... > >::value = I
    +
    +staticconstexpr
    +
    + +

    Definition at line 82 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4-members.html b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..dab265131 --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..cb0cb5c3d --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_01_u_00_01_types_8_8_8_01_4_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::ptrdiff_t value = tuple_idx_of_impl<I + 1, T, std::tuple<Types...>>::value
     
    +

    Detailed Description

    +
    template<std::ptrdiff_t I, class T, class U, class... Types>
    +struct xt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > >
    +

    Definition at line 86 of file xreducer.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<std::ptrdiff_t I, class T , class U , class... Types>
    + + + + + +
    + + + + +
    constexpr std::ptrdiff_t xt::tuple_idx_of_impl< I, T, std::tuple< U, Types... > >::value = tuple_idx_of_impl<I + 1, T, std::tuple<Types...>>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 88 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4-members.html b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4-members.html new file mode 100644 index 000000000..521422827 --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::tuple_idx_of_impl< I, T, std::tuple<> > Member List
    +
    +
    + +

    This is the complete list of members for xt::tuple_idx_of_impl< I, T, std::tuple<> >, including all inherited members.

    + + +
    value (defined in xt::tuple_idx_of_impl< I, T, std::tuple<> >)xt::tuple_idx_of_impl< I, T, std::tuple<> >static
    +
    + + + + diff --git a/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html new file mode 100644 index 000000000..6c3e52bcf --- /dev/null +++ b/structxt_1_1tuple__idx__of__impl_3_01_i_00_01_t_00_01std_1_1tuple_3_4_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xt::tuple_idx_of_impl< I, T, std::tuple<> > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::tuple_idx_of_impl< I, T, std::tuple<> > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    static constexpr std::ptrdiff_t value = -1
     
    +

    Detailed Description

    +
    template<std::ptrdiff_t I, class T>
    +struct xt::tuple_idx_of_impl< I, T, std::tuple<> >
    +

    Definition at line 74 of file xreducer.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<std::ptrdiff_t I, class T >
    + + + + + +
    + + + + +
    constexpr std::ptrdiff_t xt::tuple_idx_of_impl< I, T, std::tuple<> >::value = -1
    +
    +staticconstexpr
    +
    + +

    Definition at line 76 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1view__temporary__type-members.html b/structxt_1_1view__temporary__type-members.html new file mode 100644 index 000000000..a7a91cdff --- /dev/null +++ b/structxt_1_1view__temporary__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::view_temporary_type< E, SL > Member List
    +
    +
    + +

    This is the complete list of members for xt::view_temporary_type< E, SL >, including all inherited members.

    + + +
    type typedef (defined in xt::view_temporary_type< E, SL >)xt::view_temporary_type< E, SL >
    +
    + + + + diff --git a/structxt_1_1view__temporary__type.html b/structxt_1_1view__temporary__type.html new file mode 100644 index 000000000..f5237bddc --- /dev/null +++ b/structxt_1_1view__temporary__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::view_temporary_type< E, SL > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::view_temporary_type< E, SL > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::view_temporary_type_impl< std::decay_t< typename E::value_type >, typename E::shape_type, E::static_layout, SL... >::type
     
    +

    Detailed Description

    +
    template<class E, class... SL>
    +struct xt::view_temporary_type< E, SL >
    +

    Definition at line 82 of file xview_utils.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E , class... SL>
    + + + + +
    using xt::view_temporary_type< E, SL >::type = typename detail::view_temporary_type_impl< std::decay_t<typename E::value_type>, typename E::shape_type, E::static_layout, SL...>::type
    +
    + +

    Definition at line 84 of file xview_utils.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xaccumulator__functor-members.html b/structxt_1_1xaccumulator__functor-members.html new file mode 100644 index 000000000..c50b10843 --- /dev/null +++ b/structxt_1_1xaccumulator__functor-members.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xaccumulator__functor.html b/structxt_1_1xaccumulator__functor.html new file mode 100644 index 000000000..b3e7762de --- /dev/null +++ b/structxt_1_1xaccumulator__functor.html @@ -0,0 +1,340 @@ + + + + + + + +xtensor: xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >:
    +
    +
    + +
    + + + + + + + + + + + + +

    +Public Types

    using self_type = xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >
     
    using base_type = std::tuple< ACCUMULATE_FUNC, INIT_FUNC >
     
    using accumulate_functor_type = ACCUMULATE_FUNC
     
    using init_functor_type = INIT_FUNC
     
    using init_value_type = typename init_functor_type::value_type
     
    + + + + + + + +

    +Public Member Functions

    template<class RF >
     xaccumulator_functor (RF &&accumulate_func)
     
    template<class RF , class IF >
     xaccumulator_functor (RF &&accumulate_func, IF &&init_func)
     
    +

    Detailed Description

    +
    template<class ACCUMULATE_FUNC, class INIT_FUNC = detail::accumulator_identity<void>>
    +struct xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >
    +

    Definition at line 42 of file xaccumulator.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ accumulate_functor_type

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    + + + + +
    using xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::accumulate_functor_type = ACCUMULATE_FUNC
    +
    + +

    Definition at line 46 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ base_type

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    + + + + +
    using xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::base_type = std::tuple<ACCUMULATE_FUNC, INIT_FUNC>
    +
    + +

    Definition at line 45 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ init_functor_type

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    + + + + +
    using xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::init_functor_type = INIT_FUNC
    +
    + +

    Definition at line 47 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ init_value_type

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    + + + + +
    using xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::init_value_type = typename init_functor_type::value_type
    +
    + +

    Definition at line 48 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ self_type

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    + + + + +
    using xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::self_type = xaccumulator_functor<ACCUMULATE_FUNC, INIT_FUNC>
    +
    + +

    Definition at line 44 of file xaccumulator.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ xaccumulator_functor() [1/3]

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    + + + + + +
    + + + + + + + +
    xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::xaccumulator_functor ()
    +
    +inline
    +
    + +

    Definition at line 50 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ xaccumulator_functor() [2/3]

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    +
    +template<class RF >
    + + + + + +
    + + + + + + + + +
    xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::xaccumulator_functor (RF && accumulate_func)
    +
    +inline
    +
    + +

    Definition at line 56 of file xaccumulator.hpp.

    + +
    +
    + +

    ◆ xaccumulator_functor() [3/3]

    + +
    +
    +
    +template<class ACCUMULATE_FUNC , class INIT_FUNC = detail::accumulator_identity<void>>
    +
    +template<class RF , class IF >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xt::xaccumulator_functor< ACCUMULATE_FUNC, INIT_FUNC >::xaccumulator_functor (RF && accumulate_func,
    IF && init_func 
    )
    +
    +inline
    +
    + +

    Definition at line 62 of file xaccumulator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xaccumulator__functor.png b/structxt_1_1xaccumulator__functor.png new file mode 100644 index 0000000000000000000000000000000000000000..24dd75a64f6a38dbf5b85e9c24c21b3b8f1a0732 GIT binary patch literal 1364 zcmb_ceK^wz9RCd!lT%7XXU6^9l^qrGTFOgLzn^OJY_w{~TRd`#tSy<5M6PJ#JuEwcmLhpzxVy)`}%pl&-eR$KhHPYAAisYZH@*2 zzzBwXi2#7&A-=!9E~3N6KRrUsR{z5R2Ub>A5ck96?D?FI2d+D}$8X_0|IpUfhU7_X zX*p6epc3&U0Ezz=7oEaB0MHwTeZ2xMpr(r6u$8uJeJMMd7gt*6Bg1t^#xH#9mi(|R zza*mY8ej*8ghkzSaJ+`w0+&G!l_n-~Z%+}YU~`R#Mjmv}gCy5^6n#JBni zf*TPlo1uRELU(?H)m}M$Nh{cIlL*G-xtuM^JdzoYJ+nnxA2!sqUx#ZQl3*PN=vMVFpb z?dH{{pu}bjV?_8)qjWr|Be1N%&Mmc#C07 z?tWTsoq$w5apsjNPYF5H6rdytTU($ye%Mp|C}ub-pp)sE!J$j+ZTRZJ&;=FCRU(TQ5=@iE7o%TCA^#V1~ji5gd7Vpl3ZF4I&G z_ zpK;dNpwEO4zS$@nB!Sww0v6=Z_)k(8Ls3!N9cu+TX(!9}0W6)gMn4ExM@jtx+5q}h z8G69av!VI<0Jg@&1jry;>!cxE0@ei?7y#)wE7bmY8xYXvBe3=Y7Jx;11A1id{}r@w zh4uV7F)AuyRUR)NJP_#3<{=}nHwGENY-9wO7%$JztQI>{BYvUHvg-n4g#Y5TXzXk5 za=Cl>F`qa)+UcybuXB00~ZzHk&3gC`@vqKB$+vz#G+dD*Fy(dW zbFi|@Z?oze^A?r{WcFgyJcb!oE}Su!8e27aeENzvxU67h;@%{O>Qxvt2r#c$dL1M z74@Ai^Wked8myYA4)Ntx4OqKL#t7av;H9H~^d8*lX%B_6vmA5h{$k>e=>CLEnQ)Lo z=Pm`2$dv2wM8H}RIE6K$vk4W-rm|QqT5`n#7Txcsv%ykOINcEZS&g+= + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xall_tag Member List
    +
    +
    + +

    This is the complete list of members for xt::xall_tag, including all inherited members.

    + + +
    convert() const noexcept (defined in xt::xall_tag)xt::xall_taginline
    +
    + + + + diff --git a/structxt_1_1xall__tag.html b/structxt_1_1xall__tag.html new file mode 100644 index 000000000..23bb84015 --- /dev/null +++ b/structxt_1_1xall__tag.html @@ -0,0 +1,151 @@ + + + + + + + +xtensor: xt::xall_tag Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xall_tag Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    template<class T >
    xall_tag convert () const noexcept
     
    +

    Detailed Description

    +
    +

    Definition at line 83 of file xslice.hpp.

    +

    Member Function Documentation

    + +

    ◆ convert()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    xall_tag xt::xall_tag::convert () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 85 of file xslice.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xclosure-members.html b/structxt_1_1xclosure-members.html new file mode 100644 index 000000000..65881f479 --- /dev/null +++ b/structxt_1_1xclosure-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xclosure< E, EN > Member List
    +
    +
    + +

    This is the complete list of members for xt::xclosure< E, EN >, including all inherited members.

    + + +
    type typedef (defined in xt::xclosure< E, EN >)xt::xclosure< E, EN >
    +
    + + + + diff --git a/structxt_1_1xclosure.html b/structxt_1_1xclosure.html new file mode 100644 index 000000000..766834881 --- /dev/null +++ b/structxt_1_1xclosure.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xclosure< E, EN > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xclosure< E, EN > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xtl::closure_type_t< E >
     
    +

    Detailed Description

    +
    template<class E, class EN = void>
    +struct xt::xclosure< E, EN >
    +

    Definition at line 255 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E , class EN = void>
    + + + + +
    using xt::xclosure< E, EN >::type = xtl::closure_type_t<E>
    +
    + +

    Definition at line 257 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html b/structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html new file mode 100644 index 000000000..d376d3917 --- /dev/null +++ b/structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xclosure< E, disable_xexpression< std::decay_t< E > > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html b/structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html new file mode 100644 index 000000000..5c093364e --- /dev/null +++ b/structxt_1_1xclosure_3_01_e_00_01disable__xexpression_3_01std_1_1decay__t_3_01_e_01_4_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xclosure< E, disable_xexpression< std::decay_t< E > > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xclosure< E, disable_xexpression< std::decay_t< E > > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xscalar< xtl::closure_type_t< E > >
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::xclosure< E, disable_xexpression< std::decay_t< E > > >
    +

    Definition at line 267 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::xclosure< E, disable_xexpression< std::decay_t< E > > >::type = xscalar<xtl::closure_type_t<E> >
    +
    + +

    Definition at line 269 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html b/structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html new file mode 100644 index 000000000..c21f61b2d --- /dev/null +++ b/structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xclosure< xshared_expression< E >, std::enable_if_t< true > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html b/structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html new file mode 100644 index 000000000..bc4752f52 --- /dev/null +++ b/structxt_1_1xclosure_3_01xshared__expression_3_01_e_01_4_00_01std_1_1enable__if__t_3_01true_01_4_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xclosure< xshared_expression< E >, std::enable_if_t< true > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xclosure< xshared_expression< E >, std::enable_if_t< true > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = xshared_expression< E >
     
    +

    Detailed Description

    +
    template<class E>
    +struct xt::xclosure< xshared_expression< E >, std::enable_if_t< true > >
    +

    Definition at line 261 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class E >
    + + + + +
    using xt::xclosure< xshared_expression< E >, std::enable_if_t< true > >::type = xshared_expression<E>
    +
    + +

    Definition at line 263 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types.html b/structxt_1_1xcontainer__inner__types.html new file mode 100644 index 000000000..ea565aa76 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< D > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< D > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class D>
    +struct xt::xcontainer_inner_types< D >
    +

    Definition at line 244 of file xiterable.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterable.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..28a091da2 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    layout (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..4f3cef1b7 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using storage_type = std::remove_reference_t< EC >
     
    using reference = inner_reference_t< storage_type >
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using shape_type = SC
     
    using strides_type = get_strides_t< shape_type >
     
    using backstrides_type = get_strides_t< shape_type >
     
    using inner_shape_type = shape_type
     
    using inner_strides_type = strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using temporary_type = xarray_container< temporary_container_t< storage_type >, L, SC, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC, class Tag>
    +struct xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    +

    Definition at line 175 of file xarray.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::backstrides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 183 of file xarray.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 179 of file xarray.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 186 of file xarray.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::inner_shape_type = shape_type
    +
    + +

    Definition at line 184 of file xarray.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 185 of file xarray.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::reference = inner_reference_t<storage_type>
    +
    + +

    Definition at line 178 of file xarray.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::shape_type = SC
    +
    + +

    Definition at line 181 of file xarray.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 180 of file xarray.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::storage_type = std::remove_reference_t<EC>
    +
    + +

    Definition at line 177 of file xarray.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::strides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 182 of file xarray.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::temporary_type = xarray_container<temporary_container_t<storage_type>, L, SC, Tag>
    +
    + +

    Definition at line 187 of file xarray.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 188 of file xarray.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..85de03cdf --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    layout (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >)xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..b7a69a46b --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using storage_type = EC
     
    using reference = inner_reference_t< storage_type >
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using shape_type = SC
     
    using strides_type = get_strides_t< shape_type >
     
    using backstrides_type = get_strides_t< shape_type >
     
    using inner_shape_type = shape_type
     
    using inner_strides_type = strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using temporary_type = xarray_container< EC, L, SC, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC, class Tag>
    +struct xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >
    +

    Definition at line 46 of file xarray.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::backstrides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 54 of file xarray.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 50 of file xarray.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 57 of file xarray.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::inner_shape_type = shape_type
    +
    + +

    Definition at line 55 of file xarray.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 56 of file xarray.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::reference = inner_reference_t<storage_type>
    +
    + +

    Definition at line 49 of file xarray.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::shape_type = SC
    +
    + +

    Definition at line 52 of file xarray.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 51 of file xarray.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::storage_type = EC
    +
    + +

    Definition at line 48 of file xarray.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::strides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 53 of file xarray.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::temporary_type = xarray_container<EC, L, SC, Tag>
    +
    + +

    Definition at line 58 of file xarray.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class EC , layout_type L, class SC , class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 59 of file xarray.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html new file mode 100644 index 000000000..827a4b3a4 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xbroadcast< CT, X > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html new file mode 100644 index 000000000..b81972d94 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xbroadcast< CT, X > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xbroadcast< CT, X > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using reference = typename xexpression_type::const_reference
     
    using const_reference = typename xexpression_type::const_reference
     
    using size_type = typename xexpression_type::size_type
     
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::xcontainer_inner_types< xbroadcast< CT, X > >
    +

    Definition at line 85 of file xbroadcast.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xcontainer_inner_types< xbroadcast< CT, X > >::const_reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 89 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xcontainer_inner_types< xbroadcast< CT, X > >::reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 88 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xcontainer_inner_types< xbroadcast< CT, X > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 90 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xcontainer_inner_types< xbroadcast< CT, X > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 87 of file xbroadcast.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html new file mode 100644 index 000000000..98c0ab0f7 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html new file mode 100644 index 000000000..5a3f3c1be --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html @@ -0,0 +1,240 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xchunked_array< chunk_storage > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xchunked_array< chunk_storage > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Types

    using chunk_type = typename chunk_storage::value_type
     
    using const_reference = typename chunk_type::const_reference
     
    using reference = typename chunk_type::reference
     
    using size_type = std::size_t
     
    using storage_type = chunk_type
     
    using temporary_type = xchunked_array< chunk_storage >
     
    +

    Detailed Description

    +
    template<class chunk_storage>
    +struct xt::xcontainer_inner_types< xchunked_array< chunk_storage > >
    +

    Definition at line 36 of file xchunked_array.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ chunk_type

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xcontainer_inner_types< xchunked_array< chunk_storage > >::chunk_type = typename chunk_storage::value_type
    +
    + +

    Definition at line 38 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xcontainer_inner_types< xchunked_array< chunk_storage > >::const_reference = typename chunk_type::const_reference
    +
    + +

    Definition at line 39 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xcontainer_inner_types< xchunked_array< chunk_storage > >::reference = typename chunk_type::reference
    +
    + +

    Definition at line 40 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xcontainer_inner_types< xchunked_array< chunk_storage > >::size_type = std::size_t
    +
    + +

    Definition at line 41 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xcontainer_inner_types< xchunked_array< chunk_storage > >::storage_type = chunk_type
    +
    + +

    Definition at line 42 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xcontainer_inner_types< xchunked_array< chunk_storage > >::temporary_type = xchunked_array<chunk_storage>
    +
    + +

    Definition at line 43 of file xchunked_array.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html new file mode 100644 index 000000000..34cda5a90 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >, including all inherited members.

    + + + + + + + + + + + + +
    const_reference typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    inner_storage_type typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    layout (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >static
    reference typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    size_type typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    storage_getter typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    undecay_expression typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    undecay_shape typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    xexpression_type typedef (defined in xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html new file mode 100644 index 000000000..1ecf4449b --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html @@ -0,0 +1,353 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using undecay_expression = CT
     
    using reference = inner_reference_t< undecay_expression >
     
    using const_reference = typename xexpression_type::const_reference
     
    using size_type = typename xexpression_type::size_type
     
    using shape_type = std::decay_t< S >
     
    using undecay_shape = S
     
    using storage_getter = FST
     
    using inner_storage_type = typename storage_getter::type
     
    using temporary_type = xarray< std::decay_t< typename xexpression_type::value_type >, xexpression_type::static_layout >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >
    +

    Definition at line 28 of file xdynamic_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::const_reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 33 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ inner_storage_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::inner_storage_type = typename storage_getter::type
    +
    + +

    Definition at line 38 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::reference = inner_reference_t<undecay_expression>
    +
    + +

    Definition at line 32 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::shape_type = std::decay_t<S>
    +
    + +

    Definition at line 35 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 34 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ storage_getter

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::storage_getter = FST
    +
    + +

    Definition at line 37 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::temporary_type = xarray<std::decay_t<typename xexpression_type::value_type>, xexpression_type::static_layout>
    +
    + +

    Definition at line 39 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ undecay_expression

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::undecay_expression = CT
    +
    + +

    Definition at line 31 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ undecay_shape

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::undecay_shape = S
    +
    + +

    Definition at line 36 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 30 of file xdynamic_view.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xdynamic_view< CT, S, L, FST > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 40 of file xdynamic_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..f77a540d8 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    layout (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..f5cd4951f --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using storage_type = std::remove_reference_t< EC >
     
    using reference = typename storage_type::reference
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using shape_type = S
     
    using inner_shape_type = typename S::cast_type
     
    using strides_type = get_strides_t< inner_shape_type >
     
    using backstrides_type = strides_type
     
    using inner_strides_type = strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using temporary_type = xfixed_container< typename storage_type::value_type, S, L, SH, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class EC, class S, layout_type L, bool SH, class Tag>
    +struct xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    +

    Definition at line 407 of file xfixed.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::backstrides_type = strides_type
    +
    + +

    Definition at line 416 of file xfixed.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 411 of file xfixed.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 418 of file xfixed.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::inner_shape_type = typename S::cast_type
    +
    + +

    Definition at line 414 of file xfixed.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 417 of file xfixed.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::reference = typename storage_type::reference
    +
    + +

    Definition at line 410 of file xfixed.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::shape_type = S
    +
    + +

    Definition at line 413 of file xfixed.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 412 of file xfixed.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::storage_type = std::remove_reference_t<EC>
    +
    + +

    Definition at line 409 of file xfixed.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::strides_type = get_strides_t<inner_shape_type>
    +
    + +

    Definition at line 415 of file xfixed.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::temporary_type = xfixed_container<typename storage_type::value_type, S, L, SH, Tag>
    +
    + +

    Definition at line 419 of file xfixed.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class EC , class S , layout_type L, bool SH, class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 420 of file xfixed.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..4cf2965c3 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    layout (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >)xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..1483f7282 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using shape_type = S
     
    using inner_shape_type = typename S::cast_type
     
    using strides_type = get_strides_t< inner_shape_type >
     
    using inner_strides_type = strides_type
     
    using backstrides_type = inner_strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using storage_type = aligned_array< ET, detail::fixed_compute_size< S >::value >
     
    using reference = typename storage_type::reference
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using temporary_type = xfixed_container< ET, S, L, SH, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class ET, class S, layout_type L, bool SH, class Tag>
    +struct xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    +

    Definition at line 250 of file xfixed.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::backstrides_type = inner_strides_type
    +
    + +

    Definition at line 256 of file xfixed.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 268 of file xfixed.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 257 of file xfixed.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::inner_shape_type = typename S::cast_type
    +
    + +

    Definition at line 253 of file xfixed.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 255 of file xfixed.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::reference = typename storage_type::reference
    +
    + +

    Definition at line 267 of file xfixed.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::shape_type = S
    +
    + +

    Definition at line 252 of file xfixed.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 269 of file xfixed.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::storage_type = aligned_array<ET, detail::fixed_compute_size<S>::value>
    +
    + +

    Definition at line 264 of file xfixed.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::strides_type = get_strides_t<inner_shape_type>
    +
    + +

    Definition at line 254 of file xfixed.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::temporary_type = xfixed_container<ET, S, L, SH, Tag>
    +
    + +

    Definition at line 270 of file xfixed.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class ET , class S , layout_type L, bool SH, class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 271 of file xfixed.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..154837e71 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xfunction< F, CT... > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..bab742c20 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html @@ -0,0 +1,220 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xfunction< F, CT... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xfunction< F, CT... > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Types

    using func_return_type = typename meta_identity< decltype(std::declval< F >()(std::declval< xvalue_type_t< std::decay_t< CT > > >()...))>::type
     
    using value_type = std::decay_t< func_return_type >
     
    using reference = func_return_type
     
    using const_reference = reference
     
    using size_type = common_size_type_t< std::decay_t< CT >... >
     
    +

    Detailed Description

    +
    template<class F, class... CT>
    +struct xt::xcontainer_inner_types< xfunction< F, CT... > >
    +

    Definition at line 146 of file xfunction.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xcontainer_inner_types< xfunction< F, CT... > >::const_reference = reference
    +
    + +

    Definition at line 153 of file xfunction.hpp.

    + +
    +
    + +

    ◆ func_return_type

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xcontainer_inner_types< xfunction< F, CT... > >::func_return_type = typename meta_identity< decltype(std::declval<F>()(std::declval<xvalue_type_t<std::decay_t<CT> >>()...))>::type
    +
    + +

    Definition at line 149 of file xfunction.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xcontainer_inner_types< xfunction< F, CT... > >::reference = func_return_type
    +
    + +

    Definition at line 152 of file xfunction.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xcontainer_inner_types< xfunction< F, CT... > >::size_type = common_size_type_t<std::decay_t<CT>...>
    +
    + +

    Definition at line 154 of file xfunction.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xcontainer_inner_types< xfunction< F, CT... > >::value_type = std::decay_t<func_return_type>
    +
    + +

    Definition at line 151 of file xfunction.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4-members.html new file mode 100644 index 000000000..bc99a4c4c --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html new file mode 100644 index 000000000..433fa8a9d --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfunctor__adaptor_3_01_f_00_01_c_t_01_4_01_4.html @@ -0,0 +1,260 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using undecay_expression = CT
     
    using functor_type = std::decay_t< F >
     
    using reference = typename functor_type::reference
     
    using const_reference = typename functor_type::const_reference
     
    using size_type = typename xexpression_type::size_type
     
    using temporary_type = typename xfunctor_view_temporary_type< F, xexpression_type >::type
     
    +

    Detailed Description

    +
    template<class F, class CT>
    +struct xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >
    +

    Definition at line 480 of file xfunctor_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::const_reference = typename functor_type::const_reference
    +
    + +

    Definition at line 486 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ functor_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::functor_type = std::decay_t<F>
    +
    + +

    Definition at line 484 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::reference = typename functor_type::reference
    +
    + +

    Definition at line 485 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 487 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::temporary_type = typename xfunctor_view_temporary_type<F, xexpression_type>::type
    +
    + +

    Definition at line 488 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ undecay_expression

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::undecay_expression = CT
    +
    + +

    Definition at line 483 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_adaptor< F, CT > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 482 of file xfunctor_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4-members.html new file mode 100644 index 000000000..948756c38 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4-members.html @@ -0,0 +1,114 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html new file mode 100644 index 000000000..288d99a86 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xfunctor__view_3_01_f_00_01_c_t_01_4_01_4.html @@ -0,0 +1,260 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xfunctor_view< F, CT > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xfunctor_view< F, CT > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using undecay_expression = CT
     
    using functor_type = std::decay_t< F >
     
    using reference = decltype(std::declval< F >()(std::declval< xexpression_type >()()))
     
    using const_reference = decltype(std::declval< F >()(std::declval< const xexpression_type >()()))
     
    using size_type = typename xexpression_type::size_type
     
    using temporary_type = typename xfunctor_view_temporary_type< F, xexpression_type >::type
     
    +

    Detailed Description

    +
    template<class F, class CT>
    +struct xt::xcontainer_inner_types< xfunctor_view< F, CT > >
    +

    Definition at line 403 of file xfunctor_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::const_reference = decltype(std::declval<F>()(std::declval<const xexpression_type>()()))
    +
    + +

    Definition at line 409 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ functor_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::functor_type = std::decay_t<F>
    +
    + +

    Definition at line 407 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::reference = decltype(std::declval<F>()(std::declval<xexpression_type>()()))
    +
    + +

    Definition at line 408 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 410 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::temporary_type = typename xfunctor_view_temporary_type<F, xexpression_type>::type
    +
    + +

    Definition at line 411 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ undecay_expression

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::undecay_expression = CT
    +
    + +

    Definition at line 406 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class F , class CT >
    + + + + +
    using xt::xcontainer_inner_types< xfunctor_view< F, CT > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 405 of file xfunctor_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html new file mode 100644 index 000000000..ef1afca39 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xgenerator< C, R, S > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html new file mode 100644 index 000000000..668a929a3 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xgenerator< C, R, S > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xgenerator< C, R, S > > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using reference = R
     
    using const_reference = R
     
    using size_type = std::size_t
     
    +

    Detailed Description

    +
    template<class C, class R, class S>
    +struct xt::xcontainer_inner_types< xgenerator< C, R, S > >
    +

    Definition at line 72 of file xgenerator.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class C , class R , class S >
    + + + + +
    using xt::xcontainer_inner_types< xgenerator< C, R, S > >::const_reference = R
    +
    + +

    Definition at line 75 of file xgenerator.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class C , class R , class S >
    + + + + +
    using xt::xcontainer_inner_types< xgenerator< C, R, S > >::reference = R
    +
    + +

    Definition at line 74 of file xgenerator.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class C , class R , class S >
    + + + + +
    using xt::xcontainer_inner_types< xgenerator< C, R, S > >::size_type = std::size_t
    +
    + +

    Definition at line 76 of file xgenerator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html new file mode 100644 index 000000000..3a7920635 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xindex_view< CT, I > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html new file mode 100644 index 000000000..facb7b8bf --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xindex_view< CT, I > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xindex_view< CT, I > > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using temporary_type = xarray< typename xexpression_type::value_type, xexpression_type::static_layout >
     
    +

    Detailed Description

    +
    template<class CT, class I>
    +struct xt::xcontainer_inner_types< xindex_view< CT, I > >
    +

    Definition at line 61 of file xindex_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::xcontainer_inner_types< xindex_view< CT, I > >::temporary_type = xarray<typename xexpression_type::value_type, xexpression_type::static_layout>
    +
    + +

    Definition at line 64 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::xcontainer_inner_types< xindex_view< CT, I > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 63 of file xindex_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html new file mode 100644 index 000000000..29d5fde41 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xmasked_view< CTD, CTM > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >, including all inherited members.

    + + + + + + + + + + + + +
    base_value_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    data_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    flag_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    mask_reference typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    mask_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    reference typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    size_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    val_reference typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    value_type typedef (defined in xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >)xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html new file mode 100644 index 000000000..14c3ea59a --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html @@ -0,0 +1,340 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xmasked_view< CTD, CTM > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xmasked_view< CTD, CTM > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using data_type = std::decay_t< CTD >
     
    using mask_type = std::decay_t< CTM >
     
    using base_value_type = typename data_type::value_type
     
    using flag_type = typename mask_type::value_type
     
    using val_reference = inner_reference_t< CTD >
     
    using mask_reference = inner_reference_t< CTM >
     
    using value_type = xtl::xmasked_value< base_value_type, flag_type >
     
    using reference = xtl::xmasked_value< val_reference, mask_reference >
     
    using const_reference = xtl::xmasked_value< typename data_type::const_reference, typename mask_type::const_reference >
     
    using size_type = typename data_type::size_type
     
    using temporary_type = xarray< xtl::xmasked_value< base_value_type, flag_type > >
     
    +

    Detailed Description

    +
    template<class CTD, class CTM>
    +struct xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >
    +

    Definition at line 38 of file xmasked_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ base_value_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::base_value_type = typename data_type::value_type
    +
    + +

    Definition at line 42 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::const_reference = xtl::xmasked_value<typename data_type::const_reference, typename mask_type::const_reference>
    +
    + +

    Definition at line 48 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ data_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::data_type = std::decay_t<CTD>
    +
    + +

    Definition at line 40 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ flag_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::flag_type = typename mask_type::value_type
    +
    + +

    Definition at line 43 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ mask_reference

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::mask_reference = inner_reference_t<CTM>
    +
    + +

    Definition at line 45 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ mask_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::mask_type = std::decay_t<CTM>
    +
    + +

    Definition at line 41 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::reference = xtl::xmasked_value<val_reference, mask_reference>
    +
    + +

    Definition at line 47 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::size_type = typename data_type::size_type
    +
    + +

    Definition at line 49 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::temporary_type = xarray<xtl::xmasked_value<base_value_type, flag_type> >
    +
    + +

    Definition at line 50 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ val_reference

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::val_reference = inner_reference_t<CTD>
    +
    + +

    Definition at line 44 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xcontainer_inner_types< xmasked_view< CTD, CTM > >::value_type = xtl::xmasked_value<base_value_type, flag_type>
    +
    + +

    Definition at line 46 of file xmasked_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html new file mode 100644 index 000000000..66269fff6 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html new file mode 100644 index 000000000..54ddd6824 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html @@ -0,0 +1,240 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xoptional_assembly< VE, FE > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xoptional_assembly< VE, FE > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Types

    using raw_value_expression = VE
     
    using value_storage_type = typename raw_value_expression::storage_type &
     
    using raw_flag_expression = FE
     
    using flag_storage_type = typename raw_flag_expression::storage_type &
     
    using storage_type = xoptional_assembly_storage< value_storage_type, flag_storage_type >
     
    using temporary_type = xoptional_assembly< VE, FE >
     
    +

    Detailed Description

    +
    template<class VE, class FE>
    +struct xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >
    +

    Definition at line 28 of file xoptional_assembly.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ flag_storage_type

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >::flag_storage_type = typename raw_flag_expression::storage_type&
    +
    + +

    Definition at line 33 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ raw_flag_expression

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >::raw_flag_expression = FE
    +
    + +

    Definition at line 32 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ raw_value_expression

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >::raw_value_expression = VE
    +
    + +

    Definition at line 30 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >::storage_type = xoptional_assembly_storage<value_storage_type, flag_storage_type>
    +
    + +

    Definition at line 34 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >::temporary_type = xoptional_assembly<VE, FE>
    +
    + +

    Definition at line 35 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ value_storage_type

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly< VE, FE > >::value_storage_type = typename raw_value_expression::storage_type&
    +
    + +

    Definition at line 31 of file xoptional_assembly.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html new file mode 100644 index 000000000..6d87271dd --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html new file mode 100644 index 000000000..c119a06d0 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html @@ -0,0 +1,240 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Types

    using raw_value_expression = std::remove_reference_t< VEC >
     
    using value_storage_type = std::conditional_t< std::is_const< raw_value_expression >::value, const typename raw_value_expression::storage_type &, typename raw_value_expression::storage_type & >
     
    using raw_flag_expression = std::remove_reference_t< FEC >
     
    using flag_storage_type = std::conditional_t< std::is_const< raw_flag_expression >::value, const typename raw_flag_expression::storage_type &, typename raw_flag_expression::storage_type & >
     
    using storage_type = xoptional_assembly_storage< value_storage_type, flag_storage_type >
     
    using temporary_type = xoptional_assembly< raw_value_expression, raw_flag_expression >
     
    +

    Detailed Description

    +
    template<class VEC, class FEC>
    +struct xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
    +

    Definition at line 152 of file xoptional_assembly.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ flag_storage_type

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::flag_storage_type = std::conditional_t< std::is_const<raw_flag_expression>::value, const typename raw_flag_expression::storage_type&, typename raw_flag_expression::storage_type&>
    +
    + +

    Definition at line 160 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ raw_flag_expression

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::raw_flag_expression = std::remove_reference_t<FEC>
    +
    + +

    Definition at line 159 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ raw_value_expression

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::raw_value_expression = std::remove_reference_t<VEC>
    +
    + +

    Definition at line 154 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::storage_type = xoptional_assembly_storage<value_storage_type, flag_storage_type>
    +
    + +

    Definition at line 164 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::temporary_type = xoptional_assembly<raw_value_expression, raw_flag_expression>
    +
    + +

    Definition at line 165 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ value_storage_type

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xcontainer_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::value_storage_type = std::conditional_t< std::is_const<raw_value_expression>::value, const typename raw_value_expression::storage_type&, typename raw_value_expression::storage_type&>
    +
    + +

    Definition at line 155 of file xoptional_assembly.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html new file mode 100644 index 000000000..4a4515828 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html @@ -0,0 +1,117 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xreducer< F, CT, X, O > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xreducer< F, CT, X, O > >, including all inherited members.

    + + + + + + + + + + + +
    const_reference typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    init_functor_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    merge_functor_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    raw_value_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    reduce_functor_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    reference typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    size_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    substepper_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    value_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    xexpression_type typedef (defined in xt::xcontainer_inner_types< xreducer< F, CT, X, O > >)xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html new file mode 100644 index 000000000..1d50a628e --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html @@ -0,0 +1,320 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xreducer< F, CT, X, O > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xreducer< F, CT, X, O > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using reduce_functor_type = typename std::decay_t< F >::reduce_functor_type
     
    using init_functor_type = typename std::decay_t< F >::init_functor_type
     
    using merge_functor_type = typename std::decay_t< F >::merge_functor_type
     
    using substepper_type = typename xexpression_type::const_stepper
     
    using raw_value_type = std::decay_t< decltype(std::declval< reduce_functor_type >()(std::declval< init_functor_type >()(), *std::declval< substepper_type >()))>
     
    using value_type = typename detail::evaluated_value_type_t< raw_value_type, is_xexpression< raw_value_type >::value >
     
    using reference = value_type
     
    using const_reference = value_type
     
    using size_type = typename xexpression_type::size_type
     
    +

    Detailed Description

    +
    template<class F, class CT, class X, class O>
    +struct xt::xcontainer_inner_types< xreducer< F, CT, X, O > >
    +

    Definition at line 765 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::const_reference = value_type
    +
    + +

    Definition at line 779 of file xreducer.hpp.

    + +
    +
    + +

    ◆ init_functor_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::init_functor_type = typename std::decay_t<F>::init_functor_type
    +
    + +

    Definition at line 769 of file xreducer.hpp.

    + +
    +
    + +

    ◆ merge_functor_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::merge_functor_type = typename std::decay_t<F>::merge_functor_type
    +
    + +

    Definition at line 770 of file xreducer.hpp.

    + +
    +
    + +

    ◆ raw_value_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::raw_value_type = std::decay_t<decltype(std::declval<reduce_functor_type>()( std::declval<init_functor_type>()(), *std::declval<substepper_type>() ))>
    +
    + +

    Definition at line 772 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reduce_functor_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::reduce_functor_type = typename std::decay_t<F>::reduce_functor_type
    +
    + +

    Definition at line 768 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::reference = value_type
    +
    + +

    Definition at line 778 of file xreducer.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 780 of file xreducer.hpp.

    + +
    +
    + +

    ◆ substepper_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::substepper_type = typename xexpression_type::const_stepper
    +
    + +

    Definition at line 771 of file xreducer.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::value_type = typename detail::evaluated_value_type_t<raw_value_type, is_xexpression<raw_value_type>::value>
    +
    + +

    Definition at line 776 of file xreducer.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xcontainer_inner_types< xreducer< F, CT, X, O > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 767 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html new file mode 100644 index 000000000..655220419 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html @@ -0,0 +1,115 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html new file mode 100644 index 000000000..f7c7a85d1 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html @@ -0,0 +1,293 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xrepeat< CT, R > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xrepeat< CT, R > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using reference = typename xexpression_type::const_reference
     
    using const_reference = typename xexpression_type::const_reference
     
    using size_type = typename xexpression_type::size_type
     
    using temporary_type = typename xexpression_type::temporary_type
     
    using extract_storage_type = xtl::mpl::eval_if_t< has_data_interface< xexpression_type >, detail::expr_storage_type< xexpression_type >, make_invalid_type<> >
     
    using storage_type = std::conditional_t< is_const, const extract_storage_type, extract_storage_type >
     
    + + + +

    +Static Public Attributes

    static constexpr bool is_const = std::is_const<std::remove_reference_t<CT>>::value
     
    +

    Detailed Description

    +
    template<class CT, class R>
    +struct xt::xcontainer_inner_types< xrepeat< CT, R > >
    +

    Definition at line 57 of file xrepeat.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::const_reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 61 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ extract_storage_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::extract_storage_type = xtl::mpl::eval_if_t< has_data_interface<xexpression_type>, detail::expr_storage_type<xexpression_type>, make_invalid_type<> >
    +
    + +

    Definition at line 67 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 60 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 62 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::storage_type = std::conditional_t<is_const, const extract_storage_type, extract_storage_type>
    +
    + +

    Definition at line 71 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::temporary_type = typename xexpression_type::temporary_type
    +
    + +

    Definition at line 63 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xcontainer_inner_types< xrepeat< CT, R > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 59 of file xrepeat.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ is_const

    + +
    +
    +
    +template<class CT , class R >
    + + + + + +
    + + + + +
    constexpr bool xt::xcontainer_inner_types< xrepeat< CT, R > >::is_const = std::is_const<std::remove_reference_t<CT>>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 65 of file xrepeat.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html new file mode 100644 index 000000000..4b1455643 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xscalar< CT > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html new file mode 100644 index 000000000..27852bc07 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xscalar< CT > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xscalar< CT > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using value_type = std::decay_t< CT >
     
    using reference = value_type &
     
    using const_reference = const value_type &
     
    using size_type = std::size_t
     
    +

    Detailed Description

    +
    template<class CT>
    +struct xt::xcontainer_inner_types< xscalar< CT > >
    +

    Definition at line 77 of file xscalar.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xcontainer_inner_types< xscalar< CT > >::const_reference = const value_type&
    +
    + +

    Definition at line 81 of file xscalar.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xcontainer_inner_types< xscalar< CT > >::reference = value_type&
    +
    + +

    Definition at line 80 of file xscalar.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xcontainer_inner_types< xscalar< CT > >::size_type = std::size_t
    +
    + +

    Definition at line 82 of file xscalar.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xcontainer_inner_types< xscalar< CT > >::value_type = std::decay_t<CT>
    +
    + +

    Definition at line 79 of file xscalar.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html new file mode 100644 index 000000000..3f884fc42 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >, including all inherited members.

    + + + + + + + + + + + + + +
    const_reference typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    inner_storage_type typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    layout (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >static
    reference typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    size_type typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    storage_getter typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    undecay_expression typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    undecay_shape typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    xexpression_type typedef (defined in xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >)xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html new file mode 100644 index 000000000..a294be577 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using undecay_expression = CT
     
    using reference = inner_reference_t< undecay_expression >
     
    using const_reference = typename xexpression_type::const_reference
     
    using size_type = typename xexpression_type::size_type
     
    using shape_type = std::decay_t< S >
     
    using undecay_shape = S
     
    using storage_getter = FST
     
    using inner_storage_type = typename storage_getter::type
     
    using temporary_type = typename detail::xtype_for_shape< S >::template type< typename xexpression_type::value_type, xexpression_type::static_layout >
     
    using storage_type = std::remove_reference_t< inner_storage_type >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >
    +

    Definition at line 70 of file xstrided_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::const_reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 75 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ inner_storage_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::inner_storage_type = typename storage_getter::type
    +
    + +

    Definition at line 80 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::reference = inner_reference_t<undecay_expression>
    +
    + +

    Definition at line 74 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::shape_type = std::decay_t<S>
    +
    + +

    Definition at line 77 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 76 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ storage_getter

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::storage_getter = FST
    +
    + +

    Definition at line 79 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::storage_type = std::remove_reference_t<inner_storage_type>
    +
    + +

    Definition at line 83 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::temporary_type = typename detail::xtype_for_shape< S>::template type<typename xexpression_type::value_type, xexpression_type::static_layout>
    +
    + +

    Definition at line 81 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ undecay_expression

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::undecay_expression = CT
    +
    + +

    Definition at line 73 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ undecay_shape

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::undecay_shape = S
    +
    + +

    Definition at line 78 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 72 of file xstrided_view.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xstrided_view< CT, S, L, FST > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 84 of file xstrided_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..dc0097255 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    layout (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..0f55a62f8 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using storage_type = std::remove_reference_t< EC >
     
    using reference = inner_reference_t< storage_type >
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using shape_type = std::array< typename storage_type::size_type, N >
     
    using strides_type = get_strides_t< shape_type >
     
    using backstrides_type = get_strides_t< shape_type >
     
    using inner_shape_type = shape_type
     
    using inner_strides_type = strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using temporary_type = xtensor_container< temporary_container_t< storage_type >, N, L, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    +

    Definition at line 170 of file xtensor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::backstrides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 178 of file xtensor.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 174 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 181 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::inner_shape_type = shape_type
    +
    + +

    Definition at line 179 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 180 of file xtensor.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::reference = inner_reference_t<storage_type>
    +
    + +

    Definition at line 173 of file xtensor.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::shape_type = std::array<typename storage_type::size_type, N>
    +
    + +

    Definition at line 176 of file xtensor.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 175 of file xtensor.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::storage_type = std::remove_reference_t<EC>
    +
    + +

    Definition at line 172 of file xtensor.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::strides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 177 of file xtensor.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::temporary_type = xtensor_container<temporary_container_t<storage_type>, N, L, Tag>
    +
    + +

    Definition at line 182 of file xtensor.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 183 of file xtensor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..614c27c7e --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    layout (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..c897cc97a --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using storage_type = EC
     
    using reference = inner_reference_t< storage_type >
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using shape_type = std::array< typename storage_type::size_type, N >
     
    using strides_type = get_strides_t< shape_type >
     
    using backstrides_type = get_strides_t< shape_type >
     
    using inner_shape_type = shape_type
     
    using inner_strides_type = strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using temporary_type = xtensor_container< EC, N, L, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >
    +

    Definition at line 46 of file xtensor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::backstrides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 54 of file xtensor.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 50 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 57 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::inner_shape_type = shape_type
    +
    + +

    Definition at line 55 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 56 of file xtensor.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::reference = inner_reference_t<storage_type>
    +
    + +

    Definition at line 49 of file xtensor.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::shape_type = std::array<typename storage_type::size_type, N>
    +
    + +

    Definition at line 52 of file xtensor.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 51 of file xtensor.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::storage_type = EC
    +
    + +

    Definition at line 48 of file xtensor.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::strides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 53 of file xtensor.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::temporary_type = xtensor_container<EC, N, L, Tag>
    +
    + +

    Definition at line 58 of file xtensor.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 59 of file xtensor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..17e73d7c0 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >, including all inherited members.

    + + + + + + + + + + + + + +
    backstrides_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    const_reference typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    inner_backstrides_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    inner_shape_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    inner_strides_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    layout (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >static
    reference typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    shape_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    size_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    storage_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    strides_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    temporary_type typedef (defined in xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >)xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..d3b058125 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html @@ -0,0 +1,373 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using storage_type = std::remove_reference_t< EC >
     
    using reference = inner_reference_t< storage_type >
     
    using const_reference = typename storage_type::const_reference
     
    using size_type = typename storage_type::size_type
     
    using shape_type = std::array< typename storage_type::size_type, N >
     
    using strides_type = get_strides_t< shape_type >
     
    using backstrides_type = get_strides_t< shape_type >
     
    using inner_shape_type = shape_type
     
    using inner_strides_type = strides_type
     
    using inner_backstrides_type = backstrides_type
     
    using temporary_type = xtensor_container< temporary_container_t< storage_type >, N, L, Tag >
     
    + + + +

    +Static Public Attributes

    static constexpr layout_type layout = L
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >
    +

    Definition at line 287 of file xtensor.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ backstrides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::backstrides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 295 of file xtensor.hpp.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::const_reference = typename storage_type::const_reference
    +
    + +

    Definition at line 291 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::inner_backstrides_type = backstrides_type
    +
    + +

    Definition at line 298 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::inner_shape_type = shape_type
    +
    + +

    Definition at line 296 of file xtensor.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::inner_strides_type = strides_type
    +
    + +

    Definition at line 297 of file xtensor.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::reference = inner_reference_t<storage_type>
    +
    + +

    Definition at line 290 of file xtensor.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::shape_type = std::array<typename storage_type::size_type, N>
    +
    + +

    Definition at line 293 of file xtensor.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::size_type = typename storage_type::size_type
    +
    + +

    Definition at line 292 of file xtensor.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::storage_type = std::remove_reference_t<EC>
    +
    + +

    Definition at line 289 of file xtensor.hpp.

    + +
    +
    + +

    ◆ strides_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::strides_type = get_strides_t<shape_type>
    +
    + +

    Definition at line 294 of file xtensor.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + +
    using xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::temporary_type = xtensor_container<temporary_container_t<storage_type>, N, L, Tag>
    +
    + +

    Definition at line 299 of file xtensor.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ layout

    + +
    +
    +
    +template<class EC , std::size_t N, layout_type L, class Tag >
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::layout = L
    +
    +staticconstexpr
    +
    + +

    Definition at line 300 of file xtensor.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html b/structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..be8144793 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html @@ -0,0 +1,116 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html b/structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..044aa2a64 --- /dev/null +++ b/structxt_1_1xcontainer__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html @@ -0,0 +1,325 @@ + + + + + + + +xtensor: xt::xcontainer_inner_types< xview< CT, S... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_inner_types< xview< CT, S... > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using reference = inner_reference_t< CT >
     
    using const_reference = typename xexpression_type::const_reference
     
    using size_type = typename xexpression_type::size_type
     
    using temporary_type = view_temporary_type_t< xexpression_type, S... >
     
    using extract_storage_type = xtl::mpl::eval_if_t< has_data_interface< xexpression_type >, detail::expr_storage_type< xexpression_type >, make_invalid_type<> >
     
    using storage_type = std::conditional_t< is_const, const extract_storage_type, extract_storage_type >
     
    + + + + + +

    +Static Public Attributes

    static constexpr layout_type layout
     
    static constexpr bool is_const = std::is_const<std::remove_reference_t<CT>>::value
     
    +

    Detailed Description

    +
    template<class CT, class... S>
    +struct xt::xcontainer_inner_types< xview< CT, S... > >
    +

    Definition at line 293 of file xview.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_reference

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::const_reference = typename xexpression_type::const_reference
    +
    + +

    Definition at line 297 of file xview.hpp.

    + +
    +
    + +

    ◆ extract_storage_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::extract_storage_type = xtl::mpl::eval_if_t< has_data_interface<xexpression_type>, detail::expr_storage_type<xexpression_type>, make_invalid_type<> >
    +
    + +

    Definition at line 307 of file xview.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::reference = inner_reference_t<CT>
    +
    + +

    Definition at line 296 of file xview.hpp.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::size_type = typename xexpression_type::size_type
    +
    + +

    Definition at line 298 of file xview.hpp.

    + +
    +
    + +

    ◆ storage_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::storage_type = std::conditional_t<is_const, const extract_storage_type, extract_storage_type>
    +
    + +

    Definition at line 311 of file xview.hpp.

    + +
    +
    + +

    ◆ temporary_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::temporary_type = view_temporary_type_t<xexpression_type, S...>
    +
    + +

    Definition at line 299 of file xview.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xcontainer_inner_types< xview< CT, S... > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 295 of file xview.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ is_const

    + +
    +
    +
    +template<class CT , class... S>
    + + + + + +
    + + + + +
    constexpr bool xt::xcontainer_inner_types< xview< CT, S... > >::is_const = std::is_const<std::remove_reference_t<CT>>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 305 of file xview.hpp.

    + +
    +
    + +

    ◆ layout

    + +
    +
    +
    +template<class CT , class... S>
    + + + + + +
    + + + + +
    constexpr layout_type xt::xcontainer_inner_types< xview< CT, S... > >::layout
    +
    +staticconstexpr
    +
    +Initial value:
    = detail::is_contiguous_view<xexpression_type, S...>::value
    +
    ? xexpression_type::static_layout
    + + +
    +

    Definition at line 301 of file xview.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xcontainer__iterable__types-members.html b/structxt_1_1xcontainer__iterable__types-members.html new file mode 100644 index 000000000..d2f61db40 --- /dev/null +++ b/structxt_1_1xcontainer__iterable__types-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcontainer_iterable_types< D > Member List
    +
    +
    + +

    This is the complete list of members for xt::xcontainer_iterable_types< D >, including all inherited members.

    + + + + +
    const_stepper typedef (defined in xt::xcontainer_iterable_types< D >)xt::xcontainer_iterable_types< D >
    inner_shape_type typedef (defined in xt::xcontainer_iterable_types< D >)xt::xcontainer_iterable_types< D >
    stepper typedef (defined in xt::xcontainer_iterable_types< D >)xt::xcontainer_iterable_types< D >
    +
    + + + + diff --git a/structxt_1_1xcontainer__iterable__types.html b/structxt_1_1xcontainer__iterable__types.html new file mode 100644 index 000000000..1a8b8a05d --- /dev/null +++ b/structxt_1_1xcontainer__iterable__types.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::xcontainer_iterable_types< D > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcontainer_iterable_types< D > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using inner_shape_type = typename xcontainer_inner_types< D >::inner_shape_type
     
    using stepper = xstepper< D >
     
    using const_stepper = xstepper< const D >
     
    +

    Detailed Description

    +
    template<class D>
    +struct xt::xcontainer_iterable_types< D >
    +

    Definition at line 34 of file xcontainer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class D >
    + + + + +
    using xt::xcontainer_iterable_types< D >::const_stepper = xstepper<const D>
    +
    + +

    Definition at line 38 of file xcontainer.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class D >
    + + + + +
    using xt::xcontainer_iterable_types< D >::inner_shape_type = typename xcontainer_inner_types<D>::inner_shape_type
    +
    + +

    Definition at line 36 of file xcontainer.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class D >
    + + + + +
    using xt::xcontainer_iterable_types< D >::stepper = xstepper<D>
    +
    + +

    Definition at line 37 of file xcontainer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xcsv__config-members.html b/structxt_1_1xcsv__config-members.html new file mode 100644 index 000000000..7c2de3903 --- /dev/null +++ b/structxt_1_1xcsv__config-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xcsv_config Member List
    +
    +
    + +

    This is the complete list of members for xt::xcsv_config, including all inherited members.

    + + + + + + +
    comments (defined in xt::xcsv_config)xt::xcsv_config
    delimiter (defined in xt::xcsv_config)xt::xcsv_config
    max_rows (defined in xt::xcsv_config)xt::xcsv_config
    skip_rows (defined in xt::xcsv_config)xt::xcsv_config
    xcsv_config() (defined in xt::xcsv_config)xt::xcsv_configinline
    +
    + + + + diff --git a/structxt_1_1xcsv__config.html b/structxt_1_1xcsv__config.html new file mode 100644 index 000000000..0ede853b3 --- /dev/null +++ b/structxt_1_1xcsv__config.html @@ -0,0 +1,219 @@ + + + + + + + +xtensor: xt::xcsv_config Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xcsv_config Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    char delimiter
     
    std::size_t skip_rows
     
    std::ptrdiff_t max_rows
     
    std::string comments
     
    +

    Detailed Description

    +
    +

    Definition at line 240 of file xcsv.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xcsv_config()

    + +
    +
    + + + + + +
    + + + + + + + +
    xt::xcsv_config::xcsv_config ()
    +
    +inline
    +
    + +

    Definition at line 247 of file xcsv.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ comments

    + +
    +
    + + + + +
    std::string xt::xcsv_config::comments
    +
    + +

    Definition at line 245 of file xcsv.hpp.

    + +
    +
    + +

    ◆ delimiter

    + +
    +
    + + + + +
    char xt::xcsv_config::delimiter
    +
    + +

    Definition at line 242 of file xcsv.hpp.

    + +
    +
    + +

    ◆ max_rows

    + +
    +
    + + + + +
    std::ptrdiff_t xt::xcsv_config::max_rows
    +
    + +

    Definition at line 244 of file xcsv.hpp.

    + +
    +
    + +

    ◆ skip_rows

    + +
    +
    + + + + +
    std::size_t xt::xcsv_config::skip_rows
    +
    + +

    Definition at line 243 of file xcsv.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xcsv.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xellipsis__tag-members.html b/structxt_1_1xellipsis__tag-members.html new file mode 100644 index 000000000..a38f69fca --- /dev/null +++ b/structxt_1_1xellipsis__tag-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xellipsis_tag Member List
    +
    +
    + +

    This is the complete list of members for xt::xellipsis_tag, including all inherited members.

    + + +
    convert() const noexcept (defined in xt::xellipsis_tag)xt::xellipsis_taginline
    +
    + + + + diff --git a/structxt_1_1xellipsis__tag.html b/structxt_1_1xellipsis__tag.html new file mode 100644 index 000000000..68f70cf35 --- /dev/null +++ b/structxt_1_1xellipsis__tag.html @@ -0,0 +1,151 @@ + + + + + + + +xtensor: xt::xellipsis_tag Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xellipsis_tag Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    template<class T >
    xellipsis_tag convert () const noexcept
     
    +

    Detailed Description

    +
    +

    Definition at line 93 of file xslice.hpp.

    +

    Member Function Documentation

    + +

    ◆ convert()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    xellipsis_tag xt::xellipsis_tag::convert () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 95 of file xslice.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xexpression__tag-members.html b/structxt_1_1xexpression__tag-members.html new file mode 100644 index 000000000..6c0ff0f4d --- /dev/null +++ b/structxt_1_1xexpression__tag-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xexpression_tag< T > Member List
    +
    +
    + +

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

    + + +
    type typedef (defined in xt::xexpression_tag< T >)xt::xexpression_tag< T >
    +
    + + + + diff --git a/structxt_1_1xexpression__tag.html b/structxt_1_1xexpression__tag.html new file mode 100644 index 000000000..0a25c633b --- /dev/null +++ b/structxt_1_1xexpression__tag.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xexpression_tag< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xexpression_tag< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = extension::expression_tag_and_t< extension::get_expression_tag_t< std::decay_t< const_xclosure_t< T > > >... >
     
    +

    Detailed Description

    +
    template<class... T>
    +struct xt::xexpression_tag< T >
    +

    Definition at line 383 of file xexpression.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class... T>
    + + + + +
    using xt::xexpression_tag< T >::type = extension::expression_tag_and_t< extension::get_expression_tag_t<std::decay_t<const_xclosure_t<T> >>...>
    +
    + +

    Definition at line 385 of file xexpression.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xfunction__cache.html b/structxt_1_1xfunction__cache.html new file mode 100644 index 000000000..d1c00f67a --- /dev/null +++ b/structxt_1_1xfunction__cache.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt::xfunction_cache< promote > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xfunction_cache< promote > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xfunction_cache< promote >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class promote>
    +struct xt::xfunction_cache< promote >
    +

    Definition at line 124 of file xfunction.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xfunction__cache.png b/structxt_1_1xfunction__cache.png new file mode 100644 index 0000000000000000000000000000000000000000..6a38a5eda6c576bc194d2e62a5c09ea0659e0ad4 GIT binary patch literal 1055 zcmeAS@N?(olHy`uVBq!ia0y~yU<6`@01jp#S+j*V2}nr?_=LFr|NkGzeDUUMY5$?+ z76zIH64TGTIB?(qP&|0jW`jZ8}a9KpNxj=ez(3;8&w6Cbg5VzJ)>i2+|4w3iOZxUkEN4DytJk+2?$!L z(mKgYRdb5t%Y*&zZd8;1x0(5W)}P%P zckSMOyS`?x{r&CMUl+$#`A+`yWOHq&zT~OJllHRpDV|mMwx*i@x4^IR-R8Fsee)@; zxckBT`D(#>_2*erXPLyUUHxyi=i5-Zb10*d`un0=E33a&-%#PTIUTw5oOFGZ(c*RN%GN7Oy56VjR88gc zZEHNwxV-4x>Mdc9x3$TNF5Y-jL^pWvHLw1%`^~-ocTAgi>&Nc{^RHaee;#w?(p~?x z2kutJ`h8FKVvf@%&@wt`vJXWgg^;>f3na7kR zjrDFo4&%y@Nlu=~u~QVBl{Rh0OjgDZay1Mp41r668a(XmE@?U_tQ1k0H2Y!+mw>w# zD~DPuQ_CbTMxb7Xg+L_%L7EO4Km}7mxCFd_(yCJ_mHuSsb@q&q@n#K!^6y9P+O~zf zdMD?lRa(xkI(66X_DNoM?>g`Fc{$@6->;o_?M$2UdB3|)JMXV)`{rrR_y3D7>CV6V zZ`u6%eR==w=GWfaU7PcLd-dJ-XkO;EMu-a#T)9PmPYmQs|<=07^?mi`}`_43_^I-MFVdQ&MBb@0LX9z@Bjb+ literal 0 HcmV?d00001 diff --git a/structxt_1_1xfunctor__view__temporary__type-members.html b/structxt_1_1xfunctor__view__temporary__type-members.html new file mode 100644 index 000000000..ecd8f8382 --- /dev/null +++ b/structxt_1_1xfunctor__view__temporary__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xfunctor_view_temporary_type< F, E > Member List
    +
    +
    + +

    This is the complete list of members for xt::xfunctor_view_temporary_type< F, E >, including all inherited members.

    + + +
    type typedef (defined in xt::xfunctor_view_temporary_type< F, E >)xt::xfunctor_view_temporary_type< F, E >
    +
    + + + + diff --git a/structxt_1_1xfunctor__view__temporary__type.html b/structxt_1_1xfunctor__view__temporary__type.html new file mode 100644 index 000000000..52a52e1e4 --- /dev/null +++ b/structxt_1_1xfunctor__view__temporary__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xfunctor_view_temporary_type< F, E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xfunctor_view_temporary_type< F, E > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename detail::functorview_temporary_type_impl< F, typename E::shape_type, E::static_layout >::type
     
    +

    Detailed Description

    +
    template<class F, class E>
    +struct xt::xfunctor_view_temporary_type< F, E >
    +

    Definition at line 390 of file xfunctor_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class F , class E >
    + + + + +
    using xt::xfunctor_view_temporary_type< F, E >::type = typename detail::functorview_temporary_type_impl<F, typename E::shape_type, E::static_layout>::type
    +
    + +

    Definition at line 392 of file xfunctor_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xinitial-members.html b/structxt_1_1xinitial-members.html new file mode 100644 index 000000000..37406c9cb --- /dev/null +++ b/structxt_1_1xinitial-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xinitial< T > Member List
    +
    +
    + +

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

    + + + + +
    m_val (defined in xt::xinitial< T >)xt::xinitial< T >
    value() const (defined in xt::xinitial< T >)xt::xinitial< T >inline
    xinitial(T val) (defined in xt::xinitial< T >)xt::xinitial< T >inline
    +
    + + + + diff --git a/structxt_1_1xinitial.html b/structxt_1_1xinitial.html new file mode 100644 index 000000000..55779036b --- /dev/null +++ b/structxt_1_1xinitial.html @@ -0,0 +1,215 @@ + + + + + + + +xtensor: xt::xinitial< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xinitial< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xinitial< T >:
    +
    +
    + +
    + + + + + + +

    +Public Member Functions

    constexpr xinitial (T val)
     
    constexpr T value () const
     
    + + + +

    +Public Attributes

    m_val
     
    +

    Detailed Description

    +
    template<class T = double>
    +struct xt::xinitial< T >
    +

    Definition at line 49 of file xreducer.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xinitial()

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + + + + + +
    constexpr xt::xinitial< T >::xinitial (val)
    +
    +inlineconstexpr
    +
    + +

    Definition at line 51 of file xreducer.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ value()

    + +
    +
    +
    +template<class T = double>
    + + + + + +
    + + + + + + + +
    constexpr T xt::xinitial< T >::value () const
    +
    +inlineconstexpr
    +
    + +

    Definition at line 56 of file xreducer.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_val

    + +
    +
    +
    +template<class T = double>
    + + + + +
    T xt::xinitial< T >::m_val
    +
    + +

    Definition at line 61 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xinitial.png b/structxt_1_1xinitial.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7019372f28f41ac06b4c3bf16782c83d29bb6c GIT binary patch literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^%|IN$!3+|4X?7JzNeB3Zxc>kDAIN<1=4)yHq2(3^ zngtTm&%8Kr-~doOc+%w+KsnBmAirP+ARi3OnPy*MU|?M9>Eakt!T5IW-AT;~Jgvof zvp)ax-xJH?ED#g@`ca9|>5c zoX_gSgu43b(zyngk5{`uXT z4iyEi%Y0Zo-}2l+ssD}sOK&gw`1jz3CF<-yb)3(Y{)?Qv@$AvG|K~j48_u}=eZqRr z?f?C3O*RI(rpmS@e+`fja^s5#eU|<3x9uyrj9-V2AB<9TF8}Qm`qg&s{RducA?07? zTUWgbix*-Ky&BBbmXIOAkg(3h<=jg}C8J35gbJHy&UYFfb{fb&;^Vm}eo#SaDyy>r zOLIp@xB-i^K}SagoLeKx%-}PvL1np?MAJjlwzPX~=eHl-#a(=I@{{Oc7FP=fs}ah0F)K=*U7 iP5QEnlbPYnRelxUd50@59eNLpO$JX_KbLh*2~7auK>cz6 literal 0 HcmV?d00001 diff --git a/structxt_1_1xiterable__inner__types.html b/structxt_1_1xiterable__inner__types.html new file mode 100644 index 000000000..f8c3aba67 --- /dev/null +++ b/structxt_1_1xiterable__inner__types.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< D > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< D > Struct Template Reference
    +
    +
    +

    Detailed Description

    +
    template<class D>
    +struct xt::xiterable_inner_types< D >
    +

    Definition at line 23 of file xiterable.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xiterable.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..19e93a06d --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..4b3ffe1c9 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xarray_adaptor< EC, L, SC, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xarray_adaptor< EC, L, SC, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xarray_adaptor< EC, L, SC, Tag > >::inner_shape_type
     
    using stepper = xstepper< xarray_adaptor< EC, L, SC, Tag > >
     
    using const_stepper = xstepper< const xarray_adaptor< EC, L, SC, Tag > >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC, class Tag>
    +struct xt::xiterable_inner_types< xarray_adaptor< EC, L, SC, Tag > >
    +

    Definition at line 192 of file xarray.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xarray__adaptor_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..383d481be46585a885b19c923dcd6ab9dc40bc50 GIT binary patch literal 1433 zcmcIkX;)JR5Pj^6!KzVAL=fQtjfzNsfUL5bhXHLMtjZ#RCnS1BXmpNzV+^lo%r`1#sr~&|> z2H~BE03ees<>!>;q}7I6cUKA;=Lnw85{X1gr{~16jAv|%6PPH}PrcJ^ZEaHB10H-R zovFkS-8}$l|8JPf77YP_0th+TdnU-tUw9EW_bme1ebQ!AV)SN)pv_~F;mA)3pPF<0 z_GH(x3Dqj0;<0$FGK_!`vZq}R^O00s<}ic5@ntji zZVH74x8xkPD)@L-Q!}|-v2S_mt*e)vPCCd~4Ad{xh@lV$Yz09zEyYB=j(zsAEu>D- z*5`@n^LCFWaE?VcYg62O%&XVkCQ}&k#m&VjQL}rH`8GEN{DybTEVULZ-jW5IJa;f< z7KN077Ji9!Im~8knQuJ3<{ur44K-MOz0!=ch)5bKKD+v4TM0AoP?GsP?*kScfq^VX zt9%>h8)rI;2=x^Q0yPcpAPY(FV=h{}!=MMZ!c-8;ClWO6+#MGUeZ<>p*o@Mm+rsw= zTkHC0!vU}GBBvGdXqF*2m7dw!Fsz=h!i^SgtgStq2ll547YYbt9r|N7s~6X9xJ{!% z!ta9roj8PEP&cVo!ko`57g?1? zCZQXIbw< zi@h(I7V7XNhF{N~_TNv?A|LCi0}DcZZFd6eI~ElH6=2;OMgTwlP+d)y101yZ!1t(x zC>9ksB@d#3U5bzbAa4)L0QO8WaBA0ANgh)C-=+3I2N%o(&=oT!I>jox0bV-*Wq=Cy z@L@>02c9V11KumIL~hFJoP8a$Wl4D2v0Ux_EdOD*h@G3;>M2LrpkForeT_frMrI%& zOUGl_X8U*^JU56?>^bznRJUVaXY=H{wa;fNODJsX&IzO$&VO&eSDm_W+z)SNKr>mL z>gkQ7g-p8#N7p%v$Ah|p>DeDiO*CJwcsG7P<8GV_Yv(<)c3ePa7+qACdT3;I+F9AXD=sy|AS6xecff0jNoiZR_p;2jBc>E`iU(;Kd^#gSC%cZG|bc@FA}O}JIt z&C87(JrA56Bn&Z%J3FeP*@-nHRaRLWbklvr$LmSG$&|2ek5~I+GuvkuxWc}sILbkm zv3I{!$t2A;I-~-xbvmA>fhF-Ro|+H{-d$4A-yFIB5sfaL;-*rD{_vJXpp7(Z_be4( z>JBD_^U{20#Zlq`>Up0^^(&s&5DQKfq^Yrt8G6*);jBq7MnF)JR`MBL4}DoENls+t z2yY+!%|I9Oj%wcSQyk1?mdV72f#n@W%%vkWA&tYl?ff$TOA4(VQI1+_@1M`>;3tg! z_>9)Q;EehkpDmVk|1Bb%sMD1P>cI%;Ryybir)l$%cur V*L`iEP%Jf30CIMBs&WWQ`v=WThFJgr literal 0 HcmV?d00001 diff --git a/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..990ede92f --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..1c0fa08c1 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xarray_container< EC, L, SC, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xarray_container< EC, L, SC, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xarray_container< EC, L, SC, Tag > >::inner_shape_type
     
    using stepper = xstepper< xarray_container< EC, L, SC, Tag > >
     
    using const_stepper = xstepper< const xarray_container< EC, L, SC, Tag > >
     
    +

    Detailed Description

    +
    template<class EC, layout_type L, class SC, class Tag>
    +struct xt::xiterable_inner_types< xarray_container< EC, L, SC, Tag > >
    +

    Definition at line 63 of file xarray.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xarray__container_3_01_e_c_00_01_l_00_01_s_c_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5fe9446f637cacc45832fa277b8dff58ac7947 GIT binary patch literal 1434 zcmb`H`#;kQ7{|X9#fb8H(aEb9r@nOLOGreKNH#N^tz&LArWR#5xs2peq*xuSw$)uGb6;LrjK+DvLbK{m>IyDAg1P#)aqA=5U~T9`q)H!-x4XHL`E%Fe1z z9SJ(vYn40Szj;)geR0Uq7S*vM4}~GsM|5>*wvUS#ahqjG2em)U<8~qwsGz>YeXy^T zUR<7S>|@1kBsxd0w6&v2PlkwkRpwCYmyES_slDIE__;b$hB#@M{9Prl8L z_pe+GH9VqwEUE>o#f*X$2A8eou^8-9f5h;Pr;g?2Sh6IJ(pzKA+d+mEM&d<8y?dnI ztNvc0q*~mY2i6&cP@tlr*nX9-J>5E=XSN?ortkd)89n$gpuG5nWjztUAf_b=KS|KX zNJ{PZv|sYs5w!hK{e+Z%K`T}*jC`3p%l*P2p4E7kRw--sWf=48Vmta0V!s3%6aTIe z&2@Bay!q{#wsUOt{lbLth#>*eE5Zz=GejflkA1Qe=~6b51jk$`q~)n~&@Lyy2$W0- zUuy;X@n_mZ1A4P5lxr-?V9l_h5V`ii9s3saGxez&c$EekOx?PC6Fkwg9+TPE0=J?n z?#o~3qh|HB5gtS zNnj+Mu=wCY;z(lvsZCTE(}ADy2u_-O+0)dB$)3ey_1iW}z$2B^=Ul%-Qr2iiCRL*} zl4$s?;i_-l2Q5XQfM5@ql+N^ zu-H^E9d3eJdfi#Qliu*opJ7~WwxE;4^4yf{L!@}ki{M>*zeVkipu*9d1N$jwrnXg- z7TYlU1_$JnWw=q*C>KJk$}Fj6PmHDl8*yeUi#aT}wQm$UD|eoaOgA=GaPX%s4~|w) phfwGI2gEtw!Y~F}fy?z}1GN%#KCJobh~kR^2v^TjWzIo2{sC~ex*z}m literal 0 HcmV?d00001 diff --git a/structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html new file mode 100644 index 000000000..eade65699 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xbroadcast< CT, X > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html new file mode 100644 index 000000000..a51837625 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xbroadcast_3_01_c_t_00_01_x_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xbroadcast< CT, X > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xbroadcast< CT, X > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using inner_shape_type = promote_shape_t< typename xexpression_type::shape_type, X >
     
    using const_stepper = typename xexpression_type::const_stepper
     
    using stepper = const_stepper
     
    +

    Detailed Description

    +
    template<class CT, class X>
    +struct xt::xiterable_inner_types< xbroadcast< CT, X > >
    +

    Definition at line 76 of file xbroadcast.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xiterable_inner_types< xbroadcast< CT, X > >::const_stepper = typename xexpression_type::const_stepper
    +
    + +

    Definition at line 80 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xiterable_inner_types< xbroadcast< CT, X > >::inner_shape_type = promote_shape_t<typename xexpression_type::shape_type, X>
    +
    + +

    Definition at line 79 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xiterable_inner_types< xbroadcast< CT, X > >::stepper = const_stepper
    +
    + +

    Definition at line 81 of file xbroadcast.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class X >
    + + + + +
    using xt::xiterable_inner_types< xbroadcast< CT, X > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 78 of file xbroadcast.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html new file mode 100644 index 000000000..ef2764ca7 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xchunked_array< chunk_storage > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html new file mode 100644 index 000000000..7bc0df779 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xchunked__array_3_01chunk__storage_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xchunked_array< chunk_storage > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xchunked_array< chunk_storage > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using chunk_type = typename chunk_storage::value_type
     
    using inner_shape_type = typename chunk_type::shape_type
     
    using const_stepper = xindexed_stepper< xchunked_array< chunk_storage >, true >
     
    using stepper = xindexed_stepper< xchunked_array< chunk_storage >, false >
     
    +

    Detailed Description

    +
    template<class chunk_storage>
    +struct xt::xiterable_inner_types< xchunked_array< chunk_storage > >
    +

    Definition at line 47 of file xchunked_array.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ chunk_type

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xiterable_inner_types< xchunked_array< chunk_storage > >::chunk_type = typename chunk_storage::value_type
    +
    + +

    Definition at line 49 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xiterable_inner_types< xchunked_array< chunk_storage > >::const_stepper = xindexed_stepper<xchunked_array<chunk_storage>, true>
    +
    + +

    Definition at line 51 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xiterable_inner_types< xchunked_array< chunk_storage > >::inner_shape_type = typename chunk_type::shape_type
    +
    + +

    Definition at line 50 of file xchunked_array.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class chunk_storage >
    + + + + +
    using xt::xiterable_inner_types< xchunked_array< chunk_storage > >::stepper = xindexed_stepper<xchunked_array<chunk_storage>, false>
    +
    + +

    Definition at line 52 of file xchunked_array.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html new file mode 100644 index 000000000..e18b372d6 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html new file mode 100644 index 000000000..b37376657 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xdynamic__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html @@ -0,0 +1,220 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Types

    using inner_shape_type = S
     
    using inner_strides_type = inner_shape_type
     
    using inner_backstrides_type = inner_shape_type
     
    using const_stepper = xindexed_stepper< const xdynamic_view< CT, S, L, FST >, true >
     
    using stepper = xindexed_stepper< xdynamic_view< CT, S, L, FST >, false >
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >
    +

    Definition at line 44 of file xdynamic_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >::const_stepper = xindexed_stepper<const xdynamic_view<CT, S, L, FST>, true>
    +
    + +

    Definition at line 58 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >::inner_backstrides_type = inner_shape_type
    +
    + +

    Definition at line 48 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >::inner_shape_type = S
    +
    + +

    Definition at line 46 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >::inner_strides_type = inner_shape_type
    +
    + +

    Definition at line 47 of file xdynamic_view.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xdynamic_view< CT, S, L, FST > >::stepper = xindexed_stepper<xdynamic_view<CT, S, L, FST>, false>
    +
    + +

    Definition at line 59 of file xdynamic_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..48945d00b --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..1c2d75661 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xfixed_adaptor< EC, S, L, SH, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >::inner_shape_type
     
    using stepper = xstepper< xfixed_adaptor< EC, S, L, SH, Tag > >
     
    using const_stepper = xstepper< const xfixed_adaptor< EC, S, L, SH, Tag > >
     
    +

    Detailed Description

    +
    template<class EC, class S, layout_type L, bool SH, class Tag>
    +struct xt::xiterable_inner_types< xfixed_adaptor< EC, S, L, SH, Tag > >
    +

    Definition at line 424 of file xfixed.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xfixed__adaptor_3_01_e_c_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f3feecd3f3a37ba82e0ef477f797a6a42a4a51d5 GIT binary patch literal 1469 zcmcJP>pRp56vuxqh1Mlx8MCtMnW0I#{g8^0H7-+bkCE%Tjmzv%YE5!$V!JR()K4zI znNaSRBIGhDL|7Trx@8$-(UVNUD=H}v{vO{+V z001g@N1QtV$iPzVrYI-P5}wdhT99r|9(G$>TT=OPQ4o{aS#EI4Lip0g(1zx$$uYv*bx0aGndjDwbaes%< z<)R(KoXdg1>`Z9NS)(`Tw{*>N0eSj>87O*t*<5~Oe0YkIDB2Vmv0B893KjdC(uyNv zPrnX06C+sOhKE$5L@f1;Vb6z-$70!S?R_kS2&OgheZm)C#>^x{pWrf^YUB&ySF!BO zTNg9(DyLi{=4yuCGW4t9EF0A$&*?`C^}uOAo5W&jkkI=kRr>-*XJnFW!j^QZA0Jr4T_z#e$t*tQp=c{i~?2l_Lr;%>YT+)LJ$8L zr?ELVh|*9U{AicUfR0)!L(uLsy6_?DmnE0qEq8-GO`Z)_86nM)V#B7BzN*<)Ns;lU zVWU-X0yZfCsexBLFF-(=0*s68e2UTox)?+<;dpIDb@u*qzIMZ5n@C4g^BAuFD< z*rF13xki28)0KPAR9@}|3XQ_-f)Mx{v`~9Uy8TXx^dJ<*z>sCCnd!>8puc2T_&~yavZvdB zRuqpes^8Q*2i278ePl;%pKO8Im)aN`Lm+55K||o5c2(cBU$Z8aCDf&CCWpK}#9uB= zhso|F&c@1?Rdnc>ZhwI>>6HhfetV=zRilIFSzZF8jhLCY#x=~T%2=>L61CeY*Ii4B z`_sL^@jUHv)WFP`(;dU1%kTKqB(tpCTP=rKpoJZCd&bv*(Qfl7tJvl#v1WO^t=+z u4aA>xtSa~~3Sa3^088&edrI$m3)Q-R_Ndd#@LrWZS^#h7f~)y4=*r)` + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..09b0cdc4a --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xfixed_container< ET, S, L, SH, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xfixed_container< ET, S, L, SH, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xfixed_container< ET, S, L, SH, Tag > >::inner_shape_type
     
    using stepper = xstepper< xfixed_container< ET, S, L, SH, Tag > >
     
    using const_stepper = xstepper< const xfixed_container< ET, S, L, SH, Tag > >
     
    +

    Detailed Description

    +
    template<class ET, class S, layout_type L, bool SH, class Tag>
    +struct xt::xiterable_inner_types< xfixed_container< ET, S, L, SH, Tag > >
    +

    Definition at line 275 of file xfixed.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xfixed__container_3_01_e_t_00_01_s_00_01_l_00_01_s_h_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2faeab8c7551135faeb12fc8a0673c90b7fe1575 GIT binary patch literal 1448 zcmb`H`#aQm6vw~P7IKNzE}eMa=s*vdOom9_is*dFFD-V5O}^Kve!_e3-~sX; z0CQTAn&LUEUjTsI{|?(Nb>jf=nI+_YEHGJ4P`{i2nkrKY&X`;mUwT>oZX$!4W;7Mn zFgRK6$ZBOv=Wr8>L9S6PIS%-i}Dgxi?wT2J5r6>~C$dY23nfpR##0SKl4Bl;T|tBm)$$ zB)a-=N07Qf%%$98o;(q852e!()4ik`Ipy?~9d*UQNi8Y9>aQ&7#{I z1vXJfm_i92Q}?BWE)i2A^*qzigQ99MwB91nOB^M$mj-h$F8Efp%Qr^w?>sk4b@Ctz zN%z(VXMS}Qz9>rHDr`(t&Y|dD64WkA9w!-{?Hpcg+O)P7&uZ{3&Z_&(0(y+8?CPLbVN^gU@k3OaU`Am#)b{^BCz9>-uR#>MHU_ zVdwKeS?@;%8de{-U+hhPI}hn!qV6Ij!TjC zvF|VTF*XIVwiM1e)gJ9QY2=-7Z}=+Tp8Ch?aSHg#@221GDQ6=PA{Ir{Y5A8yiKDWE z>+6&3%Ojl=5Sg1o#>L7;=UA+5q;~#KZR`^TXN0TWohiM(dmrXvB)8}-oG@mp z^xoD{8S4>8>t>@+16;m`8n&Wt0e!T?H;ulT@8mki;y+Z2D}EEN<{uW@9#>72Eac3E zJc=6CLTN?Ohs|16uF&SVj>ivu&RBRe=pgu=w|)aV&BaFqc;;YQr)9+>F*9ia@m7V@ z`wj#(r%ycJEnLL2eN)%B^*pjFD(U~wiyJSfp;ld}Ug*B1tG>pJ`ymbYAJ9x4w|IN! zI^Tq3|J*%RqY1SQ@>jr2Pjmg&I5xs + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xfunction< F, CT... > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..be7ec916b --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xfunction_3_01_f_00_01_c_t_8_8_8_01_4_01_4.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xfunction< F, CT... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xfunction< F, CT... > > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using inner_shape_type = promote_shape_t< typename std::decay_t< CT >::shape_type... >
     
    using const_stepper = xfunction_stepper< F, CT... >
     
    using stepper = const_stepper
     
    +

    Detailed Description

    +
    template<class F, class... CT>
    +struct xt::xiterable_inner_types< xfunction< F, CT... > >
    +

    Definition at line 138 of file xfunction.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xiterable_inner_types< xfunction< F, CT... > >::const_stepper = xfunction_stepper<F, CT...>
    +
    + +

    Definition at line 141 of file xfunction.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xiterable_inner_types< xfunction< F, CT... > >::inner_shape_type = promote_shape_t<typename std::decay_t<CT>::shape_type...>
    +
    + +

    Definition at line 140 of file xfunction.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class F , class... CT>
    + + + + +
    using xt::xiterable_inner_types< xfunction< F, CT... > >::stepper = const_stepper
    +
    + +

    Definition at line 142 of file xfunction.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html new file mode 100644 index 000000000..20da8fcba --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xgenerator< C, R, S > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html new file mode 100644 index 000000000..3040e244c --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xgenerator_3_01_c_00_01_r_00_01_s_01_4_01_4.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xgenerator< C, R, S > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xgenerator< C, R, S > > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using inner_shape_type = S
     
    using const_stepper = xindexed_stepper< xgenerator< C, R, S >, true >
     
    using stepper = const_stepper
     
    +

    Detailed Description

    +
    template<class C, class R, class S>
    +struct xt::xiterable_inner_types< xgenerator< C, R, S > >
    +

    Definition at line 64 of file xgenerator.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class C , class R , class S >
    + + + + +
    using xt::xiterable_inner_types< xgenerator< C, R, S > >::const_stepper = xindexed_stepper<xgenerator<C, R, S>, true>
    +
    + +

    Definition at line 67 of file xgenerator.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class C , class R , class S >
    + + + + +
    using xt::xiterable_inner_types< xgenerator< C, R, S > >::inner_shape_type = S
    +
    + +

    Definition at line 66 of file xgenerator.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class C , class R , class S >
    + + + + +
    using xt::xiterable_inner_types< xgenerator< C, R, S > >::stepper = const_stepper
    +
    + +

    Definition at line 68 of file xgenerator.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html new file mode 100644 index 000000000..6a3060711 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4-members.html @@ -0,0 +1,110 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xindex_view< CT, I > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html new file mode 100644 index 000000000..839c93f40 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xindex__view_3_01_c_t_00_01_i_01_4_01_4.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xindex_view< CT, I > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xindex_view< CT, I > > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using inner_shape_type = std::array< std::size_t, 1 >
     
    using const_stepper = xindexed_stepper< xindex_view< CT, I >, true >
     
    using stepper = xindexed_stepper< xindex_view< CT, I >, false >
     
    +

    Detailed Description

    +
    template<class CT, class I>
    +struct xt::xiterable_inner_types< xindex_view< CT, I > >
    +

    Definition at line 68 of file xindex_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::xiterable_inner_types< xindex_view< CT, I > >::const_stepper = xindexed_stepper<xindex_view<CT, I>, true>
    +
    + +

    Definition at line 71 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::xiterable_inner_types< xindex_view< CT, I > >::inner_shape_type = std::array<std::size_t, 1>
    +
    + +

    Definition at line 70 of file xindex_view.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT , class I >
    + + + + +
    using xt::xiterable_inner_types< xindex_view< CT, I > >::stepper = xindexed_stepper<xindex_view<CT, I>, false>
    +
    + +

    Definition at line 72 of file xindex_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html new file mode 100644 index 000000000..039195fe1 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xmasked_view< CTD, CTM > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html new file mode 100644 index 000000000..a4286b324 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xmasked__view_3_01_c_t_d_00_01_c_t_m_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xmasked_view< CTD, CTM > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xmasked_view< CTD, CTM > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using masked_view_type = xmasked_view< CTD, CTM >
     
    using inner_shape_type = typename std::decay_t< CTD >::inner_shape_type
     
    using stepper = xmasked_view_stepper< masked_view_type, false >
     
    using const_stepper = xmasked_view_stepper< masked_view_type, true >
     
    +

    Detailed Description

    +
    template<class CTD, class CTM>
    +struct xt::xiterable_inner_types< xmasked_view< CTD, CTM > >
    +

    Definition at line 54 of file xmasked_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xiterable_inner_types< xmasked_view< CTD, CTM > >::const_stepper = xmasked_view_stepper<masked_view_type, true>
    +
    + +

    Definition at line 59 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xiterable_inner_types< xmasked_view< CTD, CTM > >::inner_shape_type = typename std::decay_t<CTD>::inner_shape_type
    +
    + +

    Definition at line 57 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ masked_view_type

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xiterable_inner_types< xmasked_view< CTD, CTM > >::masked_view_type = xmasked_view<CTD, CTM>
    +
    + +

    Definition at line 56 of file xmasked_view.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CTD , class CTM >
    + + + + +
    using xt::xiterable_inner_types< xmasked_view< CTD, CTM > >::stepper = xmasked_view_stepper<masked_view_type, false>
    +
    + +

    Definition at line 58 of file xmasked_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html new file mode 100644 index 000000000..5da100c72 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xoptional_assembly< VE, FE > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html new file mode 100644 index 000000000..b524f660c --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly_3_01_v_e_00_01_f_e_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xoptional_assembly< VE, FE > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xoptional_assembly< VE, FE > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using assembly_type = xoptional_assembly< VE, FE >
     
    using inner_shape_type = typename VE::inner_shape_type
     
    using stepper = xoptional_assembly_stepper< assembly_type, false >
     
    using const_stepper = xoptional_assembly_stepper< assembly_type, true >
     
    +

    Detailed Description

    +
    template<class VE, class FE>
    +struct xt::xiterable_inner_types< xoptional_assembly< VE, FE > >
    +

    Definition at line 39 of file xoptional_assembly.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ assembly_type

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly< VE, FE > >::assembly_type = xoptional_assembly<VE, FE>
    +
    + +

    Definition at line 41 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly< VE, FE > >::const_stepper = xoptional_assembly_stepper<assembly_type, true>
    +
    + +

    Definition at line 44 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly< VE, FE > >::inner_shape_type = typename VE::inner_shape_type
    +
    + +

    Definition at line 42 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class VE , class FE >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly< VE, FE > >::stepper = xoptional_assembly_stepper<assembly_type, false>
    +
    + +

    Definition at line 43 of file xoptional_assembly.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html new file mode 100644 index 000000000..cc9b610e8 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html new file mode 100644 index 000000000..381afaf18 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xoptional__assembly__adaptor_3_01_v_e_c_00_01_f_e_c_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using assembly_type = xoptional_assembly_adaptor< VEC, FEC >
     
    using inner_shape_type = typename std::decay_t< VEC >::inner_shape_type
     
    using stepper = xoptional_assembly_stepper< assembly_type, false >
     
    using const_stepper = xoptional_assembly_stepper< assembly_type, true >
     
    +

    Detailed Description

    +
    template<class VEC, class FEC>
    +struct xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >
    +

    Definition at line 169 of file xoptional_assembly.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ assembly_type

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::assembly_type = xoptional_assembly_adaptor<VEC, FEC>
    +
    + +

    Definition at line 171 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::const_stepper = xoptional_assembly_stepper<assembly_type, true>
    +
    + +

    Definition at line 174 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::inner_shape_type = typename std::decay_t<VEC>::inner_shape_type
    +
    + +

    Definition at line 172 of file xoptional_assembly.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class VEC , class FEC >
    + + + + +
    using xt::xiterable_inner_types< xoptional_assembly_adaptor< VEC, FEC > >::stepper = xoptional_assembly_stepper<assembly_type, false>
    +
    + +

    Definition at line 173 of file xoptional_assembly.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html new file mode 100644 index 000000000..631e0413e --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xreducer< F, CT, X, O > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html new file mode 100644 index 000000000..f9cafd76f --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xreducer_3_01_f_00_01_c_t_00_01_x_00_01_o_01_4_01_4.html @@ -0,0 +1,200 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xreducer< F, CT, X, O > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xreducer< F, CT, X, O > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using inner_shape_type = typename xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t< X >, typename O::keep_dims >::type
     
    using const_stepper = xreducer_stepper< F, CT, X, O >
     
    using stepper = const_stepper
     
    +

    Detailed Description

    +
    template<class F, class CT, class X, class O>
    +struct xt::xiterable_inner_types< xreducer< F, CT, X, O > >
    +

    Definition at line 753 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xiterable_inner_types< xreducer< F, CT, X, O > >::const_stepper = xreducer_stepper<F, CT, X, O>
    +
    + +

    Definition at line 760 of file xreducer.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xiterable_inner_types< xreducer< F, CT, X, O > >::inner_shape_type = typename xreducer_shape_type< typename xexpression_type::shape_type, std::decay_t<X>, typename O::keep_dims>::type
    +
    + +

    Definition at line 756 of file xreducer.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xiterable_inner_types< xreducer< F, CT, X, O > >::stepper = const_stepper
    +
    + +

    Definition at line 761 of file xreducer.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class F , class CT , class X , class O >
    + + + + +
    using xt::xiterable_inner_types< xreducer< F, CT, X, O > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 755 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html new file mode 100644 index 000000000..ba029cf1b --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xrepeat< CT, R > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html new file mode 100644 index 000000000..de1b7b75d --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xrepeat_3_01_c_t_00_01_r_01_4_01_4.html @@ -0,0 +1,220 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xrepeat< CT, R > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xrepeat< CT, R > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using repeats_type = std::decay_t< R >
     
    using inner_shape_type = typename xexpression_type::inner_shape_type
     
    using const_stepper = xrepeat_stepper< typename xexpression_type::const_stepper, repeats_type >
     
    using stepper = const_stepper
     
    +

    Detailed Description

    +
    template<class CT, class R>
    +struct xt::xiterable_inner_types< xrepeat< CT, R > >
    +

    Definition at line 75 of file xrepeat.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xiterable_inner_types< xrepeat< CT, R > >::const_stepper = xrepeat_stepper<typename xexpression_type::const_stepper, repeats_type>
    +
    + +

    Definition at line 80 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xiterable_inner_types< xrepeat< CT, R > >::inner_shape_type = typename xexpression_type::inner_shape_type
    +
    + +

    Definition at line 79 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ repeats_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xiterable_inner_types< xrepeat< CT, R > >::repeats_type = std::decay_t<R>
    +
    + +

    Definition at line 78 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xiterable_inner_types< xrepeat< CT, R > >::stepper = const_stepper
    +
    + +

    Definition at line 81 of file xrepeat.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class R >
    + + + + +
    using xt::xiterable_inner_types< xrepeat< CT, R > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 77 of file xrepeat.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html new file mode 100644 index 000000000..11811dd70 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xscalar< CT > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html new file mode 100644 index 000000000..8c87664ce --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xscalar_3_01_c_t_01_4_01_4.html @@ -0,0 +1,220 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xscalar< CT > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xscalar< CT > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Types

    using value_type = std::decay_t< CT >
     
    using inner_shape_type = std::array< std::size_t, 0 >
     
    using shape_type = inner_shape_type
     
    using const_stepper = xscalar_stepper< true, CT >
     
    using stepper = xscalar_stepper< false, CT >
     
    +

    Detailed Description

    +
    template<class CT>
    +struct xt::xiterable_inner_types< xscalar< CT > >
    +

    Definition at line 67 of file xscalar.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xiterable_inner_types< xscalar< CT > >::const_stepper = xscalar_stepper<true, CT>
    +
    + +

    Definition at line 72 of file xscalar.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xiterable_inner_types< xscalar< CT > >::inner_shape_type = std::array<std::size_t, 0>
    +
    + +

    Definition at line 70 of file xscalar.hpp.

    + +
    +
    + +

    ◆ shape_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xiterable_inner_types< xscalar< CT > >::shape_type = inner_shape_type
    +
    + +

    Definition at line 71 of file xscalar.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xiterable_inner_types< xscalar< CT > >::stepper = xscalar_stepper<false, CT>
    +
    + +

    Definition at line 73 of file xscalar.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class CT >
    + + + + +
    using xt::xiterable_inner_types< xscalar< CT > >::value_type = std::decay_t<CT>
    +
    + +

    Definition at line 69 of file xscalar.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html new file mode 100644 index 000000000..d40675e49 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4-members.html @@ -0,0 +1,112 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html new file mode 100644 index 000000000..4ea6a895f --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xstrided__view_3_01_c_t_00_01_s_00_01_l_00_01_f_s_t_01_4_01_4.html @@ -0,0 +1,220 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > > Struct Template Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Types

    using inner_shape_type = std::decay_t< S >
     
    using inner_strides_type = get_strides_t< inner_shape_type >
     
    using inner_backstrides_type_type = inner_strides_type
     
    using const_stepper = std::conditional_t< is_indexed_stepper< typename std::decay_t< CT >::stepper >::value, xindexed_stepper< const xstrided_view< CT, S, L, FST >, true >, xstepper< const xstrided_view< CT, S, L, FST > > >
     
    using stepper = std::conditional_t< is_indexed_stepper< typename std::decay_t< CT >::stepper >::value, xindexed_stepper< xstrided_view< CT, S, L, FST >, false >, xstepper< xstrided_view< CT, S, L, FST > > >
     
    +

    Detailed Description

    +
    template<class CT, class S, layout_type L, class FST>
    +struct xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >
    +

    Definition at line 88 of file xstrided_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >::const_stepper = std::conditional_t< is_indexed_stepper<typename std::decay_t<CT>::stepper>::value, xindexed_stepper<const xstrided_view<CT, S, L, FST>, true>, xstepper<const xstrided_view<CT, S, L, FST> >>
    +
    + +

    Definition at line 94 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ inner_backstrides_type_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >::inner_backstrides_type_type = inner_strides_type
    +
    + +

    Definition at line 92 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >::inner_shape_type = std::decay_t<S>
    +
    + +

    Definition at line 90 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ inner_strides_type

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >::inner_strides_type = get_strides_t<inner_shape_type>
    +
    + +

    Definition at line 91 of file xstrided_view.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT , class S , layout_type L, class FST >
    + + + + +
    using xt::xiterable_inner_types< xstrided_view< CT, S, L, FST > >::stepper = std::conditional_t< is_indexed_stepper<typename std::decay_t<CT>::stepper>::value, xindexed_stepper<xstrided_view<CT, S, L, FST>, false>, xstepper<xstrided_view<CT, S, L, FST> >>
    +
    + +

    Definition at line 99 of file xstrided_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..cd2174a61 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..c7f829505 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xtensor_adaptor< EC, N, L, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xtensor_adaptor< EC, N, L, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xtensor_adaptor< EC, N, L, Tag > >::inner_shape_type
     
    using stepper = xstepper< xtensor_adaptor< EC, N, L, Tag > >
     
    using const_stepper = xstepper< const xtensor_adaptor< EC, N, L, Tag > >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::xiterable_inner_types< xtensor_adaptor< EC, N, L, Tag > >
    +

    Definition at line 187 of file xtensor.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xtensor__adaptor_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..51ab580f01d0112e42d21595cb594c28d62d6e4e GIT binary patch literal 1385 zcmeAS@N?(olHy`uVBq!ia0y~yVC(?012~w0q)EHbBOoOm;1lBd|Nnm=^TnI5rTvGN zTNr2-NK8NT;=q9eK=I&7msbGgI7@>3f*F8(FfeDDeT9L6<%_3_V@L(#+t|pW$5uQ! z+g1hD{uj1CE~YB5?Px=*(6{Pnx5 zW?pJ{w=7<|w|$+2>+Y+1v!1opp1P=fonxNh#VECt%sHZgCmtUEC;jGqb#~7>)0@r8 zrn&mBr{vk@1>gG_=WTw* z%C4)0c)KjVxMk0}<=d0a@n(NIdhLny%_XL#E<7t=L|=Z8?S3TV>EBGzTM6x&sf&xf z`gg~@zQ4vI{cBl-;PcJ`-p8$71(#3N%-!)XExXE2dDY3EJqDNSAKaMI@w2BOKY4S} zg^sqX#Z_)s9$fpeYFh4#-|c(2w>`C6!LfMZs-6FLMembbC$zhC(zE0gspEInZZlo` zFJ$#@>2vPaFPKg3b+PU>yQ#N+PwFI_19r+DpQ?D`TU7pA*clp0p7h`P&q}c0rb^kT z`rtp+lf^T3eQKQ8U-{wiEEUSn#IbEd5@L>IMaRwEJ2T>}53>*G@5wNmC{)(Vpny5d`$hBoPMB78OUhU{j*K|o1V#@KlOL{x?kR9r|mD)g-^P7deRrBHqpQ(C)0UzqSt#D@5qk){(E=s{?{qn>~@^2 zQtrLF@mZBcaVb3E$}hRG#WYv*Ufov4FZz~BNng&h6{rMvUt}*(u()t1%f965^!T@* z54)HBo_y_!{V`*$dumC!k=sH`+THte-v4^Br^k22wa#O!GP`5_^N-G1eeFs2+LPv+ zJhNYQRCpcTW6Eni^}OSK-(@%7G2K{PY{c$+M&z{I_rSGhU%lO+bWZr;tN$*pKRS2u zr>|UbILB?zg;`pHpCvC^T;%lYoN=DxyP4T + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..d8e47e9be --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xtensor_container< EC, N, L, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xtensor_container< EC, N, L, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xtensor_container< EC, N, L, Tag > >::inner_shape_type
     
    using stepper = xstepper< xtensor_container< EC, N, L, Tag > >
     
    using const_stepper = xstepper< const xtensor_container< EC, N, L, Tag > >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::xiterable_inner_types< xtensor_container< EC, N, L, Tag > >
    +

    Definition at line 63 of file xtensor.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xtensor__container_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ec70e128a4aedaeb25be9d4c81e8fdec9c14c6e3 GIT binary patch literal 1378 zcmcIk`&W_&82<2bEKA(T<^{DZK802+&AhPGNo0JcMwpqYYhLntG|j1b!8C`?Ii`G~ zE$QL~vtY_m@s^r49a$(Y#pudnHgBM4nzTe6>$m*@dw+P}=Y8IDo?o8lyhRkhqeg}n zh5!HpyWSSve(gY0d`=$O*x1m*Y2~}rl3(jx_T!Swt_)50_4R3a ze|YS+_O|(3s-Hig-9MJI4qKvCn1e{3CodxALg&&H*sYersh0;-8v|_HHYN~ZCzHi> z#U0p(u)#3g*TaJTY5gC}fX$|{Y-VnB?!A+#APAX15N_3soa`K?|+)SfjL z%bWbJSMu_9)nJ+6W^rOS=7z@$t~9*eB7x6SJH;IcGn~JAZ34FWbcw-l19$7huP>#xF*{-!5 zLJINm*C5?8N7;Kn=T&gTOGkWG5=WSR*KbCKNdN1)6K{7}6tjF@CK-#loP?Az;rIy$Ox^jAeE#(>Y6Id+0%LZ& z`QR0ywaXoLnX6Iyt9fYOsV)feFEr(HuEtF&ZhLH{xh8~6wM1rJa6iUP-rbMH{yo4* ztdLB9V4S}Sve~?Pc13HGWU__6jGNB%if>>#G87rSIJD9C@$OdY?V1LT#mfUhuz%pgBtClW>hn+h;`0MQ1A$fc0Ift@D*QgqJ$Ps!C3syD8P z>RqH`0(q0ETQMMPVh9ys=tSx+sJfIzreb}tu}JH)4{8*N=@;pW^d))Jx z;CE+~r_kKYKv*`A>Wy4;sUgAQg$NdT)Ur!i{F&+EHt%_JLJbFEjORX3NyQbeBixL} zUgRnJD;6Wo&8YeL3O{~UkI&g!w(tD-?qRPJf{90P;}9Onr(+9*-TVQI~zQBH)nz`hKJV< z>eyQF3C>Zp1P@SsYyTZodiz`{uOjr8y=YJ}AGqa?G-P}0vla`trbokY!ys_*0FZJHvsF8>&u+3 R_iDc(03GooH4?wM{0}z0gzEqR literal 0 HcmV?d00001 diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html new file mode 100644 index 000000000..a22bcdf75 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > > Member List
    +
    +
    + +

    This is the complete list of members for xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html new file mode 100644 index 000000000..91878c92a --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > >:
    +
    +
    + + +xt::xcontainer_iterable_types< xtensor_view< EC, N, L, Tag > > + +
    + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from xt::xcontainer_iterable_types< xtensor_view< EC, N, L, Tag > >
    using inner_shape_type = typename xcontainer_inner_types< xtensor_view< EC, N, L, Tag > >::inner_shape_type
     
    using stepper = xstepper< xtensor_view< EC, N, L, Tag > >
     
    using const_stepper = xstepper< const xtensor_view< EC, N, L, Tag > >
     
    +

    Detailed Description

    +
    template<class EC, std::size_t N, layout_type L, class Tag>
    +struct xt::xiterable_inner_types< xtensor_view< EC, N, L, Tag > >
    +

    Definition at line 304 of file xtensor.hpp.

    +

    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png b/structxt_1_1xiterable__inner__types_3_01xtensor__view_3_01_e_c_00_01_n_00_01_l_00_01_tag_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e2669268df006b3d924435541da5f73e05f7ec6b GIT binary patch literal 1355 zcmciC>r;|x6aeryEzSGxIP0w~8+)pPOfP+<`Np-ki5QjH48&Y zrBq~E&1AQ99n&t^E@6vY!L8ein({}bir>N#i7|ZpR-<+-tYc5{ zZ*ZP$63ULx)OO+0ZJv64&Vu)`ni?wzXo*X?WaaR&);6;a#|Y=V*PMjhW}5(xeOk5v zzPmi$=J95gvgln^kFGy6-1YaJzCs^!d=s=gHnCScsNSop31()%Q@OLdUM;=*mzlzd zEUEQ;6`R8BEu^_0kE+YTpu653->jf7*m+ajtZ_12;4UIgKg@VR>MZt=m_ zLiIui8RevR>Q8rwm&uB<6-k6el(7oA`YzFxYOE44c#oJv)72-3x{a&DLNXh8im&sI z^2IEoH14x2nXG0ukX6Wi)E0@)$NU8pUw1Kn&zd;5VQ0~CY-M@>%n?i7>3F4RDH73ZOmY@ zUPjw61@;)ZWnZQjyt9wVzexe%z}ro8_-+ypoeGz|wV0Oy8ag;N@`hFNGoRkf!`VVP z+Q#f>CO8@##jny%XPKol38B%R5AdPR-v_yzK1CeyQaoofnC9 z3NukYHs(T>NUG1*3z`c_8W_8M{~udo2(v$3q&S|4dCSU?3I>veoG*c4;p{tpAZw)b zJwjEnWTEkVqH=L>%yUo1`zBT;5S@FMXT7?Atk3LL(=&(+o`{qwT70ZXLwj8KIKwLj zNtK#`Fs@comt+zdQ7^`_3tH}FkFFWvjOI}6;(bc&il&T3h+7$GUv~TKkv^sEt?t#M~2ohn*ocAl3CQ0D*K zp56776qicm<;3V|=ni(*+A)rX8mGAv+TNQt~n@ z!395ToMN1dSZMmx`c`L!*#YURXl$^@ts^-6#X2sEf{}=*AY`f96w`CSk#a)iYdCuV MOV literal 0 HcmV?d00001 diff --git a/structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html b/structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html new file mode 100644 index 000000000..cbccaf020 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xiterable_inner_types< xview< CT, S... > > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html b/structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html new file mode 100644 index 000000000..45e874a79 --- /dev/null +++ b/structxt_1_1xiterable__inner__types_3_01xview_3_01_c_t_00_01_s_8_8_8_01_4_01_4.html @@ -0,0 +1,261 @@ + + + + + + + +xtensor: xt::xiterable_inner_types< xview< CT, S... > > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xiterable_inner_types< xview< CT, S... > > Struct Template Reference
    +
    +
    + + + + + + + + + + +

    +Public Types

    using xexpression_type = std::decay_t< CT >
     
    using inner_shape_type = std::conditional_t< is_contiguous_view, typename detail::get_contigous_shape_type< xexpression_type, S... >::type, typename xview_shape_type< typename xexpression_type::shape_type, S... >::type >
     
    using stepper = std::conditional_t< is_strided_view, xstepper< xview< CT, S... > >, xview_stepper< std::is_const< std::remove_reference_t< CT > >::value, CT, S... > >
     
    using const_stepper = std::conditional_t< is_strided_view, xstepper< const xview< CT, S... > >, xview_stepper< true, std::remove_cv_t< CT >, S... > >
     
    + + + + + +

    +Static Public Attributes

    static constexpr bool is_strided_view = detail::is_strided_view<xexpression_type, S...>::value
     
    static constexpr bool is_contiguous_view = detail::is_contiguous_view<xexpression_type, S...>::value
     
    +

    Detailed Description

    +
    template<class CT, class... S>
    +struct xt::xiterable_inner_types< xview< CT, S... > >
    +

    Definition at line 315 of file xview.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ const_stepper

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xiterable_inner_types< xview< CT, S... > >::const_stepper = std::conditional_t< is_strided_view, xstepper<const xview<CT, S...> >, xview_stepper<true, std::remove_cv_t<CT>, S...> >
    +
    + +

    Definition at line 332 of file xview.hpp.

    + +
    +
    + +

    ◆ inner_shape_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xiterable_inner_types< xview< CT, S... > >::inner_shape_type = std::conditional_t< is_contiguous_view, typename detail::get_contigous_shape_type<xexpression_type, S...>::type, typename xview_shape_type<typename xexpression_type::shape_type, S...>::type>
    +
    + +

    Definition at line 322 of file xview.hpp.

    + +
    +
    + +

    ◆ stepper

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xiterable_inner_types< xview< CT, S... > >::stepper = std::conditional_t< is_strided_view, xstepper<xview<CT, S...> >, xview_stepper<std::is_const<std::remove_reference_t<CT> >::value, CT, S...> >
    +
    + +

    Definition at line 327 of file xview.hpp.

    + +
    +
    + +

    ◆ xexpression_type

    + +
    +
    +
    +template<class CT , class... S>
    + + + + +
    using xt::xiterable_inner_types< xview< CT, S... > >::xexpression_type = std::decay_t<CT>
    +
    + +

    Definition at line 317 of file xview.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ is_contiguous_view

    + +
    +
    +
    +template<class CT , class... S>
    + + + + + +
    + + + + +
    constexpr bool xt::xiterable_inner_types< xview< CT, S... > >::is_contiguous_view = detail::is_contiguous_view<xexpression_type, S...>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 320 of file xview.hpp.

    + +
    +
    + +

    ◆ is_strided_view

    + +
    +
    +
    +template<class CT , class... S>
    + + + + + +
    + + + + +
    constexpr bool xt::xiterable_inner_types< xview< CT, S... > >::is_strided_view = detail::is_strided_view<xexpression_type, S...>::value
    +
    +staticconstexpr
    +
    + +

    Definition at line 319 of file xview.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xnewaxis__tag-members.html b/structxt_1_1xnewaxis__tag-members.html new file mode 100644 index 000000000..4aa41cd62 --- /dev/null +++ b/structxt_1_1xnewaxis__tag-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xnewaxis_tag Member List
    +
    +
    + +

    This is the complete list of members for xt::xnewaxis_tag, including all inherited members.

    + + +
    convert() const noexcept (defined in xt::xnewaxis_tag)xt::xnewaxis_taginline
    +
    + + + + diff --git a/structxt_1_1xnewaxis__tag.html b/structxt_1_1xnewaxis__tag.html new file mode 100644 index 000000000..cbf1a1c76 --- /dev/null +++ b/structxt_1_1xnewaxis__tag.html @@ -0,0 +1,151 @@ + + + + + + + +xtensor: xt::xnewaxis_tag Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xnewaxis_tag Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    template<class T >
    xnewaxis_tag convert () const noexcept
     
    +

    Detailed Description

    +
    +

    Definition at line 88 of file xslice.hpp.

    +

    Member Function Documentation

    + +

    ◆ convert()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    xnewaxis_tag xt::xnewaxis_tag::convert () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 90 of file xslice.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xoptional__assembly__linear__iterator__traits-members.html b/structxt_1_1xoptional__assembly__linear__iterator__traits-members.html new file mode 100644 index 000000000..45b815374 --- /dev/null +++ b/structxt_1_1xoptional__assembly__linear__iterator__traits-members.html @@ -0,0 +1,113 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structxt_1_1xoptional__assembly__linear__iterator__traits.html b/structxt_1_1xoptional__assembly__linear__iterator__traits.html new file mode 100644 index 000000000..60bb8585f --- /dev/null +++ b/structxt_1_1xoptional__assembly__linear__iterator__traits.html @@ -0,0 +1,240 @@ + + + + + + + +xtensor: xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Types

    using iterator_type = xoptional_assembly_linear_iterator< VE, FE, is_const >
     
    using xoptional_assembly_storage_type = xoptional_assembly_storage< VE, FE >
     
    using value_type = typename xoptional_assembly_storage_type::value_type
     
    using reference = std::conditional_t< is_const, typename xoptional_assembly_storage_type::const_reference, typename xoptional_assembly_storage_type::reference >
     
    using difference_type = typename xoptional_assembly_storage_type::difference_type
     
    using pointer = std::conditional_t< is_const, typename xoptional_assembly_storage_type::const_pointer, typename xoptional_assembly_storage_type::pointer >
     
    +

    Detailed Description

    +
    template<class VE, class FE, bool is_const>
    +struct xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >
    +

    Definition at line 152 of file xoptional_assembly_storage.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ difference_type

    + +
    +
    +
    +template<class VE , class FE , bool is_const>
    + + + + +
    using xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >::difference_type = typename xoptional_assembly_storage_type::difference_type
    +
    + +

    Definition at line 161 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ iterator_type

    + +
    +
    +
    +template<class VE , class FE , bool is_const>
    + + + + +
    using xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >::iterator_type = xoptional_assembly_linear_iterator<VE, FE, is_const>
    +
    + +

    Definition at line 154 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class VE , class FE , bool is_const>
    + + + + +
    using xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >::pointer = std::conditional_t< is_const, typename xoptional_assembly_storage_type::const_pointer, typename xoptional_assembly_storage_type::pointer>
    +
    + +

    Definition at line 162 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class VE , class FE , bool is_const>
    + + + + +
    using xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >::reference = std::conditional_t< is_const, typename xoptional_assembly_storage_type::const_reference, typename xoptional_assembly_storage_type::reference>
    +
    + +

    Definition at line 157 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class VE , class FE , bool is_const>
    + + + + +
    using xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >::value_type = typename xoptional_assembly_storage_type::value_type
    +
    + +

    Definition at line 156 of file xoptional_assembly_storage.hpp.

    + +
    +
    + +

    ◆ xoptional_assembly_storage_type

    + +
    +
    +
    +template<class VE , class FE , bool is_const>
    + + + + +
    using xt::xoptional_assembly_linear_iterator_traits< VE, FE, is_const >::xoptional_assembly_storage_type = xoptional_assembly_storage<VE, FE>
    +
    + +

    Definition at line 155 of file xoptional_assembly_storage.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xoptional__comparable-members.html b/structxt_1_1xoptional__comparable-members.html new file mode 100644 index 000000000..796fd6fb1 --- /dev/null +++ b/structxt_1_1xoptional__comparable-members.html @@ -0,0 +1,106 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xoptional_comparable< E > Member List
    +
    +
    + +

    This is the complete list of members for xt::xoptional_comparable< E >, including all inherited members.

    +
    +
    + + + + diff --git a/structxt_1_1xoptional__comparable.html b/structxt_1_1xoptional__comparable.html new file mode 100644 index 000000000..203ac29af --- /dev/null +++ b/structxt_1_1xoptional__comparable.html @@ -0,0 +1,130 @@ + + + + + + + +xtensor: xt::xoptional_comparable< E > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xoptional_comparable< E > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xoptional_comparable< E >:
    +
    +
    + + +xtl::conjunction< xtl::disjunction< is_xtensor_expression< E >, is_xoptional_expression< E > >... > + +
    + + + + + +

    +Additional Inherited Members

    - Public Attributes inherited from xtl::conjunction< xtl::disjunction< is_xtensor_expression< E >, is_xoptional_expression< E > >... >
    constexpr bool value
     
    +

    Detailed Description

    +
    template<class... E>
    +struct xt::xoptional_comparable< E >
    +

    Definition at line 407 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xoptional__comparable.png b/structxt_1_1xoptional__comparable.png new file mode 100644 index 0000000000000000000000000000000000000000..de865e2ca7482750cbc2c8c52fd4abfdd89bea5b GIT binary patch literal 1369 zcmcIkdsNbA82*`EsnD{`g?Y(n9=E1$^+Q69G%rDU*HlbVJDG;SFhwnIxl4!4Ty&B` z%{*&jOGra-nn|VyTu8cc(S~Sgrlz2QqUMGDs(<(I-ao$gdEWOq-#OoNp7Sw6f&#X} z5HJ7$w&ITZh5^7D5W*oF&7o68&NvG-n~>uXekPL%g5y(jnWaxTXgBBYzhHHbKY8*5 znujyxwa{);Mp#fd0P&CIzNTCO0Bc|4e7z&G&9s%;^k31Iex)vv;qxn1*;dOJfyAr| z^dsqjb0y8Px3RN&$yI(JFp*v3d|ZCuMgsG$1J0WX>qOvS%m^pd(Xe0cVjBFJMMxzB zWbQ!TdoE_9EO3~Y<5O~*OHp%@2mW?d`;dEZ#Md-O0~Ut}`E#rtPmFy&If4J%yzOiW zvZPi6*84N<^v`pV6Oskv9{aV~9qDaW`efOzQ)N^JJ@TF2KpWQYC%Tz3I8=8YPgC>9 z=7LgVN!PJL?R8YsZ1G~nNms)mb*1QmY1Jh6MW%MSNi*x;;i&i`^Y9ZXY<`HNK9rpOF8X&_=?Tojwuf4(EH~X-%6%Wx7!H+czw@ zvS22!pKRM7Je8GbqKIEDJtAe{&^FdEne2$g)QjAOktMn2NTKsS(|Z-UB7+?SCX`u|D}z+Ge#5AmT02B-m zFuM~}XSNZ@OxpT?O2v&TLJC*VOCaq{5!$AC^wTd!pHjCACp!^pxG>I1)laY2Vj9H4 zAINuLQQDmdsGHx@z7wptM z%Sk#drci^2WfK^Mai#(6fM=!!@*gM0kxPO(NCt<|Ph9IOQS&QTX!0!L6-k$`l4Vra=zt!*EjO;?il$=#)tCYN{g`0l_- z&xaMfBQK2Gu=P(3R3@3l0P`Zzt>3Bo + + + + + + +xtensor: xt::xoptional_expression_tag Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xoptional_expression_tag Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 304 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xproxy__inner__types-members.html b/structxt_1_1xproxy__inner__types-members.html new file mode 100644 index 000000000..f2df3f1a1 --- /dev/null +++ b/structxt_1_1xproxy__inner__types-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xproxy_inner_types< R > Member List
    +
    +
    + +

    This is the complete list of members for xt::xproxy_inner_types< R >, including all inherited members.

    + + + +
    pointer typedef (defined in xt::xproxy_inner_types< R >)xt::xproxy_inner_types< R >
    reference typedef (defined in xt::xproxy_inner_types< R >)xt::xproxy_inner_types< R >
    +
    + + + + diff --git a/structxt_1_1xproxy__inner__types.html b/structxt_1_1xproxy__inner__types.html new file mode 100644 index 000000000..24b13b13a --- /dev/null +++ b/structxt_1_1xproxy__inner__types.html @@ -0,0 +1,160 @@ + + + + + + + +xtensor: xt::xproxy_inner_types< R > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xproxy_inner_types< R > Struct Template Reference
    +
    +
    + + + + + + +

    +Public Types

    using reference = R
     
    using pointer = std::add_pointer_t< std::remove_reference_t< R > >
     
    +

    Detailed Description

    +
    template<class R>
    +struct xt::xproxy_inner_types< R >
    +

    Definition at line 555 of file xfunctor_view.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ pointer

    + +
    +
    +
    +template<class R >
    + + + + +
    using xt::xproxy_inner_types< R >::pointer = std::add_pointer_t<std::remove_reference_t<R> >
    +
    + +

    Definition at line 558 of file xfunctor_view.hpp.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<class R >
    + + + + +
    using xt::xproxy_inner_types< R >::reference = R
    +
    + +

    Definition at line 557 of file xfunctor_view.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xrange__adaptor-members.html b/structxt_1_1xrange__adaptor-members.html new file mode 100644 index 000000000..562896c92 --- /dev/null +++ b/structxt_1_1xrange__adaptor-members.html @@ -0,0 +1,119 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xrange_adaptor< A, B, C > Member List
    +
    +
    + +

    This is the complete list of members for xt::xrange_adaptor< A, B, C >, including all inherited members.

    + + + + + + + + + + + + + +
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    get(std::size_t size) const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    start() const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    step() const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    stop() const (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    xrange_adaptor(A start_val, B stop_val, C step) (defined in xt::xrange_adaptor< A, B, C >)xt::xrange_adaptor< A, B, C >inline
    +
    + + + + diff --git a/structxt_1_1xrange__adaptor.html b/structxt_1_1xrange__adaptor.html new file mode 100644 index 000000000..2bf4c4122 --- /dev/null +++ b/structxt_1_1xrange__adaptor.html @@ -0,0 +1,542 @@ + + + + + + + +xtensor: xt::xrange_adaptor< A, B, C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xrange_adaptor< A, B, C > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     xrange_adaptor (A start_val, B stop_val, C step)
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< !xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xrange< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< !xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xrange< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< !xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xrange< std::ptrdiff_t > > get (std::size_t size) const
     
    template<class MI = A, class MA = B, class STEP = C>
    std::enable_if_t< !xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xall< std::ptrdiff_t > > get (std::size_t size) const
     
    start () const
     
    stop () const
     
    step () const
     
    +

    Detailed Description

    +
    template<class A, class B = A, class C = A>
    +struct xt::xrange_adaptor< A, B, C >
    +

    Definition at line 557 of file xslice.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xrange_adaptor()

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    xt::xrange_adaptor< A, B, C >::xrange_adaptor (start_val,
    stop_val,
    step 
    )
    +
    +inline
    +
    + +

    Definition at line 559 of file xslice.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ get() [1/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 570 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [2/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< !xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 579 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [3/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 588 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [4/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xrange< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 598 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [5/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< !xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&xtl::is_integral< STEP >::value, xstepped_range< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 607 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [6/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xrange< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 618 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [7/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< !xtl::is_integral< MI >::value &&xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xrange< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 627 of file xslice.hpp.

    + +
    +
    + +

    ◆ get() [8/8]

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    +
    +template<class MI = A, class MA = B, class STEP = C>
    + + + + + +
    + + + + + + + + +
    std::enable_if_t< !xtl::is_integral< MI >::value &&!xtl::is_integral< MA >::value &&!xtl::is_integral< STEP >::value, xall< std::ptrdiff_t > > xt::xrange_adaptor< A, B, C >::get (std::size_t size) const
    +
    +inline
    +
    + +

    Definition at line 636 of file xslice.hpp.

    + +
    +
    + +

    ◆ start()

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    + + + + + +
    + + + + + + + +
    A xt::xrange_adaptor< A, B, C >::start () const
    +
    +inline
    +
    + +

    Definition at line 641 of file xslice.hpp.

    + +
    +
    + +

    ◆ step()

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    + + + + + +
    + + + + + + + +
    C xt::xrange_adaptor< A, B, C >::step () const
    +
    +inline
    +
    + +

    Definition at line 651 of file xslice.hpp.

    + +
    +
    + +

    ◆ stop()

    + +
    +
    +
    +template<class A , class B = A, class C = A>
    + + + + + +
    + + + + + + + +
    B xt::xrange_adaptor< A, B, C >::stop () const
    +
    +inline
    +
    + +

    Definition at line 646 of file xslice.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__functors-members.html b/structxt_1_1xreducer__functors-members.html new file mode 100644 index 000000000..606264544 --- /dev/null +++ b/structxt_1_1xreducer__functors-members.html @@ -0,0 +1,122 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC > Member List
    +
    +
    + +

    This is the complete list of members for xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >, including all inherited members.

    + + + + + + + + + + + + + + + + +
    base_type typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    get_init() const (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    get_merge() const (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    get_reduce() const (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    init_functor_type typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    init_value_type typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    merge_functor_type typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    rebind() (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    rebind_t typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    reduce_functor_type typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    self_type typedef (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    xreducer_functors() (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    xreducer_functors(RF &&reduce_func) (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    xreducer_functors(RF &&reduce_func, IF &&init_func) (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    xreducer_functors(RF &&reduce_func, IF &&init_func, MF &&merge_func) (defined in xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >)xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >inline
    +
    + + + + diff --git a/structxt_1_1xreducer__functors.html b/structxt_1_1xreducer__functors.html new file mode 100644 index 000000000..9690d51fe --- /dev/null +++ b/structxt_1_1xreducer__functors.html @@ -0,0 +1,562 @@ + + + + + + + +xtensor: xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + +

    +Public Types

    using self_type = xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
     
    using base_type = std::tuple< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
     
    using reduce_functor_type = REDUCE_FUNC
     
    using init_functor_type = INIT_FUNC
     
    using merge_functor_type = MERGE_FUNC
     
    using init_value_type = typename init_functor_type::value_type
     
    template<class NT >
    using rebind_t = xreducer_functors< REDUCE_FUNC, const_value< NT >, MERGE_FUNC >
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    template<class RF >
     xreducer_functors (RF &&reduce_func)
     
    template<class RF , class IF >
     xreducer_functors (RF &&reduce_func, IF &&init_func)
     
    template<class RF , class IF , class MF >
     xreducer_functors (RF &&reduce_func, IF &&init_func, MF &&merge_func)
     
    reduce_functor_type get_reduce () const
     
    init_functor_type get_init () const
     
    merge_functor_type get_merge () const
     
    template<class NT >
    rebind_t< NT > rebind ()
     
    +

    Detailed Description

    +
    template<class REDUCE_FUNC, class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +struct xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >
    +

    Definition at line 625 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ base_type

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::base_type = std::tuple<REDUCE_FUNC, INIT_FUNC, MERGE_FUNC>
    +
    + +

    Definition at line 628 of file xreducer.hpp.

    + +
    +
    + +

    ◆ init_functor_type

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::init_functor_type = INIT_FUNC
    +
    + +

    Definition at line 630 of file xreducer.hpp.

    + +
    +
    + +

    ◆ init_value_type

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::init_value_type = typename init_functor_type::value_type
    +
    + +

    Definition at line 632 of file xreducer.hpp.

    + +
    +
    + +

    ◆ merge_functor_type

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::merge_functor_type = MERGE_FUNC
    +
    + +

    Definition at line 631 of file xreducer.hpp.

    + +
    +
    + +

    ◆ rebind_t

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +
    +template<class NT >
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::rebind_t = xreducer_functors<REDUCE_FUNC, const_value<NT>, MERGE_FUNC>
    +
    + +

    Definition at line 673 of file xreducer.hpp.

    + +
    +
    + +

    ◆ reduce_functor_type

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::reduce_functor_type = REDUCE_FUNC
    +
    + +

    Definition at line 629 of file xreducer.hpp.

    + +
    +
    + +

    ◆ self_type

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + +
    using xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::self_type = xreducer_functors<REDUCE_FUNC, INIT_FUNC, MERGE_FUNC>
    +
    + +

    Definition at line 627 of file xreducer.hpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ xreducer_functors() [1/4]

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + + +
    + + + + + + + +
    xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::xreducer_functors ()
    +
    +inline
    +
    + +

    Definition at line 634 of file xreducer.hpp.

    + +
    +
    + +

    ◆ xreducer_functors() [2/4]

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +
    +template<class RF >
    + + + + + +
    + + + + + + + + +
    xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::xreducer_functors (RF && reduce_func)
    +
    +inline
    +
    + +

    Definition at line 640 of file xreducer.hpp.

    + +
    +
    + +

    ◆ xreducer_functors() [3/4]

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +
    +template<class RF , class IF >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::xreducer_functors (RF && reduce_func,
    IF && init_func 
    )
    +
    +inline
    +
    + +

    Definition at line 646 of file xreducer.hpp.

    + +
    +
    + +

    ◆ xreducer_functors() [4/4]

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +
    +template<class RF , class IF , class MF >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::xreducer_functors (RF && reduce_func,
    IF && init_func,
    MF && merge_func 
    )
    +
    +inline
    +
    + +

    Definition at line 652 of file xreducer.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ get_init()

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + + +
    + + + + + + + +
    init_functor_type xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::get_init () const
    +
    +inline
    +
    + +

    Definition at line 662 of file xreducer.hpp.

    + +
    +
    + +

    ◆ get_merge()

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + + +
    + + + + + + + +
    merge_functor_type xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::get_merge () const
    +
    +inline
    +
    + +

    Definition at line 667 of file xreducer.hpp.

    + +
    +
    + +

    ◆ get_reduce()

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    + + + + + +
    + + + + + + + +
    reduce_functor_type xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::get_reduce () const
    +
    +inline
    +
    + +

    Definition at line 657 of file xreducer.hpp.

    + +
    +
    + +

    ◆ rebind()

    + +
    +
    +
    +template<class REDUCE_FUNC , class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +
    +template<class NT >
    + + + + + +
    + + + + + + + +
    rebind_t< NT > xt::xreducer_functors< REDUCE_FUNC, INIT_FUNC, MERGE_FUNC >::rebind ()
    +
    +inline
    +
    + +

    Definition at line 676 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__functors.png b/structxt_1_1xreducer__functors.png new file mode 100644 index 0000000000000000000000000000000000000000..242587a91a5b3bc173126ec6534485bb4d6c63f7 GIT binary patch literal 1312 zcmb_cZB&v66n-^5rDcAdvUFMtoTKJSosr0N8NPy=X?(OW!zSh?l1>G~skwAY3pFuq z;T)&%198xD3U-=iDJYe8&?K39sLW-MsSp_X!QSone(wIbpU=7Xp7Y#uFT}@1IXQYd z0s!EI!(xsCfQbO}l)hm2QzEFscrwL#j{(504Tm{MIBPT4Fu^qL-c%Ze^zOF0&vzul?84yRo>-l_ zZ|GlN>QaE6jKIKsce#;VxUtpLcwZQoBc@`wH)}cAKq=Q1r>ILIP}G_0dP5Q{YyL|E zeTI_{A5bz+g%;%rnN4!$P9==4nKOrLx?U~!ASnGpuSfkM=&rS%L-nWYcjMmZ^FhBt zZP1KDc&3bBZWg1h9K!y{)##BEqs330_YVt-C$iw0Z!|5zl{4atEzURJYbsd_sm~D< zWR0Z`5eh~~W3b;jY3taE#W0VoJF|z_c$oFB9R0q%qC4}EZWJ#aQ|&X1E*cq}f(lb7 z(`TXaz*3O;K^UU1kl+qB$izRT^?U@RwJ{%Do+x{jJ{1Cnm*l$Mh*?-`7J2F60#fm@ zJvs0HBwUrRd?5H`#2+t-I|im8CX_IK#S`DP8qNwzQk(Kn5b&4GFguO+F=7XqA>hnH zff?QI@HyDy{hP7^CmEJJ(A&aRiE-|_aL$j_Z)uQqmPh+)dZ4WGf3G={!+pk(zP zYQ;^^E*pM_M!sR4gNGc;bE$a|d&7A#pS@^g!{=4EFX0UCs3A5S4`v=oWx}QlM=y)E00_RQ|6Zy>pJb@STnbLdazo6;;6J>3TrcxCC_R~IbCO^O+RTo%vj?%r8Ibcn+ z_6B##Zkk0UFWZ_+`HI1YC|WHm_3brNx`HMELAv`Qqr*}08O zgrJ>vrlHUB;Syb95QtE^?jI~WW~xQH@K$Q0$TRW3_%tQMcX8cZFNmxF-^L^}-AcAV PzYM@d#$hB8$>;wD8qS3l literal 0 HcmV?d00001 diff --git a/structxt_1_1xreducer__shape__type-members.html b/structxt_1_1xreducer__shape__type-members.html new file mode 100644 index 000000000..756c2f70b --- /dev/null +++ b/structxt_1_1xreducer__shape__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_shape_type< ST, X, O > Member List
    +
    +
    + +

    This is the complete list of members for xt::xreducer_shape_type< ST, X, O >, including all inherited members.

    + + +
    type typedef (defined in xt::xreducer_shape_type< ST, X, O >)xt::xreducer_shape_type< ST, X, O >
    +
    + + + + diff --git a/structxt_1_1xreducer__shape__type.html b/structxt_1_1xreducer__shape__type.html new file mode 100644 index 000000000..00ce37914 --- /dev/null +++ b/structxt_1_1xreducer__shape__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xreducer_shape_type< ST, X, O > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_shape_type< ST, X, O > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = promote_shape_t< ST, std::decay_t< X > >
     
    +

    Detailed Description

    +
    template<class ST, class X, class O>
    +struct xt::xreducer_shape_type< ST, X, O >
    +

    Definition at line 1246 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class ST , class X , class O >
    + + + + +
    using xt::xreducer_shape_type< ST, X, O >::type = promote_shape_t<ST, std::decay_t<X> >
    +
    + +

    Definition at line 1248 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4-members.html b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4-members.html new file mode 100644 index 000000000..74528db34 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html new file mode 100644 index 000000000..946d68e13 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01fixed__shape_3_01_j_8_8_8_01_4_00_01_o_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename fixed_xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... > >::type
     
    +

    Detailed Description

    +
    template<std::size_t... I, std::size_t... J, class O>
    +struct xt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >
    +

    Definition at line 1325 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I, std::size_t... J, class O >
    + + + + +
    using xt::xreducer_shape_type< fixed_shape< I... >, fixed_shape< J... >, O >::type = typename fixed_xreducer_shape_type<fixed_shape<I...>, fixed_shape<J...> >::type
    +
    + +

    Definition at line 1327 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html new file mode 100644 index 000000000..a06c92163 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_0113732d5b63b22c20cb89d3a7b591d8f.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::conditional_t< sizeof...(I)==N2, fixed_shape<>, std::array< I2, sizeof...(I) - N2 > >
     
    +

    Detailed Description

    +
    template<std::size_t... I, class I2, std::size_t N2>
    +struct xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >
    +

    Definition at line 1264 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I, class I2 , std::size_t N2>
    + + + + +
    using xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type >::type = std::conditional_t<sizeof...(I) == N2, fixed_shape<>, std::array<I2, sizeof...(I) - N2> >
    +
    + +

    Definition at line 1266 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_027fcc88fe66eb75490a0dba142ef545f.html b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_027fcc88fe66eb75490a0dba142ef545f.html new file mode 100644 index 000000000..973a68c20 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_027fcc88fe66eb75490a0dba142ef545f.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::false_type > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_02aafc87a49290e02ea3938a932d6c334.html b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_02aafc87a49290e02ea3938a932d6c334.html new file mode 100644 index 000000000..8d8fe319e --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_02aafc87a49290e02ea3938a932d6c334.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html new file mode 100644 index 000000000..a54fa1d93 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01std_1_1array_3_01_i2_06680ea94625f20ef8cb3bcfb83eeaa0c.html @@ -0,0 +1,180 @@ + + + + + + + +xtensor: xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::conditional_t< sizeof...(I)==N2, decltype(get_type(typename detail::repeat_integer_sequence< std::size_t, std::size_t(1), N2 >::type{})), std::array< I2, sizeof...(I)> >
     
    + + + + +

    +Static Public Member Functions

    template<std::size_t... X>
    static constexpr auto get_type (std::index_sequence< X... >)
     
    +

    Detailed Description

    +
    template<std::size_t... I, class I2, std::size_t N2>
    +struct xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >
    +

    Definition at line 1308 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I, class I2 , std::size_t N2>
    + + + + +
    using xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >::type = std::conditional_t< sizeof...(I) == N2, decltype(get_type(typename detail::repeat_integer_sequence<std::size_t, std::size_t(1), N2>::type{})), std::array<I2, sizeof...(I)> >
    +
    + +

    Definition at line 1317 of file xreducer.hpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ get_type()

    + +
    +
    +
    +template<std::size_t... I, class I2 , std::size_t N2>
    +
    +template<std::size_t... X>
    + + + + + +
    + + + + + + + + +
    static constexpr auto xt::xreducer_shape_type< fixed_shape< I... >, std::array< I2, N2 >, std::true_type >::get_type (std::index_sequence< X... > )
    +
    +inlinestaticconstexpr
    +
    + +

    Definition at line 1311 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_9c73ff706755e2a1205ad25fb933e4d8.html b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_9c73ff706755e2a1205ad25fb933e4d8.html new file mode 100644 index 000000000..badb257d6 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_9c73ff706755e2a1205ad25fb933e4d8.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html new file mode 100644 index 000000000..6a985ea48 --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_c677fa36e83a1c564b51c5abf4a0c7d9.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::array< I2, N1 >
     
    +

    Detailed Description

    +
    template<class I1, std::size_t N1, class I2, std::size_t N2>
    +struct xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >
    +

    Definition at line 1252 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class I1 , std::size_t N1, class I2 , std::size_t N2>
    + + + + +
    using xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type >::type = std::array<I2, N1>
    +
    + +

    Definition at line 1254 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_dd68458bef343598f52e1cee8de7e66e.html b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_dd68458bef343598f52e1cee8de7e66e.html new file mode 100644 index 000000000..17059a6ea --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_dd68458bef343598f52e1cee8de7e66e.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::true_type > Member List
    +
    + +
    + + + + diff --git a/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html new file mode 100644 index 000000000..7deb6169f --- /dev/null +++ b/structxt_1_1xreducer__shape__type_3_01std_1_1array_3_01_i1_00_01_n1_01_4_00_01std_1_1array_3_01_f0fe2e231e25d4e5852b877ba4b36e02.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::array< I2, N1 - N2 >
     
    +

    Detailed Description

    +
    template<class I1, std::size_t N1, class I2, std::size_t N2>
    +struct xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >
    +

    Definition at line 1258 of file xreducer.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class I1 , std::size_t N1, class I2 , std::size_t N2>
    + + + + +
    using xt::xreducer_shape_type< std::array< I1, N1 >, std::array< I2, N2 >, std::false_type >::type = std::array<I2, N1 - N2>
    +
    + +

    Definition at line 1260 of file xreducer.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xtensor__expression__tag.html b/structxt_1_1xtensor__expression__tag.html new file mode 100644 index 000000000..1119f1d5e --- /dev/null +++ b/structxt_1_1xtensor__expression__tag.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt::xtensor_expression_tag Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xtensor_expression_tag Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 300 of file xexpression.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt_1_1xview__shape__type-members.html b/structxt_1_1xview__shape__type-members.html new file mode 100644 index 000000000..5cc482a30 --- /dev/null +++ b/structxt_1_1xview__shape__type-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xview_shape_type< ST, S > Member List
    +
    +
    + +

    This is the complete list of members for xt::xview_shape_type< ST, S >, including all inherited members.

    + + +
    type typedef (defined in xt::xview_shape_type< ST, S >)xt::xview_shape_type< ST, S >
    +
    + + + + diff --git a/structxt_1_1xview__shape__type.html b/structxt_1_1xview__shape__type.html new file mode 100644 index 000000000..14db69d83 --- /dev/null +++ b/structxt_1_1xview__shape__type.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xview_shape_type< ST, S > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xview_shape_type< ST, S > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = ST
     
    +

    Detailed Description

    +
    template<class ST, class... S>
    +struct xt::xview_shape_type< ST, S >
    +

    Definition at line 844 of file xview.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class ST , class... S>
    + + + + +
    using xt::xview_shape_type< ST, S >::type = ST
    +
    + +

    Definition at line 846 of file xview.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4-members.html b/structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4-members.html new file mode 100644 index 000000000..c7538faf4 --- /dev/null +++ b/structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xview_shape_type< fixed_shape< I... >, S... > Member List
    +
    +
    + +

    This is the complete list of members for xt::xview_shape_type< fixed_shape< I... >, S... >, including all inherited members.

    + + +
    type typedef (defined in xt::xview_shape_type< fixed_shape< I... >, S... >)xt::xview_shape_type< fixed_shape< I... >, S... >
    +
    + + + + diff --git a/structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html b/structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html new file mode 100644 index 000000000..1d2a5ed1b --- /dev/null +++ b/structxt_1_1xview__shape__type_3_01fixed__shape_3_01_i_8_8_8_01_4_00_01_s_8_8_8_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xview_shape_type< fixed_shape< I... >, S... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xview_shape_type< fixed_shape< I... >, S... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typename xview_shape_type< std::array< std::size_t, sizeof...(I)>, S... >::type
     
    +

    Detailed Description

    +
    template<std::size_t... I, class... S>
    +struct xt::xview_shape_type< fixed_shape< I... >, S... >
    +

    Definition at line 856 of file xview.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<std::size_t... I, class... S>
    + + + + +
    using xt::xview_shape_type< fixed_shape< I... >, S... >::type = typename xview_shape_type<std::array<std::size_t, sizeof...(I)>, S...>::type
    +
    + +

    Definition at line 858 of file xview.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4-members.html b/structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4-members.html new file mode 100644 index 000000000..dabeeb7b0 --- /dev/null +++ b/structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt::xview_shape_type< std::array< I, L >, S... > Member List
    +
    +
    + +

    This is the complete list of members for xt::xview_shape_type< std::array< I, L >, S... >, including all inherited members.

    + + +
    type typedef (defined in xt::xview_shape_type< std::array< I, L >, S... >)xt::xview_shape_type< std::array< I, L >, S... >
    +
    + + + + diff --git a/structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html b/structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html new file mode 100644 index 000000000..4f9fefe03 --- /dev/null +++ b/structxt_1_1xview__shape__type_3_01std_1_1array_3_01_i_00_01_l_01_4_00_01_s_8_8_8_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt::xview_shape_type< std::array< I, L >, S... > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt::xview_shape_type< std::array< I, L >, S... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::array< I, L - integral_count< S... >()+newaxis_count< S... >()>
     
    +

    Detailed Description

    +
    template<class I, std::size_t L, class... S>
    +struct xt::xview_shape_type< std::array< I, L >, S... >
    +

    Definition at line 850 of file xview.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class I , std::size_t L, class... S>
    + + + + +
    using xt::xview_shape_type< std::array< I, L >, S... >::type = std::array<I, L - integral_count<S...>() + newaxis_count<S...>()>
    +
    + +

    Definition at line 852 of file xview.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp
    • +
    +
    +
    + + + + diff --git a/structxt__simd_1_1aligned__mode.html b/structxt__simd_1_1aligned__mode.html new file mode 100644 index 000000000..20da25097 --- /dev/null +++ b/structxt__simd_1_1aligned__mode.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt_simd::aligned_mode Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::aligned_mode Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 93 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1allocator__alignment-members.html b/structxt__simd_1_1allocator__alignment-members.html new file mode 100644 index 000000000..59d871649 --- /dev/null +++ b/structxt__simd_1_1allocator__alignment-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::allocator_alignment< A > Member List
    +
    +
    + +

    This is the complete list of members for xt_simd::allocator_alignment< A >, including all inherited members.

    + + +
    type typedef (defined in xt_simd::allocator_alignment< A >)xt_simd::allocator_alignment< A >
    +
    + + + + diff --git a/structxt__simd_1_1allocator__alignment.html b/structxt__simd_1_1allocator__alignment.html new file mode 100644 index 000000000..32bfb8efa --- /dev/null +++ b/structxt__simd_1_1allocator__alignment.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt_simd::allocator_alignment< A > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt_simd::allocator_alignment< A > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = unaligned_mode
     
    +

    Detailed Description

    +
    template<class A>
    +struct xt_simd::allocator_alignment< A >
    +

    Definition at line 102 of file xtensor_simd.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class A >
    + + + + +
    using xt_simd::allocator_alignment< A >::type = unaligned_mode
    +
    + +

    Definition at line 104 of file xtensor_simd.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1container__alignment-members.html b/structxt__simd_1_1container__alignment-members.html new file mode 100644 index 000000000..4baaa2757 --- /dev/null +++ b/structxt__simd_1_1container__alignment-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::container_alignment< C > Member List
    +
    +
    + +

    This is the complete list of members for xt_simd::container_alignment< C >, including all inherited members.

    + + +
    type typedef (defined in xt_simd::container_alignment< C >)xt_simd::container_alignment< C >
    +
    + + + + diff --git a/structxt__simd_1_1container__alignment.html b/structxt__simd_1_1container__alignment.html new file mode 100644 index 000000000..a53fb6ed6 --- /dev/null +++ b/structxt__simd_1_1container__alignment.html @@ -0,0 +1,140 @@ + + + + + + + +xtensor: xt_simd::container_alignment< C > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt_simd::container_alignment< C > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = unaligned_mode
     
    +

    Detailed Description

    +
    template<class C>
    +struct xt_simd::container_alignment< C >
    +

    Definition at line 111 of file xtensor_simd.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class C >
    + + + + +
    using xt_simd::container_alignment< C >::type = unaligned_mode
    +
    + +

    Definition at line 113 of file xtensor_simd.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1is__batch__bool.html b/structxt__simd_1_1is__batch__bool.html new file mode 100644 index 000000000..631cbac84 --- /dev/null +++ b/structxt__simd_1_1is__batch__bool.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt_simd::is_batch_bool< V > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::is_batch_bool< V > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt_simd::is_batch_bool< V >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class V>
    +struct xt_simd::is_batch_bool< V >
    +

    Definition at line 190 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1is__batch__bool.png b/structxt__simd_1_1is__batch__bool.png new file mode 100644 index 0000000000000000000000000000000000000000..8249a7aface843e74a2f31fc9efc16ee7803e613 GIT binary patch literal 677 zcmV;W0$TlvP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0006o zNkl1$xCgoo`iEqh!1KJ;}@aM`J3LjrLrwu+S_-}acbuo>*!QzhDq|HuA&;5 zOWDXIhrV)Mz3O7BZ=hB`Tpw?yc!SzmPm&*X%K&}U`M<9)!17<%o<>gYRR`R-R-FT^ z4Nz9<8O=PB{8sT-M5 z{FPslyr>7W+WZ@na@OuVGlnL7hlP zVI2rHUH|~_SD*rbw*nOaycMVb;H^Lf0B;2<0C+1<0l-^<3IN^;Q~>Z+paOum0u=zf z6{rBRg%0FsFLKZ1L~3cwEcc!Zk_d?ccx}%<_APIwWD`lbtiz`U zXgM3yw-EQUdO&Tmnrz + + + + + + +xtensor: xt_simd::is_batch_complex< V > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::is_batch_complex< V > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt_simd::is_batch_complex< V >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class V>
    +struct xt_simd::is_batch_complex< V >
    +

    Definition at line 195 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1is__batch__complex.png b/structxt__simd_1_1is__batch__complex.png new file mode 100644 index 0000000000000000000000000000000000000000..31c7e42df7fc3bd912067b46075eeb242dbbaa01 GIT binary patch literal 723 zcmV;^0xbQBP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|NsC0|NsC0Hv*f~0007B zNklHhyOzK$0*Lo%^*M?;mWXcq)o;h@E@Ff*H3Fp`{C0YH+T z3ILMy)NO$M_3Xvcbl~~BH}-Xa!rh+-c;5BWh}X&CWnCZ76pwA4E%x1Ia@r=zPjmyo z$UMqLK40@&`Ck3j^|0InsE$)7NIu&OfX@3Q`HAkPP#@s=i7!%U{p6n`mjiJlhwc?| zCk5&hDkrtY$&Ms1=!-Sb0~pl60pME$M|vDxsL1-Q)AYMg$~^ZjM3R@a1CZoB{UX3x ztNUG-Pm;VYp9r*{Z<4$yuM{H5uP6XW(o+FIlAc-s%*-Yh0Q^@y0AOa#4)AzPPB1&b za{jpqrU!^F1OUDY008h*004le0ssI!6#xL>sQ>@~PXzz~cq#w@z*7ML0GQ`QN!1wc zy92DxXIsrX&*>uD9@{Tf1PbG))#0Liq~DX%Y?VFlMw`#{Z<2~}7)Yu{ioo_>b#?n# z-KV)s)hKY&amrciwBFl2R}M?pnZ5!j?>VJVx`ZZXt@DzvdqEXj&uM+k9(D@nFal|7 z2vDTZ0HEuC%fjmbdlqjwC@GI3e@ld63Z4Js1n?p`?nI#QRFzM4xKjl7y6M$GT@UT{ zyBc_l*{OkC#BGqrHE;m*x=?W;?Yi5Aw)xR%nt!gkP#W*M(5TD)i7)Y;Bb)%%GHU8a zk_P&j`5UXR0!Y$tYkB}lx~c$>Bu@o^BzbB9Ff*H2{{VTM>ezCYIGF$d002ovPDHLk FV1n1SNxuL9 literal 0 HcmV?d00001 diff --git a/structxt__simd_1_1revert__simd__traits-members.html b/structxt__simd_1_1revert__simd__traits-members.html new file mode 100644 index 000000000..1d03cbd88 --- /dev/null +++ b/structxt__simd_1_1revert__simd__traits-members.html @@ -0,0 +1,109 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::revert_simd_traits< T > Member List
    +
    +
    + +

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

    + + + +
    size (defined in xt_simd::revert_simd_traits< T >)xt_simd::revert_simd_traits< T >static
    type typedef (defined in xt_simd::revert_simd_traits< T >)xt_simd::revert_simd_traits< T >
    +
    + + + + diff --git a/structxt__simd_1_1revert__simd__traits.html b/structxt__simd_1_1revert__simd__traits.html new file mode 100644 index 000000000..32536dacb --- /dev/null +++ b/structxt__simd_1_1revert__simd__traits.html @@ -0,0 +1,173 @@ + + + + + + + +xtensor: xt_simd::revert_simd_traits< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt_simd::revert_simd_traits< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    + + + +

    +Static Public Attributes

    static constexpr std::size_t size = simd_traits<type>::size
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt_simd::revert_simd_traits< T >
    +

    Definition at line 129 of file xtensor_simd.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt_simd::revert_simd_traits< T >::type = T
    +
    + +

    Definition at line 131 of file xtensor_simd.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ size

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    constexpr std::size_t xt_simd::revert_simd_traits< T >::size = simd_traits<type>::size
    +
    +staticconstexpr
    +
    + +

    Definition at line 132 of file xtensor_simd.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1simd__condition.html b/structxt__simd_1_1simd__condition.html new file mode 100644 index 000000000..ab5faee0a --- /dev/null +++ b/structxt__simd_1_1simd__condition.html @@ -0,0 +1,118 @@ + + + + + + + +xtensor: xt_simd::simd_condition< T1, T2 > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::simd_condition< T1, T2 > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for xt_simd::simd_condition< T1, T2 >:
    +
    +
    + +
    +

    Detailed Description

    +
    template<class T1, class T2>
    +struct xt_simd::simd_condition< T1, T2 >
    +

    Definition at line 200 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1simd__condition.png b/structxt__simd_1_1simd__condition.png new file mode 100644 index 0000000000000000000000000000000000000000..1455635305efbac1ac91a5e822d6139e3b9a3e10 GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^r-3+tgBeIRv=lZ1Dd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5C84jcfA2T!`Z0w~8>666=m0OW&#In(Sb3=B-Zo-U3d6^w7^-Yr|LAkg~# zPRaZ4^^dA}6chp{&zh&19aJ{mprPhW|8@i8*)9f?<~SX6n)FXZN9Cpe_Kiz&Pvy1W zu6y>csWs(l&dsEi?_N9KdwVhdznptKyH>JPyxg^qw|pkOf59fEygjVEXno0U)wfOa ztzXMcJ6PFm?-${gHmSzB{OAqM)BEq=o0@Fwxo=^0QN4f$^ZqUC)&#v=mh_>q=H|wb z%+2W^r|N4S^ODV8<)E48%ky+aN%(P(PqM0FllHjpKfP&L#V3cq^Hu8C{eL$7%Pq|a zk56f=+@8OJH%wS!ud9=mR?NX*w_cxNhKumVn%c9>#)7AtjCjxZ=mZ{TIIy^hmEn(O z1jB*(BrqPR&YbD1G(*LAVZua}dM+`~Ps{t3vRl8L?>l{o-{~orR5DkDO#dZ&`om$h zm6_@~lV+7A?LStO`N%4{{@L*l742sxP0tJdv^8Sqk<=%fEajE&=e=91nwgh9b<0+h zPgg#(>sTMp-?(AlDx1?+ww;UFtM&H!I^&gjS0nZ<@YazI-n!&Sg!sIpv43al&wRZ& zq+L$`q_*^Xnaw7~+y{-PX>}ZHw>8{<=F-udir(=}mtJg^xV?Ydd5g)rzD3u)Tv5G$ ziRI#&%*l^u{j_ZHEX~e;n6!^aIp=(lfJ*GBYboi3uv;O`iyZ-jR z|F_lnUBov3bt-$;$m>mCvR5zfyZIj_&*xx|gF;|d&(SkEe6`Gfn|?aXHnvy~Ol=IF Lu6{1-oD!M + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::simd_traits< T > Member List
    +
    +
    + +

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

    + + + + + +
    batch_bool typedef (defined in xt_simd::simd_traits< T >)xt_simd::simd_traits< T >
    bool_type typedef (defined in xt_simd::simd_traits< T >)xt_simd::simd_traits< T >
    size (defined in xt_simd::simd_traits< T >)xt_simd::simd_traits< T >static
    type typedef (defined in xt_simd::simd_traits< T >)xt_simd::simd_traits< T >
    +
    + + + + diff --git a/structxt__simd_1_1simd__traits.html b/structxt__simd_1_1simd__traits.html new file mode 100644 index 000000000..74c54a379 --- /dev/null +++ b/structxt__simd_1_1simd__traits.html @@ -0,0 +1,213 @@ + + + + + + + +xtensor: xt_simd::simd_traits< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xt_simd::simd_traits< T > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Types

    using type = T
     
    using bool_type = bool
     
    using batch_bool = bool
     
    + + + +

    +Static Public Attributes

    static constexpr std::size_t size = 1
     
    +

    Detailed Description

    +
    template<class T>
    +struct xt_simd::simd_traits< T >
    +

    Definition at line 120 of file xtensor_simd.hpp.

    +

    Member Typedef Documentation

    + +

    ◆ batch_bool

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt_simd::simd_traits< T >::batch_bool = bool
    +
    + +

    Definition at line 124 of file xtensor_simd.hpp.

    + +
    +
    + +

    ◆ bool_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt_simd::simd_traits< T >::bool_type = bool
    +
    + +

    Definition at line 123 of file xtensor_simd.hpp.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using xt_simd::simd_traits< T >::type = T
    +
    + +

    Definition at line 122 of file xtensor_simd.hpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ size

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    constexpr std::size_t xt_simd::simd_traits< T >::size = 1
    +
    +staticconstexpr
    +
    + +

    Definition at line 125 of file xtensor_simd.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxt__simd_1_1unaligned__mode.html b/structxt__simd_1_1unaligned__mode.html new file mode 100644 index 000000000..307d8b765 --- /dev/null +++ b/structxt__simd_1_1unaligned__mode.html @@ -0,0 +1,111 @@ + + + + + + + +xtensor: xt_simd::unaligned_mode Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xt_simd::unaligned_mode Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 97 of file xtensor_simd.hpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structxtl_1_1conjunction-members.html b/structxtl_1_1conjunction-members.html new file mode 100644 index 000000000..5824496c2 --- /dev/null +++ b/structxtl_1_1conjunction-members.html @@ -0,0 +1,108 @@ + + + + + + + +xtensor: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xtl::conjunction< T > Member List
    +
    +
    + +

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

    + + +
    value (defined in xtl::conjunction< T >)xtl::conjunction< T >
    +
    + + + + diff --git a/structxtl_1_1conjunction.html b/structxtl_1_1conjunction.html new file mode 100644 index 000000000..8f8ddb7d6 --- /dev/null +++ b/structxtl_1_1conjunction.html @@ -0,0 +1,148 @@ + + + + + + + +xtensor: xtl::conjunction< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    xtl::conjunction< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Attributes

    constexpr bool value = true
     
    +

    Detailed Description

    +
    template<class... T>
    +struct xtl::conjunction< T >
    +

    Definition at line 125 of file xtensor_config.hpp.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<class... T>
    + + + + + +
    + + + + +
    constexpr bool xtl::conjunction< T >::value = true
    +
    +constexpr
    +
    + +

    Definition at line 127 of file xtensor_config.hpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/sync_off.png b/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/sync_on.png b/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/tab_a.png b/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/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=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/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..71c8a4704 --- /dev/null +++ b/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}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.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:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.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:var(--nav-menu-background-color)}.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:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);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:var(--nav-gradient-image);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:var(--nav-text-normal-color) 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:var(--nav-separator-image);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:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) 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 var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-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 var(--nav-menu-foreground-color);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:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);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 var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) 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:var(--nav-gradient-image)}.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:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/topics.html b/topics.html new file mode 100644 index 000000000..f49155e51 --- /dev/null +++ b/topics.html @@ -0,0 +1,133 @@ + + + + + + + +xtensor: Topics + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Topics
    +
    + +
    + + + + diff --git a/topics.js b/topics.js new file mode 100644 index 000000000..98be3db43 --- /dev/null +++ b/topics.js @@ -0,0 +1,28 @@ +var topics = +[ + [ "Adaptors of STL-like containers", "group__xt__xadapt.html", "group__xt__xadapt" ], + [ "Xt_xchunked_array", "group__xt__xchunked__array.html", "group__xt__xchunked__array" ], + [ "Xt_xcomplex", "group__xt__xcomplex.html", "group__xt__xcomplex" ], + [ "Xt_xeval", "group__xt__xeval.html", "group__xt__xeval" ], + [ "Xt_xfunctor_view", "group__xt__xfunctor__view.html", "group__xt__xfunctor__view" ], + [ "Xt_xmanipulation", "group__xt__xmanipulation.html", "group__xt__xmanipulation" ], + [ "Basic functions", "group__basic__functions.html", "group__basic__functions" ], + [ "Exponential functions", "group__exp__functions.html", "group__exp__functions" ], + [ "Power functions", "group__pow__functions.html", "group__pow__functions" ], + [ "Trigonometric function", "group__trigo__functions.html", "group__trigo__functions" ], + [ "Hyperbolic functions", "group__hyper__functions.html", "group__hyper__functions" ], + [ "Error and gamma functions", "group__err__functions.html", "group__err__functions" ], + [ "Nearest integer floating point operations", "group__nearint__functions.html", "group__nearint__functions" ], + [ "Classification functions", "group__classif__functions.html", "group__classif__functions" ], + [ "reducing functions", "group__red__functions.html", "group__red__functions" ], + [ "accumulating functions", "group__acc__functions.html", "group__acc__functions" ], + [ "nan functions", "group__nan__functions.html", "group__nan__functions" ], + [ "Arithmetic operators", "group__arithmetic__operators.html", "group__arithmetic__operators" ], + [ "Logical operators", "group__logical__operators.html", "group__logical__operators" ], + [ "Bitwise operators", "group__bitwise__operators.html", "group__bitwise__operators" ], + [ "Comparison operators", "group__comparison__operators.html", "group__comparison__operators" ], + [ "Casting operators", "group__casting__operators.html", "group__casting__operators" ], + [ "Support functions to get/check a shape array.", "group__xt__xshape.html", "group__xt__xshape" ], + [ "Sorting functions.", "group__xt__xsort.html", "group__xt__xsort" ], + [ "Support functions swich between array indices and flat indices", "group__xt__xstrides.html", "group__xt__xstrides" ] +]; \ No newline at end of file diff --git a/xaccessible_8hpp_source.html b/xaccessible_8hpp_source.html new file mode 100644 index 000000000..abaae877a --- /dev/null +++ b/xaccessible_8hpp_source.html @@ -0,0 +1,454 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xaccessible.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xaccessible.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ACCESSIBLE_HPP
    +
    11#define XTENSOR_ACCESSIBLE_HPP
    +
    12
    +
    13#include "xexception.hpp"
    +
    14#include "xstrides.hpp"
    +
    15#include "xtensor_forward.hpp"
    +
    16
    +
    +
    17namespace xt
    +
    18{
    +
    28 template <class D>
    +
    + +
    30 {
    +
    31 public:
    +
    32
    +
    33 using derived_type = D;
    + +
    35 using reference = typename inner_types::reference;
    +
    36 using const_reference = typename inner_types::const_reference;
    +
    37 using size_type = typename inner_types::size_type;
    +
    38
    +
    +
    39 size_type size() const noexcept;
    +
    +
    40 size_type dimension() const noexcept;
    +
    +
    41 size_type shape(size_type index) const;
    +
    42
    +
    43 template <class... Args>
    +
    44 const_reference at(Args... args) const;
    +
    45
    +
    46 template <class S>
    +
    47 disable_integral_t<S, const_reference> operator[](const S& index) const;
    +
    48 template <class I>
    +
    49 const_reference operator[](std::initializer_list<I> index) const;
    +
    50 const_reference operator[](size_type i) const;
    +
    51
    +
    52 template <class... Args>
    +
    53 const_reference periodic(Args... args) const;
    +
    54
    +
    55 template <class... Args>
    +
    +
    56 bool in_bounds(Args... args) const;
    +
    57
    +
    +
    58 const_reference front() const;
    +
    +
    59 const_reference back() const;
    +
    60
    +
    61 protected:
    +
    62
    +
    63 xconst_accessible() = default;
    +
    64 ~xconst_accessible() = default;
    +
    65
    +
    66 xconst_accessible(const xconst_accessible&) = default;
    +
    67 xconst_accessible& operator=(const xconst_accessible&) = default;
    +
    68
    + +
    70 xconst_accessible& operator=(xconst_accessible&&) = default;
    +
    71
    +
    72 private:
    +
    73
    +
    74 const derived_type& derived_cast() const noexcept;
    +
    75 };
    +
    76
    +
    86 template <class D>
    +
    + +
    88 {
    +
    89 public:
    +
    90
    + +
    92 using derived_type = typename base_type::derived_type;
    +
    93 using reference = typename base_type::reference;
    +
    94 using size_type = typename base_type::size_type;
    +
    95
    +
    96 template <class... Args>
    +
    97 reference at(Args... args);
    +
    98
    +
    99 template <class S>
    +
    100 disable_integral_t<S, reference> operator[](const S& index);
    +
    101 template <class I>
    +
    102 reference operator[](std::initializer_list<I> index);
    +
    103 reference operator[](size_type i);
    +
    104
    +
    105 template <class... Args>
    +
    106 reference periodic(Args... args);
    +
    107
    +
    +
    108 reference front();
    +
    +
    109 reference back();
    +
    110
    +
    +
    111 using base_type::at;
    +
    112 using base_type::operator[];
    +
    +
    113 using base_type::back;
    +
    +
    114 using base_type::front;
    +
    +
    115 using base_type::periodic;
    +
    116
    +
    117 protected:
    +
    118
    +
    119 xaccessible() = default;
    +
    120 ~xaccessible() = default;
    +
    121
    +
    122 xaccessible(const xaccessible&) = default;
    +
    123 xaccessible& operator=(const xaccessible&) = default;
    +
    124
    +
    125 xaccessible(xaccessible&&) = default;
    +
    126 xaccessible& operator=(xaccessible&&) = default;
    +
    127
    +
    128 private:
    +
    129
    +
    130 derived_type& derived_cast() noexcept;
    +
    131 };
    +
    132
    +
    133 /************************************
    +
    134 * xconst_accessible implementation *
    +
    135 ************************************/
    +
    136
    +
    +
    140 template <class D>
    +
    +
    141 inline auto xconst_accessible<D>::size() const noexcept -> size_type
    +
    142 {
    +
    +
    143 return compute_size(derived_cast().shape());
    +
    + +
    145
    +
    149 template <class D>
    +
    +
    150 inline auto xconst_accessible<D>::dimension() const noexcept -> size_type
    +
    151 {
    +
    152 return derived_cast().shape().size();
    +
    153 }
    +
    +
    154
    +
    158 template <class D>
    +
    +
    159 inline auto xconst_accessible<D>::shape(size_type index) const -> size_type
    +
    160 {
    +
    161 return derived_cast().shape()[index];
    +
    162 }
    +
    +
    163
    +
    173 template <class D>
    +
    174 template <class... Args>
    +
    +
    175 inline auto xconst_accessible<D>::at(Args... args) const -> const_reference
    +
    176 {
    +
    177 check_access(derived_cast().shape(), args...);
    +
    178 return derived_cast().operator()(args...);
    +
    179 }
    +
    +
    180
    +
    187 template <class D>
    +
    188 template <class S>
    +
    +
    189 inline auto xconst_accessible<D>::operator[](const S& index) const
    +
    190 -> disable_integral_t<S, const_reference>
    +
    191 {
    +
    192 return derived_cast().element(index.cbegin(), index.cend());
    +
    193 }
    +
    +
    194
    +
    195 template <class D>
    +
    196 template <class I>
    +
    197 inline auto xconst_accessible<D>::operator[](std::initializer_list<I> index) const -> const_reference
    +
    198 {
    +
    199 return derived_cast().element(index.begin(), index.end());
    +
    + +
    201
    +
    +
    202 template <class D>
    +
    +
    203 inline auto xconst_accessible<D>::operator[](size_type i) const -> const_reference
    +
    + +
    205 return derived_cast().operator()(i);
    +
    206 }
    +
    207
    +
    215 template <class D>
    +
    216 template <class... Args>
    +
    +
    217 inline auto xconst_accessible<D>::periodic(Args... args) const -> const_reference
    +
    218 {
    +
    219 normalize_periodic(derived_cast().shape(), args...);
    +
    220 return derived_cast()(static_cast<size_type>(args)...);
    +
    221 }
    +
    +
    222
    +
    226 template <class D>
    +
    +
    227 inline auto xconst_accessible<D>::front() const -> const_reference
    +
    228 {
    +
    229 return *derived_cast().begin();
    +
    230 }
    +
    +
    231
    +
    235 template <class D>
    +
    +
    236 inline auto xconst_accessible<D>::back() const -> const_reference
    +
    237 {
    +
    238 return *std::prev(derived_cast().end());
    +
    239 }
    +
    +
    240
    +
    246 template <class D>
    +
    247 template <class... Args>
    +
    +
    248 inline bool xconst_accessible<D>::in_bounds(Args... args) const
    +
    249 {
    +
    250 return check_in_bounds(derived_cast().shape(), args...);
    +
    251 }
    +
    +
    252
    +
    253 template <class D>
    +
    254 inline auto xconst_accessible<D>::derived_cast() const noexcept -> const derived_type&
    +
    255 {
    +
    256 return *static_cast<const derived_type*>(this);
    +
    257 }
    +
    258
    +
    259 /******************************
    +
    260 * xaccessible implementation *
    +
    261 ******************************/
    +
    262
    +
    272 template <class D>
    +
    273 template <class... Args>
    +
    +
    274 inline auto xaccessible<D>::at(Args... args) -> reference
    +
    275 {
    +
    276 check_access(derived_cast().shape(), args...);
    +
    277 return derived_cast().operator()(args...);
    +
    278 }
    +
    +
    279
    +
    286 template <class D>
    +
    287 template <class S>
    +
    +
    288 inline auto xaccessible<D>::operator[](const S& index) -> disable_integral_t<S, reference>
    +
    289 {
    +
    290 return derived_cast().element(index.cbegin(), index.cend());
    +
    291 }
    +
    +
    292
    +
    293 template <class D>
    +
    294 template <class I>
    +
    295 inline auto xaccessible<D>::operator[](std::initializer_list<I> index) -> reference
    +
    296 {
    +
    297 return derived_cast().element(index.begin(), index.end());
    +
    298 }
    +
    299
    +
    300 template <class D>
    +
    301 inline auto xaccessible<D>::operator[](size_type i) -> reference
    +
    302 {
    +
    303 return derived_cast().operator()(i);
    +
    304 }
    +
    305
    +
    313 template <class D>
    +
    314 template <class... Args>
    +
    +
    315 inline auto xaccessible<D>::periodic(Args... args) -> reference
    +
    316 {
    +
    317 normalize_periodic(derived_cast().shape(), args...);
    +
    318 return derived_cast()(args...);
    +
    319 }
    +
    +
    +
    320
    +
    324 template <class D>
    +
    +
    325 inline auto xaccessible<D>::front() -> reference
    +
    326 {
    +
    327 return *derived_cast().begin();
    +
    328 }
    +
    +
    +
    329
    +
    333 template <class D>
    +
    +
    334 inline auto xaccessible<D>::back() -> reference
    +
    335 {
    +
    336 return *std::prev(derived_cast().end());
    +
    337 }
    +
    +
    +
    338
    +
    339 template <class D>
    +
    340 inline auto xaccessible<D>::derived_cast() noexcept -> derived_type&
    +
    341 {
    +
    342 return *static_cast<derived_type*>(this);
    +
    343 }
    +
    344
    +
    345}
    +
    346
    +
    347#endif
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Base class for implementation of common expression access methods.
    +
    reference back()
    Returns a reference to the last element of the expression.
    +
    reference front()
    Returns a reference to the first element of the expression.
    +
    Base class for implementation of common expression constant access methods.
    +
    const_reference front() const
    Returns a constant reference to first the element of the expression.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    const_reference back() const
    Returns a constant reference to last the element of the expression.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    void normalize_periodic(const S &shape, Args &... args)
    Normalise an index of a periodic array.
    Definition xstrides.hpp:909
    +
    standard mathematical functions for xexpressions
    + +
    +
    + + + + diff --git a/xaccumulator_8hpp_source.html b/xaccumulator_8hpp_source.html new file mode 100644 index 000000000..9b4ae4b28 --- /dev/null +++ b/xaccumulator_8hpp_source.html @@ -0,0 +1,475 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xaccumulator.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xaccumulator.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ACCUMULATOR_HPP
    +
    11#define XTENSOR_ACCUMULATOR_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <numeric>
    +
    16#include <type_traits>
    +
    17
    +
    18#include "xexpression.hpp"
    +
    19#include "xstrides.hpp"
    +
    20#include "xtensor_config.hpp"
    +
    21#include "xtensor_forward.hpp"
    +
    22
    +
    23namespace xt
    +
    24{
    +
    25
    +
    26#define DEFAULT_STRATEGY_ACCUMULATORS evaluation_strategy::immediate_type
    +
    27
    +
    28 namespace detail
    +
    29 {
    +
    30 template <class V = void>
    +
    31 struct accumulator_identity : xtl::identity
    +
    32 {
    +
    33 using value_type = V;
    +
    34 };
    +
    35 }
    +
    36
    +
    37 /**************
    +
    38 * accumulate *
    +
    39 **************/
    +
    40
    +
    41 template <class ACCUMULATE_FUNC, class INIT_FUNC = detail::accumulator_identity<void>>
    +
    +
    42 struct xaccumulator_functor : public std::tuple<ACCUMULATE_FUNC, INIT_FUNC>
    +
    43 {
    + +
    45 using base_type = std::tuple<ACCUMULATE_FUNC, INIT_FUNC>;
    +
    46 using accumulate_functor_type = ACCUMULATE_FUNC;
    +
    47 using init_functor_type = INIT_FUNC;
    +
    48 using init_value_type = typename init_functor_type::value_type;
    +
    49
    + +
    51 : base_type()
    +
    52 {
    +
    53 }
    +
    54
    +
    55 template <class RF>
    +
    56 xaccumulator_functor(RF&& accumulate_func)
    +
    57 : base_type(std::forward<RF>(accumulate_func), INIT_FUNC())
    +
    58 {
    +
    59 }
    +
    60
    +
    61 template <class RF, class IF>
    +
    62 xaccumulator_functor(RF&& accumulate_func, IF&& init_func)
    +
    63 : base_type(std::forward<RF>(accumulate_func), std::forward<IF>(init_func))
    +
    64 {
    +
    65 }
    +
    66 };
    +
    +
    67
    +
    68 template <class RF>
    +
    69 auto make_xaccumulator_functor(RF&& accumulate_func)
    +
    70 {
    + +
    72 return accumulator_type(std::forward<RF>(accumulate_func));
    +
    73 }
    +
    74
    +
    75 template <class RF, class IF>
    +
    76 auto make_xaccumulator_functor(RF&& accumulate_func, IF&& init_func)
    +
    77 {
    +
    78 using accumulator_type = xaccumulator_functor<std::remove_reference_t<RF>, std::remove_reference_t<IF>>;
    +
    79 return accumulator_type(std::forward<RF>(accumulate_func), std::forward<IF>(init_func));
    +
    80 }
    +
    81
    +
    82 namespace detail
    +
    83 {
    +
    84 template <class F, class E, class EVS>
    +
    85 xarray<typename std::decay_t<E>::value_type> accumulator_impl(F&&, E&&, std::size_t, EVS)
    +
    86 {
    +
    87 static_assert(
    +
    88 !std::is_same<evaluation_strategy::lazy_type, EVS>::value,
    +
    89 "Lazy accumulators not yet implemented."
    +
    90 );
    +
    91 }
    +
    92
    +
    93 template <class F, class E, class EVS>
    +
    94 xarray<typename std::decay_t<E>::value_type> accumulator_impl(F&&, E&&, EVS)
    +
    95 {
    +
    96 static_assert(
    +
    97 !std::is_same<evaluation_strategy::lazy_type, EVS>::value,
    +
    98 "Lazy accumulators not yet implemented."
    +
    99 );
    +
    100 }
    +
    101
    +
    102 template <class T, class R>
    +
    103 struct xaccumulator_return_type
    +
    104 {
    +
    105 using type = xarray<R>;
    +
    106 };
    +
    107
    +
    108 template <class T, layout_type L, class R>
    +
    109 struct xaccumulator_return_type<xarray<T, L>, R>
    +
    110 {
    +
    111 using type = xarray<R, L>;
    +
    112 };
    +
    113
    +
    114 template <class T, std::size_t N, layout_type L, class R>
    +
    115 struct xaccumulator_return_type<xtensor<T, N, L>, R>
    +
    116 {
    +
    117 using type = xtensor<R, N, L>;
    +
    118 };
    +
    119
    +
    120 template <class T, std::size_t... I, layout_type L, class R>
    +
    121 struct xaccumulator_return_type<xtensor_fixed<T, xshape<I...>, L>, R>
    +
    122 {
    +
    123 using type = xtensor_fixed<R, xshape<I...>, L>;
    +
    124 };
    +
    125
    +
    126 template <class T, class R>
    +
    127 using xaccumulator_return_type_t = typename xaccumulator_return_type<T, R>::type;
    +
    128
    +
    129 template <class T>
    +
    130 struct fixed_compute_size;
    +
    131
    +
    132 template <class T, class R>
    +
    133 struct xaccumulator_linear_return_type
    +
    134 {
    +
    135 using type = xtensor<R, 1>;
    +
    136 };
    +
    137
    +
    138 template <class T, layout_type L, class R>
    +
    139 struct xaccumulator_linear_return_type<xarray<T, L>, R>
    +
    140 {
    +
    141 using type = xtensor<R, 1, L>;
    +
    142 };
    +
    143
    +
    144 template <class T, std::size_t N, layout_type L, class R>
    +
    145 struct xaccumulator_linear_return_type<xtensor<T, N, L>, R>
    +
    146 {
    +
    147 using type = xtensor<R, 1, L>;
    +
    148 };
    +
    149
    +
    150 template <class T, std::size_t... I, layout_type L, class R>
    +
    151 struct xaccumulator_linear_return_type<xtensor_fixed<T, xshape<I...>, L>, R>
    +
    152 {
    +
    153 using type = xtensor_fixed<R, xshape<fixed_compute_size<xshape<I...>>::value>, L>;
    +
    154 };
    +
    155
    +
    156 template <class T, class R>
    +
    157 using xaccumulator_linear_return_type_t = typename xaccumulator_linear_return_type<T, R>::type;
    +
    158
    +
    159 template <class F, class E>
    +
    160 inline auto accumulator_init_with_f(F&& f, E& e, std::size_t axis)
    +
    161 {
    +
    162 // this function is the equivalent (but hopefully faster) to (if axis == 1)
    +
    163 // e[:, 0, :, :, ...] = f(e[:, 0, :, :, ...])
    +
    164 // so that all "first" values are initialized in a first pass
    +
    165
    +
    166 std::size_t outer_loop_size, inner_loop_size, pos = 0;
    +
    167 std::size_t outer_stride, inner_stride;
    +
    168
    +
    169 auto set_loop_sizes = [&outer_loop_size, &inner_loop_size](auto first, auto last, std::ptrdiff_t ax)
    +
    170 {
    +
    171 outer_loop_size = std::accumulate(
    +
    172 first,
    +
    173 first + ax,
    +
    174 std::size_t(1),
    +
    175 std::multiplies<std::size_t>()
    +
    176 );
    +
    177 inner_loop_size = std::accumulate(
    +
    178 first + ax + 1,
    +
    179 last,
    +
    180 std::size_t(1),
    +
    181 std::multiplies<std::size_t>()
    +
    182 );
    +
    183 };
    +
    184
    +
    185 // Note: add check that strides > 0
    +
    186 auto set_loop_strides = [&outer_stride, &inner_stride](auto first, auto last, std::ptrdiff_t ax)
    +
    187 {
    +
    188 outer_stride = static_cast<std::size_t>(ax == 0 ? 1 : *std::min_element(first, first + ax));
    +
    189 inner_stride = static_cast<std::size_t>(
    +
    190 (ax == std::distance(first, last) - 1) ? 1 : *std::min_element(first + ax + 1, last)
    +
    191 );
    +
    192 };
    +
    193
    +
    194 set_loop_sizes(e.shape().begin(), e.shape().end(), static_cast<std::ptrdiff_t>(axis));
    +
    195 set_loop_strides(e.strides().begin(), e.strides().end(), static_cast<std::ptrdiff_t>(axis));
    +
    196
    +
    197 if (e.layout() == layout_type::column_major)
    +
    198 {
    +
    199 // swap for better memory locality (smaller stride in the inner loop)
    +
    200 std::swap(outer_loop_size, inner_loop_size);
    +
    201 std::swap(outer_stride, inner_stride);
    +
    202 }
    +
    203
    +
    204 for (std::size_t i = 0; i < outer_loop_size; ++i)
    +
    205 {
    +
    206 pos = i * outer_stride;
    +
    207 for (std::size_t j = 0; j < inner_loop_size; ++j)
    +
    208 {
    +
    209 e.storage()[pos] = f(e.storage()[pos]);
    +
    210 pos += inner_stride;
    +
    211 }
    +
    212 }
    +
    213 }
    +
    214
    +
    215 template <class F, class E>
    +
    216 inline auto accumulator_impl(F&& f, E&& e, std::size_t axis, evaluation_strategy::immediate_type)
    +
    217 {
    +
    218 using init_type = typename F::init_value_type;
    +
    219 using accumulate_functor_type = typename F::accumulate_functor_type;
    +
    220 using expr_value_type = typename std::decay_t<E>::value_type;
    +
    221 // using return_type = std::conditional_t<std::is_same<init_type, void>::value, typename
    +
    222 // std::decay_t<E>::value_type, init_type>;
    +
    223
    +
    224 using return_type = std::decay_t<decltype(std::declval<accumulate_functor_type>()(
    +
    225 std::declval<init_type>(),
    +
    226 std::declval<expr_value_type>()
    +
    227 ))>;
    +
    228
    +
    229 using result_type = xaccumulator_return_type_t<std::decay_t<E>, return_type>;
    +
    230
    +
    231 if (axis >= e.dimension())
    +
    232 {
    +
    233 XTENSOR_THROW(std::runtime_error, "Axis larger than expression dimension in accumulator.");
    +
    234 }
    +
    235
    +
    236 result_type res = e; // assign + make a copy, we need it anyways
    +
    237
    +
    238 if (res.shape(axis) != std::size_t(0))
    +
    239 {
    +
    240 std::size_t inner_stride = static_cast<std::size_t>(res.strides()[axis]);
    +
    241 std::size_t outer_stride = 1; // either row- or column-wise (strides.back / strides.front)
    +
    242 std::size_t outer_loop_size = 0;
    +
    243 std::size_t inner_loop_size = 0;
    +
    244 std::size_t init_size = e.shape()[axis] != std::size_t(1) ? std::size_t(1) : std::size_t(0);
    +
    245
    +
    246 auto set_loop_sizes =
    +
    247 [&outer_loop_size, &inner_loop_size, init_size](auto first, auto last, std::ptrdiff_t ax)
    +
    248 {
    +
    249 outer_loop_size = std::accumulate(first, first + ax, init_size, std::multiplies<std::size_t>());
    +
    250
    +
    251 inner_loop_size = std::accumulate(
    +
    252 first + ax,
    +
    253 last,
    +
    254 std::size_t(1),
    +
    255 std::multiplies<std::size_t>()
    +
    256 );
    +
    257 };
    +
    258
    +
    259 if (result_type::static_layout == layout_type::row_major)
    +
    260 {
    +
    261 set_loop_sizes(res.shape().cbegin(), res.shape().cend(), static_cast<std::ptrdiff_t>(axis));
    +
    262 }
    +
    263 else
    +
    264 {
    +
    265 set_loop_sizes(res.shape().cbegin(), res.shape().cend(), static_cast<std::ptrdiff_t>(axis + 1));
    +
    266 std::swap(inner_loop_size, outer_loop_size);
    +
    267 }
    +
    268
    +
    269 std::size_t pos = 0;
    +
    270
    +
    271 inner_loop_size = inner_loop_size - inner_stride;
    +
    272
    +
    273 // activate the init loop if we have an init function other than identity
    +
    274 if (!std::is_same<
    +
    275 std::decay_t<typename F::init_functor_type>,
    +
    276 typename detail::accumulator_identity<init_type>>::value)
    +
    277 {
    +
    278 accumulator_init_with_f(xt::get<1>(f), res, axis);
    +
    279 }
    +
    280
    +
    281 pos = 0;
    +
    282 for (std::size_t i = 0; i < outer_loop_size; ++i)
    +
    283 {
    +
    284 for (std::size_t j = 0; j < inner_loop_size; ++j)
    +
    285 {
    +
    286 res.storage()[pos + inner_stride] = xt::get<0>(f)(
    +
    287 res.storage()[pos],
    +
    288 res.storage()[pos + inner_stride]
    +
    289 );
    +
    290
    +
    291 pos += outer_stride;
    +
    292 }
    +
    293 pos += inner_stride;
    +
    294 }
    +
    295 }
    +
    296 return res;
    +
    297 }
    +
    298
    +
    299 template <class F, class E>
    +
    300 inline auto accumulator_impl(F&& f, E&& e, evaluation_strategy::immediate_type)
    +
    301 {
    +
    302 using init_type = typename F::init_value_type;
    +
    303 using expr_value_type = typename std::decay_t<E>::value_type;
    +
    304 using accumulate_functor_type = typename F::accumulate_functor_type;
    +
    305 using return_type = std::decay_t<decltype(std::declval<accumulate_functor_type>()(
    +
    306 std::declval<init_type>(),
    +
    307 std::declval<expr_value_type>()
    +
    308 ))>;
    +
    309 // using return_type = std::conditional_t<std::is_same<init_type, void>::value, typename
    +
    310 // std::decay_t<E>::value_type, init_type>;
    +
    311
    +
    312 using result_type = xaccumulator_return_type_t<std::decay_t<E>, return_type>;
    +
    313
    +
    314 std::size_t sz = e.size();
    +
    315 auto result = result_type::from_shape({sz});
    +
    316
    +
    317 if (sz != std::size_t(0))
    +
    318 {
    +
    319 auto it = e.template begin<XTENSOR_DEFAULT_TRAVERSAL>();
    +
    320 result.storage()[0] = xt::get<1>(f)(*it);
    +
    321 ++it;
    +
    322
    +
    323 for (std::size_t idx = 0; it != e.template end<XTENSOR_DEFAULT_TRAVERSAL>(); ++it)
    +
    324 {
    +
    325 result.storage()[idx + 1] = xt::get<0>(f)(result.storage()[idx], *it);
    +
    326 ++idx;
    +
    327 }
    +
    328 }
    +
    329 return result;
    +
    330 }
    +
    331 }
    +
    332
    +
    343 template <class F, class E, class EVS = DEFAULT_STRATEGY_ACCUMULATORS, XTL_REQUIRES(is_evaluation_strategy<EVS>)>
    +
    +
    344 inline auto accumulate(F&& f, E&& e, EVS evaluation_strategy = EVS())
    +
    345 {
    +
    346 // Note we need to check is_integral above in order to prohibit EVS = int, and not taking the
    +
    347 // std::size_t overload below!
    +
    348 return detail::accumulator_impl(std::forward<F>(f), std::forward<E>(e), evaluation_strategy);
    +
    349 }
    +
    +
    350
    +
    362 template <class F, class E, class EVS = DEFAULT_STRATEGY_ACCUMULATORS>
    +
    +
    363 inline auto accumulate(F&& f, E&& e, std::ptrdiff_t axis, EVS evaluation_strategy = EVS())
    +
    364 {
    +
    365 std::size_t ax = normalize_axis(e.dimension(), axis);
    +
    366 return detail::accumulator_impl(std::forward<F>(f), std::forward<E>(e), ax, evaluation_strategy);
    +
    367 }
    +
    +
    368}
    +
    369
    +
    370#endif
    +
    standard mathematical functions for xexpressions
    +
    fixed_shape< N... > xshape
    Alias template for fixed_shape allows for a shorter template shape definition in xtensor_fixed.
    +
    xarray_container< uvector< T, A >, L, xt::svector< typename uvector< T, A >::size_type, 4, SA, true > > xarray
    Alias template on xarray_container with default parameters for data container type and shape / stride...
    +
    xtensor_container< uvector< T, A >, N, L > xtensor
    Alias template on xtensor_container with default parameters for data container type.
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    auto accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())
    Accumulate and flatten array NOTE This function is not lazy!
    +
    xfixed_container< T, FSH, L, Sharable > xtensor_fixed
    Alias template on xfixed_container with default parameters for layout type.
    + +
    +
    + + + + diff --git a/xadapt_8hpp_source.html b/xadapt_8hpp_source.html new file mode 100644 index 000000000..e734f7495 --- /dev/null +++ b/xadapt_8hpp_source.html @@ -0,0 +1,590 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xadapt.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xadapt.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ADAPT_HPP
    +
    11#define XTENSOR_ADAPT_HPP
    +
    12
    +
    13#include <array>
    +
    14#include <cstddef>
    +
    15#include <memory>
    +
    16#include <type_traits>
    +
    17
    +
    18#include <xtl/xsequence.hpp>
    +
    19
    +
    20#include "xarray.hpp"
    +
    21#include "xbuffer_adaptor.hpp"
    +
    22#include "xfixed.hpp"
    +
    23#include "xtensor.hpp"
    +
    24
    +
    25namespace xt
    +
    26{
    +
    31 namespace detail
    +
    32 {
    +
    33 template <class>
    +
    34 struct array_size_impl;
    +
    35
    +
    36 template <class T, std::size_t N>
    +
    37 struct array_size_impl<std::array<T, N>>
    +
    38 {
    +
    39 static constexpr std::size_t value = N;
    +
    40 };
    +
    41
    +
    42 template <class C>
    +
    43 using array_size = array_size_impl<std::decay_t<C>>;
    +
    44
    +
    45 template <class P>
    +
    46 struct default_allocator_for_ptr
    +
    47 {
    +
    48 using type = std::allocator<std::remove_const_t<std::remove_pointer_t<std::remove_reference_t<P>>>>;
    +
    49 };
    +
    50
    +
    51 template <class P>
    +
    52 using default_allocator_for_ptr_t = typename default_allocator_for_ptr<P>::type;
    +
    53
    +
    54 template <class T>
    +
    55 using not_an_array = xtl::negation<is_array<T>>;
    +
    56
    +
    57 template <class T>
    +
    58 using not_a_pointer = xtl::negation<std::is_pointer<T>>;
    +
    59
    +
    60 template <class T>
    +
    61 using not_a_layout = xtl::negation<std::is_same<layout_type, T>>;
    +
    62 }
    +
    63
    +
    64#ifndef IN_DOXYGEN
    +
    65
    +
    66 /**************************
    +
    67 * xarray_adaptor builder *
    +
    68 **************************/
    +
    69
    +
    79 template <
    +
    80 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    81 class C,
    +
    82 class SC,
    +
    83 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>, detail::not_a_pointer<C>)>
    +
    84 inline xarray_adaptor<xtl::closure_type_t<C>, L, std::decay_t<SC>>
    +
    85 adapt(C&& container, const SC& shape, layout_type l = L)
    +
    86 {
    +
    87 static_assert(!xtl::is_integral<SC>::value, "shape cannot be a integer");
    +
    88 using return_type = xarray_adaptor<xtl::closure_type_t<C>, L, std::decay_t<SC>>;
    +
    89 return return_type(std::forward<C>(container), shape, l);
    +
    90 }
    +
    91
    +
    100 template <
    +
    101 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    102 class C,
    +
    103 class SC,
    +
    104 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>, std::is_pointer<std::remove_reference_t<C>>)>
    +
    105 inline auto adapt(C&& pointer, const SC& shape, layout_type l = L)
    +
    106 {
    +
    107 static_assert(!xtl::is_integral<SC>::value, "shape cannot be a integer");
    +
    108 using buffer_type = xbuffer_adaptor<C, xt::no_ownership, detail::default_allocator_for_ptr_t<C>>;
    +
    109 using return_type = xarray_adaptor<buffer_type, L, std::decay_t<SC>>;
    +
    110 std::size_t size = compute_size(shape);
    +
    111 return return_type(buffer_type(pointer, size), shape, l);
    +
    112 }
    +
    113
    +
    123 template <
    +
    124 class C,
    +
    125 class SC,
    +
    126 class SS,
    +
    127 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<SS>>)>
    +
    128 inline xarray_adaptor<xtl::closure_type_t<C>, layout_type::dynamic, std::decay_t<SC>>
    +
    129 adapt(C&& container, SC&& shape, SS&& strides)
    +
    130 {
    +
    131 static_assert(!xtl::is_integral<std::decay_t<SC>>::value, "shape cannot be a integer");
    +
    132 using return_type = xarray_adaptor<xtl::closure_type_t<C>, layout_type::dynamic, std::decay_t<SC>>;
    +
    133 return return_type(
    +
    134 std::forward<C>(container),
    +
    135 xtl::forward_sequence<typename return_type::inner_shape_type, SC>(shape),
    +
    136 xtl::forward_sequence<typename return_type::inner_strides_type, SS>(strides)
    +
    137 );
    +
    138 }
    +
    139
    +
    153 template <
    +
    154 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    155 class P,
    +
    156 class O,
    +
    157 class SC,
    +
    158 class A = detail::default_allocator_for_ptr_t<P>,
    +
    159 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>)>
    +
    160 inline xarray_adaptor<xbuffer_adaptor<xtl::closure_type_t<P>, O, A>, L, SC> adapt(
    +
    161 P&& pointer,
    +
    162 typename A::size_type size,
    +
    163 O ownership,
    +
    164 const SC& shape,
    +
    165 layout_type l = L,
    +
    166 const A& alloc = A()
    +
    167 )
    +
    168 {
    +
    169 static_assert(!xtl::is_integral<SC>::value, "shape cannot be a integer");
    +
    170 (void) ownership;
    +
    171 using buffer_type = xbuffer_adaptor<xtl::closure_type_t<P>, O, A>;
    +
    172 using return_type = xarray_adaptor<buffer_type, L, SC>;
    +
    173 buffer_type buf(std::forward<P>(pointer), size, alloc);
    +
    174 return return_type(std::move(buf), shape, l);
    +
    175 }
    +
    176
    +
    190 template <
    +
    191 class P,
    +
    192 class O,
    +
    193 class SC,
    +
    194 class SS,
    +
    195 class A = detail::default_allocator_for_ptr_t<P>,
    +
    196 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<SS>>)>
    +
    197 inline xarray_adaptor<xbuffer_adaptor<xtl::closure_type_t<P>, O, A>, layout_type::dynamic, std::decay_t<SC>>
    +
    198 adapt(P&& pointer, typename A::size_type size, O ownership, SC&& shape, SS&& strides, const A& alloc = A())
    +
    199 {
    +
    200 static_assert(!xtl::is_integral<std::decay_t<SC>>::value, "shape cannot be a integer");
    +
    201 (void) ownership;
    +
    202 using buffer_type = xbuffer_adaptor<xtl::closure_type_t<P>, O, A>;
    +
    203 using return_type = xarray_adaptor<buffer_type, layout_type::dynamic, std::decay_t<SC>>;
    +
    204 buffer_type buf(std::forward<P>(pointer), size, alloc);
    +
    205 return return_type(
    +
    206 std::move(buf),
    +
    207 xtl::forward_sequence<typename return_type::inner_shape_type, SC>(shape),
    +
    208 xtl::forward_sequence<typename return_type::inner_strides_type, SS>(strides)
    +
    209 );
    +
    210 }
    +
    211
    +
    221 template <
    +
    222 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    223 class T,
    +
    224 std::size_t N,
    +
    225 class SC,
    +
    226 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>)>
    +
    227 inline auto adapt(T (&c_array)[N], const SC& shape, layout_type l = L)
    +
    228 {
    +
    229 return adapt(&c_array[0], N, xt::no_ownership(), shape, l);
    +
    230 }
    +
    231
    +
    241 template <
    +
    242 class T,
    +
    243 std::size_t N,
    +
    244 class SC,
    +
    245 class SS,
    +
    246 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<SS>>)>
    +
    247 inline auto adapt(T (&c_array)[N], SC&& shape, SS&& strides)
    +
    248 {
    +
    249 return adapt(&c_array[0], N, xt::no_ownership(), std::forward<SC>(shape), std::forward<SS>(strides));
    +
    250 }
    +
    251
    +
    252 /***************************
    +
    253 * xtensor_adaptor builder *
    +
    254 ***************************/
    +
    255
    +
    264 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class C>
    +
    265 inline xtensor_adaptor<C, 1, L> adapt(C&& container, layout_type l = L)
    +
    266 {
    +
    267 const std::array<typename std::decay_t<C>::size_type, 1> shape{container.size()};
    +
    268 using return_type = xtensor_adaptor<xtl::closure_type_t<C>, 1, L>;
    +
    269 return return_type(std::forward<C>(container), shape, l);
    +
    270 }
    +
    271
    +
    281 template <
    +
    282 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    283 class C,
    +
    284 class SC,
    +
    285 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>, detail::not_a_pointer<C>)>
    +
    286 inline xtensor_adaptor<C, detail::array_size<SC>::value, L>
    +
    287 adapt(C&& container, const SC& shape, layout_type l = L)
    +
    288 {
    +
    289 static_assert(!xtl::is_integral<SC>::value, "shape cannot be a integer");
    +
    290 constexpr std::size_t N = detail::array_size<SC>::value;
    +
    291 using return_type = xtensor_adaptor<xtl::closure_type_t<C>, N, L>;
    +
    292 return return_type(std::forward<C>(container), shape, l);
    +
    293 }
    +
    294
    +
    303 template <
    +
    304 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    305 class C,
    +
    306 class SC,
    +
    307 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>, std::is_pointer<std::remove_reference_t<C>>)>
    +
    308 inline auto adapt(C&& pointer, const SC& shape, layout_type l = L)
    +
    309 {
    +
    310 static_assert(!xtl::is_integral<SC>::value, "shape cannot be a integer");
    +
    311 using buffer_type = xbuffer_adaptor<C, xt::no_ownership, detail::default_allocator_for_ptr_t<C>>;
    +
    312 constexpr std::size_t N = detail::array_size<SC>::value;
    +
    313 using return_type = xtensor_adaptor<buffer_type, N, L>;
    +
    314 return return_type(buffer_type(pointer, compute_size(shape)), shape, l);
    +
    315 }
    +
    316
    +
    326 template <
    +
    327 class C,
    +
    328 class SC,
    +
    329 class SS,
    +
    330 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<SS>>)>
    +
    331 inline xtensor_adaptor<C, detail::array_size<SC>::value, layout_type::dynamic>
    +
    332 adapt(C&& container, SC&& shape, SS&& strides)
    +
    333 {
    +
    334 static_assert(!xtl::is_integral<std::decay_t<SC>>::value, "shape cannot be a integer");
    +
    335 constexpr std::size_t N = detail::array_size<SC>::value;
    +
    336 using return_type = xtensor_adaptor<xtl::closure_type_t<C>, N, layout_type::dynamic>;
    +
    337 return return_type(
    +
    338 std::forward<C>(container),
    +
    339 xtl::forward_sequence<typename return_type::inner_shape_type, SC>(shape),
    +
    340 xtl::forward_sequence<typename return_type::inner_strides_type, SS>(strides)
    +
    341 );
    +
    342 }
    +
    343
    +
    356 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class P, class O, class A = detail::default_allocator_for_ptr_t<P>>
    +
    357 inline xtensor_adaptor<xbuffer_adaptor<xtl::closure_type_t<P>, O, A>, 1, L>
    +
    358 adapt(P&& pointer, typename A::size_type size, O ownership, layout_type l = L, const A& alloc = A())
    +
    359 {
    +
    360 (void) ownership;
    +
    361 using buffer_type = xbuffer_adaptor<xtl::closure_type_t<P>, O, A>;
    +
    362 using return_type = xtensor_adaptor<buffer_type, 1, L>;
    +
    363 buffer_type buf(std::forward<P>(pointer), size, alloc);
    +
    364 const std::array<typename A::size_type, 1> shape{size};
    +
    365 return return_type(std::move(buf), shape, l);
    +
    366 }
    +
    367
    +
    381 template <
    +
    382 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    383 class P,
    +
    384 class O,
    +
    385 class SC,
    +
    386 class A = detail::default_allocator_for_ptr_t<P>,
    +
    387 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>)>
    +
    388 inline xtensor_adaptor<xbuffer_adaptor<xtl::closure_type_t<P>, O, A>, detail::array_size<SC>::value, L>
    +
    389 adapt(
    +
    390 P&& pointer,
    +
    391 typename A::size_type size,
    +
    392 O ownership,
    +
    393 const SC& shape,
    +
    394 layout_type l = L,
    +
    395 const A& alloc = A()
    +
    396 )
    +
    397 {
    +
    398 static_assert(!xtl::is_integral<SC>::value, "shape cannot be a integer");
    +
    399 (void) ownership;
    +
    400 using buffer_type = xbuffer_adaptor<xtl::closure_type_t<P>, O, A>;
    +
    401 constexpr std::size_t N = detail::array_size<SC>::value;
    +
    402 using return_type = xtensor_adaptor<buffer_type, N, L>;
    +
    403 buffer_type buf(std::forward<P>(pointer), size, alloc);
    +
    404 return return_type(std::move(buf), shape, l);
    +
    405 }
    +
    406
    +
    420 template <
    +
    421 class P,
    +
    422 class O,
    +
    423 class SC,
    +
    424 class SS,
    +
    425 class A = detail::default_allocator_for_ptr_t<P>,
    +
    426 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<SS>>)>
    +
    427 inline xtensor_adaptor<xbuffer_adaptor<xtl::closure_type_t<P>, O, A>, detail::array_size<SC>::value, layout_type::dynamic>
    +
    428 adapt(P&& pointer, typename A::size_type size, O ownership, SC&& shape, SS&& strides, const A& alloc = A())
    +
    429 {
    +
    430 static_assert(!xtl::is_integral<std::decay_t<SC>>::value, "shape cannot be a integer");
    +
    431 (void) ownership;
    +
    432 using buffer_type = xbuffer_adaptor<xtl::closure_type_t<P>, O, A>;
    +
    433 constexpr std::size_t N = detail::array_size<SC>::value;
    +
    434 using return_type = xtensor_adaptor<buffer_type, N, layout_type::dynamic>;
    +
    435 buffer_type buf(std::forward<P>(pointer), size, alloc);
    +
    436 return return_type(
    +
    437 std::move(buf),
    +
    438 xtl::forward_sequence<typename return_type::inner_shape_type, SC>(shape),
    +
    439 xtl::forward_sequence<typename return_type::inner_strides_type, SS>(strides)
    +
    440 );
    +
    441 }
    +
    442
    +
    452 template <
    +
    453 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    454 class T,
    +
    455 std::size_t N,
    +
    456 class SC,
    +
    457 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>)>
    +
    458 inline auto adapt(T (&c_array)[N], const SC& shape, layout_type l = L)
    +
    459 {
    +
    460 return adapt(&c_array[0], N, xt::no_ownership(), shape, l);
    +
    461 }
    +
    462
    +
    472 template <
    +
    473 class T,
    +
    474 std::size_t N,
    +
    475 class SC,
    +
    476 class SS,
    +
    477 XTL_REQUIRES(detail::is_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<SS>>)>
    +
    478 inline auto adapt(T (&c_array)[N], SC&& shape, SS&& strides)
    +
    479 {
    +
    480 return adapt(&c_array[0], N, xt::no_ownership(), std::forward<SC>(shape), std::forward<SS>(strides));
    +
    481 }
    +
    482
    +
    491 template <
    +
    492 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    493 class C,
    +
    494 std::size_t... X,
    +
    495 XTL_REQUIRES(std::is_pointer<std::remove_reference_t<C>>)>
    +
    496 inline auto adapt(C&& pointer, const fixed_shape<X...>& /*shape*/)
    +
    497 {
    +
    498 using buffer_type = xbuffer_adaptor<C, xt::no_ownership, detail::default_allocator_for_ptr_t<C>>;
    +
    499 using return_type = xfixed_adaptor<buffer_type, fixed_shape<X...>, L>;
    +
    500 return return_type(buffer_type(pointer, detail::fixed_compute_size<fixed_shape<X...>>::value));
    +
    501 }
    +
    502
    +
    503 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class C, class T, std::size_t N>
    +
    504 inline auto adapt(C&& ptr, const T (&shape)[N])
    +
    505 {
    +
    506 using shape_type = std::array<std::size_t, N>;
    +
    507 return adapt(std::forward<C>(ptr), xtl::forward_sequence<shape_type, decltype(shape)>(shape));
    +
    508 }
    +
    509
    +
    510#else // IN_DOXYGEN
    +
    511
    +
    525 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class C, class SC>
    +
    526 inline auto adapt(C&& container, const SC& shape, layout_type l = L);
    +
    527
    +
    540 template <class C, class SC, class SS>
    +
    541 inline auto adapt(C&& container, SC&& shape, SS&& strides);
    +
    542
    +
    559 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class P, class O, class SC, class A = detail::default_allocator_for_ptr_t<P>>
    +
    560 inline auto adapt(
    +
    561 P&& pointer,
    +
    562 typename A::size_type size,
    +
    563 O ownership,
    +
    564 const SC& shape,
    +
    565 layout_type l = L,
    +
    566 const A& alloc = A()
    +
    567 );
    +
    568
    +
    585 template <class P, class O, class SC, class SS, class A = detail::default_allocator_for_ptr_t<P>>
    +
    586 inline auto
    +
    587 adapt(P&& pointer, typename A::size_type size, O ownership, SC&& shape, SS&& strides, const A& alloc = A());
    +
    588
    +
    601 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class T, std::size_t N, class SC>
    +
    602 inline auto adapt(T (&c_array)[N], const SC& shape, layout_type l = L);
    +
    603
    +
    617 template <class T, std::size_t N, class SC, class SS>
    +
    618 inline auto adapt(T (&c_array)[N], SC&& shape, SS&& strides);
    +
    619
    +
    628 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class C, std::size_t... X>
    +
    629 inline auto adapt(C&& pointer, const fixed_shape<X...>& /*shape*/);
    +
    630
    +
    639 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class C>
    +
    640 inline xtensor_adaptor<C, 1, L> adapt(C&& container, layout_type l = L);
    +
    641
    +
    654 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class P, class O, class A = detail::default_allocator_for_ptr_t<P>>
    + +
    656 adapt(P&& pointer, typename A::size_type size, O ownership, layout_type l = L, const A& alloc = A());
    +
    657
    +
    658#endif // IN_DOXYGEN
    +
    659
    +
    660 /*****************************
    +
    661 * smart_ptr adapter builder *
    +
    662 *****************************/
    +
    663
    +
    686 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class P, class SC, XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>)>
    +
    +
    687 auto adapt_smart_ptr(P&& smart_ptr, const SC& shape, layout_type l = L)
    +
    688 {
    +
    689 using buffer_adaptor = xbuffer_adaptor<decltype(smart_ptr.get()), smart_ownership, std::decay_t<P>>;
    + +
    691 buffer_adaptor(smart_ptr.get(), compute_size(shape), std::forward<P>(smart_ptr)),
    +
    692 shape,
    +
    693 l
    +
    694 );
    +
    695 }
    +
    +
    696
    +
    746 template <
    +
    747 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    748 class P,
    +
    749 class SC,
    +
    750 class D,
    +
    751 XTL_REQUIRES(detail::not_an_array<std::decay_t<SC>>, detail::not_a_layout<std::decay_t<D>>)>
    +
    +
    752 auto adapt_smart_ptr(P&& data_ptr, const SC& shape, D&& smart_ptr, layout_type l = L)
    +
    753 {
    + +
    755
    + +
    757 buffer_adaptor(data_ptr, compute_size(shape), std::forward<D>(smart_ptr)),
    +
    758 shape,
    +
    759 l
    +
    760 );
    +
    761 }
    +
    +
    762
    +
    784 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class P, class I, std::size_t N>
    +
    +
    785 auto adapt_smart_ptr(P&& smart_ptr, const I (&shape)[N], layout_type l = L)
    +
    786 {
    +
    787 using buffer_adaptor = xbuffer_adaptor<decltype(smart_ptr.get()), smart_ownership, std::decay_t<P>>;
    +
    788 std::array<std::size_t, N> fshape = xtl::forward_sequence<std::array<std::size_t, N>, decltype(shape)>(
    +
    789 shape
    +
    790 );
    + +
    792 buffer_adaptor(smart_ptr.get(), compute_size(fshape), std::forward<P>(smart_ptr)),
    +
    793 std::move(fshape),
    +
    794 l
    +
    795 );
    +
    796 }
    +
    +
    797
    +
    845 template <
    +
    846 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    847 class P,
    +
    848 class I,
    +
    849 std::size_t N,
    +
    850 class D,
    +
    851 XTL_REQUIRES(detail::not_a_layout<std::decay_t<D>>)>
    +
    +
    852 auto adapt_smart_ptr(P&& data_ptr, const I (&shape)[N], D&& smart_ptr, layout_type l = L)
    +
    853 {
    + +
    855 std::array<std::size_t, N> fshape = xtl::forward_sequence<std::array<std::size_t, N>, decltype(shape)>(
    +
    856 shape
    +
    857 );
    +
    858
    + +
    860 buffer_adaptor(data_ptr, compute_size(fshape), std::forward<D>(smart_ptr)),
    +
    861 std::move(fshape),
    +
    862 l
    +
    863 );
    +
    864 }
    +
    +
    865
    +
    885 template <class T, std::size_t N, layout_type L = XTENSOR_DEFAULT_LAYOUT>
    + +
    887 xbuffer_adaptor<xtl::closure_type_t<T*>, xt::no_ownership, detail::default_allocator_for_ptr_t<T>>,
    +
    888 N,
    +
    889 L>;
    +
    890
    +
    911 template <
    +
    912 class T,
    +
    913 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    914 class SC = XTENSOR_DEFAULT_SHAPE_CONTAINER(T, std::allocator<std::size_t>, std::allocator<std::size_t>)>
    + +
    916 xbuffer_adaptor<xtl::closure_type_t<T*>, xt::no_ownership, detail::default_allocator_for_ptr_t<T>>,
    +
    917 L,
    +
    918 SC>;
    +
    919}
    +
    920
    +
    921#endif
    +
    Fixed shape implementation for compile time defined arrays.
    +
    Dense multidimensional container adaptor with tensor semantic.
    Definition xarray.hpp:217
    + +
    Dense multidimensional container adaptor with tensor semantics and fixed dimension.
    Definition xtensor.hpp:212
    +
    auto adapt_smart_ptr(P &&smart_ptr, const SC &shape, layout_type l=L)
    Adapt a smart pointer to a typed memory block (unique_ptr or shared_ptr)
    Definition xadapt.hpp:687
    +
    auto adapt(C &&container, const SC &shape, layout_type l=L)
    Constructs:
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    +
    + + + + diff --git a/xarray_8hpp_source.html b/xarray_8hpp_source.html new file mode 100644 index 000000000..125aa3b16 --- /dev/null +++ b/xarray_8hpp_source.html @@ -0,0 +1,707 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xarray.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xarray.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ARRAY_HPP
    +
    11#define XTENSOR_ARRAY_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <initializer_list>
    +
    15#include <utility>
    +
    16
    +
    17#include <xtl/xsequence.hpp>
    +
    18
    +
    19#include "xbuffer_adaptor.hpp"
    +
    20#include "xcontainer.hpp"
    +
    21#include "xsemantic.hpp"
    +
    22
    +
    23namespace xt
    +
    24{
    +
    25
    +
    26 /********************************
    +
    27 * xarray_container declaration *
    +
    28 ********************************/
    +
    29
    +
    30 namespace extension
    +
    31 {
    +
    32 template <class EC, layout_type L, class SC, class Tag>
    + +
    34
    +
    35 template <class EC, layout_type L, class SC>
    +
    + +
    37 {
    + +
    39 };
    +
    +
    40
    +
    41 template <class EC, layout_type L, class SC, class Tag>
    +
    42 using xarray_container_base_t = typename xarray_container_base<EC, L, SC, Tag>::type;
    +
    43 }
    +
    44
    +
    45 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    47 {
    +
    48 using storage_type = EC;
    +
    49 using reference = inner_reference_t<storage_type>;
    +
    50 using const_reference = typename storage_type::const_reference;
    +
    51 using size_type = typename storage_type::size_type;
    +
    52 using shape_type = SC;
    +
    53 using strides_type = get_strides_t<shape_type>;
    +
    54 using backstrides_type = get_strides_t<shape_type>;
    +
    55 using inner_shape_type = shape_type;
    +
    56 using inner_strides_type = strides_type;
    +
    57 using inner_backstrides_type = backstrides_type;
    + +
    59 static constexpr layout_type layout = L;
    +
    60 };
    +
    +
    61
    +
    62 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    64 : xcontainer_iterable_types<xarray_container<EC, L, SC, Tag>>
    +
    65 {
    +
    66 };
    +
    +
    67
    +
    81 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    82 class xarray_container : public xstrided_container<xarray_container<EC, L, SC, Tag>>,
    +
    83 public xcontainer_semantic<xarray_container<EC, L, SC, Tag>>,
    +
    84 public extension::xarray_container_base_t<EC, L, SC, Tag>
    +
    85 {
    +
    86 public:
    +
    87
    + + + +
    91 using extension_base = extension::xarray_container_base_t<EC, L, SC, Tag>;
    +
    92 using storage_type = typename base_type::storage_type;
    +
    93 using allocator_type = typename base_type::allocator_type;
    +
    94 using value_type = typename base_type::value_type;
    +
    95 using reference = typename base_type::reference;
    +
    96 using const_reference = typename base_type::const_reference;
    +
    97 using pointer = typename base_type::pointer;
    +
    98 using const_pointer = typename base_type::const_pointer;
    +
    99 using shape_type = typename base_type::shape_type;
    +
    100 using inner_shape_type = typename base_type::inner_shape_type;
    +
    101 using strides_type = typename base_type::strides_type;
    +
    102 using backstrides_type = typename base_type::backstrides_type;
    +
    103 using inner_strides_type = typename base_type::inner_strides_type;
    +
    104 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    105 using temporary_type = typename semantic_base::temporary_type;
    +
    106 using expression_tag = Tag;
    +
    107 static constexpr std::size_t rank = SIZE_MAX;
    +
    108
    + +
    110 explicit xarray_container(const shape_type& shape, layout_type l = L);
    +
    111 explicit xarray_container(const shape_type& shape, const_reference value, layout_type l = L);
    +
    112 explicit xarray_container(const shape_type& shape, const strides_type& strides);
    +
    113 explicit xarray_container(const shape_type& shape, const strides_type& strides, const_reference value);
    +
    114 explicit xarray_container(storage_type&& storage, inner_shape_type&& shape, inner_strides_type&& strides);
    +
    115
    +
    116 xarray_container(const value_type& t);
    +
    117 xarray_container(nested_initializer_list_t<value_type, 1> t);
    +
    118 xarray_container(nested_initializer_list_t<value_type, 2> t);
    +
    119 xarray_container(nested_initializer_list_t<value_type, 3> t);
    +
    120 xarray_container(nested_initializer_list_t<value_type, 4> t);
    +
    121 xarray_container(nested_initializer_list_t<value_type, 5> t);
    +
    122
    +
    123 template <class S = shape_type>
    +
    124 static xarray_container from_shape(S&& s);
    +
    125
    +
    126 ~xarray_container() = default;
    +
    127
    +
    128 xarray_container(const xarray_container&) = default;
    +
    129 xarray_container& operator=(const xarray_container&) = default;
    +
    130
    + +
    132 xarray_container& operator=(xarray_container&&) = default;
    +
    133
    +
    134 template <std::size_t N>
    + +
    136 template <std::size_t N>
    + +
    138
    +
    139 template <class E>
    + +
    141
    +
    142 template <class E>
    +
    143 xarray_container& operator=(const xexpression<E>& e);
    +
    144
    +
    145 private:
    +
    146
    +
    147 storage_type m_storage;
    +
    148
    +
    149 storage_type& storage_impl() noexcept;
    +
    150 const storage_type& storage_impl() const noexcept;
    +
    151
    +
    152 friend class xcontainer<xarray_container<EC, L, SC, Tag>>;
    +
    153 };
    +
    +
    154
    +
    155 /******************************
    +
    156 * xarray_adaptor declaration *
    +
    157 ******************************/
    +
    158
    +
    159 namespace extension
    +
    160 {
    +
    161 template <class EC, layout_type L, class SC, class Tag>
    +
    162 struct xarray_adaptor_base;
    +
    163
    +
    164 template <class EC, layout_type L, class SC>
    +
    165 struct xarray_adaptor_base<EC, L, SC, xtensor_expression_tag>
    +
    166 {
    +
    167 using type = xtensor_empty_base;
    +
    168 };
    +
    169
    +
    170 template <class EC, layout_type L, class SC, class Tag>
    +
    171 using xarray_adaptor_base_t = typename xarray_adaptor_base<EC, L, SC, Tag>::type;
    +
    172 }
    +
    173
    +
    174 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    176 {
    +
    177 using storage_type = std::remove_reference_t<EC>;
    +
    178 using reference = inner_reference_t<storage_type>;
    +
    179 using const_reference = typename storage_type::const_reference;
    +
    180 using size_type = typename storage_type::size_type;
    +
    181 using shape_type = SC;
    +
    182 using strides_type = get_strides_t<shape_type>;
    +
    183 using backstrides_type = get_strides_t<shape_type>;
    +
    184 using inner_shape_type = shape_type;
    +
    185 using inner_strides_type = strides_type;
    +
    186 using inner_backstrides_type = backstrides_type;
    + +
    188 static constexpr layout_type layout = L;
    +
    189 };
    +
    +
    190
    +
    191 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    192 struct xiterable_inner_types<xarray_adaptor<EC, L, SC, Tag>>
    +
    193 : xcontainer_iterable_types<xarray_adaptor<EC, L, SC, Tag>>
    +
    194 {
    +
    195 };
    +
    +
    196
    +
    213 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    214 class xarray_adaptor : public xstrided_container<xarray_adaptor<EC, L, SC, Tag>>,
    +
    215 public xcontainer_semantic<xarray_adaptor<EC, L, SC, Tag>>,
    +
    216 public extension::xarray_adaptor_base_t<EC, L, SC, Tag>
    +
    217 {
    +
    218 public:
    +
    219
    +
    220 using container_closure_type = EC;
    +
    221
    + + + +
    225 using extension_base = extension::xarray_adaptor_base_t<EC, L, SC, Tag>;
    +
    226 using storage_type = typename base_type::storage_type;
    +
    227 using allocator_type = typename base_type::allocator_type;
    +
    228 using shape_type = typename base_type::shape_type;
    +
    229 using strides_type = typename base_type::strides_type;
    +
    230 using backstrides_type = typename base_type::backstrides_type;
    +
    231 using temporary_type = typename semantic_base::temporary_type;
    +
    232 using expression_tag = Tag;
    +
    233 static constexpr std::size_t rank = SIZE_MAX;
    +
    234
    +
    235 xarray_adaptor(storage_type&& storage);
    +
    236 xarray_adaptor(const storage_type& storage);
    +
    237
    +
    238 template <class D>
    +
    239 xarray_adaptor(D&& storage, const shape_type& shape, layout_type l = L);
    +
    240
    +
    241 template <class D>
    +
    242 xarray_adaptor(D&& storage, const shape_type& shape, const strides_type& strides);
    +
    243
    +
    244 ~xarray_adaptor() = default;
    +
    245
    +
    246 xarray_adaptor(const xarray_adaptor&) = default;
    +
    247 xarray_adaptor& operator=(const xarray_adaptor&);
    +
    248
    +
    249 xarray_adaptor(xarray_adaptor&&) = default;
    +
    250 xarray_adaptor& operator=(xarray_adaptor&&);
    +
    251 xarray_adaptor& operator=(temporary_type&&);
    +
    252
    +
    253 template <class E>
    +
    254 xarray_adaptor& operator=(const xexpression<E>& e);
    +
    255
    +
    256 template <class P, class S>
    +
    257 void reset_buffer(P&& pointer, S&& size);
    +
    258
    +
    259 private:
    +
    260
    +
    261 container_closure_type m_storage;
    +
    262
    +
    263 storage_type& storage_impl() noexcept;
    +
    264 const storage_type& storage_impl() const noexcept;
    +
    265
    +
    266 friend class xcontainer<xarray_adaptor<EC, L, SC, Tag>>;
    +
    267 };
    +
    +
    268
    +
    269 /***********************************
    +
    270 * xarray_container implementation *
    +
    271 ***********************************/
    +
    272
    +
    280 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    282 : base_type()
    +
    283 , m_storage(1, value_type())
    +
    284 {
    +
    285 }
    +
    +
    286
    +
    293 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    295 : base_type()
    +
    296 {
    + +
    298 }
    +
    +
    299
    +
    307 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    309 const shape_type& shape,
    +
    310 const_reference value,
    + +
    312 )
    +
    313 : base_type()
    +
    314 {
    + +
    316 std::fill(m_storage.begin(), m_storage.end(), value);
    +
    317 }
    +
    +
    318
    +
    324 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    325 inline xarray_container<EC, L, SC, Tag>::xarray_container(const shape_type& shape, const strides_type& strides)
    +
    326 : base_type()
    +
    327 {
    + +
    329 }
    +
    +
    330
    +
    338 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    340 const shape_type& shape,
    +
    341 const strides_type& strides,
    +
    342 const_reference value
    +
    343 )
    +
    344 : base_type()
    +
    345 {
    + +
    347 std::fill(m_storage.begin(), m_storage.end(), value);
    +
    348 }
    +
    +
    349
    +
    355 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    357 : base_type()
    +
    358 {
    +
    359 base_type::resize(xt::shape<shape_type>(t), true);
    +
    360 nested_copy(m_storage.begin(), t);
    +
    361 }
    +
    +
    362
    +
    370 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    372 storage_type&& storage,
    +
    373 inner_shape_type&& shape,
    +
    374 inner_strides_type&& strides
    +
    375 )
    +
    376 : base_type(std::move(shape), std::move(strides))
    +
    377 , m_storage(std::move(storage))
    +
    378 {
    +
    379 }
    +
    +
    380
    +
    382
    +
    391 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    392 inline xarray_container<EC, L, SC, Tag>::xarray_container(nested_initializer_list_t<value_type, 1> t)
    +
    393 : base_type()
    +
    394 {
    +
    395 base_type::resize(xt::shape<shape_type>(t));
    +
    396 constexpr auto tmp = layout_type::row_major;
    +
    397 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    398 }
    +
    +
    399
    +
    404 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    405 inline xarray_container<EC, L, SC, Tag>::xarray_container(nested_initializer_list_t<value_type, 2> t)
    +
    406 : base_type()
    +
    407 {
    +
    408 base_type::resize(xt::shape<shape_type>(t));
    +
    409 constexpr auto tmp = layout_type::row_major;
    +
    410 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    411 }
    +
    +
    412
    +
    417 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    418 inline xarray_container<EC, L, SC, Tag>::xarray_container(nested_initializer_list_t<value_type, 3> t)
    +
    419 : base_type()
    +
    420 {
    +
    421 base_type::resize(xt::shape<shape_type>(t));
    +
    422 constexpr auto tmp = layout_type::row_major;
    +
    423 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    424 }
    +
    +
    425
    +
    430 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    431 inline xarray_container<EC, L, SC, Tag>::xarray_container(nested_initializer_list_t<value_type, 4> t)
    +
    432 : base_type()
    +
    433 {
    +
    434 base_type::resize(xt::shape<shape_type>(t));
    +
    435 constexpr auto tmp = layout_type::row_major;
    +
    436 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    437 }
    +
    +
    438
    +
    443 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    444 inline xarray_container<EC, L, SC, Tag>::xarray_container(nested_initializer_list_t<value_type, 5> t)
    +
    445 : base_type()
    +
    446 {
    +
    447 base_type::resize(xt::shape<shape_type>(t));
    +
    448 constexpr auto tmp = layout_type::row_major;
    +
    449 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    450 }
    +
    +
    451
    +
    453
    +
    458 template <class EC, layout_type L, class SC, class Tag>
    +
    459 template <class S>
    +
    + +
    461 {
    +
    462 shape_type shape = xtl::forward_sequence<shape_type, S>(s);
    +
    463 return self_type(shape);
    +
    464 }
    +
    +
    465
    +
    466 template <class EC, layout_type L, class SC, class Tag>
    +
    467 template <std::size_t N>
    + +
    469 : base_type(
    +
    470 inner_shape_type(rhs.shape().cbegin(), rhs.shape().cend()),
    +
    471 inner_strides_type(rhs.strides().cbegin(), rhs.strides().cend()),
    +
    472 inner_backstrides_type(rhs.backstrides().cbegin(), rhs.backstrides().cend()),
    +
    473 std::move(rhs.layout())
    +
    474 )
    +
    475 , m_storage(std::move(rhs.storage()))
    +
    476 {
    +
    477 }
    +
    478
    +
    479 template <class EC, layout_type L, class SC, class Tag>
    +
    480 template <std::size_t N>
    +
    481 inline xarray_container<EC, L, SC, Tag>&
    +
    482 xarray_container<EC, L, SC, Tag>::operator=(xtensor_container<EC, N, L, Tag>&& rhs)
    +
    483 {
    +
    484 this->shape_impl().assign(rhs.shape().cbegin(), rhs.shape().cend());
    +
    485 this->strides_impl().assign(rhs.strides().cbegin(), rhs.strides().cend());
    +
    486 this->backstrides_impl().assign(rhs.backstrides().cbegin(), rhs.backstrides().cend());
    +
    487 this->mutable_layout() = rhs.layout();
    +
    488 m_storage = std::move(rhs.storage());
    +
    489 return *this;
    +
    490 }
    +
    491
    +
    499 template <class EC, layout_type L, class SC, class Tag>
    +
    500 template <class E>
    +
    + +
    502 : base_type()
    +
    503 {
    +
    504 // Avoids unintialized data because of (m_shape == shape) condition
    +
    505 // in resize (called by assign), which is always true when dimension == 0.
    +
    506 if (e.derived_cast().dimension() == 0)
    +
    507 {
    +
    508 detail::resize_data_container(m_storage, std::size_t(1));
    +
    509 }
    +
    510 semantic_base::assign(e);
    +
    511 }
    +
    +
    512
    +
    516 template <class EC, layout_type L, class SC, class Tag>
    +
    517 template <class E>
    +
    + +
    519 {
    +
    520 return semantic_base::operator=(e);
    +
    521 }
    +
    +
    522
    +
    524
    +
    525 template <class EC, layout_type L, class SC, class Tag>
    +
    526 inline auto xarray_container<EC, L, SC, Tag>::storage_impl() noexcept -> storage_type&
    +
    527 {
    +
    528 return m_storage;
    +
    529 }
    +
    530
    +
    531 template <class EC, layout_type L, class SC, class Tag>
    +
    532 inline auto xarray_container<EC, L, SC, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    533 {
    +
    534 return m_storage;
    +
    535 }
    +
    536
    +
    537 /******************
    +
    538 * xarray_adaptor *
    +
    539 ******************/
    +
    540
    +
    549 template <class EC, layout_type L, class SC, class Tag>
    +
    + +
    551 : base_type()
    +
    552 , m_storage(std::move(storage))
    +
    553 {
    +
    554 }
    +
    +
    555
    +
    560 template <class EC, layout_type L, class SC, class Tag>
    +
    +
    561 inline xarray_adaptor<EC, L, SC, Tag>::xarray_adaptor(const storage_type& storage)
    +
    562 : base_type()
    +
    563 , m_storage(storage)
    +
    564 {
    +
    565 }
    +
    +
    566
    +
    574 template <class EC, layout_type L, class SC, class Tag>
    +
    575 template <class D>
    +
    +
    576 inline xarray_adaptor<EC, L, SC, Tag>::xarray_adaptor(D&& storage, const shape_type& shape, layout_type l)
    +
    577 : base_type()
    +
    578 , m_storage(std::forward<D>(storage))
    +
    579 {
    + +
    581 }
    +
    +
    582
    +
    590 template <class EC, layout_type L, class SC, class Tag>
    +
    591 template <class D>
    +
    + +
    593 D&& storage,
    +
    594 const shape_type& shape,
    +
    595 const strides_type& strides
    +
    596 )
    +
    597 : base_type()
    +
    598 , m_storage(std::forward<D>(storage))
    +
    599 {
    + +
    601 }
    +
    +
    602
    +
    604
    +
    605 template <class EC, layout_type L, class SC, class Tag>
    +
    606 inline auto xarray_adaptor<EC, L, SC, Tag>::operator=(const xarray_adaptor& rhs) -> self_type&
    +
    607 {
    +
    608 base_type::operator=(rhs);
    +
    609 m_storage = rhs.m_storage;
    +
    610 return *this;
    +
    611 }
    +
    612
    +
    613 template <class EC, layout_type L, class SC, class Tag>
    +
    614 inline auto xarray_adaptor<EC, L, SC, Tag>::operator=(xarray_adaptor&& rhs) -> self_type&
    +
    615 {
    +
    616 base_type::operator=(std::move(rhs));
    +
    617 m_storage = rhs.m_storage;
    +
    618 return *this;
    +
    619 }
    +
    620
    +
    621 template <class EC, layout_type L, class SC, class Tag>
    +
    622 inline auto xarray_adaptor<EC, L, SC, Tag>::operator=(temporary_type&& rhs) -> self_type&
    +
    623 {
    +
    624 base_type::shape_impl() = std::move(const_cast<shape_type&>(rhs.shape()));
    +
    625 base_type::strides_impl() = std::move(const_cast<strides_type&>(rhs.strides()));
    +
    626 base_type::backstrides_impl() = std::move(const_cast<backstrides_type&>(rhs.backstrides()));
    +
    627 m_storage = std::move(rhs.storage());
    +
    628 return *this;
    +
    629 }
    +
    630
    +
    638 template <class EC, layout_type L, class SC, class Tag>
    +
    639 template <class E>
    +
    + +
    641 {
    +
    642 return semantic_base::operator=(e);
    +
    643 }
    +
    +
    644
    +
    646
    +
    647 template <class EC, layout_type L, class SC, class Tag>
    +
    648 inline auto xarray_adaptor<EC, L, SC, Tag>::storage_impl() noexcept -> storage_type&
    +
    649 {
    +
    650 return m_storage;
    +
    651 }
    +
    652
    +
    653 template <class EC, layout_type L, class SC, class Tag>
    +
    654 inline auto xarray_adaptor<EC, L, SC, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    655 {
    +
    656 return m_storage;
    +
    657 }
    +
    658
    +
    659 template <class EC, layout_type L, class SC, class Tag>
    +
    660 template <class P, class S>
    +
    661 inline void xarray_adaptor<EC, L, SC, Tag>::reset_buffer(P&& pointer, S&& size)
    +
    662 {
    +
    663 return m_storage.reset_data(std::forward<P>(pointer), std::forward<S>(size));
    +
    664 }
    +
    665}
    +
    666
    +
    667#endif
    +
    Dense multidimensional container adaptor with tensor semantic.
    Definition xarray.hpp:217
    +
    xarray_adaptor(storage_type &&storage)
    Constructs an xarray_adaptor of the given stl-like container.
    Definition xarray.hpp:550
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    xarray_container()
    Allocates an uninitialized xarray_container that holds 0 element.
    Definition xarray.hpp:281
    +
    Implementation of the xsemantic_base interface for dense multidimensional containers.
    +
    Base class for dense multidimensional containers.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the container.
    +
    size_type size() const noexcept
    Returns the number of element in the container.
    +
    constexpr const inner_strides_type & strides() const noexcept
    Returns the strides of the container.
    +
    constexpr const inner_shape_type & shape() const noexcept
    Returns the shape of the container.
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Partial implementation of xcontainer that embeds the strides and the shape.
    +
    void resize(S &&shape, bool force=false)
    Resizes the container.
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + +
    +
    + + + + diff --git a/xassign_8hpp_source.html b/xassign_8hpp_source.html new file mode 100644 index 000000000..4a4201907 --- /dev/null +++ b/xassign_8hpp_source.html @@ -0,0 +1,1515 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xassign.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xassign.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ASSIGN_HPP
    +
    11#define XTENSOR_ASSIGN_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <functional>
    +
    15#include <type_traits>
    +
    16#include <utility>
    +
    17
    +
    18#include <xtl/xcomplex.hpp>
    +
    19#include <xtl/xsequence.hpp>
    +
    20
    +
    21#include "xexpression.hpp"
    +
    22#include "xfunction.hpp"
    +
    23#include "xiterator.hpp"
    +
    24#include "xstrides.hpp"
    +
    25#include "xtensor_config.hpp"
    +
    26#include "xtensor_forward.hpp"
    +
    27#include "xutils.hpp"
    +
    28
    +
    29#if defined(XTENSOR_USE_TBB)
    +
    30#include <tbb/tbb.h>
    +
    31#endif
    +
    32
    +
    33namespace xt
    +
    34{
    +
    35
    +
    36 /********************
    +
    37 * Assign functions *
    +
    38 ********************/
    +
    39
    +
    40 template <class E1, class E2>
    +
    41 void assign_data(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial);
    +
    42
    +
    43 template <class E1, class E2>
    +
    44 void assign_xexpression(xexpression<E1>& e1, const xexpression<E2>& e2);
    +
    45
    +
    46 template <class E1, class E2>
    +
    47 void computed_assign(xexpression<E1>& e1, const xexpression<E2>& e2);
    +
    48
    +
    49 template <class E1, class E2, class F>
    +
    50 void scalar_computed_assign(xexpression<E1>& e1, const E2& e2, F&& f);
    +
    51
    +
    52 template <class E1, class E2>
    +
    53 void assert_compatible_shape(const xexpression<E1>& e1, const xexpression<E2>& e2);
    +
    54
    +
    55 template <class E1, class E2>
    +
    56 void strided_assign(E1& e1, const E2& e2, std::false_type /*disable*/);
    +
    57
    +
    58 template <class E1, class E2>
    +
    59 void strided_assign(E1& e1, const E2& e2, std::true_type /*enable*/);
    +
    60
    +
    61 /************************
    +
    62 * xexpression_assigner *
    +
    63 ************************/
    +
    64
    +
    65 template <class Tag>
    + +
    67
    +
    68 template <>
    +
    + +
    70 {
    +
    71 public:
    +
    72
    +
    73 template <class E1, class E2>
    +
    74 static void assign_data(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial);
    +
    75 };
    +
    +
    76
    +
    77 template <class Tag>
    +
    + +
    79 {
    +
    80 public:
    +
    81
    + +
    83
    +
    84 template <class E1, class E2>
    +
    85 static void assign_xexpression(E1& e1, const E2& e2);
    +
    86
    +
    87 template <class E1, class E2>
    +
    88 static void computed_assign(xexpression<E1>& e1, const xexpression<E2>& e2);
    +
    89
    +
    90 template <class E1, class E2, class F>
    +
    91 static void scalar_computed_assign(xexpression<E1>& e1, const E2& e2, F&& f);
    +
    92
    +
    93 template <class E1, class E2>
    +
    94 static void assert_compatible_shape(const xexpression<E1>& e1, const xexpression<E2>& e2);
    +
    95
    +
    96 private:
    +
    97
    +
    98 template <class E1, class E2>
    +
    99 static bool resize(E1& e1, const E2& e2);
    +
    100
    +
    101 template <class E1, class F, class... CT>
    +
    102 static bool resize(E1& e1, const xfunction<F, CT...>& e2);
    +
    103 };
    +
    +
    104
    +
    105 /********************
    +
    106 * stepper_assigner *
    +
    107 ********************/
    +
    108
    +
    109 template <class E1, class E2, layout_type L>
    +
    + +
    111 {
    +
    112 public:
    +
    113
    +
    114 using lhs_iterator = typename E1::stepper;
    +
    115 using rhs_iterator = typename E2::const_stepper;
    +
    116 using shape_type = typename E1::shape_type;
    +
    117 using index_type = xindex_type_t<shape_type>;
    +
    118 using size_type = typename lhs_iterator::size_type;
    +
    119 using difference_type = typename lhs_iterator::difference_type;
    +
    120
    +
    121 stepper_assigner(E1& e1, const E2& e2);
    +
    122
    +
    123 void run();
    +
    124
    +
    125 void step(size_type i);
    +
    126 void step(size_type i, size_type n);
    +
    127 void reset(size_type i);
    +
    128
    +
    129 void to_end(layout_type);
    +
    130
    +
    131 private:
    +
    132
    +
    133 E1& m_e1;
    +
    134
    +
    135 lhs_iterator m_lhs;
    +
    136 rhs_iterator m_rhs;
    +
    137
    +
    138 index_type m_index;
    +
    139 };
    +
    +
    140
    +
    141 /*******************
    +
    142 * linear_assigner *
    +
    143 *******************/
    +
    144
    +
    145 template <bool simd_assign>
    +
    + +
    147 {
    +
    148 public:
    +
    149
    +
    150 template <class E1, class E2>
    +
    151 static void run(E1& e1, const E2& e2);
    +
    152 };
    +
    +
    153
    +
    154 template <>
    +
    +
    155 class linear_assigner<false>
    +
    156 {
    +
    157 public:
    +
    158
    +
    159 template <class E1, class E2>
    +
    160 static void run(E1& e1, const E2& e2);
    +
    161
    +
    162 private:
    +
    163
    +
    164 template <class E1, class E2>
    +
    165 static void run_impl(E1& e1, const E2& e2, std::true_type);
    +
    166
    +
    167 template <class E1, class E2>
    +
    168 static void run_impl(E1& e1, const E2& e2, std::false_type);
    +
    169 };
    +
    +
    170
    +
    171 /*************************
    +
    172 * strided_loop_assigner *
    +
    173 *************************/
    +
    174
    +
    175 namespace strided_assign_detail
    +
    176 {
    +
    177 struct loop_sizes_t
    +
    178 {
    +
    179 bool can_do_strided_assign;
    +
    180 bool is_row_major;
    +
    181 std::size_t inner_loop_size;
    +
    182 std::size_t outer_loop_size;
    +
    183 std::size_t cut;
    +
    184 std::size_t dimension;
    +
    185 };
    +
    186 }
    +
    187
    +
    188 template <bool simd>
    +
    + +
    190 {
    +
    191 public:
    +
    192
    +
    193 using loop_sizes_t = strided_assign_detail::loop_sizes_t;
    +
    194 // is_row_major, inner_loop_size, outer_loop_size, cut
    +
    195 template <class E1, class E2>
    +
    196 static void run(E1& e1, const E2& e2, const loop_sizes_t& loop_sizes);
    +
    197 template <class E1, class E2>
    +
    198 static loop_sizes_t get_loop_sizes(E1& e1, const E2& e2);
    +
    199 template <class E1, class E2>
    +
    200 static void run(E1& e1, const E2& e2);
    +
    201 };
    +
    +
    202
    +
    203 /***********************************
    +
    204 * Assign functions implementation *
    +
    205 ***********************************/
    +
    206
    +
    207 template <class E1, class E2>
    +
    208 inline void assign_data(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial)
    +
    209 {
    +
    210 using tag = xexpression_tag_t<E1, E2>;
    + +
    212 }
    +
    213
    +
    214 template <class E1, class E2>
    +
    215 inline void assign_xexpression(xexpression<E1>& e1, const xexpression<E2>& e2)
    +
    216 {
    +
    217 xtl::mpl::static_if<has_assign_to<E1, E2>::value>(
    +
    218 [&](auto self)
    +
    219 {
    +
    220 self(e2).derived_cast().assign_to(e1);
    +
    221 },
    +
    222 /*else*/
    +
    223 [&](auto /*self*/)
    +
    224 {
    +
    225 using tag = xexpression_tag_t<E1, E2>;
    +
    226 xexpression_assigner<tag>::assign_xexpression(e1, e2);
    +
    227 }
    +
    228 );
    +
    229 }
    +
    230
    +
    231 template <class E1, class E2>
    +
    232 inline void computed_assign(xexpression<E1>& e1, const xexpression<E2>& e2)
    +
    233 {
    +
    234 using tag = xexpression_tag_t<E1, E2>;
    +
    235 xexpression_assigner<tag>::computed_assign(e1, e2);
    +
    236 }
    +
    237
    +
    238 template <class E1, class E2, class F>
    +
    239 inline void scalar_computed_assign(xexpression<E1>& e1, const E2& e2, F&& f)
    +
    240 {
    +
    241 using tag = xexpression_tag_t<E1, E2>;
    +
    242 xexpression_assigner<tag>::scalar_computed_assign(e1, e2, std::forward<F>(f));
    +
    243 }
    +
    244
    +
    245 template <class E1, class E2>
    +
    246 inline void assert_compatible_shape(const xexpression<E1>& e1, const xexpression<E2>& e2)
    +
    247 {
    +
    248 using tag = xexpression_tag_t<E1, E2>;
    +
    249 xexpression_assigner<tag>::assert_compatible_shape(e1, e2);
    +
    250 }
    +
    251
    +
    252 /***************************************
    +
    253 * xexpression_assigner implementation *
    +
    254 ***************************************/
    +
    255
    +
    256 namespace detail
    +
    257 {
    +
    258 template <class E1, class E2>
    +
    259 constexpr bool linear_static_layout()
    +
    260 {
    +
    261 // A row_major or column_major container with a dimension <= 1 is computed as
    +
    262 // layout any, leading to some performance improvements, for example when
    +
    263 // assigning a col-major vector to a row-major vector etc
    +
    264 return compute_layout(
    +
    265 select_layout<E1::static_layout, typename E1::shape_type>::value,
    +
    266 select_layout<E2::static_layout, typename E2::shape_type>::value
    +
    267 )
    + +
    269 }
    +
    270
    +
    271 template <class E1, class E2>
    +
    272 inline auto is_linear_assign(const E1& e1, const E2& e2)
    +
    273 -> std::enable_if_t<has_strides<E1>::value, bool>
    +
    274 {
    +
    275 return (E1::contiguous_layout && E2::contiguous_layout && linear_static_layout<E1, E2>())
    +
    276 || (e1.is_contiguous() && e2.has_linear_assign(e1.strides()));
    +
    277 }
    +
    278
    +
    279 template <class E1, class E2>
    +
    280 inline auto is_linear_assign(const E1&, const E2&) -> std::enable_if_t<!has_strides<E1>::value, bool>
    +
    281 {
    +
    282 return false;
    +
    283 }
    +
    284
    +
    285 template <class E1, class E2>
    +
    286 inline bool linear_dynamic_layout(const E1& e1, const E2& e2)
    +
    287 {
    +
    288 return e1.is_contiguous() && e2.is_contiguous()
    +
    289 && compute_layout(e1.layout(), e2.layout()) != layout_type::dynamic;
    +
    290 }
    +
    291
    +
    292 template <class E, class = void>
    +
    293 struct has_step_leading : std::false_type
    +
    294 {
    +
    295 };
    +
    296
    +
    297 template <class E>
    +
    298 struct has_step_leading<E, void_t<decltype(std::declval<E>().step_leading())>> : std::true_type
    +
    299 {
    +
    300 };
    +
    301
    +
    302 template <class T>
    +
    303 struct use_strided_loop
    +
    304 {
    +
    305 static constexpr bool stepper_deref()
    +
    306 {
    +
    307 return std::is_reference<typename T::stepper::reference>::value;
    +
    308 }
    +
    309
    +
    310 static constexpr bool value = has_strides<T>::value
    +
    311 && has_step_leading<typename T::stepper>::value && stepper_deref();
    +
    312 };
    +
    313
    +
    314 template <class T>
    +
    315 struct use_strided_loop<xscalar<T>>
    +
    316 {
    +
    317 static constexpr bool value = true;
    +
    318 };
    +
    319
    +
    320 template <class F, class... CT>
    +
    321 struct use_strided_loop<xfunction<F, CT...>>
    +
    322 {
    +
    323 static constexpr bool value = xtl::conjunction<use_strided_loop<std::decay_t<CT>>...>::value;
    +
    324 };
    +
    325
    +
    342 template <class T1, class T2>
    +
    343 struct conditional_promote_to_complex
    +
    344 {
    +
    345 static constexpr bool cond = xtl::is_gen_complex<T1>::value && !xtl::is_gen_complex<T2>::value;
    +
    346 // Alternative: use std::complex<T2> or xcomplex<T2, T2, bool> depending on T1
    +
    347 using type = std::conditional_t<cond, T1, T2>;
    +
    348 };
    +
    349
    +
    350 template <class T1, class T2>
    +
    351 using conditional_promote_to_complex_t = typename conditional_promote_to_complex<T1, T2>::type;
    +
    352 }
    +
    353
    +
    354 template <class E1, class E2>
    +
    + +
    356 {
    +
    357 private:
    +
    358
    +
    359 using e1_value_type = typename E1::value_type;
    +
    360 using e2_value_type = typename E2::value_type;
    +
    361
    +
    362 template <class T>
    +
    363 using is_bool = std::is_same<T, bool>;
    +
    364
    +
    365 static constexpr bool is_bool_conversion()
    +
    366 {
    +
    367 return is_bool<e2_value_type>::value && !is_bool<e1_value_type>::value;
    +
    368 }
    +
    369
    +
    370 static constexpr bool contiguous_layout()
    +
    371 {
    +
    372 return E1::contiguous_layout && E2::contiguous_layout;
    +
    373 }
    +
    374
    +
    375 static constexpr bool convertible_types()
    +
    376 {
    +
    377 return std::is_convertible<e2_value_type, e1_value_type>::value && !is_bool_conversion();
    +
    378 }
    +
    379
    +
    380 static constexpr bool use_xsimd()
    +
    381 {
    + +
    383 }
    +
    384
    +
    385 template <class T>
    +
    386 static constexpr bool simd_size_impl()
    +
    387 {
    +
    388 return xt_simd::simd_traits<T>::size > 1 || (is_bool<T>::value && use_xsimd());
    +
    389 }
    +
    390
    +
    391 static constexpr bool simd_size()
    +
    392 {
    +
    393 return simd_size_impl<e1_value_type>() && simd_size_impl<e2_value_type>();
    +
    394 }
    +
    395
    +
    396 static constexpr bool simd_interface()
    +
    397 {
    + + +
    400 }
    +
    401
    +
    402 public:
    +
    403
    +
    404 // constexpr methods instead of constexpr data members avoid the need of definitions at namespace
    +
    405 // scope of these data members (since they are odr-used).
    +
    406
    +
    407 static constexpr bool simd_assign()
    +
    408 {
    +
    409 return convertible_types() && simd_size() && simd_interface();
    +
    410 }
    +
    411
    +
    412 static constexpr bool linear_assign(const E1& e1, const E2& e2, bool trivial)
    +
    413 {
    +
    414 return trivial && detail::is_linear_assign(e1, e2);
    +
    415 }
    +
    416
    +
    417 static constexpr bool strided_assign()
    +
    418 {
    +
    419 return detail::use_strided_loop<E1>::value && detail::use_strided_loop<E2>::value;
    +
    420 }
    +
    421
    +
    422 static constexpr bool simd_linear_assign()
    +
    423 {
    +
    424 return contiguous_layout() && simd_assign();
    +
    425 }
    +
    426
    +
    427 static constexpr bool simd_strided_assign()
    +
    428 {
    +
    429 return strided_assign() && simd_assign();
    +
    430 }
    +
    431
    +
    432 static constexpr bool simd_linear_assign(const E1& e1, const E2& e2)
    +
    433 {
    +
    434 return simd_assign() && detail::linear_dynamic_layout(e1, e2);
    +
    435 }
    +
    436
    +
    437 using e2_requested_value_type = std::
    +
    438 conditional_t<is_bool<e2_value_type>::value, typename E2::bool_load_type, e2_value_type>;
    +
    439 using requested_value_type = detail::conditional_promote_to_complex_t<e1_value_type, e2_requested_value_type>;
    +
    440 };
    +
    +
    441
    +
    442 template <class E1, class E2>
    + +
    444 xexpression<E1>& e1,
    +
    445 const xexpression<E2>& e2,
    +
    446 bool trivial
    +
    447 )
    +
    448 {
    +
    449 E1& de1 = e1.derived_cast();
    +
    450 const E2& de2 = e2.derived_cast();
    +
    451 using traits = xassign_traits<E1, E2>;
    +
    452
    +
    453 bool linear_assign = traits::linear_assign(de1, de2, trivial);
    +
    454 constexpr bool simd_assign = traits::simd_assign();
    +
    455 constexpr bool simd_linear_assign = traits::simd_linear_assign();
    +
    456 constexpr bool simd_strided_assign = traits::simd_strided_assign();
    +
    457 if (linear_assign)
    +
    458 {
    +
    459 if (simd_linear_assign || traits::simd_linear_assign(de1, de2))
    +
    460 {
    +
    461 // Do not use linear_assigner<true> here since it will make the compiler
    +
    462 // instantiate this branch even if the runtime condition is false, resulting
    +
    463 // in compilation error for expressions that do not provide a SIMD interface.
    +
    464 // simd_assign is true if simd_linear_assign() or simd_linear_assign(de1, de2)
    +
    465 // is true.
    + +
    467 }
    +
    468 else
    +
    469 {
    +
    470 linear_assigner<false>::run(de1, de2);
    +
    471 }
    +
    472 }
    +
    473 else if (simd_strided_assign)
    +
    474 {
    +
    475 strided_loop_assigner<simd_strided_assign>::run(de1, de2);
    +
    476 }
    +
    477 else
    +
    478 {
    +
    479 stepper_assigner<E1, E2, default_assignable_layout(E1::static_layout)>(de1, de2).run();
    +
    480 }
    +
    481 }
    +
    482
    +
    483 template <class Tag>
    +
    484 template <class E1, class E2>
    +
    485 inline void xexpression_assigner<Tag>::assign_xexpression(E1& e1, const E2& e2)
    +
    486 {
    +
    487 bool trivial_broadcast = resize(e1.derived_cast(), e2.derived_cast());
    +
    488 base_type::assign_data(e1, e2, trivial_broadcast);
    +
    489 }
    +
    490
    +
    491 template <class Tag>
    +
    492 template <class E1, class E2>
    +
    493 inline void xexpression_assigner<Tag>::computed_assign(xexpression<E1>& e1, const xexpression<E2>& e2)
    +
    494 {
    +
    495 using shape_type = typename E1::shape_type;
    +
    496 using comperator_type = std::greater<typename shape_type::value_type>;
    +
    497
    +
    498 using size_type = typename E1::size_type;
    +
    499
    +
    500 E1& de1 = e1.derived_cast();
    +
    501 const E2& de2 = e2.derived_cast();
    +
    502
    +
    503 size_type dim2 = de2.dimension();
    +
    504 shape_type shape = uninitialized_shape<shape_type>(dim2);
    +
    505
    +
    506 bool trivial_broadcast = de2.broadcast_shape(shape, true);
    +
    507
    +
    508 auto&& de1_shape = de1.shape();
    +
    509 if (dim2 > de1.dimension()
    +
    510 || std::lexicographical_compare(
    +
    511 shape.begin(),
    +
    512 shape.end(),
    +
    513 de1_shape.begin(),
    +
    514 de1_shape.end(),
    +
    515 comperator_type()
    +
    516 ))
    +
    517 {
    +
    518 typename E1::temporary_type tmp(shape);
    +
    519 base_type::assign_data(tmp, e2, trivial_broadcast);
    +
    520 de1.assign_temporary(std::move(tmp));
    +
    521 }
    +
    522 else
    +
    523 {
    +
    524 base_type::assign_data(e1, e2, trivial_broadcast);
    +
    525 }
    +
    526 }
    +
    527
    +
    528 template <class Tag>
    +
    529 template <class E1, class E2, class F>
    +
    530 inline void xexpression_assigner<Tag>::scalar_computed_assign(xexpression<E1>& e1, const E2& e2, F&& f)
    +
    531 {
    +
    532 E1& d = e1.derived_cast();
    +
    533 using size_type = typename E1::size_type;
    +
    534 auto dst = d.storage().begin();
    +
    535 for (size_type i = d.size(); i > 0; --i)
    +
    536 {
    +
    537 *dst = f(*dst, e2);
    +
    538 ++dst;
    +
    539 }
    +
    540 }
    +
    541
    +
    542 template <class Tag>
    +
    543 template <class E1, class E2>
    +
    544 inline void
    +
    545 xexpression_assigner<Tag>::assert_compatible_shape(const xexpression<E1>& e1, const xexpression<E2>& e2)
    +
    546 {
    +
    547 const E1& de1 = e1.derived_cast();
    +
    548 const E2& de2 = e2.derived_cast();
    +
    549 if (!broadcastable(de2.shape(), de1.shape()))
    +
    550 {
    +
    551 throw_broadcast_error(de2.shape(), de1.shape());
    +
    552 }
    +
    553 }
    +
    554
    +
    555 namespace detail
    +
    556 {
    +
    557 template <bool B, class... CT>
    +
    558 struct static_trivial_broadcast;
    +
    559
    +
    560 template <class... CT>
    +
    561 struct static_trivial_broadcast<true, CT...>
    +
    562 {
    +
    563 static constexpr bool value = detail::promote_index<typename std::decay_t<CT>::shape_type...>::value;
    +
    564 };
    +
    565
    +
    566 template <class... CT>
    +
    567 struct static_trivial_broadcast<false, CT...>
    +
    568 {
    +
    569 static constexpr bool value = false;
    +
    570 };
    +
    571 }
    +
    572
    +
    573 template <class Tag>
    +
    574 template <class E1, class E2>
    +
    575 inline bool xexpression_assigner<Tag>::resize(E1& e1, const E2& e2)
    +
    576 {
    +
    577 // If our RHS is not a xfunction, we know that the RHS is at least potentially trivial
    +
    578 // We check the strides of the RHS in detail::is_trivial_broadcast to see if they match up!
    +
    579 // So we can skip a shape copy and a call to broadcast_shape(...)
    +
    580 e1.resize(e2.shape());
    +
    581 return true;
    +
    582 }
    +
    583
    +
    584 template <class Tag>
    +
    585 template <class E1, class F, class... CT>
    +
    586 inline bool xexpression_assigner<Tag>::resize(E1& e1, const xfunction<F, CT...>& e2)
    +
    587 {
    +
    588 return xtl::mpl::static_if<detail::is_fixed<typename xfunction<F, CT...>::shape_type>::value>(
    +
    589 [&](auto /*self*/)
    +
    590 {
    +
    591 /*
    +
    592 * If the shape of the xfunction is statically known, we can compute the broadcast triviality
    +
    593 * at compile time plus we can resize right away.
    +
    594 */
    +
    595 // resize in case LHS is not a fixed size container. If it is, this is a NOP
    +
    596 e1.resize(typename xfunction<F, CT...>::shape_type{});
    +
    597 return detail::static_trivial_broadcast<
    +
    598 detail::is_fixed<typename xfunction<F, CT...>::shape_type>::value,
    +
    599 CT...>::value;
    +
    600 },
    +
    601 /* else */
    +
    602 [&](auto /*self*/)
    +
    603 {
    +
    604 using index_type = xindex_type_t<typename E1::shape_type>;
    +
    605 using size_type = typename E1::size_type;
    +
    606 size_type size = e2.dimension();
    +
    607 index_type shape = uninitialized_shape<index_type>(size);
    +
    608 bool trivial_broadcast = e2.broadcast_shape(shape, true);
    +
    609 e1.resize(std::move(shape));
    +
    610 return trivial_broadcast;
    +
    611 }
    +
    612 );
    +
    613 }
    +
    614
    +
    615 /***********************************
    +
    616 * stepper_assigner implementation *
    +
    617 ***********************************/
    +
    618
    +
    619 template <class FROM, class TO>
    +
    + +
    621 {
    +
    622 using argument_type = std::decay_t<FROM>;
    +
    623 using result_type = std::decay_t<TO>;
    +
    624
    +
    625 static const bool value = xtl::is_arithmetic<result_type>::value
    +
    626 && (sizeof(result_type) < sizeof(argument_type)
    +
    627 || (xtl::is_integral<result_type>::value
    +
    628 && std::is_floating_point<argument_type>::value));
    +
    629 };
    +
    +
    630
    +
    631 template <class FROM, class TO>
    +
    + +
    633 {
    +
    634 using argument_type = std::decay_t<FROM>;
    +
    635 using result_type = std::decay_t<TO>;
    +
    636
    +
    637 static const bool value = xtl::is_signed<argument_type>::value != xtl::is_signed<result_type>::value;
    +
    638 };
    +
    +
    639
    +
    640 template <class FROM, class TO>
    +
    + +
    642 {
    +
    643 using argument_type = std::decay_t<FROM>;
    +
    644 using result_type = std::decay_t<TO>;
    +
    645
    + + +
    648 };
    +
    +
    649
    +
    650 template <class E1, class E2, layout_type L>
    +
    651 inline stepper_assigner<E1, E2, L>::stepper_assigner(E1& e1, const E2& e2)
    +
    652 : m_e1(e1)
    +
    653 , m_lhs(e1.stepper_begin(e1.shape()))
    +
    654 , m_rhs(e2.stepper_begin(e1.shape()))
    +
    655 , m_index(xtl::make_sequence<index_type>(e1.shape().size(), size_type(0)))
    +
    656 {
    +
    657 }
    +
    658
    +
    659 template <class E1, class E2, layout_type L>
    +
    660 inline void stepper_assigner<E1, E2, L>::run()
    +
    661 {
    +
    662 using tmp_size_type = typename E1::size_type;
    +
    663 using argument_type = std::decay_t<decltype(*m_rhs)>;
    +
    664 using result_type = std::decay_t<decltype(*m_lhs)>;
    +
    665 constexpr bool needs_cast = has_assign_conversion<argument_type, result_type>::value;
    +
    666
    +
    667 tmp_size_type s = m_e1.size();
    +
    668 for (tmp_size_type i = 0; i < s; ++i)
    +
    669 {
    +
    670 *m_lhs = conditional_cast<needs_cast, result_type>(*m_rhs);
    +
    671 stepper_tools<L>::increment_stepper(*this, m_index, m_e1.shape());
    +
    672 }
    +
    673 }
    +
    674
    +
    675 template <class E1, class E2, layout_type L>
    +
    676 inline void stepper_assigner<E1, E2, L>::step(size_type i)
    +
    677 {
    +
    678 m_lhs.step(i);
    +
    679 m_rhs.step(i);
    +
    680 }
    +
    681
    +
    682 template <class E1, class E2, layout_type L>
    +
    683 inline void stepper_assigner<E1, E2, L>::step(size_type i, size_type n)
    +
    684 {
    +
    685 m_lhs.step(i, n);
    +
    686 m_rhs.step(i, n);
    +
    687 }
    +
    688
    +
    689 template <class E1, class E2, layout_type L>
    +
    690 inline void stepper_assigner<E1, E2, L>::reset(size_type i)
    +
    691 {
    +
    692 m_lhs.reset(i);
    +
    693 m_rhs.reset(i);
    +
    694 }
    +
    695
    +
    696 template <class E1, class E2, layout_type L>
    +
    697 inline void stepper_assigner<E1, E2, L>::to_end(layout_type l)
    +
    698 {
    +
    699 m_lhs.to_end(l);
    +
    700 m_rhs.to_end(l);
    +
    701 }
    +
    702
    +
    703 /**********************************
    +
    704 * linear_assigner implementation *
    +
    705 **********************************/
    +
    706
    +
    707 template <bool simd_assign>
    +
    708 template <class E1, class E2>
    +
    709 inline void linear_assigner<simd_assign>::run(E1& e1, const E2& e2)
    +
    710 {
    +
    711 using lhs_align_mode = xt_simd::container_alignment_t<E1>;
    +
    712 constexpr bool is_aligned = std::is_same<lhs_align_mode, aligned_mode>::value;
    +
    713 using rhs_align_mode = std::conditional_t<is_aligned, inner_aligned_mode, unaligned_mode>;
    +
    714 using e1_value_type = typename E1::value_type;
    +
    715 using e2_value_type = typename E2::value_type;
    +
    716 using value_type = typename xassign_traits<E1, E2>::requested_value_type;
    +
    717 using simd_type = xt_simd::simd_type<value_type>;
    +
    718 using size_type = typename E1::size_type;
    +
    719 size_type size = e1.size();
    +
    720 constexpr size_type simd_size = simd_type::size;
    +
    721 constexpr bool needs_cast = has_assign_conversion<e1_value_type, e2_value_type>::value;
    +
    722
    +
    723 size_type align_begin = is_aligned ? 0 : xt_simd::get_alignment_offset(e1.data(), size, simd_size);
    +
    724 size_type align_end = align_begin + ((size - align_begin) & ~(simd_size - 1));
    +
    725
    +
    726 for (size_type i = 0; i < align_begin; ++i)
    +
    727 {
    +
    728 e1.data_element(i) = conditional_cast<needs_cast, e1_value_type>(e2.data_element(i));
    +
    729 }
    +
    730
    +
    731#if defined(XTENSOR_USE_TBB)
    +
    732 if (size >= XTENSOR_TBB_THRESHOLD)
    +
    733 {
    +
    734 tbb::static_partitioner ap;
    +
    735 tbb::parallel_for(
    +
    736 align_begin,
    +
    737 align_end,
    +
    738 simd_size,
    +
    739 [&e1, &e2](size_t i)
    +
    740 {
    +
    741 e1.template store_simd<lhs_align_mode>(
    +
    742 i,
    +
    743 e2.template load_simd<rhs_align_mode, value_type>(i)
    +
    744 );
    +
    745 },
    +
    746 ap
    +
    747 );
    +
    748 }
    +
    749 else
    +
    750 {
    +
    751 for (size_type i = align_begin; i < align_end; i += simd_size)
    +
    752 {
    +
    753 e1.template store_simd<lhs_align_mode>(i, e2.template load_simd<rhs_align_mode, value_type>(i));
    +
    754 }
    +
    755 }
    +
    756#elif defined(XTENSOR_USE_OPENMP)
    +
    757 if (size >= size_type(XTENSOR_OPENMP_TRESHOLD))
    +
    758 {
    +
    759#pragma omp parallel for default(none) shared(align_begin, align_end, e1, e2)
    +
    760#ifndef _WIN32
    +
    761 for (size_type i = align_begin; i < align_end; i += simd_size)
    +
    762 {
    +
    763 e1.template store_simd<lhs_align_mode>(i, e2.template load_simd<rhs_align_mode, value_type>(i));
    +
    764 }
    +
    765#else
    +
    766 for (auto i = static_cast<std::ptrdiff_t>(align_begin); i < static_cast<std::ptrdiff_t>(align_end);
    +
    767 i += static_cast<std::ptrdiff_t>(simd_size))
    +
    768 {
    +
    769 size_type ui = static_cast<size_type>(i);
    +
    770 e1.template store_simd<lhs_align_mode>(ui, e2.template load_simd<rhs_align_mode, value_type>(ui));
    +
    771 }
    +
    772#endif
    +
    773 }
    +
    774 else
    +
    775 {
    +
    776 for (size_type i = align_begin; i < align_end; i += simd_size)
    +
    777 {
    +
    778 e1.template store_simd<lhs_align_mode>(i, e2.template load_simd<rhs_align_mode, value_type>(i));
    +
    779 }
    +
    780 }
    +
    781#else
    +
    782 for (size_type i = align_begin; i < align_end; i += simd_size)
    +
    783 {
    +
    784 e1.template store_simd<lhs_align_mode>(i, e2.template load_simd<rhs_align_mode, value_type>(i));
    +
    785 }
    +
    786#endif
    +
    787 for (size_type i = align_end; i < size; ++i)
    +
    788 {
    +
    789 e1.data_element(i) = conditional_cast<needs_cast, e1_value_type>(e2.data_element(i));
    +
    790 }
    +
    791 }
    +
    792
    +
    793 template <class E1, class E2>
    +
    794 inline void linear_assigner<false>::run(E1& e1, const E2& e2)
    +
    795 {
    +
    796 using is_convertible = std::
    +
    797 is_convertible<typename std::decay_t<E2>::value_type, typename std::decay_t<E1>::value_type>;
    +
    798 // If the types are not compatible, this function is still instantiated but never called.
    +
    799 // To avoid compilation problems in effectively unused code trivial_assigner_run_impl is
    +
    800 // empty in this case.
    +
    801 run_impl(e1, e2, is_convertible());
    +
    802 }
    +
    803
    +
    804 template <class E1, class E2>
    +
    805 inline void linear_assigner<false>::run_impl(E1& e1, const E2& e2, std::true_type /*is_convertible*/)
    +
    806 {
    +
    807 using value_type = typename E1::value_type;
    +
    808 using size_type = typename E1::size_type;
    +
    809 auto src = linear_begin(e2);
    +
    810 auto dst = linear_begin(e1);
    +
    811 size_type n = e1.size();
    +
    812#if defined(XTENSOR_USE_TBB)
    +
    813 tbb::static_partitioner sp;
    +
    814 tbb::parallel_for(
    +
    815 std::ptrdiff_t(0),
    +
    816 static_cast<std::ptrdiff_t>(n),
    +
    817 [&](std::ptrdiff_t i)
    +
    818 {
    +
    819 *(dst + i) = static_cast<value_type>(*(src + i));
    +
    820 },
    +
    821 sp
    +
    822 );
    +
    823#elif defined(XTENSOR_USE_OPENMP)
    +
    824 if (n >= XTENSOR_OPENMP_TRESHOLD)
    +
    825 {
    +
    826#pragma omp parallel for default(none) shared(src, dst, n)
    +
    827 for (std::ptrdiff_t i = std::ptrdiff_t(0); i < static_cast<std::ptrdiff_t>(n); i++)
    +
    828 {
    +
    829 *(dst + i) = static_cast<value_type>(*(src + i));
    +
    830 }
    +
    831 }
    +
    832 else
    +
    833 {
    +
    834 for (; n > size_type(0); --n)
    +
    835 {
    +
    836 *dst = static_cast<value_type>(*src);
    +
    837 ++src;
    +
    838 ++dst;
    +
    839 }
    +
    840 }
    +
    841#else
    +
    842 for (; n > size_type(0); --n)
    +
    843 {
    +
    844 *dst = static_cast<value_type>(*src);
    +
    845 ++src;
    +
    846 ++dst;
    +
    847 }
    +
    848#endif
    +
    849 }
    +
    850
    +
    851 template <class E1, class E2>
    +
    852 inline void linear_assigner<false>::run_impl(E1&, const E2&, std::false_type /*is_convertible*/)
    +
    853 {
    +
    854 XTENSOR_PRECONDITION(false, "Internal error: linear_assigner called with unrelated types.");
    +
    855 }
    +
    856
    +
    857 /****************************************
    +
    858 * strided_loop_assigner implementation *
    +
    859 ****************************************/
    +
    860
    +
    861 namespace strided_assign_detail
    +
    862 {
    +
    863 template <layout_type layout>
    +
    864 struct idx_tools;
    +
    865
    +
    866 template <>
    +
    + +
    868 {
    +
    869 template <class T>
    +
    870 static void next_idx(T& outer_index, T& outer_shape)
    +
    871 {
    +
    872 auto i = outer_index.size();
    +
    873 for (; i > 0; --i)
    +
    874 {
    +
    875 if (outer_index[i - 1] + 1 >= outer_shape[i - 1])
    +
    876 {
    +
    877 outer_index[i - 1] = 0;
    +
    878 }
    +
    879 else
    +
    880 {
    +
    881 outer_index[i - 1]++;
    +
    882 break;
    +
    883 }
    +
    884 }
    +
    885 }
    +
    886
    +
    887 template <class T>
    +
    888 static void nth_idx(size_t n, T& outer_index, const T& outer_shape)
    +
    889 {
    +
    890 dynamic_shape<std::size_t> stride_sizes;
    +
    891 xt::resize_container(stride_sizes, outer_shape.size());
    +
    892 // compute strides
    +
    893 using size_type = typename T::size_type;
    +
    894 for (size_type i = outer_shape.size(); i > 0; i--)
    +
    895 {
    +
    896 stride_sizes[i - 1] = (i == outer_shape.size()) ? 1 : stride_sizes[i] * outer_shape[i];
    +
    897 }
    +
    898
    +
    899 // compute index
    +
    900 for (size_type i = 0; i < outer_shape.size(); i++)
    +
    901 {
    +
    902 auto d_idx = n / stride_sizes[i];
    +
    903 outer_index[i] = d_idx;
    +
    904 n -= d_idx * stride_sizes[i];
    +
    905 }
    +
    906 }
    +
    907 };
    +
    +
    908
    +
    909 template <>
    +
    + +
    911 {
    +
    912 template <class T>
    +
    913 static void next_idx(T& outer_index, T& outer_shape)
    +
    914 {
    +
    915 using size_type = typename T::size_type;
    +
    916 size_type i = 0;
    +
    917 auto sz = outer_index.size();
    +
    918 for (; i < sz; ++i)
    +
    919 {
    +
    920 if (outer_index[i] + 1 >= outer_shape[i])
    +
    921 {
    +
    922 outer_index[i] = 0;
    +
    923 }
    +
    924 else
    +
    925 {
    +
    926 outer_index[i]++;
    +
    927 break;
    +
    928 }
    +
    929 }
    +
    930 }
    +
    931
    +
    932 template <class T>
    +
    933 static void nth_idx(size_t n, T& outer_index, const T& outer_shape)
    +
    934 {
    +
    935 dynamic_shape<std::size_t> stride_sizes;
    +
    936 xt::resize_container(stride_sizes, outer_shape.size());
    +
    937
    +
    938 using size_type = typename T::size_type;
    +
    939
    +
    940 // compute required strides
    +
    941 for (size_type i = 0; i < outer_shape.size(); i++)
    +
    942 {
    +
    943 stride_sizes[i] = (i == 0) ? 1 : stride_sizes[i - 1] * outer_shape[i - 1];
    +
    944 }
    +
    945
    +
    946 // compute index
    +
    947 for (size_type i = outer_shape.size(); i > 0;)
    +
    948 {
    +
    949 i--;
    +
    950 auto d_idx = n / stride_sizes[i];
    +
    951 outer_index[i] = d_idx;
    +
    952 n -= d_idx * stride_sizes[i];
    +
    953 }
    +
    954 }
    +
    955 };
    +
    +
    956
    +
    957 template <layout_type L, class S>
    +
    + +
    959 {
    +
    960 using strides_type = S;
    +
    961
    + +
    963 : m_cut(L == layout_type::row_major ? 0 : strides.size())
    +
    964 , m_strides(strides)
    +
    965 {
    +
    966 }
    +
    967
    +
    968 template <class T, layout_type LE = L>
    +
    969 std::enable_if_t<LE == layout_type::row_major, std::size_t> operator()(const T& el)
    +
    970 {
    +
    971 // All dimenions less than var have differing strides
    +
    972 auto var = check_strides_overlap<layout_type::row_major>::get(m_strides, el.strides());
    +
    973 if (var > m_cut)
    +
    974 {
    +
    975 m_cut = var;
    +
    976 }
    +
    977 return m_cut;
    +
    978 }
    +
    979
    +
    980 template <class T, layout_type LE = L>
    +
    981 std::enable_if_t<LE == layout_type::column_major, std::size_t> operator()(const T& el)
    +
    982 {
    +
    983 auto var = check_strides_overlap<layout_type::column_major>::get(m_strides, el.strides());
    +
    984 // All dimensions >= var have differing strides
    +
    985 if (var < m_cut)
    +
    986 {
    +
    987 m_cut = var;
    +
    988 }
    +
    989 return m_cut;
    +
    990 }
    +
    991
    +
    992 template <class T>
    +
    993 std::size_t operator()(const xt::xscalar<T>& /*el*/)
    +
    994 {
    +
    995 return m_cut;
    +
    996 }
    +
    997
    +
    998 template <class F, class... CT>
    +
    999 std::size_t operator()(const xt::xfunction<F, CT...>& xf)
    +
    1000 {
    +
    1001 xt::for_each(*this, xf.arguments());
    +
    1002 return m_cut;
    +
    1003 }
    +
    1004
    +
    1005 private:
    +
    1006
    +
    1007 std::size_t m_cut;
    +
    1008 const strides_type& m_strides;
    +
    1009 };
    +
    +
    1010
    +
    1011 template <bool possible = true, class E1, class E2, std::enable_if_t<!has_strides<E1>::value || !possible, bool> = true>
    +
    1012 loop_sizes_t get_loop_sizes(const E1& e1, const E2&)
    +
    1013 {
    +
    1014 return {false, true, 1, e1.size(), e1.dimension(), e1.dimension()};
    +
    1015 }
    +
    1016
    +
    1017 template <bool possible = true, class E1, class E2, std::enable_if_t<has_strides<E1>::value && possible, bool> = true>
    +
    1018 loop_sizes_t get_loop_sizes(const E1& e1, const E2& e2)
    +
    1019 {
    +
    1020 using shape_value_type = typename E1::shape_type::value_type;
    +
    1021 bool is_row_major = true;
    +
    1022
    +
    1023 // Try to find a row-major scheme first, where the outer loop is on the first N = `cut`
    +
    1024 // dimensions, and the inner loop is
    +
    1025 is_row_major = true;
    +
    1026 auto is_zero = [](auto i)
    +
    1027 {
    +
    1028 return i == 0;
    +
    1029 };
    +
    1030 auto&& strides = e1.strides();
    +
    1031 auto it_bwd = std::find_if_not(strides.rbegin(), strides.rend(), is_zero);
    +
    1032 bool de1_row_contiguous = it_bwd != strides.rend() && *it_bwd == 1;
    +
    1033 auto it_fwd = std::find_if_not(strides.begin(), strides.end(), is_zero);
    +
    1034 bool de1_col_contiguous = it_fwd != strides.end() && *it_fwd == 1;
    +
    1035 if (de1_row_contiguous)
    +
    1036 {
    +
    1037 is_row_major = true;
    +
    1038 }
    +
    1039 else if (de1_col_contiguous)
    +
    1040 {
    +
    1041 is_row_major = false;
    +
    1042 }
    +
    1043 else
    +
    1044 {
    +
    1045 // No strided loop possible.
    +
    1046 return {false, true, 1, e1.size(), e1.dimension(), e1.dimension()};
    +
    1047 }
    +
    1048
    +
    1049 // Cut is the number of dimensions in the outer loop
    +
    1050 std::size_t cut = 0;
    +
    1051
    +
    1052 if (is_row_major)
    +
    1053 {
    +
    1054 auto csf = check_strides_functor<layout_type::row_major, decltype(e1.strides())>(e1.strides());
    +
    1055 cut = csf(e2);
    +
    1056 // This makes that only one dimension will be treated in the inner loop.
    +
    1057 if (cut < e1.strides().size() - 1)
    +
    1058 {
    +
    1059 // Only make the inner loop go over one dimension by default for now
    +
    1060 cut = e1.strides().size() - 1;
    +
    1061 }
    +
    1062 }
    +
    1063 else if (!is_row_major)
    +
    1064 {
    +
    1065 auto csf = check_strides_functor<layout_type::column_major, decltype(e1.strides())>(e1.strides()
    +
    1066 );
    +
    1067 cut = csf(e2);
    +
    1068 if (cut > 1)
    +
    1069 {
    +
    1070 // Only make the inner loop go over one dimension by default for now
    +
    1071 cut = 1;
    +
    1072 }
    +
    1073 } // can't reach here because this would have already triggered the fallback
    +
    1074
    +
    1075 std::size_t outer_loop_size = static_cast<std::size_t>(std::accumulate(
    +
    1076 e1.shape().begin(),
    +
    1077 e1.shape().begin() + static_cast<std::ptrdiff_t>(cut),
    +
    1078 shape_value_type(1),
    +
    1079 std::multiplies<shape_value_type>{}
    +
    1080 ));
    +
    1081 std::size_t inner_loop_size = static_cast<std::size_t>(std::accumulate(
    +
    1082 e1.shape().begin() + static_cast<std::ptrdiff_t>(cut),
    +
    1083 e1.shape().end(),
    +
    1084 shape_value_type(1),
    +
    1085 std::multiplies<shape_value_type>{}
    +
    1086 ));
    +
    1087
    +
    1088 if (!is_row_major)
    +
    1089 {
    +
    1090 std::swap(outer_loop_size, inner_loop_size);
    +
    1091 }
    +
    1092
    +
    1093 return {inner_loop_size > 1, is_row_major, inner_loop_size, outer_loop_size, cut, e1.dimension()};
    +
    1094 }
    +
    1095 }
    +
    1096
    +
    1097 template <bool simd>
    +
    1098 template <class E1, class E2>
    +
    1099 inline strided_assign_detail::loop_sizes_t strided_loop_assigner<simd>::get_loop_sizes(E1& e1, const E2& e2)
    +
    1100 {
    +
    1101 return strided_assign_detail::get_loop_sizes<simd>(e1, e2);
    +
    1102 }
    +
    1103
    +
    1104#define strided_parallel_assign
    +
    1105
    +
    1106 template <bool simd>
    +
    1107 template <class E1, class E2>
    +
    1108 inline void strided_loop_assigner<simd>::run(E1& e1, const E2& e2, const loop_sizes_t& loop_sizes)
    +
    1109 {
    +
    1110 bool is_row_major = loop_sizes.is_row_major;
    +
    1111 std::size_t inner_loop_size = loop_sizes.inner_loop_size;
    +
    1112 std::size_t outer_loop_size = loop_sizes.outer_loop_size;
    +
    1113 std::size_t cut = loop_sizes.cut;
    +
    1114
    +
    1115
    +
    1116 // TODO can we get rid of this and use `shape_type`?
    +
    1117 dynamic_shape<std::size_t> idx, max_shape;
    +
    1118
    +
    1119 if (is_row_major)
    +
    1120 {
    +
    1121 xt::resize_container(idx, cut);
    +
    1122 max_shape.assign(e1.shape().begin(), e1.shape().begin() + static_cast<std::ptrdiff_t>(cut));
    +
    1123 }
    +
    1124 else
    +
    1125 {
    +
    1126 xt::resize_container(idx, e1.shape().size() - cut);
    +
    1127 max_shape.assign(e1.shape().begin() + static_cast<std::ptrdiff_t>(cut), e1.shape().end());
    +
    1128 }
    +
    1129
    +
    1130 // add this when we have std::array index!
    +
    1131 // std::fill(idx.begin(), idx.end(), 0);
    +
    1132 using e1_value_type = typename E1::value_type;
    +
    1133 using e2_value_type = typename E2::value_type;
    +
    1134 constexpr bool needs_cast = has_assign_conversion<e1_value_type, e2_value_type>::value;
    +
    1135 using value_type = typename xassign_traits<E1, E2>::requested_value_type;
    +
    1136 using simd_type = std::conditional_t<
    +
    1137 std::is_same<e1_value_type, bool>::value,
    +
    1138 xt_simd::simd_bool_type<value_type>,
    +
    1139 xt_simd::simd_type<value_type>>;
    +
    1140
    +
    1141 std::size_t simd_size = inner_loop_size / simd_type::size;
    +
    1142 std::size_t simd_rest = inner_loop_size % simd_type::size;
    +
    1143
    +
    1144 auto fct_stepper = e2.stepper_begin(e1.shape());
    +
    1145 auto res_stepper = e1.stepper_begin(e1.shape());
    +
    1146
    +
    1147 // TODO in 1D case this is ambiguous -- could be RM or CM.
    +
    1148 // Use default layout to make decision
    +
    1149 std::size_t step_dim = 0;
    +
    1150 if (!is_row_major) // row major case
    +
    1151 {
    +
    1152 step_dim = cut;
    +
    1153 }
    +
    1154#if defined(XTENSOR_USE_OPENMP) && defined(strided_parallel_assign)
    +
    1155 if (outer_loop_size >= XTENSOR_OPENMP_TRESHOLD / inner_loop_size)
    +
    1156 {
    +
    1157 std::size_t first_step = true;
    +
    1158#pragma omp parallel for schedule(static) firstprivate(first_step, fct_stepper, res_stepper, idx)
    +
    1159 for (std::size_t ox = 0; ox < outer_loop_size; ++ox)
    +
    1160 {
    +
    1161 if (first_step)
    +
    1162 {
    +
    1163 is_row_major
    +
    1164 ? strided_assign_detail::idx_tools<layout_type::row_major>::nth_idx(ox, idx, max_shape)
    +
    1165 : strided_assign_detail::idx_tools<layout_type::column_major>::nth_idx(ox, idx, max_shape);
    +
    1166
    +
    1167 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1168 {
    +
    1169 fct_stepper.step(i + step_dim, idx[i]);
    +
    1170 res_stepper.step(i + step_dim, idx[i]);
    +
    1171 }
    +
    1172 first_step = false;
    +
    1173 }
    +
    1174
    +
    1175 for (std::size_t i = 0; i < simd_size; ++i)
    +
    1176 {
    +
    1177 res_stepper.template store_simd(fct_stepper.template step_simd<value_type>());
    +
    1178 }
    +
    1179 for (std::size_t i = 0; i < simd_rest; ++i)
    +
    1180 {
    +
    1181 *(res_stepper) = conditional_cast<needs_cast, e1_value_type>(*(fct_stepper));
    +
    1182 res_stepper.step_leading();
    +
    1183 fct_stepper.step_leading();
    +
    1184 }
    +
    1185
    +
    1186 // next unaligned index
    +
    1187 is_row_major
    +
    1188 ? strided_assign_detail::idx_tools<layout_type::row_major>::next_idx(idx, max_shape)
    +
    1189 : strided_assign_detail::idx_tools<layout_type::column_major>::next_idx(idx, max_shape);
    +
    1190
    +
    1191 fct_stepper.to_begin();
    +
    1192
    +
    1193 // need to step E1 as well if not contigous assign (e.g. view)
    +
    1194 if (!E1::contiguous_layout)
    +
    1195 {
    +
    1196 res_stepper.to_begin();
    +
    1197 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1198 {
    +
    1199 fct_stepper.step(i + step_dim, idx[i]);
    +
    1200 res_stepper.step(i + step_dim, idx[i]);
    +
    1201 }
    +
    1202 }
    +
    1203 else
    +
    1204 {
    +
    1205 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1206 {
    +
    1207 fct_stepper.step(i + step_dim, idx[i]);
    +
    1208 }
    +
    1209 }
    +
    1210 }
    +
    1211 }
    +
    1212 else
    +
    1213 {
    +
    1214#elif defined(strided_parallel_assign) && defined(XTENSOR_USE_TBB)
    +
    1215 if (outer_loop_size > XTENSOR_TBB_THRESHOLD / inner_loop_size)
    +
    1216 {
    +
    1217 tbb::static_partitioner sp;
    +
    1218 tbb::parallel_for(
    +
    1219 tbb::blocked_range<size_t>(0ul, outer_loop_size),
    +
    1220 [&e1, &e2, is_row_major, step_dim, simd_size, simd_rest, &max_shape, &idx_ = idx](
    +
    1221 const tbb::blocked_range<size_t>& r
    +
    1222 )
    +
    1223 {
    +
    1224 auto idx = idx_;
    +
    1225 auto fct_stepper = e2.stepper_begin(e1.shape());
    +
    1226 auto res_stepper = e1.stepper_begin(e1.shape());
    +
    1227 std::size_t first_step = true;
    +
    1228 // #pragma omp parallel for schedule(static) firstprivate(first_step, fct_stepper,
    +
    1229 // res_stepper, idx)
    +
    1230 for (std::size_t ox = r.begin(); ox < r.end(); ++ox)
    +
    1231 {
    +
    1232 if (first_step)
    +
    1233 {
    +
    1234 is_row_major
    +
    1235 ? strided_assign_detail::idx_tools<layout_type::row_major>::nth_idx(ox, idx, max_shape)
    +
    1236 : strided_assign_detail::idx_tools<layout_type::column_major>::nth_idx(
    +
    1237 ox,
    +
    1238 idx,
    +
    1239 max_shape
    +
    1240 );
    +
    1241
    +
    1242 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1243 {
    +
    1244 fct_stepper.step(i + step_dim, idx[i]);
    +
    1245 res_stepper.step(i + step_dim, idx[i]);
    +
    1246 }
    +
    1247 first_step = false;
    +
    1248 }
    +
    1249
    +
    1250 for (std::size_t i = 0; i < simd_size; ++i)
    +
    1251 {
    +
    1252 res_stepper.template store_simd(fct_stepper.template step_simd<value_type>());
    +
    1253 }
    +
    1254 for (std::size_t i = 0; i < simd_rest; ++i)
    +
    1255 {
    +
    1256 *(res_stepper) = conditional_cast<needs_cast, e1_value_type>(*(fct_stepper));
    +
    1257 res_stepper.step_leading();
    +
    1258 fct_stepper.step_leading();
    +
    1259 }
    +
    1260
    +
    1261 // next unaligned index
    +
    1262 is_row_major
    +
    1263 ? strided_assign_detail::idx_tools<layout_type::row_major>::next_idx(idx, max_shape)
    +
    1264 : strided_assign_detail::idx_tools<layout_type::column_major>::next_idx(idx, max_shape);
    +
    1265
    +
    1266 fct_stepper.to_begin();
    +
    1267
    +
    1268 // need to step E1 as well if not contigous assign (e.g. view)
    +
    1269 if (!E1::contiguous_layout)
    +
    1270 {
    +
    1271 res_stepper.to_begin();
    +
    1272 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1273 {
    +
    1274 fct_stepper.step(i + step_dim, idx[i]);
    +
    1275 res_stepper.step(i + step_dim, idx[i]);
    +
    1276 }
    +
    1277 }
    +
    1278 else
    +
    1279 {
    +
    1280 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1281 {
    +
    1282 fct_stepper.step(i + step_dim, idx[i]);
    +
    1283 }
    +
    1284 }
    +
    1285 }
    +
    1286 },
    +
    1287 sp
    +
    1288 );
    +
    1289 }
    +
    1290 else
    +
    1291 {
    +
    1292
    +
    1293#endif
    +
    1294 for (std::size_t ox = 0; ox < outer_loop_size; ++ox)
    +
    1295 {
    +
    1296 for (std::size_t i = 0; i < simd_size; ++i)
    +
    1297 {
    +
    1298 res_stepper.store_simd(fct_stepper.template step_simd<value_type>());
    +
    1299 }
    +
    1300 for (std::size_t i = 0; i < simd_rest; ++i)
    +
    1301 {
    +
    1302 *(res_stepper) = conditional_cast<needs_cast, e1_value_type>(*(fct_stepper));
    +
    1303 res_stepper.step_leading();
    +
    1304 fct_stepper.step_leading();
    +
    1305 }
    +
    1306
    +
    1307 is_row_major
    +
    1308 ? strided_assign_detail::idx_tools<layout_type::row_major>::next_idx(idx, max_shape)
    +
    1309 : strided_assign_detail::idx_tools<layout_type::column_major>::next_idx(idx, max_shape);
    +
    1310
    +
    1311 fct_stepper.to_begin();
    +
    1312
    +
    1313 // need to step E1 as well if not contigous assign (e.g. view)
    +
    1314 if (!E1::contiguous_layout)
    +
    1315 {
    +
    1316 res_stepper.to_begin();
    +
    1317 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1318 {
    +
    1319 fct_stepper.step(i + step_dim, idx[i]);
    +
    1320 res_stepper.step(i + step_dim, idx[i]);
    +
    1321 }
    +
    1322 }
    +
    1323 else
    +
    1324 {
    +
    1325 for (std::size_t i = 0; i < idx.size(); ++i)
    +
    1326 {
    +
    1327 fct_stepper.step(i + step_dim, idx[i]);
    +
    1328 }
    +
    1329 }
    +
    1330 }
    +
    1331#if (defined(XTENSOR_USE_OPENMP) || defined(XTENSOR_USE_TBB)) && defined(strided_parallel_assign)
    +
    1332 }
    +
    1333#endif
    +
    1334 }
    +
    1335
    +
    1336 template <>
    +
    1337 template <class E1, class E2>
    +
    1338 inline void strided_loop_assigner<true>::run(E1& e1, const E2& e2)
    +
    1339 {
    +
    1340 strided_assign_detail::loop_sizes_t loop_sizes = strided_loop_assigner<true>::get_loop_sizes(e1, e2);
    +
    1341 if (loop_sizes.can_do_strided_assign)
    +
    1342 {
    +
    1343 run(e1, e2, loop_sizes);
    +
    1344 }
    +
    1345 else
    +
    1346 {
    +
    1347 // trigger the fallback assigner
    +
    1348 stepper_assigner<E1, E2, default_assignable_layout(E1::static_layout)>(e1, e2).run();
    +
    1349 }
    +
    1350 }
    +
    1351
    +
    1352 template <>
    +
    1353 template <class E1, class E2>
    +
    1354 inline void strided_loop_assigner<false>::run(E1& /*e1*/, const E2& /*e2*/, const loop_sizes_t&)
    +
    1355 {
    +
    1356 }
    +
    1357
    +
    1358 template <>
    +
    1359 template <class E1, class E2>
    +
    1360 inline void strided_loop_assigner<false>::run(E1& e1, const E2& e2)
    +
    1361 {
    +
    1362 // trigger the fallback assigner
    +
    1363 stepper_assigner<E1, E2, default_assignable_layout(E1::static_layout)>(e1, e2).run();
    +
    1364 }
    +
    1365}
    +
    1366
    +
    1367#endif
    + + + + + + + +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Multidimensional function operating on xtensor expressions.
    + +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    constexpr layout_type compute_layout(Args... args) noexcept
    Implementation of the following logical table:
    Definition xlayout.hpp:88
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xaxis__iterator_8hpp_source.html b/xaxis__iterator_8hpp_source.html new file mode 100644 index 000000000..f7522ab42 --- /dev/null +++ b/xaxis__iterator_8hpp_source.html @@ -0,0 +1,397 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xaxis_iterator.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xaxis_iterator.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_AXIS_ITERATOR_HPP
    +
    11#define XTENSOR_AXIS_ITERATOR_HPP
    +
    12
    +
    13#include "xstrided_view.hpp"
    +
    14
    +
    15namespace xt
    +
    16{
    +
    17
    +
    18 /******************
    +
    19 * xaxis_iterator *
    +
    20 ******************/
    +
    21
    +
    32 template <class CT>
    +
    + +
    34 {
    +
    35 public:
    +
    36
    + +
    38
    +
    39 using xexpression_type = std::decay_t<CT>;
    +
    40 using size_type = typename xexpression_type::size_type;
    +
    41 using difference_type = typename xexpression_type::difference_type;
    +
    42 using shape_type = typename xexpression_type::shape_type;
    + +
    44 using reference = std::remove_reference_t<apply_cv_t<CT, value_type>>;
    +
    45 using pointer = xtl::xclosure_pointer<std::remove_reference_t<apply_cv_t<CT, value_type>>>;
    +
    46
    +
    47 using iterator_category = std::forward_iterator_tag;
    +
    48
    +
    49 template <class CTA>
    +
    50 xaxis_iterator(CTA&& e, size_type axis);
    +
    51 template <class CTA>
    +
    52 xaxis_iterator(CTA&& e, size_type axis, size_type index, size_type offset);
    +
    53
    + + +
    56
    +
    57 reference operator*() const;
    +
    58 pointer operator->() const;
    +
    59
    +
    60 bool equal(const self_type& rhs) const;
    +
    61
    +
    62 private:
    +
    63
    +
    64 using storing_type = xtl::ptr_closure_type_t<CT>;
    +
    65 mutable storing_type p_expression;
    +
    66 size_type m_index;
    +
    67 size_type m_add_offset;
    +
    68 value_type m_sv;
    +
    69
    +
    70 template <class T, class CTA>
    +
    71 std::enable_if_t<std::is_pointer<T>::value, T> get_storage_init(CTA&& e) const;
    +
    72
    +
    73 template <class T, class CTA>
    +
    74 std::enable_if_t<!std::is_pointer<T>::value, T> get_storage_init(CTA&& e) const;
    +
    75 };
    +
    +
    76
    +
    77 template <class CT>
    +
    78 bool operator==(const xaxis_iterator<CT>& lhs, const xaxis_iterator<CT>& rhs);
    +
    79
    +
    80 template <class CT>
    +
    81 bool operator!=(const xaxis_iterator<CT>& lhs, const xaxis_iterator<CT>& rhs);
    +
    82
    +
    83 template <class E>
    +
    84 auto axis_begin(E&& e);
    +
    85
    +
    86 template <class E>
    +
    87 auto axis_begin(E&& e, typename std::decay_t<E>::size_type axis);
    +
    88
    +
    89 template <class E>
    +
    90 auto axis_end(E&& e);
    +
    91
    +
    92 template <class E>
    +
    93 auto axis_end(E&& e, typename std::decay_t<E>::size_type axis);
    +
    94
    +
    95 /*********************************
    +
    96 * xaxis_iterator implementation *
    +
    97 *********************************/
    +
    98
    +
    99 namespace detail
    +
    100 {
    +
    101 template <class CT>
    +
    102 auto derive_xstrided_view(
    +
    103 CT&& e,
    +
    104 typename std::decay_t<CT>::size_type axis,
    +
    105 typename std::decay_t<CT>::size_type offset
    +
    106 )
    +
    107 {
    +
    108 using xexpression_type = std::decay_t<CT>;
    +
    109 using shape_type = typename xexpression_type::shape_type;
    +
    110 using strides_type = typename xexpression_type::strides_type;
    +
    111
    +
    112 const auto& e_shape = e.shape();
    +
    113 shape_type shape(e_shape.size() - 1);
    +
    114 auto nxt = std::copy(e_shape.cbegin(), e_shape.cbegin() + axis, shape.begin());
    +
    115 std::copy(e_shape.cbegin() + axis + 1, e_shape.end(), nxt);
    +
    116
    +
    117 const auto& e_strides = e.strides();
    +
    118 strides_type strides(e_strides.size() - 1);
    +
    119 auto nxt_strides = std::copy(e_strides.cbegin(), e_strides.cbegin() + axis, strides.begin());
    +
    120 std::copy(e_strides.cbegin() + axis + 1, e_strides.end(), nxt_strides);
    +
    121
    +
    122 return strided_view(std::forward<CT>(e), std::move(shape), std::move(strides), offset, e.layout());
    +
    123 }
    +
    124 }
    +
    125
    +
    126 template <class CT>
    +
    127 template <class T, class CTA>
    +
    128 inline std::enable_if_t<std::is_pointer<T>::value, T> xaxis_iterator<CT>::get_storage_init(CTA&& e) const
    +
    129 {
    +
    130 return &e;
    +
    131 }
    +
    132
    +
    133 template <class CT>
    +
    134 template <class T, class CTA>
    +
    135 inline std::enable_if_t<!std::is_pointer<T>::value, T> xaxis_iterator<CT>::get_storage_init(CTA&& e) const
    +
    136 {
    +
    137 return e;
    +
    138 }
    +
    139
    +
    150 template <class CT>
    +
    151 template <class CTA>
    +
    +
    152 inline xaxis_iterator<CT>::xaxis_iterator(CTA&& e, size_type axis)
    +
    153 : xaxis_iterator(std::forward<CTA>(e), axis, 0, e.data_offset())
    +
    154 {
    +
    155 }
    +
    +
    156
    +
    165 template <class CT>
    +
    166 template <class CTA>
    +
    +
    167 inline xaxis_iterator<CT>::xaxis_iterator(CTA&& e, size_type axis, size_type index, size_type offset)
    +
    168 : p_expression(get_storage_init<storing_type>(std::forward<CTA>(e)))
    +
    169 , m_index(index)
    +
    170 , m_add_offset(static_cast<size_type>(e.strides()[axis]))
    +
    171 , m_sv(detail::derive_xstrided_view<CTA>(std::forward<CTA>(e), axis, offset))
    +
    172 {
    +
    173 }
    +
    +
    174
    +
    176
    +
    184 template <class CT>
    +
    + +
    186 {
    +
    187 m_sv.set_offset(m_sv.data_offset() + m_add_offset);
    +
    188 ++m_index;
    +
    189 return *this;
    +
    190 }
    +
    +
    191
    +
    196 template <class CT>
    +
    + +
    198 {
    +
    199 self_type tmp(*this);
    +
    200 ++(*this);
    +
    201 return tmp;
    +
    202 }
    +
    +
    203
    +
    205
    +
    215 template <class CT>
    +
    +
    216 inline auto xaxis_iterator<CT>::operator*() const -> reference
    +
    217 {
    +
    218 return m_sv;
    +
    219 }
    +
    +
    220
    +
    226 template <class CT>
    +
    +
    227 inline auto xaxis_iterator<CT>::operator->() const -> pointer
    +
    228 {
    +
    229 return xtl::closure_pointer(operator*());
    +
    230 }
    +
    +
    231
    +
    233
    +
    234 /*
    +
    235 * @name Comparisons
    +
    236 */
    +
    238
    +
    244 template <class CT>
    +
    +
    245 inline bool xaxis_iterator<CT>::equal(const self_type& rhs) const
    +
    246 {
    +
    247 return p_expression == rhs.p_expression && m_index == rhs.m_index
    +
    248 && m_sv.data_offset() == rhs.m_sv.data_offset();
    +
    249 }
    +
    +
    250
    +
    256 template <class CT>
    +
    +
    257 inline bool operator==(const xaxis_iterator<CT>& lhs, const xaxis_iterator<CT>& rhs)
    +
    258 {
    +
    259 return lhs.equal(rhs);
    +
    260 }
    +
    +
    261
    +
    266 template <class CT>
    +
    +
    267 inline bool operator!=(const xaxis_iterator<CT>& lhs, const xaxis_iterator<CT>& rhs)
    +
    268 {
    +
    269 return !(lhs == rhs);
    +
    270 }
    +
    +
    271
    +
    273
    +
    284 template <class E>
    +
    +
    285 inline auto axis_begin(E&& e)
    +
    286 {
    +
    287 using return_type = xaxis_iterator<xtl::closure_type_t<E>>;
    +
    288 return return_type(std::forward<E>(e), 0);
    +
    289 }
    +
    +
    290
    +
    298 template <class E>
    +
    +
    299 inline auto axis_begin(E&& e, typename std::decay_t<E>::size_type axis)
    +
    300 {
    +
    301 using return_type = xaxis_iterator<xtl::closure_type_t<E>>;
    +
    302 return return_type(std::forward<E>(e), axis);
    +
    303 }
    +
    +
    304
    +
    312 template <class E>
    +
    +
    313 inline auto axis_end(E&& e)
    +
    314 {
    +
    315 using size_type = typename std::decay_t<E>::size_type;
    +
    316 using return_type = xaxis_iterator<xtl::closure_type_t<E>>;
    +
    317 return return_type(
    +
    318 std::forward<E>(e),
    +
    319 0,
    +
    320 e.shape()[0],
    +
    321 static_cast<size_type>(e.strides()[0]) * e.shape()[0]
    +
    322 );
    +
    323 }
    +
    +
    324
    +
    333 template <class E>
    +
    +
    334 inline auto axis_end(E&& e, typename std::decay_t<E>::size_type axis)
    +
    335 {
    +
    336 using size_type = typename std::decay_t<E>::size_type;
    +
    337 using return_type = xaxis_iterator<xtl::closure_type_t<E>>;
    +
    338 return return_type(
    +
    339 std::forward<E>(e),
    +
    340 axis,
    +
    341 e.shape()[axis],
    +
    342 static_cast<size_type>(e.strides()[axis]) * e.shape()[axis]
    +
    343 );
    +
    344 }
    +
    +
    345
    +
    347}
    +
    348
    +
    349#endif
    +
    Class for iteration over (N-1)-dimensional slices, where N is the dimension of the underlying express...
    +
    reference operator*() const
    Returns the strided view at the current iteration position.
    +
    pointer operator->() const
    Returns a pointer to the strided view at the current iteration position.
    +
    xaxis_iterator(CTA &&e, size_type axis)
    Constructs an xaxis_iterator.
    +
    self_type & operator++()
    Increments the iterator to the next position and returns it.
    +
    bool equal(const self_type &rhs) const
    Checks equality of the xaxis_slice_iterator and rhs.
    + +
    size_type data_offset() const noexcept
    Returns the offset to the first element in the view.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto axis_begin(E &&e)
    Returns an iterator to the first element of the expression for axis 0.
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    auto axis_end(E &&e)
    Returns an iterator to the element following the last element of the expression for axis 0.
    +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    +
    + + + + diff --git a/xaxis__slice__iterator_8hpp_source.html b/xaxis__slice__iterator_8hpp_source.html new file mode 100644 index 000000000..420d49384 --- /dev/null +++ b/xaxis__slice__iterator_8hpp_source.html @@ -0,0 +1,417 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xaxis_slice_iterator.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xaxis_slice_iterator.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_AXIS_SLICE_ITERATOR_HPP
    +
    11#define XTENSOR_AXIS_SLICE_ITERATOR_HPP
    +
    12
    +
    13#include "xstrided_view.hpp"
    +
    14
    +
    15namespace xt
    +
    16{
    +
    17
    +
    27 template <class CT>
    +
    + +
    29 {
    +
    30 public:
    +
    31
    + +
    33
    +
    34 using xexpression_type = std::decay_t<CT>;
    +
    35 using size_type = typename xexpression_type::size_type;
    +
    36 using difference_type = typename xexpression_type::difference_type;
    +
    37 using shape_type = typename xexpression_type::shape_type;
    +
    38 using strides_type = typename xexpression_type::strides_type;
    + +
    40 using reference = std::remove_reference_t<apply_cv_t<CT, value_type>>;
    +
    41 using pointer = xtl::xclosure_pointer<std::remove_reference_t<apply_cv_t<CT, value_type>>>;
    +
    42
    +
    43 using iterator_category = std::forward_iterator_tag;
    +
    44
    +
    45 template <class CTA>
    +
    46 xaxis_slice_iterator(CTA&& e, size_type axis);
    +
    47 template <class CTA>
    +
    48 xaxis_slice_iterator(CTA&& e, size_type axis, size_type index, size_type offset);
    +
    49
    + + +
    52
    +
    53 reference operator*() const;
    +
    54 pointer operator->() const;
    +
    55
    +
    56 bool equal(const self_type& rhs) const;
    +
    57
    +
    58 private:
    +
    59
    +
    60 using storing_type = xtl::ptr_closure_type_t<CT>;
    +
    61 mutable storing_type p_expression;
    +
    62 size_type m_index;
    +
    63 size_type m_offset;
    +
    64 size_type m_axis_stride;
    +
    65 size_type m_lower_shape;
    +
    66 size_type m_upper_shape;
    +
    67 size_type m_iter_size;
    +
    68 bool m_is_target_axis;
    +
    69 value_type m_sv;
    +
    70
    +
    71 template <class T, class CTA>
    +
    72 std::enable_if_t<std::is_pointer<T>::value, T> get_storage_init(CTA&& e) const;
    +
    73
    +
    74 template <class T, class CTA>
    +
    75 std::enable_if_t<!std::is_pointer<T>::value, T> get_storage_init(CTA&& e) const;
    +
    76 };
    +
    +
    77
    +
    78 template <class CT>
    + +
    80
    +
    81 template <class CT>
    + +
    83
    +
    84 template <class E>
    +
    85 auto xaxis_slice_begin(E&& e);
    +
    86
    +
    87 template <class E>
    +
    88 auto xaxis_slice_begin(E&& e, typename std::decay_t<E>::size_type axis);
    +
    89
    +
    90 template <class E>
    +
    91 auto xaxis_slice_end(E&& e);
    +
    92
    +
    93 template <class E>
    +
    94 auto xaxis_slice_end(E&& e, typename std::decay_t<E>::size_type axis);
    +
    95
    +
    96 /***************************************
    +
    97 * xaxis_slice_iterator implementation *
    +
    98 ***************************************/
    +
    99
    +
    100 template <class CT>
    +
    101 template <class T, class CTA>
    +
    102 inline std::enable_if_t<std::is_pointer<T>::value, T>
    + +
    104 {
    +
    105 return &e;
    +
    106 }
    +
    107
    +
    108 template <class CT>
    +
    109 template <class T, class CTA>
    +
    110 inline std::enable_if_t<!std::is_pointer<T>::value, T>
    +
    111 xaxis_slice_iterator<CT>::get_storage_init(CTA&& e) const
    +
    112 {
    +
    113 return e;
    +
    114 }
    +
    115
    +
    126 template <class CT>
    +
    127 template <class CTA>
    +
    + +
    129 : xaxis_slice_iterator(std::forward<CTA>(e), axis, 0, e.data_offset())
    +
    130 {
    +
    131 }
    +
    +
    132
    +
    141 template <class CT>
    +
    142 template <class CTA>
    +
    +
    143 inline xaxis_slice_iterator<CT>::xaxis_slice_iterator(CTA&& e, size_type axis, size_type index, size_type offset)
    +
    144 : p_expression(get_storage_init<storing_type>(std::forward<CTA>(e)))
    +
    145 , m_index(index)
    +
    146 , m_offset(offset)
    +
    147 , m_axis_stride(static_cast<size_type>(e.strides()[axis]) * (e.shape()[axis] - 1u))
    +
    148 , m_lower_shape(0)
    +
    149 , m_upper_shape(0)
    +
    150 , m_iter_size(0)
    +
    151 , m_is_target_axis(false)
    +
    152 , m_sv(strided_view(
    +
    153 std::forward<CT>(e),
    +
    154 std::forward<shape_type>({e.shape()[axis]}),
    +
    155 std::forward<strides_type>({e.strides()[axis]}),
    +
    156 offset,
    +
    157 e.layout()
    +
    158 ))
    +
    159 {
    +
    160 if (e.layout() == layout_type::row_major)
    +
    161 {
    +
    162 m_is_target_axis = axis == e.dimension() - 1;
    +
    163 m_lower_shape = std::accumulate(
    +
    164 e.shape().begin() + axis + 1,
    +
    165 e.shape().end(),
    +
    166 size_t(1),
    +
    167 std::multiplies<>()
    +
    168 );
    +
    169 m_iter_size = std::accumulate(e.shape().begin() + 1, e.shape().end(), size_t(1), std::multiplies<>());
    +
    170 }
    +
    171 else
    +
    172 {
    +
    173 m_is_target_axis = axis == 0;
    +
    174 m_lower_shape = std::accumulate(
    +
    175 e.shape().begin(),
    +
    176 e.shape().begin() + axis,
    +
    177 size_t(1),
    +
    178 std::multiplies<>()
    +
    179 );
    +
    180 m_iter_size = std::accumulate(e.shape().begin(), e.shape().end() - 1, size_t(1), std::multiplies<>());
    +
    181 }
    +
    182 m_upper_shape = m_lower_shape + m_axis_stride;
    +
    183 }
    +
    +
    184
    +
    186
    +
    194 template <class CT>
    +
    + +
    196 {
    +
    197 ++m_index;
    +
    198 ++m_offset;
    +
    199 auto index_compare = (m_offset % m_iter_size);
    +
    200 if (m_is_target_axis || (m_upper_shape >= index_compare && index_compare >= m_lower_shape))
    +
    201 {
    +
    202 m_offset += m_axis_stride;
    +
    203 }
    +
    204 m_sv.set_offset(m_offset);
    +
    205 return *this;
    +
    206 }
    +
    +
    207
    +
    212 template <class CT>
    +
    + +
    214 {
    +
    215 self_type tmp(*this);
    +
    216 ++(*this);
    +
    217 return tmp;
    +
    218 }
    +
    +
    219
    +
    221
    +
    231 template <class CT>
    +
    +
    232 inline auto xaxis_slice_iterator<CT>::operator*() const -> reference
    +
    233 {
    +
    234 return m_sv;
    +
    235 }
    +
    +
    236
    +
    242 template <class CT>
    +
    +
    243 inline auto xaxis_slice_iterator<CT>::operator->() const -> pointer
    +
    244 {
    +
    245 return xtl::closure_pointer(operator*());
    +
    246 }
    +
    +
    247
    +
    249
    +
    250 /*
    +
    251 * @name Comparisons
    +
    252 */
    +
    254
    +
    259 template <class CT>
    +
    +
    260 inline bool xaxis_slice_iterator<CT>::equal(const self_type& rhs) const
    +
    261 {
    +
    262 return p_expression == rhs.p_expression && m_index == rhs.m_index;
    +
    263 }
    +
    +
    264
    +
    270 template <class CT>
    +
    + +
    272 {
    +
    273 return lhs.equal(rhs);
    +
    274 }
    +
    +
    275
    +
    280 template <class CT>
    +
    + +
    282 {
    +
    283 return !(lhs == rhs);
    +
    284 }
    +
    +
    285
    +
    287
    +
    298 template <class E>
    +
    +
    299 inline auto axis_slice_begin(E&& e)
    +
    300 {
    + +
    302 return return_type(std::forward<E>(e), 0);
    +
    303 }
    +
    +
    304
    +
    312 template <class E>
    +
    +
    313 inline auto axis_slice_begin(E&& e, typename std::decay_t<E>::size_type axis)
    +
    314 {
    + +
    316 return return_type(std::forward<E>(e), axis, 0, e.data_offset());
    +
    317 }
    +
    +
    318
    +
    326 template <class E>
    +
    +
    327 inline auto axis_slice_end(E&& e)
    +
    328 {
    + +
    330 return return_type(
    +
    331 std::forward<E>(e),
    +
    332 0,
    +
    333 std::accumulate(e.shape().begin() + 1, e.shape().end(), size_t(1), std::multiplies<>()),
    +
    334 e.size()
    +
    335 );
    +
    336 }
    +
    +
    337
    +
    346 template <class E>
    +
    +
    347 inline auto axis_slice_end(E&& e, typename std::decay_t<E>::size_type axis)
    +
    348 {
    + +
    350 auto index_sum = std::accumulate(
    +
    351 e.shape().begin(),
    +
    352 e.shape().begin() + axis,
    +
    353 size_t(1),
    +
    354 std::multiplies<>()
    +
    355 );
    +
    356 return return_type(
    +
    357 std::forward<E>(e),
    +
    358 axis,
    +
    359 std::accumulate(e.shape().begin() + axis + 1, e.shape().end(), index_sum, std::multiplies<>()),
    +
    360 e.size() + axis
    +
    361 );
    +
    362 }
    +
    +
    363
    +
    365}
    +
    366
    +
    367#endif
    +
    Class for iteration over one-dimensional slices.
    +
    self_type & operator++()
    Increments the iterator to the next position and returns it.
    +
    reference operator*() const
    Returns the strided view at the current iteration position.
    +
    pointer operator->() const
    Returns a pointer to the strided view at the current iteration position.
    +
    bool equal(const self_type &rhs) const
    Checks equality of the xaxis_slice_iterator and rhs.
    +
    xaxis_slice_iterator(CTA &&e, size_type axis)
    Constructs an xaxis_slice_iterator.
    + +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    + +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    +
    auto axis_slice_begin(E &&e)
    Returns an iterator to the first element of the expression for axis 0.
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto axis_slice_end(E &&e)
    Returns an iterator to the element following the last element of the expression for axis 0.
    +
    +
    + + + + diff --git a/xblockwise__reducer_8hpp_source.html b/xblockwise__reducer_8hpp_source.html new file mode 100644 index 000000000..724c76fc6 --- /dev/null +++ b/xblockwise__reducer_8hpp_source.html @@ -0,0 +1,650 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xblockwise_reducer.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xblockwise_reducer.hpp
    +
    +
    +
    1#ifndef XTENSOR_XBLOCKWISE_REDUCER_HPP
    +
    2#define XTENSOR_XBLOCKWISE_REDUCER_HPP
    +
    3
    +
    4#include "xblockwise_reducer_functors.hpp"
    +
    5#include "xmultiindex_iterator.hpp"
    +
    6#include "xreducer.hpp"
    +
    7#include "xshape.hpp"
    +
    8#include "xtl/xclosure.hpp"
    +
    9#include "xtl/xsequence.hpp"
    +
    10
    +
    11namespace xt
    +
    12{
    +
    13
    +
    14 template <class CT, class F, class X, class O>
    +
    + +
    16 {
    +
    17 public:
    +
    18
    + +
    20 using raw_options_type = std::decay_t<O>;
    +
    21 using keep_dims = xtl::mpl::contains<raw_options_type, xt::keep_dims_type>;
    +
    22 using xexpression_type = std::decay_t<CT>;
    +
    23 using shape_type = typename xreducer_shape_type<typename xexpression_type::shape_type, std::decay_t<X>, keep_dims>::type;
    +
    24 using functor_type = F;
    +
    25 using value_type = typename functor_type::value_type;
    +
    26 using input_shape_type = typename xexpression_type::shape_type;
    +
    27 using input_chunk_index_type = filter_fixed_shape_t<input_shape_type>;
    +
    28 using input_grid_strides = filter_fixed_shape_t<input_shape_type>;
    +
    29 using axes_type = X;
    +
    30 using chunk_shape_type = filter_fixed_shape_t<shape_type>;
    +
    31
    +
    32
    +
    33 template <class E, class BS, class XX, class OO, class FF>
    +
    34 xblockwise_reducer(E&& e, BS&& block_shape, XX&& axes, OO&& options, FF&& functor);
    +
    35
    +
    36 const input_shape_type& input_shape() const;
    +
    37 const axes_type& axes() const;
    +
    38
    +
    39 std::size_t dimension() const;
    +
    40
    +
    41 const shape_type& shape() const;
    +
    42
    +
    43 const chunk_shape_type& chunk_shape() const;
    +
    44
    +
    45 template <class R>
    +
    46 void assign_to(R& result) const;
    +
    47
    +
    48 private:
    +
    49
    +
    50 using mapping_type = filter_fixed_shape_t<shape_type>;
    + +
    52 using input_const_chunked_iterator_type = typename input_chunked_view_type::const_chunk_iterator;
    +
    53 using input_chunk_range_type = std::array<xmultiindex_iterator<input_chunk_index_type>, 2>;
    +
    54
    +
    55 template <class CI>
    +
    56 void assign_to_chunk(CI& result_chunk_iter) const;
    +
    57
    +
    58 template <class CI>
    +
    59 input_chunk_range_type compute_input_chunk_range(CI& result_chunk_iter) const;
    +
    60
    +
    61 input_const_chunked_iterator_type get_input_chunk_iter(input_chunk_index_type input_chunk_index) const;
    +
    62 void init_shapes();
    +
    63
    +
    64 CT m_e;
    +
    65 xchunked_view<const std::decay_t<CT>&> m_e_chunked_view;
    +
    66 axes_type m_axes;
    +
    67 raw_options_type m_options;
    +
    68 functor_type m_functor;
    +
    69 shape_type m_result_shape;
    +
    70 chunk_shape_type m_result_chunk_shape;
    +
    71 mapping_type m_mapping;
    +
    72 input_grid_strides m_input_grid_strides;
    +
    73 };
    +
    +
    74
    +
    75 template <class CT, class F, class X, class O>
    +
    76 template <class E, class BS, class XX, class OO, class FF>
    +
    77 xblockwise_reducer<CT, F, X, O>::xblockwise_reducer(E&& e, BS&& block_shape, XX&& axes, OO&& options, FF&& functor)
    +
    78 : m_e(std::forward<E>(e))
    +
    79 , m_e_chunked_view(m_e, std::forward<BS>(block_shape))
    +
    80 , m_axes(std::forward<XX>(axes))
    +
    81 , m_options(std::forward<OO>(options))
    +
    82 , m_functor(std::forward<FF>(functor))
    +
    83 , m_result_shape()
    +
    84 , m_result_chunk_shape()
    +
    85 , m_mapping()
    +
    86 , m_input_grid_strides()
    +
    87 {
    +
    88 init_shapes();
    +
    89 resize_container(m_input_grid_strides, m_e.dimension());
    +
    90 std::size_t stride = 1;
    +
    91
    +
    92 for (std::size_t i = m_input_grid_strides.size(); i != 0; --i)
    +
    93 {
    +
    94 m_input_grid_strides[i - 1] = stride;
    +
    95 stride *= m_e_chunked_view.grid_shape()[i - 1];
    +
    96 }
    +
    97 }
    +
    98
    +
    99 template <class CT, class F, class X, class O>
    +
    100 inline auto xblockwise_reducer<CT, F, X, O>::input_shape() const -> const input_shape_type&
    +
    101 {
    +
    102 return m_e.shape();
    +
    103 }
    +
    104
    +
    105 template <class CT, class F, class X, class O>
    +
    106 inline auto xblockwise_reducer<CT, F, X, O>::axes() const -> const axes_type&
    +
    107 {
    +
    108 return m_axes;
    +
    109 }
    +
    110
    +
    111 template <class CT, class F, class X, class O>
    +
    112 inline std::size_t xblockwise_reducer<CT, F, X, O>::dimension() const
    +
    113 {
    +
    114 return m_result_shape.size();
    +
    115 }
    +
    116
    +
    117 template <class CT, class F, class X, class O>
    +
    118 inline auto xblockwise_reducer<CT, F, X, O>::shape() const -> const shape_type&
    +
    119 {
    +
    120 return m_result_shape;
    +
    121 }
    +
    122
    +
    123 template <class CT, class F, class X, class O>
    +
    124 inline auto xblockwise_reducer<CT, F, X, O>::chunk_shape() const -> const chunk_shape_type&
    +
    125 {
    +
    126 return m_result_chunk_shape;
    +
    127 }
    +
    128
    +
    129 template <class CT, class F, class X, class O>
    +
    130 template <class R>
    +
    131 inline void xblockwise_reducer<CT, F, X, O>::assign_to(R& result) const
    +
    132 {
    +
    133 auto result_chunked_view = as_chunked(result, m_result_chunk_shape);
    +
    134 for (auto chunk_iter = result_chunked_view.chunk_begin(); chunk_iter != result_chunked_view.chunk_end();
    +
    135 ++chunk_iter)
    +
    136 {
    +
    137 assign_to_chunk(chunk_iter);
    +
    138 }
    +
    139 }
    +
    140
    +
    141 template <class CT, class F, class X, class O>
    +
    142 auto xblockwise_reducer<CT, F, X, O>::get_input_chunk_iter(input_chunk_index_type input_chunk_index) const
    +
    143 -> input_const_chunked_iterator_type
    +
    144 {
    +
    145 std::size_t chunk_linear_index = 0;
    +
    146 for (std::size_t i = 0; i < m_e_chunked_view.dimension(); ++i)
    +
    147 {
    +
    148 chunk_linear_index += input_chunk_index[i] * m_input_grid_strides[i];
    +
    149 }
    +
    150 return input_const_chunked_iterator_type(m_e_chunked_view, std::move(input_chunk_index), chunk_linear_index);
    +
    151 }
    +
    152
    +
    153 template <class CT, class F, class X, class O>
    +
    154 template <class CI>
    +
    155 void xblockwise_reducer<CT, F, X, O>::assign_to_chunk(CI& result_chunk_iter) const
    +
    156 {
    +
    157 auto result_chunk_view = *result_chunk_iter;
    +
    158 auto reduction_variable = m_functor.reduction_variable(result_chunk_view);
    +
    159
    +
    160 // get the range of input chunks we need to compute the desired ouput chunk
    +
    161 auto range = compute_input_chunk_range(result_chunk_iter);
    +
    162
    +
    163 // iterate over input chunk (indics)
    +
    164 auto first = true;
    +
    165 // std::for_each(std::get<0>(range), std::get<1>(range), [&](auto && input_chunk_index)
    +
    166 auto iter = std::get<0>(range);
    +
    167 while (iter != std::get<1>(range))
    +
    168 {
    +
    169 const auto& input_chunk_index = *iter;
    +
    170 // get input chunk iterator from chunk index
    +
    171 auto chunked_input_iter = this->get_input_chunk_iter(input_chunk_index);
    +
    172 auto input_chunk_view = *chunked_input_iter;
    +
    173
    +
    174 // compute the per block result
    +
    175 auto block_res = m_functor.compute(input_chunk_view, m_axes, m_options);
    +
    176
    +
    177 // merge
    +
    178 m_functor.merge(block_res, first, result_chunk_view, reduction_variable);
    +
    179 first = false;
    +
    180 ++iter;
    +
    181 }
    +
    182
    +
    183 // finalize (ie smth like normalization)
    +
    184 m_functor.finalize(reduction_variable, result_chunk_view, *this);
    +
    185 }
    +
    186
    +
    187 template <class CT, class F, class X, class O>
    +
    188 template <class CI>
    +
    189 auto xblockwise_reducer<CT, F, X, O>::compute_input_chunk_range(CI& result_chunk_iter) const
    +
    190 -> input_chunk_range_type
    +
    191 {
    +
    192 auto input_chunks_begin = xtl::make_sequence<input_chunk_index_type>(m_e_chunked_view.dimension(), 0);
    +
    193 auto input_chunks_end = xtl::make_sequence<input_chunk_index_type>(m_e_chunked_view.dimension());
    +
    194
    +
    195 XTENSOR_ASSERT(input_chunks_begin.size() == m_e_chunked_view.dimension());
    +
    196 XTENSOR_ASSERT(input_chunks_end.size() == m_e_chunked_view.dimension());
    +
    197
    +
    198 std::copy(
    +
    199 m_e_chunked_view.grid_shape().begin(),
    +
    200 m_e_chunked_view.grid_shape().end(),
    +
    201 input_chunks_end.begin()
    +
    202 );
    +
    203
    +
    204 const auto& chunk_index = result_chunk_iter.chunk_index();
    +
    205 for (std::size_t result_ax_index = 0; result_ax_index < m_result_shape.size(); ++result_ax_index)
    +
    206 {
    +
    207 if (m_result_shape[result_ax_index] != 1)
    +
    208 {
    +
    209 const auto input_ax_index = m_mapping[result_ax_index];
    +
    210 input_chunks_begin[input_ax_index] = chunk_index[result_ax_index];
    +
    211 input_chunks_end[input_ax_index] = chunk_index[result_ax_index] + 1;
    +
    212 }
    +
    213 }
    +
    214 return input_chunk_range_type{
    +
    215 multiindex_iterator_begin<input_chunk_index_type>(input_chunks_begin, input_chunks_end),
    +
    216 multiindex_iterator_end<input_chunk_index_type>(input_chunks_begin, input_chunks_end)};
    +
    217 }
    +
    218
    +
    219 template <class CT, class F, class X, class O>
    +
    220 void xblockwise_reducer<CT, F, X, O>::init_shapes()
    +
    221 {
    +
    222 const auto& shape = m_e.shape();
    +
    223 const auto dimension = m_e.dimension();
    +
    224 const auto& block_shape = m_e_chunked_view.chunk_shape();
    +
    225 if (xtl::mpl::contains<raw_options_type, xt::keep_dims_type>::value)
    +
    226 {
    +
    227 resize_container(m_result_shape, dimension);
    +
    228 resize_container(m_result_chunk_shape, dimension);
    +
    229 resize_container(m_mapping, dimension);
    +
    230 for (std::size_t i = 0; i < dimension; ++i)
    +
    231 {
    +
    232 m_mapping[i] = i;
    +
    233 if (std::find(m_axes.begin(), m_axes.end(), i) == m_axes.end())
    +
    234 {
    +
    235 // i not in m_axes!
    +
    236 m_result_shape[i] = shape[i];
    +
    237 m_result_chunk_shape[i] = block_shape[i];
    +
    238 }
    +
    239 else
    +
    240 {
    +
    241 m_result_shape[i] = 1;
    +
    242 m_result_chunk_shape[i] = 1;
    +
    243 }
    +
    244 }
    +
    245 }
    +
    246 else
    +
    247 {
    +
    248 const auto result_dim = dimension - m_axes.size();
    +
    249 resize_container(m_result_shape, result_dim);
    +
    250 resize_container(m_result_chunk_shape, result_dim);
    +
    251 resize_container(m_mapping, result_dim);
    +
    252
    +
    253 for (std::size_t i = 0, idx = 0; i < dimension; ++i)
    +
    254 {
    +
    255 if (std::find(m_axes.begin(), m_axes.end(), i) == m_axes.end())
    +
    256 {
    +
    257 // i not in axes!
    +
    258 m_result_shape[idx] = shape[i];
    +
    259 m_result_chunk_shape[idx] = block_shape[i];
    +
    260 m_mapping[idx] = i;
    +
    261 ++idx;
    +
    262 }
    +
    263 }
    +
    264 }
    +
    265 }
    +
    266
    +
    267 template <class E, class CS, class A, class O, class FF>
    +
    268 inline auto blockwise_reducer(E&& e, CS&& chunk_shape, A&& axes, O&& raw_options, FF&& functor)
    +
    269 {
    +
    270 using functor_type = std::decay_t<FF>;
    +
    271 using closure_type = xtl::const_closure_type_t<E>;
    +
    272 using axes_type = std::decay_t<A>;
    +
    273
    +
    274 return xblockwise_reducer<closure_type, functor_type, axes_type, O>(
    +
    275 std::forward<E>(e),
    +
    276 std::forward<CS>(chunk_shape),
    +
    277 std::forward<A>(axes),
    +
    278 std::forward<O>(raw_options),
    +
    279 std::forward<FF>(functor)
    +
    280 );
    +
    281 }
    +
    282
    +
    283 namespace blockwise
    +
    284 {
    +
    285
    +
    286#define XTENSOR_BLOCKWISE_REDUCER_FUNC(FNAME, FUNCTOR) \
    +
    287 template < \
    +
    288 class T = void, \
    +
    289 class E, \
    +
    290 class BS, \
    +
    291 class X, \
    +
    292 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    293 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<std::decay_t<X>>>)> \
    +
    294 auto FNAME(E&& e, BS&& block_shape, X&& axes, O options = O()) \
    +
    295 { \
    +
    296 using input_expression_type = std::decay_t<E>; \
    +
    297 using functor_type = FUNCTOR<typename input_expression_type::value_type, T>; \
    +
    298 return blockwise_reducer( \
    +
    299 std::forward<E>(e), \
    +
    300 std::forward<BS>(block_shape), \
    +
    301 std::forward<X>(axes), \
    +
    302 std::forward<O>(options), \
    +
    303 functor_type() \
    +
    304 ); \
    +
    305 } \
    +
    306 template < \
    +
    307 class T = void, \
    +
    308 class E, \
    +
    309 class BS, \
    +
    310 class X, \
    +
    311 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    312 XTL_REQUIRES(xtl::is_integral<std::decay_t<X>>)> \
    +
    313 auto FNAME(E&& e, BS&& block_shape, X axis, O options = O()) \
    +
    314 { \
    +
    315 std::array<X, 1> axes{axis}; \
    +
    316 using input_expression_type = std::decay_t<E>; \
    +
    317 using functor_type = FUNCTOR<typename input_expression_type::value_type, T>; \
    +
    318 return blockwise_reducer( \
    +
    319 std::forward<E>(e), \
    +
    320 std::forward<BS>(block_shape), \
    +
    321 axes, \
    +
    322 std::forward<O>(options), \
    +
    323 functor_type() \
    +
    324 ); \
    +
    325 } \
    +
    326 template < \
    +
    327 class T = void, \
    +
    328 class E, \
    +
    329 class BS, \
    +
    330 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    331 XTL_REQUIRES(is_reducer_options<O>, xtl::negation<xtl::is_integral<std::decay_t<O>>>)> \
    +
    332 auto FNAME(E&& e, BS&& block_shape, O options = O()) \
    +
    333 { \
    +
    334 using input_expression_type = std::decay_t<E>; \
    +
    335 using axes_type = filter_fixed_shape_t<typename input_expression_type::shape_type>; \
    +
    336 axes_type axes = xtl::make_sequence<axes_type>(e.dimension()); \
    +
    337 XTENSOR_ASSERT(axes.size() == e.dimension()); \
    +
    338 std::iota(axes.begin(), axes.end(), 0); \
    +
    339 using functor_type = FUNCTOR<typename input_expression_type::value_type, T>; \
    +
    340 return blockwise_reducer( \
    +
    341 std::forward<E>(e), \
    +
    342 std::forward<BS>(block_shape), \
    +
    343 std::move(axes), \
    +
    344 std::forward<O>(options), \
    +
    345 functor_type() \
    +
    346 ); \
    +
    347 } \
    +
    348 template <class T = void, class E, class BS, class I, std::size_t N, class O = DEFAULT_STRATEGY_REDUCERS> \
    +
    349 auto FNAME(E&& e, BS&& block_shape, const I(&axes)[N], O options = O()) \
    +
    350 { \
    +
    351 using input_expression_type = std::decay_t<E>; \
    +
    352 using functor_type = FUNCTOR<typename input_expression_type::value_type, T>; \
    +
    353 using axes_type = std::array<std::size_t, N>; \
    +
    354 auto ax = xt::forward_normalize<axes_type>(e, axes); \
    +
    355 return blockwise_reducer( \
    +
    356 std::forward<E>(e), \
    +
    357 std::forward<BS>(block_shape), \
    +
    358 std::move(ax), \
    +
    359 std::forward<O>(options), \
    +
    360 functor_type() \
    +
    361 ); \
    +
    362 }
    +
    363 XTENSOR_BLOCKWISE_REDUCER_FUNC(sum, xt::detail::blockwise::sum_functor)
    +
    364 XTENSOR_BLOCKWISE_REDUCER_FUNC(prod, xt::detail::blockwise::prod_functor)
    +
    365 XTENSOR_BLOCKWISE_REDUCER_FUNC(amin, xt::detail::blockwise::amin_functor)
    +
    366 XTENSOR_BLOCKWISE_REDUCER_FUNC(amax, xt::detail::blockwise::amax_functor)
    +
    367 XTENSOR_BLOCKWISE_REDUCER_FUNC(mean, xt::detail::blockwise::mean_functor)
    +
    368 XTENSOR_BLOCKWISE_REDUCER_FUNC(variance, xt::detail::blockwise::variance_functor)
    +
    369 XTENSOR_BLOCKWISE_REDUCER_FUNC(stddev, xt::detail::blockwise::stddev_functor)
    +
    370
    +
    371#undef XTENSOR_BLOCKWISE_REDUCER_FUNC
    +
    372
    +
    373
    +
    374// norm reducers do *not* allow to to pass a template
    +
    375// parameter to specifiy the internal computation type
    +
    376#define XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(FNAME, FUNCTOR) \
    +
    377 template < \
    +
    378 class E, \
    +
    379 class BS, \
    +
    380 class X, \
    +
    381 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    382 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<std::decay_t<X>>>)> \
    +
    383 auto FNAME(E&& e, BS&& block_shape, X&& axes, O options = O()) \
    +
    384 { \
    +
    385 using input_expression_type = std::decay_t<E>; \
    +
    386 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    387 return blockwise_reducer( \
    +
    388 std::forward<E>(e), \
    +
    389 std::forward<BS>(block_shape), \
    +
    390 std::forward<X>(axes), \
    +
    391 std::forward<O>(options), \
    +
    392 functor_type() \
    +
    393 ); \
    +
    394 } \
    +
    395 template <class E, class BS, class X, class O = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(xtl::is_integral<std::decay_t<X>>)> \
    +
    396 auto FNAME(E&& e, BS&& block_shape, X axis, O options = O()) \
    +
    397 { \
    +
    398 std::array<X, 1> axes{axis}; \
    +
    399 using input_expression_type = std::decay_t<E>; \
    +
    400 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    401 return blockwise_reducer( \
    +
    402 std::forward<E>(e), \
    +
    403 std::forward<BS>(block_shape), \
    +
    404 axes, \
    +
    405 std::forward<O>(options), \
    +
    406 functor_type() \
    +
    407 ); \
    +
    408 } \
    +
    409 template < \
    +
    410 class E, \
    +
    411 class BS, \
    +
    412 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    413 XTL_REQUIRES(is_reducer_options<O>, xtl::negation<xtl::is_integral<std::decay_t<O>>>)> \
    +
    414 auto FNAME(E&& e, BS&& block_shape, O options = O()) \
    +
    415 { \
    +
    416 using input_expression_type = std::decay_t<E>; \
    +
    417 using axes_type = filter_fixed_shape_t<typename input_expression_type::shape_type>; \
    +
    418 axes_type axes = xtl::make_sequence<axes_type>(e.dimension()); \
    +
    419 XTENSOR_ASSERT(axes.size() == e.dimension()); \
    +
    420 std::iota(axes.begin(), axes.end(), 0); \
    +
    421 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    422 return blockwise_reducer( \
    +
    423 std::forward<E>(e), \
    +
    424 std::forward<BS>(block_shape), \
    +
    425 std::move(axes), \
    +
    426 std::forward<O>(options), \
    +
    427 functor_type() \
    +
    428 ); \
    +
    429 } \
    +
    430 template <class E, class BS, class I, std::size_t N, class O = DEFAULT_STRATEGY_REDUCERS> \
    +
    431 auto FNAME(E&& e, BS&& block_shape, const I(&axes)[N], O options = O()) \
    +
    432 { \
    +
    433 using input_expression_type = std::decay_t<E>; \
    +
    434 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    435 using axes_type = std::array<std::size_t, N>; \
    +
    436 auto ax = xt::forward_normalize<axes_type>(e, axes); \
    +
    437 return blockwise_reducer( \
    +
    438 std::forward<E>(e), \
    +
    439 std::forward<BS>(block_shape), \
    +
    440 std::move(ax), \
    +
    441 std::forward<O>(options), \
    +
    442 functor_type() \
    +
    443 ); \
    +
    444 }
    +
    445 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_l0, xt::detail::blockwise::norm_l0_functor)
    +
    446 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_l1, xt::detail::blockwise::norm_l1_functor)
    +
    447 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_l2, xt::detail::blockwise::norm_l2_functor)
    +
    448 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_sq, xt::detail::blockwise::norm_sq_functor)
    +
    449 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_linf, xt::detail::blockwise::norm_linf_functor)
    +
    450
    +
    451#undef XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC
    +
    452
    +
    453
    +
    454#define XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(FNAME, FUNCTOR) \
    +
    455 template < \
    +
    456 class E, \
    +
    457 class BS, \
    +
    458 class X, \
    +
    459 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    460 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<std::decay_t<X>>>)> \
    +
    461 auto FNAME(E&& e, BS&& block_shape, double p, X&& axes, O options = O()) \
    +
    462 { \
    +
    463 using input_expression_type = std::decay_t<E>; \
    +
    464 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    465 return blockwise_reducer( \
    +
    466 std::forward<E>(e), \
    +
    467 std::forward<BS>(block_shape), \
    +
    468 std::forward<X>(axes), \
    +
    469 std::forward<O>(options), \
    +
    470 functor_type(p) \
    +
    471 ); \
    +
    472 } \
    +
    473 template <class E, class BS, class X, class O = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(xtl::is_integral<std::decay_t<X>>)> \
    +
    474 auto FNAME(E&& e, BS&& block_shape, double p, X axis, O options = O()) \
    +
    475 { \
    +
    476 std::array<X, 1> axes{axis}; \
    +
    477 using input_expression_type = std::decay_t<E>; \
    +
    478 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    479 return blockwise_reducer( \
    +
    480 std::forward<E>(e), \
    +
    481 std::forward<BS>(block_shape), \
    +
    482 axes, \
    +
    483 std::forward<O>(options), \
    +
    484 functor_type(p) \
    +
    485 ); \
    +
    486 } \
    +
    487 template < \
    +
    488 class E, \
    +
    489 class BS, \
    +
    490 class O = DEFAULT_STRATEGY_REDUCERS, \
    +
    491 XTL_REQUIRES(is_reducer_options<O>, xtl::negation<xtl::is_integral<std::decay_t<O>>>)> \
    +
    492 auto FNAME(E&& e, BS&& block_shape, double p, O options = O()) \
    +
    493 { \
    +
    494 using input_expression_type = std::decay_t<E>; \
    +
    495 using axes_type = filter_fixed_shape_t<typename input_expression_type::shape_type>; \
    +
    496 axes_type axes = xtl::make_sequence<axes_type>(e.dimension()); \
    +
    497 XTENSOR_ASSERT(axes.size() == e.dimension()); \
    +
    498 std::iota(axes.begin(), axes.end(), 0); \
    +
    499 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    500 return blockwise_reducer( \
    +
    501 std::forward<E>(e), \
    +
    502 std::forward<BS>(block_shape), \
    +
    503 std::move(axes), \
    +
    504 std::forward<O>(options), \
    +
    505 functor_type(p) \
    +
    506 ); \
    +
    507 } \
    +
    508 template <class E, class BS, class I, std::size_t N, class O = DEFAULT_STRATEGY_REDUCERS> \
    +
    509 auto FNAME(E&& e, BS&& block_shape, double p, const I(&axes)[N], O options = O()) \
    +
    510 { \
    +
    511 using input_expression_type = std::decay_t<E>; \
    +
    512 using functor_type = FUNCTOR<typename input_expression_type::value_type>; \
    +
    513 using axes_type = std::array<std::size_t, N>; \
    +
    514 auto ax = xt::forward_normalize<axes_type>(e, axes); \
    +
    515 return blockwise_reducer( \
    +
    516 std::forward<E>(e), \
    +
    517 std::forward<BS>(block_shape), \
    +
    518 std::move(ax), \
    +
    519 std::forward<O>(options), \
    +
    520 functor_type(p) \
    +
    521 ); \
    +
    522 }
    +
    523
    +
    524 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_lp_to_p, xt::detail::blockwise::norm_lp_to_p_functor);
    +
    525 XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC(norm_lp, xt::detail::blockwise::norm_lp_functor);
    +
    526
    +
    527#undef XTENSOR_BLOCKWISE_NORM_REDUCER_FUNC
    +
    528 }
    +
    529
    +
    530}
    +
    531
    +
    532#endif
    + + + +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    + +
    +
    + + + + diff --git a/xblockwise__reducer__functors_8hpp_source.html b/xblockwise__reducer__functors_8hpp_source.html new file mode 100644 index 000000000..c707af265 --- /dev/null +++ b/xblockwise__reducer__functors_8hpp_source.html @@ -0,0 +1,630 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xblockwise_reducer_functors.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xblockwise_reducer_functors.hpp
    +
    +
    +
    1#ifndef XTENSOR_XBLOCKWISE_REDUCER_FUNCTORS_HPP
    +
    2#define XTENSOR_XBLOCKWISE_REDUCER_FUNCTORS_HPP
    +
    3
    +
    4
    +
    5#include <sstream>
    +
    6#include <string>
    +
    7#include <tuple>
    +
    8#include <typeinfo>
    +
    9
    +
    10#include "xarray.hpp"
    +
    11#include "xbuilder.hpp"
    +
    12#include "xchunked_array.hpp"
    +
    13#include "xchunked_assign.hpp"
    +
    14#include "xchunked_view.hpp"
    +
    15#include "xexpression.hpp"
    +
    16#include "xmath.hpp"
    +
    17#include "xnorm.hpp"
    +
    18#include "xreducer.hpp"
    +
    19#include "xtl/xclosure.hpp"
    +
    20#include "xtl/xsequence.hpp"
    +
    21#include "xutils.hpp"
    +
    22
    +
    23namespace xt
    +
    24{
    +
    25 namespace detail
    +
    26 {
    +
    27 namespace blockwise
    +
    28 {
    +
    29
    +
    30 struct empty_reduction_variable
    +
    31 {
    +
    32 };
    +
    33
    +
    34 struct simple_functor_base
    +
    35 {
    +
    36 template <class E>
    +
    37 auto reduction_variable(const E&) const
    +
    38 {
    +
    39 return empty_reduction_variable();
    +
    40 }
    +
    41
    +
    42 template <class MR, class E, class R>
    +
    43 void finalize(const MR&, E&, const R&) const
    +
    44 {
    +
    45 }
    +
    46 };
    +
    47
    +
    48 template <class T_E, class T_I = void>
    +
    49 struct sum_functor : public simple_functor_base
    +
    50 {
    +
    51 using value_type = typename std::decay_t<decltype(xt::sum<T_I>(std::declval<xarray<T_E>>()))>::value_type;
    +
    52
    +
    53 template <class E, class A, class O>
    +
    54 auto compute(const E& input, const A& axes, const O& options) const
    +
    55 {
    +
    56 return xt::sum<value_type>(input, axes, options);
    +
    57 }
    +
    58
    +
    59 template <class BR, class E, class MR>
    +
    60 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    61 {
    +
    62 if (first)
    +
    63 {
    +
    64 xt::noalias(result) = block_result;
    +
    65 }
    +
    66 else
    +
    67 {
    +
    68 xt::noalias(result) += block_result;
    +
    69 }
    +
    70 }
    +
    71 };
    +
    72
    +
    73 template <class T_E, class T_I = void>
    +
    74 struct prod_functor : public simple_functor_base
    +
    75 {
    +
    76 using value_type = typename std::decay_t<decltype(xt::sum<T_I>(std::declval<xarray<T_E>>()))>::value_type;
    +
    77
    +
    78 template <class E, class A, class O>
    +
    79 auto compute(const E& input, const A& axes, const O& options) const
    +
    80 {
    +
    81 return xt::prod<value_type>(input, axes, options);
    +
    82 }
    +
    83
    +
    84 template <class BR, class E, class MR>
    +
    85 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    86 {
    +
    87 if (first)
    +
    88 {
    +
    89 xt::noalias(result) = block_result;
    +
    90 }
    +
    91 else
    +
    92 {
    +
    93 xt::noalias(result) *= block_result;
    +
    94 }
    +
    95 }
    +
    96 };
    +
    97
    +
    98 template <class T_E, class T_I = void>
    +
    99 struct amin_functor : public simple_functor_base
    +
    100 {
    +
    101 using value_type = typename std::decay_t<decltype(xt::amin<T_I>(std::declval<xarray<T_E>>()))>::value_type;
    +
    102
    +
    103 template <class E, class A, class O>
    +
    104 auto compute(const E& input, const A& axes, const O& options) const
    +
    105 {
    +
    106 return xt::amin(input, axes, options);
    +
    107 }
    +
    108
    +
    109 template <class BR, class E, class MR>
    +
    110 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    111 {
    +
    112 if (first)
    +
    113 {
    +
    114 xt::noalias(result) = block_result;
    +
    115 }
    +
    116 else
    +
    117 {
    +
    118 xt::noalias(result) = xt::minimum(block_result, result);
    +
    119 }
    +
    120 }
    +
    121 };
    +
    122
    +
    123 template <class T_E, class T_I = void>
    +
    124 struct amax_functor : public simple_functor_base
    +
    125 {
    +
    126 using value_type = typename std::decay_t<decltype(xt::amax<T_I>(std::declval<xarray<T_E>>()))>::value_type;
    +
    127
    +
    128 template <class E, class A, class O>
    +
    129 auto compute(const E& input, const A& axes, const O& options) const
    +
    130 {
    +
    131 return xt::amax(input, axes, options);
    +
    132 }
    +
    133
    +
    134 template <class BR, class E, class MR>
    +
    135 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    136 {
    +
    137 if (first)
    +
    138 {
    +
    139 xt::noalias(result) = block_result;
    +
    140 }
    +
    141 else
    +
    142 {
    +
    143 xt::noalias(result) = xt::maximum(block_result, result);
    +
    144 }
    +
    145 }
    +
    146 };
    +
    147
    +
    148 template <class T_E, class T_I = void>
    +
    149 struct mean_functor
    +
    150 {
    +
    151 using value_type = typename std::decay_t<decltype(xt::mean<T_I>(std::declval<xarray<T_E>>()))>::value_type;
    +
    152
    +
    153 template <class E, class A, class O>
    +
    154 auto compute(const E& input, const A& axes, const O& options) const
    +
    155 {
    +
    156 return xt::sum<value_type>(input, axes, options);
    +
    157 }
    +
    158
    +
    159 template <class E>
    +
    160 auto reduction_variable(const E&) const
    +
    161 {
    +
    162 return empty_reduction_variable();
    +
    163 }
    +
    164
    +
    165 template <class BR, class E>
    +
    166 auto merge(const BR& block_result, bool first, E& result, empty_reduction_variable&) const
    +
    167 {
    +
    168 if (first)
    +
    169 {
    +
    170 xt::noalias(result) = block_result;
    +
    171 }
    +
    172 else
    +
    173 {
    +
    174 xt::noalias(result) += block_result;
    +
    175 }
    +
    176 }
    +
    177
    +
    178 template <class E, class R>
    +
    179 void finalize(const empty_reduction_variable&, E& results, const R& reducer) const
    +
    180 {
    +
    181 const auto& axes = reducer.axes();
    +
    182 std::decay_t<decltype(reducer.input_shape()[0])> factor = 1;
    +
    183 for (auto a : axes)
    +
    184 {
    +
    185 factor *= reducer.input_shape()[a];
    +
    186 }
    +
    187 xt::noalias(results) /= static_cast<typename E::value_type>(factor);
    +
    188 }
    +
    189 };
    +
    190
    +
    191 template <class T_E, class T_I = void>
    +
    192 struct variance_functor
    +
    193 {
    +
    194 using value_type = typename std::decay_t<decltype(xt::variance<T_I>(std::declval<xarray<T_E>>())
    +
    195 )>::value_type;
    +
    196
    +
    197 template <class E, class A, class O>
    +
    198 auto compute(const E& input, const A& axes, const O& options) const
    +
    199 {
    +
    200 double weight = 1.0;
    +
    201 for (auto a : axes)
    +
    202 {
    +
    203 weight *= static_cast<double>(input.shape()[a]);
    +
    204 }
    +
    205
    +
    206
    +
    207 return std::make_tuple(
    +
    208 xt::variance<value_type>(input, axes, options),
    +
    209 xt::mean<value_type>(input, axes, options),
    +
    210 weight
    +
    211 );
    +
    212 }
    +
    213
    +
    214 template <class E>
    +
    215 auto reduction_variable(const E&) const
    +
    216 {
    +
    217 return std::make_tuple(xarray<value_type>(), 0.0);
    +
    218 }
    +
    219
    +
    220 template <class BR, class E, class MR>
    +
    221 auto merge(const BR& block_result, bool first, E& variance_a, MR& mr) const
    +
    222 {
    +
    223 auto& mean_a = std::get<0>(mr);
    +
    224 auto& n_a = std::get<1>(mr);
    +
    225
    +
    226 const auto& variance_b = std::get<0>(block_result);
    +
    227 const auto& mean_b = std::get<1>(block_result);
    +
    228 const auto& n_b = std::get<2>(block_result);
    +
    229 if (first)
    +
    230 {
    +
    231 xt::noalias(variance_a) = variance_b;
    +
    232 xt::noalias(mean_a) = mean_b;
    +
    233 n_a += n_b;
    +
    234 }
    +
    235 else
    +
    236 {
    +
    237 auto new_mean = (n_a * mean_a + n_b * mean_b) / (n_a + n_b);
    +
    238 auto new_variance = (n_a * variance_a + n_b * variance_b
    +
    239 + n_a * xt::pow(mean_a - new_mean, 2)
    +
    240 + n_b * xt::pow(mean_b - new_mean, 2))
    +
    241 / (n_a + n_b);
    +
    242 xt::noalias(variance_a) = new_variance;
    +
    243 xt::noalias(mean_a) = new_mean;
    +
    244 n_a += n_b;
    +
    245 }
    +
    246 }
    +
    247
    +
    248 template <class MR, class E, class R>
    +
    249 void finalize(const MR&, E&, const R&) const
    +
    250 {
    +
    251 }
    +
    252 };
    +
    253
    +
    254 template <class T_E, class T_I = void>
    +
    255 struct stddev_functor : public variance_functor<T_E, T_I>
    +
    256 {
    +
    257 template <class MR, class E, class R>
    +
    258 void finalize(const MR&, E& results, const R&) const
    +
    259 {
    +
    260 xt::noalias(results) = xt::sqrt(results);
    +
    261 }
    +
    262 };
    +
    263
    +
    264 template <class T_E>
    +
    265 struct norm_l0_functor : public simple_functor_base
    +
    266 {
    +
    267 using value_type = typename std::decay_t<decltype(xt::norm_l0(std::declval<xarray<T_E>>()))>::value_type;
    +
    268
    +
    269 template <class E, class A, class O>
    +
    270 auto compute(const E& input, const A& axes, const O& options) const
    +
    271 {
    +
    272 return xt::sum<value_type>(xt::not_equal(input, xt::zeros<T_E>(input.shape())), axes, options);
    +
    273 }
    +
    274
    +
    275 template <class BR, class E, class MR>
    +
    276 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    277 {
    +
    278 if (first)
    +
    279 {
    +
    280 xt::noalias(result) = block_result;
    +
    281 }
    +
    282 else
    +
    283 {
    +
    284 xt::noalias(result) += block_result;
    +
    285 }
    +
    286 }
    +
    287 };
    +
    288
    +
    289 template <class T_E>
    +
    290 struct norm_l1_functor : public simple_functor_base
    +
    291 {
    +
    292 using value_type = typename std::decay_t<decltype(xt::norm_l1(std::declval<xarray<T_E>>()))>::value_type;
    +
    293
    +
    294 template <class E, class A, class O>
    +
    295 auto compute(const E& input, const A& axes, const O& options) const
    +
    296 {
    +
    297 return xt::sum<value_type>(xt::abs(input), axes, options);
    +
    298 }
    +
    299
    +
    300 template <class BR, class E, class MR>
    +
    301 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    302 {
    +
    303 if (first)
    +
    304 {
    +
    305 xt::noalias(result) = block_result;
    +
    306 }
    +
    307 else
    +
    308 {
    +
    309 xt::noalias(result) += block_result;
    +
    310 }
    +
    311 }
    +
    312 };
    +
    313
    +
    314 template <class T_E>
    +
    315 struct norm_l2_functor
    +
    316 {
    +
    317 using value_type = typename std::decay_t<decltype(xt::norm_l2(std::declval<xarray<T_E>>()))>::value_type;
    +
    318
    +
    319 template <class E, class A, class O>
    +
    320 auto compute(const E& input, const A& axes, const O& options) const
    +
    321 {
    +
    322 return xt::sum<value_type>(xt::square(input), axes, options);
    +
    323 }
    +
    324
    +
    325 template <class E>
    +
    326 auto reduction_variable(const E&) const
    +
    327 {
    +
    328 return empty_reduction_variable();
    +
    329 }
    +
    330
    +
    331 template <class BR, class E>
    +
    332 auto merge(const BR& block_result, bool first, E& result, empty_reduction_variable&) const
    +
    333 {
    +
    334 if (first)
    +
    335 {
    +
    336 xt::noalias(result) = block_result;
    +
    337 }
    +
    338 else
    +
    339 {
    +
    340 xt::noalias(result) += block_result;
    +
    341 }
    +
    342 }
    +
    343
    +
    344 template <class E, class R>
    +
    345 void finalize(const empty_reduction_variable&, E& results, const R&) const
    +
    346 {
    +
    347 xt::noalias(results) = xt::sqrt(results);
    +
    348 }
    +
    349 };
    +
    350
    +
    351 template <class T_E>
    +
    352 struct norm_sq_functor : public simple_functor_base
    +
    353 {
    +
    354 using value_type = typename std::decay_t<decltype(xt::norm_sq(std::declval<xarray<T_E>>()))>::value_type;
    +
    355
    +
    356 template <class E, class A, class O>
    +
    357 auto compute(const E& input, const A& axes, const O& options) const
    +
    358 {
    +
    359 return xt::sum<value_type>(xt::square(input), axes, options);
    +
    360 }
    +
    361
    +
    362 template <class BR, class E, class MR>
    +
    363 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    364 {
    +
    365 if (first)
    +
    366 {
    +
    367 xt::noalias(result) = block_result;
    +
    368 }
    +
    369 else
    +
    370 {
    +
    371 xt::noalias(result) += block_result;
    +
    372 }
    +
    373 }
    +
    374 };
    +
    375
    +
    376 template <class T_E>
    +
    377 struct norm_linf_functor : public simple_functor_base
    +
    378 {
    +
    379 using value_type = typename std::decay_t<decltype(xt::norm_linf(std::declval<xarray<T_E>>()))>::value_type;
    +
    380
    +
    381 template <class E, class A, class O>
    +
    382 auto compute(const E& input, const A& axes, const O& options) const
    +
    383 {
    +
    384 return xt::amax<value_type>(xt::abs(input), axes, options);
    +
    385 }
    +
    386
    +
    387 template <class BR, class E, class MR>
    +
    388 auto merge(const BR& block_result, bool first, E& result, MR&) const
    +
    389 {
    +
    390 if (first)
    +
    391 {
    +
    392 xt::noalias(result) = block_result;
    +
    393 }
    +
    394 else
    +
    395 {
    +
    396 xt::noalias(result) = xt::maximum(block_result, result);
    +
    397 }
    +
    398 }
    +
    399 };
    +
    400
    +
    401 template <class T_E>
    +
    402 class norm_lp_to_p_functor
    +
    403 {
    +
    404 public:
    +
    405
    +
    406 using value_type = typename std::decay_t<
    +
    407 decltype(xt::norm_lp_to_p(std::declval<xarray<T_E>>(), 1.0))>::value_type;
    +
    408
    +
    409 norm_lp_to_p_functor(double p)
    +
    410 : m_p(p)
    +
    411 {
    +
    412 }
    +
    413
    +
    414 template <class E, class A, class O>
    +
    415 auto compute(const E& input, const A& axes, const O& options) const
    +
    416 {
    +
    417 return xt::sum<value_type>(xt::pow(input, m_p), axes, options);
    +
    418 }
    +
    419
    +
    420 template <class E>
    +
    421 auto reduction_variable(const E&) const
    +
    422 {
    +
    423 return empty_reduction_variable();
    +
    424 }
    +
    425
    +
    426 template <class BR, class E>
    +
    427 auto merge(const BR& block_result, bool first, E& result, empty_reduction_variable&) const
    +
    428 {
    +
    429 if (first)
    +
    430 {
    +
    431 xt::noalias(result) = block_result;
    +
    432 }
    +
    433 else
    +
    434 {
    +
    435 xt::noalias(result) += block_result;
    +
    436 }
    +
    437 }
    +
    438
    +
    439 template <class E, class R>
    +
    440 void finalize(const empty_reduction_variable&, E&, const R&) const
    +
    441 {
    +
    442 }
    +
    443
    +
    444 private:
    +
    445
    +
    446 double m_p;
    +
    447 };
    +
    448
    +
    449 template <class T_E>
    +
    450 class norm_lp_functor
    +
    451 {
    +
    452 public:
    +
    453
    +
    454 norm_lp_functor(double p)
    +
    455 : m_p(p)
    +
    456 {
    +
    457 }
    +
    458
    +
    459 using value_type = typename std::decay_t<decltype(xt::norm_lp(std::declval<xarray<T_E>>(), 1.0)
    +
    460 )>::value_type;
    +
    461
    +
    462 template <class E, class A, class O>
    +
    463 auto compute(const E& input, const A& axes, const O& options) const
    +
    464 {
    +
    465 return xt::sum<value_type>(xt::pow(input, m_p), axes, options);
    +
    466 }
    +
    467
    +
    468 template <class E>
    +
    469 auto reduction_variable(const E&) const
    +
    470 {
    +
    471 return empty_reduction_variable();
    +
    472 }
    +
    473
    +
    474 template <class BR, class E>
    +
    475 auto merge(const BR& block_result, bool first, E& result, empty_reduction_variable&) const
    +
    476 {
    +
    477 if (first)
    +
    478 {
    +
    479 xt::noalias(result) = block_result;
    +
    480 }
    +
    481 else
    +
    482 {
    +
    483 xt::noalias(result) += block_result;
    +
    484 }
    +
    485 }
    +
    486
    +
    487 template <class E, class R>
    +
    488 void finalize(const empty_reduction_variable&, E& results, const R&) const
    +
    489 {
    +
    490 results = xt::pow(results, 1.0 / m_p);
    +
    491 }
    +
    492
    +
    493 private:
    +
    494
    +
    495 double m_p;
    +
    496 };
    +
    497
    +
    498
    +
    499 }
    +
    500 }
    +
    501}
    +
    502
    +
    503#endif
    +
    auto amax(E &&e, X &&axes, EVS es=EVS())
    Maximum element along given axis.
    Definition xmath.hpp:781
    +
    auto abs(E &&e) noexcept -> detail::xfunction_type_t< math::abs_fun, E >
    Absolute value function.
    Definition xmath.hpp:442
    +
    auto minimum(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::minimum< void >, E1, E2 >
    Elementwise minimum.
    Definition xmath.hpp:760
    +
    auto maximum(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::maximum< void >, E1, E2 >
    Elementwise maximum.
    Definition xmath.hpp:744
    +
    auto amin(E &&e, X &&axes, EVS es=EVS())
    Minimum element along given axis.
    Definition xmath.hpp:799
    +
    auto not_equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::not_equal_to, E1, E2 >
    Element-wise inequality.
    +
    auto sqrt(E &&e) noexcept -> detail::xfunction_type_t< math::sqrt_fun, E >
    Square root function.
    Definition xmath.hpp:1238
    +
    auto square(E1 &&e1) noexcept
    Square power function, equivalent to e1 * e1.
    Definition xmath.hpp:1127
    +
    auto pow(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >
    Power function.
    Definition xmath.hpp:1014
    +
    auto norm_sq(E &&e, X &&axes, EVS es) noexcept
    Squared L2 norm of an array-like argument over given axes.
    +
    auto norm_lp(E &&e, double p, X &&axes, EVS es=EVS())
    Lp norm of an array-like argument over given axes.
    Definition xnorm.hpp:601
    +
    auto norm_l2(E &&e, EVS es=EVS()) noexcept
    L2 norm of a scalar or array-like argument.
    Definition xnorm.hpp:494
    +
    auto norm_l1(E &&e, X &&axes, EVS es) noexcept
    L1 norm of an array-like argument over given axes.
    +
    auto norm_lp_to_p(E &&e, double p, X &&axes, EVS es=EVS()) noexcept
    p-th power of the Lp norm of an array-like argument over given axes.
    Definition xnorm.hpp:557
    +
    auto norm_l0(E &&e, X &&axes, EVS es) noexcept
    L0 (count) pseudo-norm of an array-like argument over given axes.
    +
    auto norm_linf(E &&e, X &&axes, EVS es) noexcept
    Infinity (maximum) norm of an array-like argument over given axes.
    +
    standard mathematical functions for xexpressions
    +
    +
    + + + + diff --git a/xbroadcast_8hpp_source.html b/xbroadcast_8hpp_source.html new file mode 100644 index 000000000..1d99f557f --- /dev/null +++ b/xbroadcast_8hpp_source.html @@ -0,0 +1,517 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xbroadcast.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xbroadcast.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_BROADCAST_HPP
    +
    11#define XTENSOR_BROADCAST_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cstddef>
    +
    16#include <iterator>
    +
    17#include <numeric>
    +
    18#include <type_traits>
    +
    19#include <utility>
    +
    20
    +
    21#include <xtl/xsequence.hpp>
    +
    22
    +
    23#include "xaccessible.hpp"
    +
    24#include "xexpression.hpp"
    +
    25#include "xiterable.hpp"
    +
    26#include "xscalar.hpp"
    +
    27#include "xstrides.hpp"
    +
    28#include "xtensor_config.hpp"
    +
    29#include "xutils.hpp"
    +
    30
    +
    31namespace xt
    +
    32{
    +
    33
    +
    34 /*************
    +
    35 * broadcast *
    +
    36 *************/
    +
    37
    +
    38 template <class E, class S>
    +
    39 auto broadcast(E&& e, const S& s);
    +
    40
    +
    41 template <class E, class I, std::size_t L>
    +
    42 auto broadcast(E&& e, const I (&s)[L]);
    +
    43
    +
    44 /*************************
    +
    45 * xbroadcast extensions *
    +
    46 *************************/
    +
    47
    +
    48 namespace extension
    +
    49 {
    +
    50 template <class Tag, class CT, class X>
    + +
    52
    +
    53 template <class CT, class X>
    +
    + +
    55 {
    + +
    57 };
    +
    +
    58
    +
    59 template <class CT, class X>
    +
    +
    60 struct xbroadcast_base : xbroadcast_base_impl<xexpression_tag_t<CT>, CT, X>
    +
    61 {
    +
    62 };
    +
    +
    63
    +
    64 template <class CT, class X>
    +
    65 using xbroadcast_base_t = typename xbroadcast_base<CT, X>::type;
    +
    66 }
    +
    67
    +
    68 /**************
    +
    69 * xbroadcast *
    +
    70 **************/
    +
    71
    +
    72 template <class CT, class X>
    +
    73 class xbroadcast;
    +
    74
    +
    75 template <class CT, class X>
    +
    + +
    77 {
    +
    78 using xexpression_type = std::decay_t<CT>;
    +
    79 using inner_shape_type = promote_shape_t<typename xexpression_type::shape_type, X>;
    +
    80 using const_stepper = typename xexpression_type::const_stepper;
    +
    81 using stepper = const_stepper;
    +
    82 };
    +
    +
    83
    +
    84 template <class CT, class X>
    +
    + +
    86 {
    +
    87 using xexpression_type = std::decay_t<CT>;
    +
    88 using reference = typename xexpression_type::const_reference;
    +
    89 using const_reference = typename xexpression_type::const_reference;
    +
    90 using size_type = typename xexpression_type::size_type;
    +
    91 };
    +
    +
    92
    +
    93 /*****************************
    +
    94 * linear_begin / linear_end *
    +
    95 *****************************/
    +
    96
    +
    97 template <class CT, class X>
    +
    98 XTENSOR_CONSTEXPR_RETURN auto linear_begin(xbroadcast<CT, X>& c) noexcept
    +
    99 {
    +
    100 return linear_begin(c.expression());
    +
    101 }
    +
    102
    +
    103 template <class CT, class X>
    +
    104 XTENSOR_CONSTEXPR_RETURN auto linear_end(xbroadcast<CT, X>& c) noexcept
    +
    105 {
    +
    106 return linear_end(c.expression());
    +
    107 }
    +
    108
    +
    109 template <class CT, class X>
    +
    110 XTENSOR_CONSTEXPR_RETURN auto linear_begin(const xbroadcast<CT, X>& c) noexcept
    +
    111 {
    +
    112 return linear_begin(c.expression());
    +
    113 }
    +
    114
    +
    115 template <class CT, class X>
    +
    116 XTENSOR_CONSTEXPR_RETURN auto linear_end(const xbroadcast<CT, X>& c) noexcept
    +
    117 {
    +
    118 return linear_end(c.expression());
    +
    119 }
    +
    120
    +
    134 template <class CT, class X>
    +
    +
    135 class xbroadcast : public xsharable_expression<xbroadcast<CT, X>>,
    +
    136 public xconst_iterable<xbroadcast<CT, X>>,
    +
    137 public xconst_accessible<xbroadcast<CT, X>>,
    +
    138 public extension::xbroadcast_base_t<CT, X>
    +
    139 {
    +
    140 public:
    +
    141
    + +
    143 using xexpression_type = std::decay_t<CT>;
    + +
    145 using extension_base = extension::xbroadcast_base_t<CT, X>;
    +
    146 using expression_tag = typename extension_base::expression_tag;
    +
    147
    + +
    149 using value_type = typename xexpression_type::value_type;
    +
    150 using reference = typename inner_types::reference;
    +
    151 using const_reference = typename inner_types::const_reference;
    +
    152 using pointer = typename xexpression_type::const_pointer;
    +
    153 using const_pointer = typename xexpression_type::const_pointer;
    +
    154 using size_type = typename inner_types::size_type;
    +
    155 using difference_type = typename xexpression_type::difference_type;
    +
    156
    + +
    158 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    159 using shape_type = inner_shape_type;
    +
    160
    +
    161 using stepper = typename iterable_base::stepper;
    +
    162 using const_stepper = typename iterable_base::const_stepper;
    +
    163
    +
    164 using bool_load_type = typename xexpression_type::bool_load_type;
    +
    165
    +
    166 static constexpr layout_type static_layout = layout_type::dynamic;
    +
    167 static constexpr bool contiguous_layout = false;
    +
    168
    +
    169 template <class CTA, class S>
    +
    170 xbroadcast(CTA&& e, const S& s);
    +
    171
    +
    172 template <class CTA>
    +
    173 xbroadcast(CTA&& e, shape_type&& s);
    +
    174
    + +
    176 const inner_shape_type& shape() const noexcept;
    +
    177 layout_type layout() const noexcept;
    +
    178 bool is_contiguous() const noexcept;
    + +
    180
    +
    181 template <class... Args>
    +
    182 const_reference operator()(Args... args) const;
    +
    183
    +
    184 template <class... Args>
    +
    185 const_reference unchecked(Args... args) const;
    +
    186
    +
    187 template <class It>
    +
    188 const_reference element(It first, It last) const;
    +
    189
    +
    190 const xexpression_type& expression() const noexcept;
    +
    191
    +
    192 template <class S>
    +
    193 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    194
    +
    195 template <class S>
    +
    196 bool has_linear_assign(const S& strides) const noexcept;
    +
    197
    +
    198 template <class S>
    +
    199 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    200 template <class S>
    +
    201 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    202
    +
    203 template <class E, class XCT = CT, class = std::enable_if_t<xt::is_xscalar<XCT>::value>>
    +
    204 void assign_to(xexpression<E>& e) const;
    +
    205
    +
    206 template <class E>
    + +
    208
    +
    209 template <class E>
    +
    210 rebind_t<E> build_broadcast(E&& e) const;
    +
    211
    +
    212 private:
    +
    213
    +
    214 CT m_e;
    +
    215 inner_shape_type m_shape;
    +
    216 };
    +
    +
    217
    +
    218 /****************************
    +
    219 * broadcast implementation *
    +
    220 ****************************/
    +
    221
    +
    232 template <class E, class S>
    +
    +
    233 inline auto broadcast(E&& e, const S& s)
    +
    234 {
    +
    235 using shape_type = filter_fixed_shape_t<std::decay_t<S>>;
    +
    236 using broadcast_type = xbroadcast<const_xclosure_t<E>, shape_type>;
    +
    237 return broadcast_type(std::forward<E>(e), xtl::forward_sequence<shape_type, decltype(s)>(s));
    +
    238 }
    +
    +
    239
    +
    240 template <class E, class I, std::size_t L>
    +
    241 inline auto broadcast(E&& e, const I (&s)[L])
    +
    242 {
    +
    243 using broadcast_type = xbroadcast<const_xclosure_t<E>, std::array<std::size_t, L>>;
    +
    244 using shape_type = typename broadcast_type::shape_type;
    +
    245 return broadcast_type(std::forward<E>(e), xtl::forward_sequence<shape_type, decltype(s)>(s));
    +
    246 }
    +
    247
    +
    248 /*****************************
    +
    249 * xbroadcast implementation *
    +
    250 *****************************/
    +
    251
    +
    263 template <class CT, class X>
    +
    264 template <class CTA, class S>
    +
    +
    265 inline xbroadcast<CT, X>::xbroadcast(CTA&& e, const S& s)
    +
    266 : m_e(std::forward<CTA>(e))
    +
    267 {
    +
    268 if (s.size() < m_e.dimension())
    +
    269 {
    +
    270 XTENSOR_THROW(xt::broadcast_error, "Broadcast shape has fewer elements than original expression.");
    +
    271 }
    +
    272 xt::resize_container(m_shape, s.size());
    +
    273 std::copy(s.begin(), s.end(), m_shape.begin());
    +
    274 xt::broadcast_shape(m_e.shape(), m_shape);
    +
    275 }
    +
    +
    276
    +
    284 template <class CT, class X>
    +
    285 template <class CTA>
    +
    +
    286 inline xbroadcast<CT, X>::xbroadcast(CTA&& e, shape_type&& s)
    +
    287 : m_e(std::forward<CTA>(e))
    +
    288 , m_shape(std::move(s))
    +
    289 {
    +
    290 xt::broadcast_shape(m_e.shape(), m_shape);
    +
    291 }
    +
    +
    292
    +
    294
    +
    302 template <class CT, class X>
    +
    +
    303 inline auto xbroadcast<CT, X>::shape() const noexcept -> const inner_shape_type&
    +
    304 {
    +
    305 return m_shape;
    +
    306 }
    +
    +
    307
    +
    311 template <class CT, class X>
    +
    + +
    313 {
    +
    314 return m_e.layout();
    +
    315 }
    +
    +
    316
    +
    317 template <class CT, class X>
    +
    318 inline bool xbroadcast<CT, X>::is_contiguous() const noexcept
    +
    319 {
    +
    320 return false;
    +
    321 }
    +
    322
    +
    324
    +
    335 template <class CT, class X>
    +
    336 template <class... Args>
    +
    +
    337 inline auto xbroadcast<CT, X>::operator()(Args... args) const -> const_reference
    +
    338 {
    +
    339 return m_e(args...);
    +
    340 }
    +
    +
    341
    +
    361 template <class CT, class X>
    +
    362 template <class... Args>
    +
    +
    363 inline auto xbroadcast<CT, X>::unchecked(Args... args) const -> const_reference
    +
    364 {
    +
    365 return this->operator()(args...);
    +
    366 }
    +
    +
    367
    +
    375 template <class CT, class X>
    +
    376 template <class It>
    +
    +
    377 inline auto xbroadcast<CT, X>::element(It, It last) const -> const_reference
    +
    378 {
    +
    379 return m_e.element(last - this->dimension(), last);
    +
    380 }
    +
    +
    381
    +
    385 template <class CT, class X>
    +
    +
    386 inline auto xbroadcast<CT, X>::expression() const noexcept -> const xexpression_type&
    +
    387 {
    +
    388 return m_e;
    +
    389 }
    +
    +
    390
    +
    392
    +
    403 template <class CT, class X>
    +
    404 template <class S>
    +
    +
    405 inline bool xbroadcast<CT, X>::broadcast_shape(S& shape, bool) const
    +
    406 {
    +
    407 return xt::broadcast_shape(m_shape, shape);
    +
    408 }
    +
    +
    409
    +
    415 template <class CT, class X>
    +
    416 template <class S>
    +
    +
    417 inline bool xbroadcast<CT, X>::has_linear_assign(const S& strides) const noexcept
    +
    418 {
    +
    419 return this->dimension() == m_e.dimension()
    +
    420 && std::equal(m_shape.cbegin(), m_shape.cend(), m_e.shape().cbegin())
    +
    421 && m_e.has_linear_assign(strides);
    +
    422 }
    +
    +
    423
    +
    425
    +
    426 template <class CT, class X>
    +
    427 template <class S>
    +
    428 inline auto xbroadcast<CT, X>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    429 {
    +
    430 // Could check if (broadcastable(shape, m_shape)
    +
    431 return m_e.stepper_begin(shape);
    +
    432 }
    +
    433
    +
    434 template <class CT, class X>
    +
    435 template <class S>
    +
    436 inline auto xbroadcast<CT, X>::stepper_end(const S& shape, layout_type l) const noexcept -> const_stepper
    +
    437 {
    +
    438 // Could check if (broadcastable(shape, m_shape)
    +
    439 return m_e.stepper_end(shape, l);
    +
    440 }
    +
    441
    +
    442 template <class CT, class X>
    +
    443 template <class E, class XCT, class>
    +
    444 inline void xbroadcast<CT, X>::assign_to(xexpression<E>& e) const
    +
    445 {
    +
    446 auto& ed = e.derived_cast();
    +
    447 ed.resize(m_shape);
    +
    448 std::fill(ed.begin(), ed.end(), m_e());
    +
    449 }
    +
    450
    +
    451 template <class CT, class X>
    +
    452 template <class E>
    +
    453 inline auto xbroadcast<CT, X>::build_broadcast(E&& e) const -> rebind_t<E>
    +
    454 {
    +
    455 return rebind_t<E>(std::forward<E>(e), inner_shape_type(m_shape));
    +
    456 }
    +
    457}
    +
    458
    +
    459#endif
    + +
    Broadcasted xexpression to a specified shape.
    +
    const xexpression_type & expression() const noexcept
    Returns a constant reference to the underlying expression of the broadcast expression.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the expression.
    +
    layout_type layout() const noexcept
    Returns the layout_type of the expression.
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the function to the specified parameter.
    +
    xbroadcast(CTA &&e, const S &s)
    Constructs an xbroadcast expression broadcasting the specified xexpression to the given shape.
    +
    bool has_linear_assign(const S &strides) const noexcept
    Checks whether the xbroadcast can be linearly assigned to an expression with the specified strides.
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for xexpressions.
    + +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto broadcast(E &&e, const S &s)
    Returns an xexpression broadcasting the given expression to a specified shape.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + +
    +
    + + + + diff --git a/xbuffer__adaptor_8hpp_source.html b/xbuffer__adaptor_8hpp_source.html new file mode 100644 index 000000000..b0dbba8b2 --- /dev/null +++ b/xbuffer__adaptor_8hpp_source.html @@ -0,0 +1,1436 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xbuffer_adaptor.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xbuffer_adaptor.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_BUFFER_ADAPTOR_HPP
    +
    11#define XTENSOR_BUFFER_ADAPTOR_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <functional>
    +
    15#include <iterator>
    +
    16#include <memory>
    +
    17#include <stdexcept>
    +
    18
    +
    19#include <xtl/xclosure.hpp>
    +
    20
    +
    21#include "xstorage.hpp"
    +
    22#include "xtensor_config.hpp"
    +
    23
    +
    24namespace xt
    +
    25{
    +
    26
    +
    + +
    28 {
    +
    29 };
    +
    +
    30
    + +
    32
    +
    + +
    34 {
    +
    35 };
    +
    +
    36
    +
    37 template <class CP, class O = no_ownership, class A = std::allocator<std::remove_pointer_t<std::remove_reference_t<CP>>>>
    +
    38 class xbuffer_adaptor;
    +
    39
    +
    40 /********************
    +
    41 * buffer_storage_t *
    +
    42 ********************/
    +
    43
    +
    44 namespace detail
    +
    45 {
    +
    46 template <class CP, class A>
    +
    47 class xbuffer_storage
    +
    48 {
    +
    49 public:
    +
    50
    +
    51 using self_type = xbuffer_storage<CP, A>;
    +
    52 using allocator_type = A;
    +
    53 using destructor_type = allocator_type;
    +
    54 using allocator_traits = std::allocator_traits<allocator_type>;
    +
    55 using value_type = typename allocator_traits::value_type;
    +
    56 using reference = std::conditional_t<
    +
    57 std::is_const<std::remove_pointer_t<std::remove_reference_t<CP>>>::value,
    +
    58 const value_type&,
    +
    59 value_type&>;
    +
    60 using const_reference = const value_type&;
    +
    61 using pointer = std::conditional_t<
    +
    62 std::is_const<std::remove_pointer_t<std::remove_reference_t<CP>>>::value,
    +
    63 typename allocator_traits::const_pointer,
    +
    64 typename allocator_traits::pointer>;
    +
    65 using const_pointer = typename allocator_traits::const_pointer;
    +
    66 using size_type = typename allocator_traits::size_type;
    +
    67 using difference_type = typename allocator_traits::difference_type;
    +
    68
    +
    69 xbuffer_storage();
    +
    70
    +
    71 template <class P>
    +
    72 xbuffer_storage(P&& data, size_type size, const allocator_type& alloc = allocator_type());
    +
    73
    +
    74 size_type size() const noexcept;
    +
    75 void resize(size_type size);
    +
    76
    +
    77 pointer data() noexcept;
    +
    78 const_pointer data() const noexcept;
    +
    79
    +
    80 void swap(self_type& rhs) noexcept;
    +
    81
    +
    82 template <class P>
    +
    83 void reset_data(P&& data, size_type size) noexcept;
    +
    84
    +
    85 private:
    +
    86
    +
    87 pointer p_data;
    +
    88 size_type m_size;
    +
    89 };
    +
    90
    +
    91 template <class CP, class D>
    +
    92 class xbuffer_smart_pointer
    +
    93 {
    +
    94 public:
    +
    95
    +
    96 using self_type = xbuffer_storage<CP, D>;
    +
    97 using destructor_type = D;
    +
    98 using value_type = std::remove_const_t<std::remove_pointer_t<std::remove_reference_t<CP>>>;
    +
    99 using allocator_type = std::allocator<value_type>;
    +
    100 using allocator_traits = std::allocator_traits<allocator_type>;
    +
    101 using reference = std::conditional_t<
    +
    102 std::is_const<std::remove_pointer_t<std::remove_reference_t<CP>>>::value,
    +
    103 const value_type&,
    +
    104 value_type&>;
    +
    105 using const_reference = const value_type&;
    +
    106 using pointer = std::conditional_t<
    +
    107 std::is_const<std::remove_pointer_t<std::remove_reference_t<CP>>>::value,
    +
    108 typename allocator_traits::const_pointer,
    +
    109 typename allocator_traits::pointer>;
    +
    110 using const_pointer = typename allocator_traits::const_pointer;
    +
    111 using size_type = typename allocator_traits::size_type;
    +
    112 using difference_type = typename allocator_traits::difference_type;
    +
    113
    +
    114 xbuffer_smart_pointer();
    +
    115
    +
    116 template <class P, class DT>
    +
    117 xbuffer_smart_pointer(P&& data_ptr, size_type size, DT&& destruct);
    +
    118
    +
    119 size_type size() const noexcept;
    +
    120 void resize(size_type size);
    +
    121
    +
    122 pointer data() noexcept;
    +
    123 const_pointer data() const noexcept;
    +
    124
    +
    125 void swap(self_type& rhs) noexcept;
    +
    126
    +
    127 template <class P, class DT>
    +
    128 void reset_data(P&& data, size_type size, DT&& destruct) noexcept;
    +
    129
    +
    130 private:
    +
    131
    +
    132 pointer p_data;
    +
    133 size_type m_size;
    +
    134 destructor_type m_destruct;
    +
    135 };
    +
    136
    +
    137 template <class CP, class A>
    +
    138 class xbuffer_owner_storage
    +
    139 {
    +
    140 public:
    +
    141
    +
    142 using self_type = xbuffer_owner_storage<CP, A>;
    +
    143 using allocator_type = A;
    +
    144 using destructor_type = allocator_type;
    +
    145 using allocator_traits = std::allocator_traits<allocator_type>;
    +
    146 using value_type = typename allocator_traits::value_type;
    +
    147 using reference = std::conditional_t<
    +
    148 std::is_const<std::remove_pointer_t<std::remove_reference_t<CP>>>::value,
    +
    149 const value_type&,
    +
    150 value_type&>;
    +
    151 using const_reference = const value_type&;
    +
    152 using pointer = std::conditional_t<
    +
    153 std::is_const<std::remove_pointer_t<std::remove_reference_t<CP>>>::value,
    +
    154 typename allocator_traits::const_pointer,
    +
    155 typename allocator_traits::pointer>;
    +
    156 using const_pointer = typename allocator_traits::const_pointer;
    +
    157 using size_type = typename allocator_traits::size_type;
    +
    158 using difference_type = typename allocator_traits::difference_type;
    +
    159
    +
    160 xbuffer_owner_storage() = default;
    +
    161
    +
    162 template <class P>
    +
    163 xbuffer_owner_storage(P&& data, size_type size, const allocator_type& alloc = allocator_type());
    +
    164
    +
    165 ~xbuffer_owner_storage();
    +
    166
    +
    167 xbuffer_owner_storage(const self_type&) = delete;
    +
    168 self_type& operator=(const self_type&);
    +
    169
    +
    170 xbuffer_owner_storage(self_type&&);
    +
    171 self_type& operator=(self_type&&);
    +
    172
    +
    173 size_type size() const noexcept;
    +
    174 void resize(size_type size);
    +
    175
    +
    176 pointer data() noexcept;
    +
    177 const_pointer data() const noexcept;
    +
    178
    +
    179 allocator_type get_allocator() const noexcept;
    +
    180
    +
    181 void swap(self_type& rhs) noexcept;
    +
    182
    +
    183 template <class P>
    +
    184 void reset_data(P&& data, size_type size, const allocator_type& alloc = allocator_type()) noexcept;
    +
    185
    +
    186 private:
    +
    187
    +
    188 xtl::xclosure_wrapper<CP> m_data;
    +
    189 size_type m_size;
    +
    190 bool m_moved_from;
    +
    191 allocator_type m_allocator;
    +
    192 };
    +
    193
    +
    194 // Workaround for MSVC2015: using void_t results in some
    +
    195 // template instantiation caching that leads to wrong
    +
    196 // type deduction later in xfunction.
    +
    197 template <class T>
    +
    198 struct msvc2015_void
    +
    199 {
    +
    200 using type = void;
    +
    201 };
    +
    202
    +
    203 template <class T>
    +
    204 using msvc2015_void_t = typename msvc2015_void<T>::type;
    +
    205
    +
    206 template <class E, class = void>
    +
    207 struct is_lambda_type : std::false_type
    +
    208 {
    +
    209 };
    +
    210
    +
    211 // check if operator() is available
    +
    212 template <class E>
    +
    213 struct is_lambda_type<E, msvc2015_void_t<decltype(&E::operator())>> : std::true_type
    +
    214 {
    +
    215 };
    +
    216
    +
    217 template <class T>
    +
    218 struct self_type
    +
    219 {
    +
    220 using type = T;
    +
    221 };
    +
    222
    +
    223 template <class CP, class A, class O>
    +
    224 struct get_buffer_storage
    +
    225 {
    +
    226 using type = xtl::mpl::eval_if_t<
    +
    227 is_lambda_type<A>,
    +
    228 self_type<xbuffer_smart_pointer<CP, A>>,
    +
    229 self_type<xbuffer_storage<CP, A>>>;
    +
    230 };
    +
    231
    +
    232 template <class CP, class A>
    +
    233 struct get_buffer_storage<CP, A, acquire_ownership>
    +
    234 {
    +
    235 using type = xbuffer_owner_storage<CP, A>;
    +
    236 };
    +
    237
    +
    238 template <class CP, class T>
    +
    239 struct get_buffer_storage<CP, std::shared_ptr<T>, no_ownership>
    +
    240 {
    +
    241 using type = xbuffer_smart_pointer<CP, std::shared_ptr<T>>;
    +
    242 };
    +
    243
    +
    244 template <class CP, class T>
    +
    245 struct get_buffer_storage<CP, std::unique_ptr<T>, no_ownership>
    +
    246 {
    +
    247 using type = xbuffer_smart_pointer<CP, std::unique_ptr<T>>;
    +
    248 };
    +
    249
    +
    250 template <class CP, class A, class O>
    +
    251 using buffer_storage_t = typename get_buffer_storage<CP, A, O>::type;
    +
    252 }
    +
    253
    +
    254 /************************
    +
    255 * xbuffer_adaptor_base *
    +
    256 ************************/
    +
    257
    +
    258 template <class D>
    + +
    260
    +
    261 template <class D>
    +
    + +
    263 {
    +
    264 public:
    +
    265
    + +
    267 using derived_type = D;
    + +
    269 using value_type = typename inner_types::value_type;
    +
    270 using reference = typename inner_types::reference;
    +
    271 using const_reference = typename inner_types::const_reference;
    +
    272 using pointer = typename inner_types::pointer;
    +
    273 using const_pointer = typename inner_types::const_pointer;
    +
    274 using size_type = typename inner_types::size_type;
    +
    275 using difference_type = typename inner_types::difference_type;
    +
    276 using iterator = typename inner_types::iterator;
    +
    277 using const_iterator = typename inner_types::const_iterator;
    +
    278 using reverse_iterator = typename inner_types::reverse_iterator;
    +
    279 using const_reverse_iterator = typename inner_types::const_reverse_iterator;
    +
    280 using index_type = typename inner_types::index_type;
    +
    281
    +
    282 bool empty() const noexcept;
    +
    283
    +
    284 reference operator[](size_type i);
    +
    285 const_reference operator[](size_type i) const;
    +
    286
    +
    287 reference front();
    +
    288 const_reference front() const;
    +
    289
    +
    290 reference back();
    +
    291 const_reference back() const;
    +
    292
    +
    293 iterator begin() noexcept;
    +
    294 iterator end() noexcept;
    +
    295
    +
    296 const_iterator begin() const noexcept;
    +
    297 const_iterator end() const noexcept;
    +
    298 const_iterator cbegin() const noexcept;
    +
    299 const_iterator cend() const noexcept;
    +
    300
    +
    301 reverse_iterator rbegin() noexcept;
    +
    302 reverse_iterator rend() noexcept;
    +
    303
    +
    304 const_reverse_iterator rbegin() const noexcept;
    +
    305 const_reverse_iterator rend() const noexcept;
    +
    306 const_reverse_iterator crbegin() const noexcept;
    +
    307 const_reverse_iterator crend() const noexcept;
    +
    308
    +
    309 derived_type& derived_cast() noexcept;
    +
    310 const derived_type& derived_cast() const noexcept;
    +
    311
    +
    312 protected:
    +
    313
    +
    314 xbuffer_adaptor_base() = default;
    +
    315 ~xbuffer_adaptor_base() = default;
    +
    316
    +
    317 xbuffer_adaptor_base(const self_type&) = default;
    +
    318 self_type& operator=(const self_type&) = default;
    +
    319
    +
    320 xbuffer_adaptor_base(self_type&&) = default;
    +
    321 self_type& operator=(self_type&&) = default;
    +
    322 };
    +
    +
    323
    +
    324 template <class D>
    + +
    326
    +
    327 template <class D>
    + +
    329
    +
    330 template <class D>
    +
    331 bool operator<(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs);
    +
    332
    +
    333 template <class D>
    +
    334 bool operator<=(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs);
    +
    335
    +
    336 template <class D>
    +
    337 bool operator>(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs);
    +
    338
    +
    339 template <class D>
    +
    340 bool operator>=(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs);
    +
    341
    +
    342 /*******************
    +
    343 * xbuffer_adaptor *
    +
    344 *******************/
    +
    345
    +
    346 template <class CP, class O, class A>
    +
    + +
    348 {
    +
    349 using base_type = detail::buffer_storage_t<CP, A, O>;
    +
    350 using value_type = typename base_type::value_type;
    +
    351 using reference = typename base_type::reference;
    +
    352 using const_reference = typename base_type::const_reference;
    +
    353 using pointer = typename base_type::pointer;
    +
    354 using const_pointer = typename base_type::const_pointer;
    +
    355 using size_type = typename base_type::size_type;
    +
    356 using difference_type = typename base_type::difference_type;
    +
    357 using iterator = pointer;
    +
    358 using const_iterator = const_pointer;
    +
    359 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    360 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    361 using index_type = size_type;
    +
    362 };
    +
    +
    363
    +
    364 template <class CP, class O, class A>
    +
    +
    365 class xbuffer_adaptor : private detail::buffer_storage_t<CP, A, O>,
    +
    366 public xbuffer_adaptor_base<xbuffer_adaptor<CP, O, A>>
    +
    367 {
    +
    368 public:
    +
    369
    + +
    371 using base_type = detail::buffer_storage_t<CP, A, O>;
    + +
    373 using allocator_type = typename base_type::allocator_type;
    +
    374 using destructor_type = typename base_type::destructor_type;
    +
    375 using value_type = typename buffer_base_type::value_type;
    +
    376 using reference = typename buffer_base_type::reference;
    +
    377 using const_reference = typename buffer_base_type::const_reference;
    +
    378 using pointer = typename buffer_base_type::pointer;
    +
    379 using const_pointer = typename buffer_base_type::const_pointer;
    +
    380 using size_type = typename buffer_base_type::size_type;
    +
    381 using difference_type = typename buffer_base_type::difference_type;
    +
    382 using iterator = typename buffer_base_type::iterator;
    +
    383 using const_iterator = typename buffer_base_type::const_iterator;
    +
    384 using reverse_iterator = typename buffer_base_type::reverse_iterator;
    +
    385 using const_reverse_iterator = typename buffer_base_type::const_reverse_iterator;
    + +
    387
    +
    388 xbuffer_adaptor() = default;
    +
    389
    +
    390 using base_type::base_type;
    +
    391
    +
    392 ~xbuffer_adaptor() = default;
    +
    393
    +
    394 xbuffer_adaptor(const self_type&) = default;
    +
    395 self_type& operator=(const self_type&) = default;
    +
    396
    +
    397 xbuffer_adaptor(self_type&&) = default;
    +
    398 xbuffer_adaptor& operator=(self_type&&) = default;
    +
    399
    +
    400 self_type& operator=(temporary_type&&);
    +
    401
    +
    402 using base_type::data;
    +
    403 using base_type::reset_data;
    +
    404 using base_type::resize;
    +
    405 using base_type::size;
    +
    406 using base_type::swap;
    +
    407 };
    +
    +
    408
    +
    409 template <class CP, class O, class A>
    +
    410 void swap(xbuffer_adaptor<CP, O, A>& lhs, xbuffer_adaptor<CP, O, A>& rhs) noexcept;
    +
    411
    +
    412 /*********************
    +
    413 * xiterator_adaptor *
    +
    414 *********************/
    +
    415
    +
    416 template <class I, class CI>
    +
    417 class xiterator_adaptor;
    +
    418
    +
    419 template <class I, class CI>
    +
    + +
    421 {
    +
    422 using traits = std::iterator_traits<I>;
    +
    423 using const_traits = std::iterator_traits<CI>;
    +
    424
    +
    425 using value_type = std::common_type_t<typename traits::value_type, typename const_traits::value_type>;
    +
    426 using reference = typename traits::reference;
    +
    427 using const_reference = typename const_traits::reference;
    +
    428 using pointer = typename traits::pointer;
    +
    429 using const_pointer = typename const_traits::pointer;
    +
    430 using difference_type = std::common_type_t<typename traits::difference_type, typename const_traits::difference_type>;
    +
    431 using size_type = std::make_unsigned_t<difference_type>;
    +
    432
    +
    433 using iterator = I;
    +
    434 using const_iterator = CI;
    +
    435 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    436 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    437 using index_type = difference_type;
    +
    438 };
    +
    +
    439
    +
    440 template <class I, class CI>
    +
    +
    441 class xiterator_adaptor : public xbuffer_adaptor_base<xiterator_adaptor<I, CI>>
    +
    442 {
    +
    443 public:
    +
    444
    + + +
    447 using value_type = typename base_type::value_type;
    +
    448 using allocator_type = std::allocator<value_type>;
    +
    449 using size_type = typename base_type::size_type;
    +
    450 using iterator = typename base_type::iterator;
    +
    451 using const_iterator = typename base_type::const_iterator;
    + +
    453
    +
    454 xiterator_adaptor() = default;
    +
    455 xiterator_adaptor(I it, CI cit, size_type size);
    +
    456
    +
    457 ~xiterator_adaptor() = default;
    +
    458
    +
    459 xiterator_adaptor(const self_type&) = default;
    +
    460 xiterator_adaptor& operator=(const self_type&) = default;
    +
    461
    +
    462 xiterator_adaptor(self_type&&) = default;
    +
    463 xiterator_adaptor& operator=(self_type&&) = default;
    +
    464
    +
    465 xiterator_adaptor& operator=(const temporary_type& rhs);
    +
    466 xiterator_adaptor& operator=(temporary_type&& rhs);
    +
    467
    +
    468 size_type size() const noexcept;
    +
    469 void resize(size_type size);
    +
    470
    +
    471 iterator data() noexcept;
    +
    472 const_iterator data() const noexcept;
    +
    473
    +
    474 void swap(self_type& rhs) noexcept;
    +
    475
    +
    476 private:
    +
    477
    +
    478 I m_it;
    +
    479 CI m_cit;
    +
    480 size_type m_size;
    +
    481 };
    +
    +
    482
    +
    483 template <class I, class CI>
    +
    484 void swap(xiterator_adaptor<I, CI>& lhs, xiterator_adaptor<I, CI>& rhs) noexcept;
    +
    485
    +
    486 template <class I, class CI>
    + +
    490
    +
    491 /***************************
    +
    492 * xiterator_owner_adaptor *
    +
    493 ***************************/
    +
    494
    +
    495 template <class C, class IG>
    + +
    497
    +
    498 template <class C, class IG>
    +
    + +
    500 {
    +
    501 using iterator = typename IG::iterator;
    +
    502 using const_iterator = typename IG::const_iterator;
    +
    503 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    504 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    505
    +
    506 using traits = std::iterator_traits<iterator>;
    +
    507 using const_traits = std::iterator_traits<const_iterator>;
    +
    508
    +
    509 using value_type = std::common_type_t<typename traits::value_type, typename const_traits::value_type>;
    +
    510 using reference = typename traits::reference;
    +
    511 using const_reference = typename const_traits::reference;
    +
    512 using pointer = typename traits::pointer;
    +
    513 using const_pointer = typename const_traits::pointer;
    +
    514 using difference_type = std::common_type_t<typename traits::difference_type, typename const_traits::difference_type>;
    +
    515 using size_type = std::make_unsigned_t<difference_type>;
    +
    516 using index_type = difference_type;
    +
    517 };
    +
    +
    518
    +
    519 template <class C, class IG>
    +
    +
    520 class xiterator_owner_adaptor : public xbuffer_adaptor_base<xiterator_owner_adaptor<C, IG>>
    +
    521 {
    +
    522 public:
    +
    523
    + + +
    526 using value_type = typename base_type::value_type;
    +
    527 using allocator_type = std::allocator<value_type>;
    +
    528 using size_type = typename base_type::size_type;
    +
    529 using iterator = typename base_type::iterator;
    +
    530 using const_iterator = typename base_type::const_iterator;
    + +
    532
    + +
    534
    +
    535 ~xiterator_owner_adaptor() = default;
    +
    536
    + +
    538 xiterator_owner_adaptor& operator=(const self_type&);
    +
    539
    + + +
    542
    +
    543 xiterator_owner_adaptor& operator=(const temporary_type& rhs);
    +
    544 xiterator_owner_adaptor& operator=(temporary_type&& rhs);
    +
    545
    +
    546 size_type size() const noexcept;
    +
    547 void resize(size_type size);
    +
    548
    +
    549 iterator data() noexcept;
    +
    550 const_iterator data() const noexcept;
    +
    551
    +
    552 void swap(self_type& rhs) noexcept;
    +
    553
    +
    554 private:
    +
    555
    +
    556 void init_iterators();
    +
    557
    +
    558 C m_container;
    +
    559 iterator m_it;
    +
    560 const_iterator m_cit;
    +
    561 size_type m_size;
    +
    562 };
    +
    +
    563
    +
    564 template <class C, class IG>
    + +
    566
    +
    567 template <class C, class IG>
    +
    + +
    569 : is_contiguous_container<typename IG::iterator>
    +
    570 {
    +
    571 };
    +
    +
    572
    +
    573 /**************************
    +
    574 * make_xiterator_adaptor *
    +
    575 **************************/
    +
    576
    +
    577 template <class C, class IG>
    +
    578 auto make_xiterator_adaptor(C&& container, IG iterator_getter);
    +
    579
    +
    580 /************************************
    +
    581 * temporary_container metafunction *
    +
    582 ************************************/
    +
    583
    +
    584 template <class C>
    +
    + +
    586 {
    +
    587 using type = C;
    +
    588 };
    +
    +
    589
    +
    590 template <class CP, class O, class A>
    +
    + +
    592 {
    +
    593 using type = typename xbuffer_adaptor<CP, O, A>::temporary_type;
    +
    594 };
    +
    +
    595
    +
    596 template <class I, class CI>
    +
    + +
    598 {
    +
    599 using type = typename xiterator_adaptor<I, CI>::temporary_type;
    +
    600 };
    +
    +
    601
    +
    602 template <class C, class IG>
    +
    + +
    604 {
    + +
    606 };
    +
    +
    607
    +
    608 template <class C>
    +
    609 using temporary_container_t = typename temporary_container<C>::type;
    +
    610
    +
    611 /**********************************
    +
    612 * xbuffer_storage implementation *
    +
    613 **********************************/
    +
    614
    +
    615 namespace detail
    +
    616 {
    +
    617 template <class CP, class A>
    +
    618 inline xbuffer_storage<CP, A>::xbuffer_storage()
    +
    619 : p_data(nullptr)
    +
    620 , m_size(0)
    +
    621 {
    +
    622 }
    +
    623
    +
    624 template <class CP, class A>
    +
    625 template <class P>
    +
    626 inline xbuffer_storage<CP, A>::xbuffer_storage(P&& data, size_type size, const allocator_type&)
    +
    627 : p_data(std::forward<P>(data))
    +
    628 , m_size(size)
    +
    629 {
    +
    630 }
    +
    631
    +
    632 template <class CP, class A>
    +
    633 inline auto xbuffer_storage<CP, A>::size() const noexcept -> size_type
    +
    634 {
    +
    635 return m_size;
    +
    636 }
    +
    637
    +
    638 template <class CP, class A>
    +
    639 inline void xbuffer_storage<CP, A>::resize(size_type size)
    +
    640 {
    +
    641 if (size != m_size)
    +
    642 {
    +
    643 XTENSOR_THROW(std::runtime_error, "xbuffer_storage not resizable");
    +
    644 }
    +
    645 }
    +
    646
    +
    647 template <class CP, class A>
    +
    648 inline auto xbuffer_storage<CP, A>::data() noexcept -> pointer
    +
    649 {
    +
    650 return p_data;
    +
    651 }
    +
    652
    +
    653 template <class CP, class A>
    +
    654 inline auto xbuffer_storage<CP, A>::data() const noexcept -> const_pointer
    +
    655 {
    +
    656 return p_data;
    +
    657 }
    +
    658
    +
    659 template <class CP, class A>
    +
    660 inline void xbuffer_storage<CP, A>::swap(self_type& rhs) noexcept
    +
    661 {
    +
    662 using std::swap;
    +
    663 swap(p_data, rhs.p_data);
    +
    664 swap(m_size, rhs.m_size);
    +
    665 }
    +
    666
    +
    667 template <class CP, class A>
    +
    668 template <class P>
    +
    669 inline void xbuffer_storage<CP, A>::reset_data(P&& data, size_type size) noexcept
    +
    670 {
    +
    671 p_data = std::forward<P>(data);
    +
    672 m_size = size;
    +
    673 }
    +
    674 }
    +
    675
    +
    676 /****************************************
    +
    677 * xbuffer_owner_storage implementation *
    +
    678 ****************************************/
    +
    679
    +
    680 namespace detail
    +
    681 {
    +
    682 template <class CP, class A>
    +
    683 template <class P>
    +
    684 inline xbuffer_owner_storage<CP, A>::xbuffer_owner_storage(P&& data, size_type size, const allocator_type& alloc)
    +
    685 : m_data(std::forward<P>(data))
    +
    686 , m_size(size)
    +
    687 , m_moved_from(false)
    +
    688 , m_allocator(alloc)
    +
    689 {
    +
    690 }
    +
    691
    +
    692 template <class CP, class A>
    +
    693 inline xbuffer_owner_storage<CP, A>::~xbuffer_owner_storage()
    +
    694 {
    +
    695 if (!m_moved_from)
    +
    696 {
    +
    697 safe_destroy_deallocate(m_allocator, m_data.get(), m_size);
    +
    698 m_size = 0;
    +
    699 }
    +
    700 }
    +
    701
    +
    702 template <class CP, class A>
    +
    703 inline auto xbuffer_owner_storage<CP, A>::operator=(const self_type& rhs) -> self_type&
    +
    704 {
    +
    705 using std::swap;
    +
    706 if (this != &rhs)
    +
    707 {
    +
    708 allocator_type al = std::allocator_traits<allocator_type>::select_on_container_copy_construction(
    +
    709 rhs.get_allocator()
    +
    710 );
    +
    711 pointer tmp = safe_init_allocate(al, rhs.m_size);
    +
    712 if (xtrivially_default_constructible<value_type>::value)
    +
    713 {
    +
    714 std::uninitialized_copy(rhs.m_data.get(), rhs.m_data.get() + rhs.m_size, tmp);
    +
    715 }
    +
    716 else
    +
    717 {
    +
    718 std::copy(rhs.m_data.get(), rhs.m_data.get() + rhs.m_size, tmp);
    +
    719 }
    +
    720 swap(m_data.get(), tmp);
    +
    721 swap(m_allocator, al);
    +
    722 safe_destroy_deallocate(al, tmp, m_size);
    +
    723 m_size = rhs.m_size;
    +
    724 }
    +
    725 return *this;
    +
    726 }
    +
    727
    +
    728 template <class CP, class A>
    +
    729 inline xbuffer_owner_storage<CP, A>::xbuffer_owner_storage(self_type&& rhs)
    +
    730 : m_data(std::move(rhs.m_data))
    +
    731 , m_size(std::move(rhs.m_size))
    +
    732 , m_moved_from(std::move(rhs.m_moved_from))
    +
    733 , m_allocator(std::move(rhs.m_allocator))
    +
    734 {
    +
    735 rhs.m_moved_from = true;
    +
    736 rhs.m_size = 0;
    +
    737 }
    +
    738
    +
    739 template <class CP, class A>
    +
    740 inline auto xbuffer_owner_storage<CP, A>::operator=(self_type&& rhs) -> self_type&
    +
    741 {
    +
    742 swap(rhs);
    +
    743 return *this;
    +
    744 }
    +
    745
    +
    746 template <class CP, class A>
    +
    747 inline auto xbuffer_owner_storage<CP, A>::size() const noexcept -> size_type
    +
    748 {
    +
    749 return m_size;
    +
    750 }
    +
    751
    +
    752 template <class CP, class A>
    +
    753 void xbuffer_owner_storage<CP, A>::resize(size_type size)
    +
    754 {
    +
    755 using std::swap;
    +
    756 if (size != m_size)
    +
    757 {
    +
    758 pointer tmp = safe_init_allocate(m_allocator, size);
    +
    759 swap(m_data.get(), tmp);
    +
    760 swap(m_size, size);
    +
    761 safe_destroy_deallocate(m_allocator, tmp, size);
    +
    762 }
    +
    763 }
    +
    764
    +
    765 template <class CP, class A>
    +
    766 inline auto xbuffer_owner_storage<CP, A>::data() noexcept -> pointer
    +
    767 {
    +
    768 return m_data.get();
    +
    769 }
    +
    770
    +
    771 template <class CP, class A>
    +
    772 inline auto xbuffer_owner_storage<CP, A>::data() const noexcept -> const_pointer
    +
    773 {
    +
    774 return m_data.get();
    +
    775 }
    +
    776
    +
    777 template <class CP, class A>
    +
    778 inline auto xbuffer_owner_storage<CP, A>::get_allocator() const noexcept -> allocator_type
    +
    779 {
    +
    780 return allocator_type(m_allocator);
    +
    781 }
    +
    782
    +
    783 template <class CP, class A>
    +
    784 inline void xbuffer_owner_storage<CP, A>::swap(self_type& rhs) noexcept
    +
    785 {
    +
    786 using std::swap;
    +
    787 swap(m_data, rhs.m_data);
    +
    788 swap(m_size, rhs.m_size);
    +
    789 swap(m_allocator, rhs.m_allocator);
    +
    790 }
    +
    791
    +
    792 template <class CP, class A>
    +
    793 template <class P>
    +
    794 inline void
    +
    795 xbuffer_owner_storage<CP, A>::reset_data(P&& data, size_type size, const allocator_type& alloc) noexcept
    +
    796 {
    +
    797 xbuffer_owner_storage<CP, A> tmp(std::forward<P>(data), size, alloc);
    +
    798 this->swap(tmp);
    +
    799 }
    +
    800 }
    +
    801
    +
    802 /****************************************
    +
    803 * xbuffer_smart_pointer implementation *
    +
    804 ****************************************/
    +
    805
    +
    806 namespace detail
    +
    807 {
    +
    808 template <class CP, class D>
    +
    809 template <class P, class DT>
    +
    810 xbuffer_smart_pointer<CP, D>::xbuffer_smart_pointer(P&& data_ptr, size_type size, DT&& destruct)
    +
    811 : p_data(data_ptr)
    +
    812 , m_size(size)
    +
    813 , m_destruct(std::forward<DT>(destruct))
    +
    814 {
    +
    815 }
    +
    816
    +
    817 template <class CP, class D>
    +
    818 auto xbuffer_smart_pointer<CP, D>::size() const noexcept -> size_type
    +
    819 {
    +
    820 return m_size;
    +
    821 }
    +
    822
    +
    823 template <class CP, class D>
    +
    824 void xbuffer_smart_pointer<CP, D>::resize(size_type size)
    +
    825 {
    +
    826 if (m_size != size)
    +
    827 {
    +
    828 XTENSOR_THROW(std::runtime_error, "xbuffer_storage not resizeable");
    +
    829 }
    +
    830 }
    +
    831
    +
    832 template <class CP, class D>
    +
    833 auto xbuffer_smart_pointer<CP, D>::data() noexcept -> pointer
    +
    834 {
    +
    835 return p_data;
    +
    836 }
    +
    837
    +
    838 template <class CP, class D>
    +
    839 auto xbuffer_smart_pointer<CP, D>::data() const noexcept -> const_pointer
    +
    840 {
    +
    841 return p_data;
    +
    842 }
    +
    843
    +
    844 template <class CP, class D>
    +
    845 void xbuffer_smart_pointer<CP, D>::swap(self_type& rhs) noexcept
    +
    846 {
    +
    847 using std::swap;
    +
    848 swap(p_data, rhs.p_data);
    +
    849 swap(m_size, rhs.m_size);
    +
    850 swap(m_destruct, rhs.m_destruct);
    +
    851 }
    +
    852
    +
    853 template <class CP, class D>
    +
    854 template <class P, class DT>
    +
    855 void xbuffer_smart_pointer<CP, D>::reset_data(P&& data, size_type size, DT&& destruct) noexcept
    +
    856 {
    +
    857 p_data = std::forward<P>(data);
    +
    858 m_size = size;
    +
    859 m_destruct = destruct;
    +
    860 }
    +
    861 }
    +
    862
    +
    863 /***************************************
    +
    864 * xbuffer_adaptor_base implementation *
    +
    865 ***************************************/
    +
    866
    +
    867 template <class D>
    +
    868 inline bool xbuffer_adaptor_base<D>::empty() const noexcept
    +
    869 {
    +
    870 return derived_cast().size() == size_type(0);
    +
    871 }
    +
    872
    +
    873 template <class D>
    +
    874 inline auto xbuffer_adaptor_base<D>::operator[](size_type i) -> reference
    +
    875 {
    +
    876 return derived_cast().data()[static_cast<index_type>(i)];
    +
    877 }
    +
    878
    +
    879 template <class D>
    +
    880 inline auto xbuffer_adaptor_base<D>::operator[](size_type i) const -> const_reference
    +
    881 {
    +
    882 return derived_cast().data()[static_cast<index_type>(i)];
    +
    883 }
    +
    884
    +
    885 template <class D>
    +
    886 inline auto xbuffer_adaptor_base<D>::front() -> reference
    +
    887 {
    +
    888 return this->operator[](0);
    +
    889 }
    +
    890
    +
    891 template <class D>
    +
    892 inline auto xbuffer_adaptor_base<D>::front() const -> const_reference
    +
    893 {
    +
    894 return this->operator[](0);
    +
    895 }
    +
    896
    +
    897 template <class D>
    +
    898 inline auto xbuffer_adaptor_base<D>::back() -> reference
    +
    899 {
    +
    900 return this->operator[](derived_cast().size() - 1);
    +
    901 }
    +
    902
    +
    903 template <class D>
    +
    904 inline auto xbuffer_adaptor_base<D>::back() const -> const_reference
    +
    905 {
    +
    906 return this->operator[](derived_cast().size() - 1);
    +
    907 }
    +
    908
    +
    909 template <class D>
    +
    910 inline auto xbuffer_adaptor_base<D>::begin() noexcept -> iterator
    +
    911 {
    +
    912 return derived_cast().data();
    +
    913 }
    +
    914
    +
    915 template <class D>
    +
    916 inline auto xbuffer_adaptor_base<D>::end() noexcept -> iterator
    +
    917 {
    +
    918 return derived_cast().data() + static_cast<index_type>(derived_cast().size());
    +
    919 }
    +
    920
    +
    921 template <class D>
    +
    922 inline auto xbuffer_adaptor_base<D>::begin() const noexcept -> const_iterator
    +
    923 {
    +
    924 return derived_cast().data();
    +
    925 }
    +
    926
    +
    927 template <class D>
    +
    928 inline auto xbuffer_adaptor_base<D>::end() const noexcept -> const_iterator
    +
    929 {
    +
    930 return derived_cast().data() + static_cast<index_type>(derived_cast().size());
    +
    931 }
    +
    932
    +
    933 template <class D>
    +
    934 inline auto xbuffer_adaptor_base<D>::cbegin() const noexcept -> const_iterator
    +
    935 {
    +
    936 return begin();
    +
    937 }
    +
    938
    +
    939 template <class D>
    +
    940 inline auto xbuffer_adaptor_base<D>::cend() const noexcept -> const_iterator
    +
    941 {
    +
    942 return end();
    +
    943 }
    +
    944
    +
    945 template <class D>
    +
    946 inline auto xbuffer_adaptor_base<D>::rbegin() noexcept -> reverse_iterator
    +
    947 {
    +
    948 return reverse_iterator(end());
    +
    949 }
    +
    950
    +
    951 template <class D>
    +
    952 inline auto xbuffer_adaptor_base<D>::rend() noexcept -> reverse_iterator
    +
    953 {
    +
    954 return reverse_iterator(begin());
    +
    955 }
    +
    956
    +
    957 template <class D>
    +
    958 inline auto xbuffer_adaptor_base<D>::rbegin() const noexcept -> const_reverse_iterator
    +
    959 {
    +
    960 return const_reverse_iterator(end());
    +
    961 }
    +
    962
    +
    963 template <class D>
    +
    964 inline auto xbuffer_adaptor_base<D>::rend() const noexcept -> const_reverse_iterator
    +
    965 {
    +
    966 return const_reverse_iterator(begin());
    +
    967 }
    +
    968
    +
    969 template <class D>
    +
    970 inline auto xbuffer_adaptor_base<D>::crbegin() const noexcept -> const_reverse_iterator
    +
    971 {
    +
    972 return rbegin();
    +
    973 }
    +
    974
    +
    975 template <class D>
    +
    976 inline auto xbuffer_adaptor_base<D>::crend() const noexcept -> const_reverse_iterator
    +
    977 {
    +
    978 return rend();
    +
    979 }
    +
    980
    +
    981 template <class D>
    +
    982 inline auto xbuffer_adaptor_base<D>::derived_cast() noexcept -> derived_type&
    +
    983 {
    +
    984 return *static_cast<derived_type*>(this);
    +
    985 }
    +
    986
    +
    987 template <class D>
    +
    988 inline auto xbuffer_adaptor_base<D>::derived_cast() const noexcept -> const derived_type&
    +
    989 {
    +
    990 return *static_cast<const derived_type*>(this);
    +
    991 }
    +
    992
    +
    993 template <class D>
    +
    994 inline bool operator==(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs)
    +
    995 {
    +
    996 return lhs.derived_cast().size() == rhs.derived_cast().size()
    +
    997 && std::equal(lhs.begin(), lhs.end(), rhs.begin());
    +
    998 }
    +
    999
    +
    1000 template <class D>
    +
    1001 inline bool operator!=(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs)
    +
    1002 {
    +
    1003 return !(lhs == rhs);
    +
    1004 }
    +
    1005
    +
    1006 template <class D>
    +
    1007 inline bool operator<(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs)
    +
    1008 {
    +
    1009 return std::lexicographical_compare(
    +
    1010 lhs.begin(),
    +
    1011 lhs.end(),
    +
    1012 rhs.begin(),
    +
    1013 rhs.end(),
    +
    1014 std::less<typename D::value_type>()
    +
    1015 );
    +
    1016 }
    +
    1017
    +
    1018 template <class D>
    +
    1019 inline bool operator<=(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs)
    +
    1020 {
    +
    1021 return std::lexicographical_compare(
    +
    1022 lhs.begin(),
    +
    1023 lhs.end(),
    +
    1024 rhs.begin(),
    +
    1025 rhs.end(),
    +
    1026 std::less_equal<typename D::value_type>()
    +
    1027 );
    +
    1028 }
    +
    1029
    +
    1030 template <class D>
    +
    1031 inline bool operator>(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs)
    +
    1032 {
    +
    1033 return std::lexicographical_compare(
    +
    1034 lhs.begin(),
    +
    1035 lhs.end(),
    +
    1036 rhs.begin(),
    +
    1037 rhs.end(),
    +
    1038 std::greater<typename D::value_type>()
    +
    1039 );
    +
    1040 }
    +
    1041
    +
    1042 template <class D>
    +
    1043 inline bool operator>=(const xbuffer_adaptor_base<D>& lhs, const xbuffer_adaptor_base<D>& rhs)
    +
    1044 {
    +
    1045 return std::lexicographical_compare(
    +
    1046 lhs.begin(),
    +
    1047 lhs.end(),
    +
    1048 rhs.begin(),
    +
    1049 rhs.end(),
    +
    1050 std::greater_equal<typename D::value_type>()
    +
    1051 );
    +
    1052 }
    +
    1053
    +
    1054 /**********************************
    +
    1055 * xbuffer_adaptor implementation *
    +
    1056 **********************************/
    +
    1057
    +
    1058 template <class CP, class O, class A>
    +
    1059 inline auto xbuffer_adaptor<CP, O, A>::operator=(temporary_type&& tmp) -> self_type&
    +
    1060 {
    +
    1061 base_type::resize(tmp.size());
    +
    1062 std::copy(tmp.cbegin(), tmp.cend(), this->begin());
    +
    1063 return *this;
    +
    1064 }
    +
    1065
    +
    1066 template <class CP, class O, class A>
    +
    1067 inline void swap(xbuffer_adaptor<CP, O, A>& lhs, xbuffer_adaptor<CP, O, A>& rhs) noexcept
    +
    1068 {
    +
    1069 lhs.swap(rhs);
    +
    1070 }
    +
    1071
    +
    1072 /************************************
    +
    1073 * xiterator_adaptor implementation *
    +
    1074 ************************************/
    +
    1075
    +
    1076 template <class I, class CI>
    +
    1077 inline xiterator_adaptor<I, CI>::xiterator_adaptor(I it, CI cit, size_type size)
    +
    1078 : m_it(it)
    +
    1079 , m_cit(cit)
    +
    1080 , m_size(size)
    +
    1081 {
    +
    1082 }
    +
    1083
    +
    1084 template <class I, class CI>
    +
    1085 inline auto xiterator_adaptor<I, CI>::operator=(const temporary_type& rhs) -> self_type&
    +
    1086 {
    +
    1087 resize(rhs.size());
    +
    1088 std::copy(rhs.cbegin(), rhs.cend(), m_it);
    +
    1089 return *this;
    +
    1090 }
    +
    1091
    +
    1092 template <class I, class CI>
    +
    1093 inline auto xiterator_adaptor<I, CI>::operator=(temporary_type&& rhs) -> self_type&
    +
    1094 {
    +
    1095 return (*this = rhs);
    +
    1096 }
    +
    1097
    +
    1098 template <class I, class CI>
    +
    1099 inline auto xiterator_adaptor<I, CI>::size() const noexcept -> size_type
    +
    1100 {
    +
    1101 return m_size;
    +
    1102 }
    +
    1103
    +
    1104 template <class I, class CI>
    +
    1105 inline void xiterator_adaptor<I, CI>::resize(size_type size)
    +
    1106 {
    +
    1107 if (m_size != size)
    +
    1108 {
    +
    1109 XTENSOR_THROW(std::runtime_error, "xiterator_adaptor not resizeable");
    +
    1110 }
    +
    1111 }
    +
    1112
    +
    1113 template <class I, class CI>
    +
    1114 inline auto xiterator_adaptor<I, CI>::data() noexcept -> iterator
    +
    1115 {
    +
    1116 return m_it;
    +
    1117 }
    +
    1118
    +
    1119 template <class I, class CI>
    +
    1120 inline auto xiterator_adaptor<I, CI>::data() const noexcept -> const_iterator
    +
    1121 {
    +
    1122 return m_cit;
    +
    1123 }
    +
    1124
    +
    1125 template <class I, class CI>
    +
    1126 inline void xiterator_adaptor<I, CI>::swap(self_type& rhs) noexcept
    +
    1127 {
    +
    1128 using std::swap;
    +
    1129 swap(m_it, rhs.m_it);
    +
    1130 swap(m_cit, rhs.m_cit);
    +
    1131 swap(m_size, rhs.m_size);
    +
    1132 }
    +
    1133
    +
    1134 template <class I, class CI>
    +
    1135 inline void swap(xiterator_adaptor<I, CI>& lhs, xiterator_adaptor<I, CI>& rhs) noexcept
    +
    1136 {
    +
    1137 lhs.swap(rhs);
    +
    1138 }
    +
    1139
    +
    1140 /******************************************
    +
    1141 * xiterator_owner_adaptor implementation *
    +
    1142 ******************************************/
    +
    1143
    +
    1144 template <class C, class IG>
    +
    1145 inline xiterator_owner_adaptor<C, IG>::xiterator_owner_adaptor(C&& c)
    +
    1146 : m_container(std::move(c))
    +
    1147 {
    +
    1148 init_iterators();
    +
    1149 }
    +
    1150
    +
    1151 template <class C, class IG>
    +
    1152 inline xiterator_owner_adaptor<C, IG>::xiterator_owner_adaptor(const self_type& rhs)
    +
    1153 : m_container(rhs.m_container)
    +
    1154 {
    +
    1155 init_iterators();
    +
    1156 }
    +
    1157
    +
    1158 template <class C, class IG>
    +
    1159 inline xiterator_owner_adaptor<C, IG>& xiterator_owner_adaptor<C, IG>::operator=(const self_type& rhs)
    +
    1160 {
    +
    1161 m_container = rhs.m_container;
    +
    1162 init_iterators();
    +
    1163 }
    +
    1164
    +
    1165 template <class C, class IG>
    +
    1166 inline xiterator_owner_adaptor<C, IG>::xiterator_owner_adaptor(self_type&& rhs)
    +
    1167 : m_container(std::move(rhs.m_container))
    +
    1168 {
    +
    1169 init_iterators();
    +
    1170 }
    +
    1171
    +
    1172 template <class C, class IG>
    +
    1173 inline xiterator_owner_adaptor<C, IG>& xiterator_owner_adaptor<C, IG>::operator=(self_type&& rhs)
    +
    1174 {
    +
    1175 m_container = std::move(rhs.m_container);
    +
    1176 init_iterators();
    +
    1177 }
    +
    1178
    +
    1179 template <class C, class IG>
    +
    1180 inline xiterator_owner_adaptor<C, IG>& xiterator_owner_adaptor<C, IG>::operator=(const temporary_type& rhs)
    +
    1181 {
    +
    1182 resize(rhs.size());
    +
    1183 std::copy(rhs.cbegin(), rhs.cend(), m_it);
    +
    1184 return *this;
    +
    1185 }
    +
    1186
    +
    1187 template <class C, class IG>
    +
    1188 inline xiterator_owner_adaptor<C, IG>& xiterator_owner_adaptor<C, IG>::operator=(temporary_type&& rhs)
    +
    1189 {
    +
    1190 return (*this = rhs);
    +
    1191 }
    +
    1192
    +
    1193 template <class C, class IG>
    +
    1194 inline auto xiterator_owner_adaptor<C, IG>::size() const noexcept -> size_type
    +
    1195 {
    +
    1196 return m_size;
    +
    1197 }
    +
    1198
    +
    1199 template <class C, class IG>
    +
    1200 inline void xiterator_owner_adaptor<C, IG>::resize(size_type size)
    +
    1201 {
    +
    1202 if (m_size != size)
    +
    1203 {
    +
    1204 XTENSOR_THROW(std::runtime_error, "xiterator_owner_adaptor not resizeable");
    +
    1205 }
    +
    1206 }
    +
    1207
    +
    1208 template <class C, class IG>
    +
    1209 inline auto xiterator_owner_adaptor<C, IG>::data() noexcept -> iterator
    +
    1210 {
    +
    1211 return m_it;
    +
    1212 }
    +
    1213
    +
    1214 template <class C, class IG>
    +
    1215 inline auto xiterator_owner_adaptor<C, IG>::data() const noexcept -> const_iterator
    +
    1216 {
    +
    1217 return m_cit;
    +
    1218 }
    +
    1219
    +
    1220 template <class C, class IG>
    +
    1221 inline void xiterator_owner_adaptor<C, IG>::swap(self_type& rhs) noexcept
    +
    1222 {
    +
    1223 using std::swap;
    +
    1224 swap(m_container, rhs.m_container);
    +
    1225 init_iterators();
    +
    1226 rhs.init_iterators();
    +
    1227 }
    +
    1228
    +
    1229 template <class C, class IG>
    +
    1230 inline void xiterator_owner_adaptor<C, IG>::init_iterators()
    +
    1231 {
    +
    1232 m_it = IG::begin(m_container);
    +
    1233 m_cit = IG::cbegin(m_container);
    +
    1234 m_size = IG::size(m_container);
    +
    1235 }
    +
    1236
    +
    1237 template <class C, class IG>
    +
    1238 inline void swap(xiterator_owner_adaptor<C, IG>& lhs, xiterator_owner_adaptor<C, IG>& rhs) noexcept
    +
    1239 {
    +
    1240 lhs.swap(rhs);
    +
    1241 }
    +
    1242
    +
    1243 /*****************************************
    +
    1244 * make_xiterator_adaptor implementation *
    +
    1245 *****************************************/
    +
    1246
    +
    1247 namespace detail
    +
    1248 {
    +
    1249 template <class C, class IG, bool = std::is_lvalue_reference<C>::value>
    +
    1250 struct xiterator_adaptor_builder
    +
    1251 {
    +
    1252 using iterator = decltype(IG::begin(std::declval<C>()));
    +
    1253 using const_iterator = decltype(IG::cbegin(std::declval<C>()));
    +
    1254 using type = xiterator_adaptor<iterator, const_iterator>;
    +
    1255
    +
    1256 inline static type build(C& c)
    +
    1257 {
    +
    1258 return type(IG::begin(c), IG::cbegin(c), IG::size(c));
    +
    1259 }
    +
    1260 };
    +
    1261
    +
    1262 template <class C, class IG>
    +
    1263 struct xiterator_adaptor_builder<C, IG, false>
    +
    1264 {
    +
    1265 using type = xiterator_owner_adaptor<C, IG>;
    +
    1266
    +
    1267 inline static type build(C&& c)
    +
    1268 {
    +
    1269 return type(std::move(c));
    +
    1270 }
    +
    1271 };
    +
    1272 }
    +
    1273
    +
    1274 template <class C, class IG>
    +
    1275 inline auto make_xiterator_adaptor(C&& container, IG)
    +
    1276 {
    +
    1277 using builder_type = detail::xiterator_adaptor_builder<C, IG>;
    +
    1278 return builder_type::build(std::forward<C>(container));
    +
    1279 }
    +
    1280}
    +
    1281
    +
    1282#endif
    + + + + + +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    +
    xarray< T, L > empty(const S &shape)
    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of with value_type T...
    Definition xbuilder.hpp:89
    + + + + + +
    +
    + + + + diff --git a/xbuilder_8hpp_source.html b/xbuilder_8hpp_source.html new file mode 100644 index 000000000..77f07dc88 --- /dev/null +++ b/xbuilder_8hpp_source.html @@ -0,0 +1,1179 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xbuilder.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xbuilder.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    14#ifndef XTENSOR_BUILDER_HPP
    +
    15#define XTENSOR_BUILDER_HPP
    +
    16
    +
    17#include <array>
    +
    18#include <chrono>
    +
    19#include <cmath>
    +
    20#include <cstddef>
    +
    21#include <functional>
    +
    22#include <utility>
    +
    23#include <vector>
    +
    24
    +
    25#include <xtl/xclosure.hpp>
    +
    26#include <xtl/xsequence.hpp>
    +
    27#include <xtl/xtype_traits.hpp>
    +
    28
    +
    29#include "xbroadcast.hpp"
    +
    30#include "xfunction.hpp"
    +
    31#include "xgenerator.hpp"
    +
    32#include "xoperation.hpp"
    +
    33
    +
    34namespace xt
    +
    35{
    +
    36
    +
    37 /********
    +
    38 * ones *
    +
    39 ********/
    +
    40
    +
    45 template <class T, class S>
    +
    +
    46 inline auto ones(S shape) noexcept
    +
    47 {
    +
    48 return broadcast(T(1), std::forward<S>(shape));
    +
    49 }
    +
    +
    50
    +
    51 template <class T, class I, std::size_t L>
    +
    52 inline auto ones(const I (&shape)[L]) noexcept
    +
    53 {
    +
    54 return broadcast(T(1), shape);
    +
    55 }
    +
    56
    +
    57 /*********
    +
    58 * zeros *
    +
    59 *********/
    +
    60
    +
    65 template <class T, class S>
    +
    +
    66 inline auto zeros(S shape) noexcept
    +
    67 {
    +
    68 return broadcast(T(0), std::forward<S>(shape));
    +
    69 }
    +
    +
    70
    +
    71 template <class T, class I, std::size_t L>
    +
    72 inline auto zeros(const I (&shape)[L]) noexcept
    +
    73 {
    +
    74 return broadcast(T(0), shape);
    +
    75 }
    +
    76
    +
    88 template <class T, layout_type L = XTENSOR_DEFAULT_LAYOUT, class S>
    +
    +
    89 inline xarray<T, L> empty(const S& shape)
    +
    90 {
    +
    91 return xarray<T, L>::from_shape(shape);
    +
    92 }
    +
    +
    93
    +
    94 template <class T, layout_type L = XTENSOR_DEFAULT_LAYOUT, class ST, std::size_t N>
    +
    95 inline xtensor<T, N, L> empty(const std::array<ST, N>& shape)
    +
    96 {
    +
    97 using shape_type = typename xtensor<T, N>::shape_type;
    +
    98 return xtensor<T, N, L>(xtl::forward_sequence<shape_type, decltype(shape)>(shape));
    +
    99 }
    +
    100
    +
    101 template <class T, layout_type L = XTENSOR_DEFAULT_LAYOUT, class I, std::size_t N>
    +
    102 inline xtensor<T, N, L> empty(const I (&shape)[N])
    +
    103 {
    +
    104 using shape_type = typename xtensor<T, N>::shape_type;
    +
    105 return xtensor<T, N, L>(xtl::forward_sequence<shape_type, decltype(shape)>(shape));
    +
    106 }
    +
    107
    +
    108 template <class T, layout_type L = XTENSOR_DEFAULT_LAYOUT, std::size_t... N>
    +
    109 inline xtensor_fixed<T, fixed_shape<N...>, L> empty(const fixed_shape<N...>& /*shape*/)
    +
    110 {
    +
    111 return xtensor_fixed<T, fixed_shape<N...>, L>();
    +
    112 }
    +
    113
    +
    120 template <class E>
    +
    +
    121 inline auto empty_like(const xexpression<E>& e)
    +
    122 {
    +
    123 using xtype = temporary_type_t<E>;
    +
    124 auto res = xtype::from_shape(e.derived_cast().shape());
    +
    125 return res;
    +
    126 }
    +
    +
    127
    +
    135 template <class E>
    +
    +
    136 inline auto full_like(const xexpression<E>& e, typename E::value_type fill_value)
    +
    137 {
    +
    138 using xtype = temporary_type_t<E>;
    +
    139 auto res = xtype::from_shape(e.derived_cast().shape());
    +
    140 res.fill(fill_value);
    +
    141 return res;
    +
    142 }
    +
    +
    143
    +
    153 template <class E>
    +
    +
    154 inline auto zeros_like(const xexpression<E>& e)
    +
    155 {
    +
    156 return full_like(e, typename E::value_type(0));
    +
    157 }
    +
    +
    158
    +
    168 template <class E>
    +
    +
    169 inline auto ones_like(const xexpression<E>& e)
    +
    170 {
    +
    171 return full_like(e, typename E::value_type(1));
    +
    172 }
    +
    +
    173
    +
    174 namespace detail
    +
    175 {
    +
    176 template <class T, class S>
    +
    177 struct get_mult_type_impl
    +
    178 {
    +
    179 using type = T;
    +
    180 };
    +
    181
    +
    182 template <class T, class R, class P>
    +
    183 struct get_mult_type_impl<T, std::chrono::duration<R, P>>
    +
    184 {
    +
    185 using type = R;
    +
    186 };
    +
    187
    +
    188 template <class T, class S>
    +
    189 using get_mult_type = typename get_mult_type_impl<T, S>::type;
    +
    190
    +
    191 // These methods should be private methods of arange_generator, however thi leads
    +
    192 // to ICE on VS2015
    +
    193 template <class R, class E, class U, class X, XTL_REQUIRES(xtl::is_integral<X>)>
    +
    194 inline void arange_assign_to(xexpression<E>& e, U start, U, X step, bool) noexcept
    +
    195 {
    +
    196 auto& de = e.derived_cast();
    +
    197 U value = start;
    +
    198
    +
    199 for (auto&& el : de.storage())
    +
    200 {
    +
    201 el = static_cast<R>(value);
    +
    202 value += step;
    +
    203 }
    +
    204 }
    +
    205
    +
    206 template <class R, class E, class U, class X, XTL_REQUIRES(xtl::negation<xtl::is_integral<X>>)>
    +
    207 inline void arange_assign_to(xexpression<E>& e, U start, U stop, X step, bool endpoint) noexcept
    +
    208 {
    +
    209 auto& buf = e.derived_cast().storage();
    +
    210 using size_type = decltype(buf.size());
    +
    211 using mult_type = get_mult_type<U, X>;
    +
    212 size_type num = buf.size();
    +
    213 for (size_type i = 0; i < num; ++i)
    +
    214 {
    +
    215 buf[i] = static_cast<R>(start + step * mult_type(i));
    +
    216 }
    +
    217 if (endpoint && num > 1)
    +
    218 {
    +
    219 buf[num - 1] = static_cast<R>(stop);
    +
    220 }
    +
    221 }
    +
    222
    +
    223 template <class T, class R = T, class S = T>
    +
    224 class arange_generator
    +
    225 {
    +
    226 public:
    +
    227
    +
    228 using value_type = R;
    +
    229 using step_type = S;
    +
    230
    +
    231 arange_generator(T start, T stop, S step, size_t num_steps, bool endpoint = false)
    +
    232 : m_start(start)
    +
    233 , m_stop(stop)
    +
    234 , m_step(step)
    +
    235 , m_num_steps(num_steps)
    +
    236 , m_endpoint(endpoint)
    +
    237 {
    +
    238 }
    +
    239
    +
    240 template <class... Args>
    +
    241 inline R operator()(Args... args) const
    +
    242 {
    +
    243 return access_impl(args...);
    +
    244 }
    +
    245
    +
    246 template <class It>
    +
    247 inline R element(It first, It) const
    +
    248 {
    +
    249 return access_impl(*first);
    +
    250 }
    +
    251
    +
    252 template <class E>
    +
    253 inline void assign_to(xexpression<E>& e) const noexcept
    +
    254 {
    +
    255 arange_assign_to<R>(e, m_start, m_stop, m_step, m_endpoint);
    +
    256 }
    +
    257
    +
    258 private:
    +
    259
    +
    260 T m_start;
    +
    261 T m_stop;
    +
    262 step_type m_step;
    +
    263 size_t m_num_steps;
    +
    264 bool m_endpoint; // true for setting the last element to m_stop
    +
    265
    +
    266 template <class T1, class... Args>
    +
    267 inline R access_impl(T1 t, Args...) const
    +
    268 {
    +
    269 if (m_endpoint && m_num_steps > 1 && size_t(t) == m_num_steps - 1)
    +
    270 {
    +
    271 return static_cast<R>(m_stop);
    +
    272 }
    +
    273 // Avoids warning when T = char (because char + char => int!)
    +
    274 using mult_type = get_mult_type<T, S>;
    +
    275 return static_cast<R>(m_start + m_step * mult_type(t));
    +
    276 }
    +
    277
    +
    278 inline R access_impl() const
    +
    279 {
    +
    280 return static_cast<R>(m_start);
    +
    281 }
    +
    282 };
    +
    283
    +
    284 template <class T, class S>
    +
    285 using both_integer = xtl::conjunction<xtl::is_integral<T>, xtl::is_integral<S>>;
    +
    286
    +
    287 template <class T, class S>
    +
    288 using integer_with_signed_integer = xtl::conjunction<both_integer<T, S>, xtl::is_signed<S>>;
    +
    289
    +
    290 template <class T, class S>
    +
    291 using integer_with_unsigned_integer = xtl::conjunction<both_integer<T, S>, std::is_unsigned<S>>;
    +
    292
    +
    293 template <class T, class S = T, XTL_REQUIRES(xtl::negation<both_integer<T, S>>)>
    +
    294 inline auto arange_impl(T start, T stop, S step = 1) noexcept
    +
    295 {
    +
    296 std::size_t shape = static_cast<std::size_t>(std::ceil((stop - start) / step));
    +
    297 return detail::make_xgenerator(detail::arange_generator<T, T, S>(start, stop, step, shape), {shape});
    +
    298 }
    +
    299
    +
    300 template <class T, class S = T, XTL_REQUIRES(integer_with_signed_integer<T, S>)>
    +
    301 inline auto arange_impl(T start, T stop, S step = 1) noexcept
    +
    302 {
    +
    303 bool empty_cond = (stop - start) / step <= 0;
    +
    304 std::size_t shape = 0;
    +
    305 if (!empty_cond)
    +
    306 {
    +
    307 shape = stop > start ? static_cast<std::size_t>((stop - start + step - S(1)) / step)
    +
    308 : static_cast<std::size_t>((start - stop - step - S(1)) / -step);
    +
    309 }
    +
    310 return detail::make_xgenerator(detail::arange_generator<T, T, S>(start, stop, step, shape), {shape});
    +
    311 }
    +
    312
    +
    313 template <class T, class S = T, XTL_REQUIRES(integer_with_unsigned_integer<T, S>)>
    +
    314 inline auto arange_impl(T start, T stop, S step = 1) noexcept
    +
    315 {
    +
    316 bool empty_cond = stop <= start;
    +
    317 std::size_t shape = 0;
    +
    318 if (!empty_cond)
    +
    319 {
    +
    320 shape = static_cast<std::size_t>((stop - start + step - S(1)) / step);
    +
    321 }
    +
    322 return detail::make_xgenerator(detail::arange_generator<T, T, S>(start, stop, step, shape), {shape});
    +
    323 }
    +
    324
    +
    325 template <class F>
    +
    326 class fn_impl
    +
    327 {
    +
    328 public:
    +
    329
    +
    330 using value_type = typename F::value_type;
    +
    331 using size_type = std::size_t;
    +
    332
    +
    333 fn_impl(F&& f)
    +
    334 : m_ft(f)
    +
    335 {
    +
    336 }
    +
    337
    +
    338 inline value_type operator()() const
    +
    339 {
    +
    340 size_type idx[1] = {0ul};
    +
    341 return access_impl(std::begin(idx), std::end(idx));
    +
    342 }
    +
    343
    +
    344 template <class... Args>
    +
    345 inline value_type operator()(Args... args) const
    +
    346 {
    +
    347 size_type idx[sizeof...(Args)] = {static_cast<size_type>(args)...};
    +
    348 return access_impl(std::begin(idx), std::end(idx));
    +
    349 }
    +
    350
    +
    351 template <class It>
    +
    352 inline value_type element(It first, It last) const
    +
    353 {
    +
    354 return access_impl(first, last);
    +
    355 }
    +
    356
    +
    357 private:
    +
    358
    +
    359 F m_ft;
    +
    360
    +
    361 template <class It>
    +
    362 inline value_type access_impl(const It& begin, const It& end) const
    +
    363 {
    +
    364 return m_ft(begin, end);
    +
    365 }
    +
    366 };
    +
    367
    +
    368 template <class T>
    +
    369 class eye_fn
    +
    370 {
    +
    371 public:
    +
    372
    +
    373 using value_type = T;
    +
    374
    +
    375 eye_fn(int k)
    +
    376 : m_k(k)
    +
    377 {
    +
    378 }
    +
    379
    +
    380 template <class It>
    +
    381 inline T operator()(const It& /*begin*/, const It& end) const
    +
    382 {
    +
    383 using lvalue_type = typename std::iterator_traits<It>::value_type;
    +
    384 return *(end - 1) == *(end - 2) + static_cast<lvalue_type>(m_k) ? T(1) : T(0);
    +
    385 }
    +
    386
    +
    387 private:
    +
    388
    +
    389 std::ptrdiff_t m_k;
    +
    390 };
    +
    391 }
    +
    392
    +
    402 template <class T = bool>
    +
    +
    403 inline auto eye(const std::vector<std::size_t>& shape, int k = 0)
    +
    404 {
    +
    405 return detail::make_xgenerator(detail::fn_impl<detail::eye_fn<T>>(detail::eye_fn<T>(k)), shape);
    +
    406 }
    +
    +
    407
    +
    417 template <class T = bool>
    +
    +
    418 inline auto eye(std::size_t n, int k = 0)
    +
    419 {
    +
    420 return eye<T>({n, n}, k);
    +
    421 }
    +
    +
    422
    +
    431 template <class T, class S = T>
    +
    +
    432 inline auto arange(T start, T stop, S step = 1) noexcept
    +
    433 {
    +
    434 return detail::arange_impl(start, stop, step);
    +
    435 }
    +
    +
    436
    +
    444 template <class T>
    +
    +
    445 inline auto arange(T stop) noexcept
    +
    446 {
    +
    447 return arange<T>(T(0), stop, T(1));
    +
    448 }
    +
    +
    449
    +
    459 template <class T>
    +
    +
    460 inline auto linspace(T start, T stop, std::size_t num_samples = 50, bool endpoint = true) noexcept
    +
    461 {
    +
    462 using fp_type = std::common_type_t<T, double>;
    +
    463 fp_type step = fp_type(stop - start) / std::fmax(fp_type(1), fp_type(num_samples - (endpoint ? 1 : 0)));
    +
    464 return detail::make_xgenerator(
    +
    465 detail::arange_generator<fp_type, T>(fp_type(start), fp_type(stop), step, num_samples, endpoint),
    +
    466 {num_samples}
    +
    467 );
    +
    468 }
    +
    +
    469
    +
    480 template <class T>
    +
    +
    481 inline auto logspace(T start, T stop, std::size_t num_samples, T base = 10, bool endpoint = true) noexcept
    +
    482 {
    +
    483 return pow(std::move(base), linspace(start, stop, num_samples, endpoint));
    +
    484 }
    +
    +
    485
    +
    486 namespace detail
    +
    487 {
    +
    488 template <class... CT>
    +
    489 class concatenate_access
    +
    490 {
    +
    491 public:
    +
    492
    +
    493 using tuple_type = std::tuple<CT...>;
    +
    494 using size_type = std::size_t;
    +
    495 using value_type = xtl::promote_type_t<typename std::decay_t<CT>::value_type...>;
    +
    496
    +
    497 template <class S>
    +
    498 inline value_type access(const tuple_type& t, size_type axis, S index) const
    +
    499 {
    +
    500 auto match = [&index, axis](auto& arr)
    +
    501 {
    +
    502 if (index[axis] >= arr.shape()[axis])
    +
    503 {
    +
    504 index[axis] -= arr.shape()[axis];
    +
    505 return false;
    +
    506 }
    +
    507 return true;
    +
    508 };
    +
    509
    +
    510 auto get = [&index](auto& arr)
    +
    511 {
    +
    512 return arr[index];
    +
    513 };
    +
    514
    +
    515 size_type i = 0;
    +
    516 for (; i < sizeof...(CT); ++i)
    +
    517 {
    +
    518 if (apply<bool>(i, match, t))
    +
    519 {
    +
    520 break;
    +
    521 }
    +
    522 }
    +
    523 return apply<value_type>(i, get, t);
    +
    524 }
    +
    525 };
    +
    526
    +
    527 template <class... CT>
    +
    528 class stack_access
    +
    529 {
    +
    530 public:
    +
    531
    +
    532 using tuple_type = std::tuple<CT...>;
    +
    533 using size_type = std::size_t;
    +
    534 using value_type = xtl::promote_type_t<typename std::decay_t<CT>::value_type...>;
    +
    535
    +
    536 template <class S>
    +
    537 inline value_type access(const tuple_type& t, size_type axis, S index) const
    +
    538 {
    +
    539 auto get_item = [&index](auto& arr)
    +
    540 {
    +
    541 return arr[index];
    +
    542 };
    +
    543 size_type i = index[axis];
    +
    544 index.erase(index.begin() + std::ptrdiff_t(axis));
    +
    545 return apply<value_type>(i, get_item, t);
    +
    546 }
    +
    547 };
    +
    548
    +
    549 template <class... CT>
    +
    550 class vstack_access : private concatenate_access<CT...>,
    +
    551 private stack_access<CT...>
    +
    552 {
    +
    553 public:
    +
    554
    +
    555 using tuple_type = std::tuple<CT...>;
    +
    556 using size_type = std::size_t;
    +
    557 using value_type = xtl::promote_type_t<typename std::decay_t<CT>::value_type...>;
    +
    558
    +
    559 using concatenate_base = concatenate_access<CT...>;
    +
    560 using stack_base = stack_access<CT...>;
    +
    561
    +
    562 template <class S>
    +
    563 inline value_type access(const tuple_type& t, size_type axis, S index) const
    +
    564 {
    +
    565 if (std::get<0>(t).dimension() == 1)
    +
    566 {
    +
    567 return stack_base::access(t, axis, index);
    +
    568 }
    +
    569 else
    +
    570 {
    +
    571 return concatenate_base::access(t, axis, index);
    +
    572 }
    +
    573 }
    +
    574 };
    +
    575
    +
    576 template <template <class...> class F, class... CT>
    +
    577 class concatenate_invoker : private F<CT...>
    +
    578 {
    +
    579 public:
    +
    580
    +
    581 using tuple_type = std::tuple<CT...>;
    +
    582 using size_type = std::size_t;
    +
    583 using value_type = xtl::promote_type_t<typename std::decay_t<CT>::value_type...>;
    +
    584
    +
    585 inline concatenate_invoker(tuple_type&& t, size_type axis)
    +
    586 : m_t(std::move(t))
    +
    587 , m_axis(axis)
    +
    588 {
    +
    589 }
    +
    590
    +
    591 template <class... Args>
    +
    592 inline value_type operator()(Args... args) const
    +
    593 {
    +
    594 // TODO: avoid memory allocation
    +
    595 return this->access(m_t, m_axis, xindex({static_cast<size_type>(args)...}));
    +
    596 }
    +
    597
    +
    598 template <class It>
    +
    599 inline value_type element(It first, It last) const
    +
    600 {
    +
    601 // TODO: avoid memory allocation
    +
    602 return this->access(m_t, m_axis, xindex(first, last));
    +
    603 }
    +
    604
    +
    605 private:
    +
    606
    +
    607 tuple_type m_t;
    +
    608 size_type m_axis;
    +
    609 };
    +
    610
    +
    611 template <class... CT>
    +
    612 using concatenate_impl = concatenate_invoker<concatenate_access, CT...>;
    +
    613
    +
    614 template <class... CT>
    +
    615 using stack_impl = concatenate_invoker<stack_access, CT...>;
    +
    616
    +
    617 template <class... CT>
    +
    618 using vstack_impl = concatenate_invoker<vstack_access, CT...>;
    +
    619
    +
    620 template <class CT>
    +
    621 class repeat_impl
    +
    622 {
    +
    623 public:
    +
    624
    +
    625 using xexpression_type = std::decay_t<CT>;
    +
    626 using size_type = typename xexpression_type::size_type;
    +
    627 using value_type = typename xexpression_type::value_type;
    +
    628
    +
    629 template <class CTA>
    +
    630 repeat_impl(CTA&& source, size_type axis)
    +
    631 : m_source(std::forward<CTA>(source))
    +
    632 , m_axis(axis)
    +
    633 {
    +
    634 }
    +
    635
    +
    636 template <class... Args>
    +
    637 value_type operator()(Args... args) const
    +
    638 {
    +
    639 std::array<size_type, sizeof...(Args)> args_arr = {static_cast<size_type>(args)...};
    +
    640 return m_source(args_arr[m_axis]);
    +
    641 }
    +
    642
    +
    643 template <class It>
    +
    644 inline value_type element(It first, It) const
    +
    645 {
    +
    646 return m_source(*(first + static_cast<std::ptrdiff_t>(m_axis)));
    +
    647 }
    +
    648
    +
    649 private:
    +
    650
    +
    651 CT m_source;
    +
    652 size_type m_axis;
    +
    653 };
    +
    654 }
    +
    655
    +
    660 template <class... Types>
    +
    +
    661 inline auto xtuple(Types&&... args)
    +
    662 {
    +
    663 return std::tuple<xtl::const_closure_type_t<Types>...>(std::forward<Types>(args)...);
    +
    664 }
    +
    +
    665
    +
    666 namespace detail
    +
    667 {
    +
    668 template <bool... values>
    + +
    670
    +
    671 template <class X, class Y, std::size_t axis, class AxesSequence>
    +
    672 struct concat_fixed_shape_impl;
    +
    673
    +
    674 template <class X, class Y, std::size_t axis, std::size_t... Is>
    +
    675 struct concat_fixed_shape_impl<X, Y, axis, std::index_sequence<Is...>>
    +
    676 {
    +
    677 static_assert(X::size() == Y::size(), "Concatenation requires equisized shapes");
    +
    678 static_assert(axis < X::size(), "Concatenation requires a valid axis");
    +
    679 static_assert(
    +
    680 all_true<(axis == Is || X::template get<Is>() == Y::template get<Is>())...>::value,
    +
    681 "Concatenation requires compatible shapes and axis"
    +
    682 );
    +
    683
    +
    684 using type = fixed_shape<
    +
    685 (axis == Is ? X::template get<Is>() + Y::template get<Is>() : X::template get<Is>())...>;
    +
    686 };
    +
    687
    +
    688 template <std::size_t axis, class X, class Y, class... Rest>
    +
    689 struct concat_fixed_shape;
    +
    690
    +
    691 template <std::size_t axis, class X, class Y>
    +
    692 struct concat_fixed_shape<axis, X, Y>
    +
    693 {
    +
    694 using type = typename concat_fixed_shape_impl<X, Y, axis, std::make_index_sequence<X::size()>>::type;
    +
    695 };
    +
    696
    +
    697 template <std::size_t axis, class X, class Y, class... Rest>
    +
    698 struct concat_fixed_shape
    +
    699 {
    +
    700 using type = typename concat_fixed_shape<axis, X, typename concat_fixed_shape<axis, Y, Rest...>::type>::type;
    +
    701 };
    +
    702
    +
    703 template <std::size_t axis, class... Args>
    +
    704 using concat_fixed_shape_t = typename concat_fixed_shape<axis, Args...>::type;
    +
    705
    +
    706 template <class... CT>
    +
    707 using all_fixed_shapes = detail::all_fixed<typename std::decay_t<CT>::shape_type...>;
    +
    708
    +
    709 struct concat_shape_builder_t
    +
    710 {
    +
    711 template <class Shape, bool = detail::is_fixed<Shape>::value>
    +
    712 struct concat_shape;
    +
    713
    +
    714 template <class Shape>
    +
    715 struct concat_shape<Shape, true>
    +
    716 {
    +
    717 // Convert `fixed_shape` to `static_shape` to allow runtime dimension calculation.
    +
    718 using type = static_shape<typename Shape::value_type, Shape::size()>;
    +
    719 };
    +
    720
    +
    721 template <class Shape>
    +
    722 struct concat_shape<Shape, false>
    +
    723 {
    +
    724 using type = Shape;
    +
    725 };
    +
    726
    +
    727 template <class... Args>
    +
    728 static auto build(const std::tuple<Args...>& t, std::size_t axis)
    +
    729 {
    +
    730 using shape_type = promote_shape_t<
    +
    731 typename concat_shape<typename std::decay_t<Args>::shape_type>::type...>;
    +
    732 using source_shape_type = decltype(std::get<0>(t).shape());
    +
    733 shape_type new_shape = xtl::forward_sequence<shape_type, source_shape_type>(
    +
    734 std::get<0>(t).shape()
    +
    735 );
    +
    736
    +
    737 auto check_shape = [&axis, &new_shape](auto& arr)
    +
    738 {
    +
    739 std::size_t s = new_shape.size();
    +
    740 bool res = s == arr.dimension();
    +
    741 for (std::size_t i = 0; i < s; ++i)
    +
    742 {
    +
    743 res = res && (i == axis || new_shape[i] == arr.shape(i));
    +
    744 }
    +
    745 if (!res)
    +
    746 {
    +
    747 throw_concatenate_error(new_shape, arr.shape());
    +
    748 }
    +
    749 };
    +
    750 for_each(check_shape, t);
    +
    751
    +
    752 auto shape_at_axis = [&axis](std::size_t prev, auto& arr) -> std::size_t
    +
    753 {
    +
    754 return prev + arr.shape()[axis];
    +
    755 };
    +
    756 new_shape[axis] += accumulate(shape_at_axis, std::size_t(0), t) - new_shape[axis];
    +
    757
    +
    758 return new_shape;
    +
    759 }
    +
    760 };
    +
    761
    +
    762 } // namespace detail
    +
    763
    +
    764 /***************
    +
    765 * concatenate *
    +
    766 ***************/
    +
    767
    +
    783 template <class... CT>
    +
    +
    784 inline auto concatenate(std::tuple<CT...>&& t, std::size_t axis = 0)
    +
    785 {
    +
    786 const auto shape = detail::concat_shape_builder_t::build(t, axis);
    +
    787 return detail::make_xgenerator(detail::concatenate_impl<CT...>(std::move(t), axis), shape);
    +
    788 }
    +
    +
    789
    +
    790 template <std::size_t axis, class... CT, typename = std::enable_if_t<detail::all_fixed_shapes<CT...>::value>>
    +
    791 inline auto concatenate(std::tuple<CT...>&& t)
    +
    792 {
    +
    793 using shape_type = detail::concat_fixed_shape_t<axis, typename std::decay_t<CT>::shape_type...>;
    +
    794 return detail::make_xgenerator(detail::concatenate_impl<CT...>(std::move(t), axis), shape_type{});
    +
    795 }
    +
    796
    +
    797 namespace detail
    +
    798 {
    +
    799 template <class T, std::size_t N>
    +
    800 inline std::array<T, N + 1> add_axis(std::array<T, N> arr, std::size_t axis, std::size_t value)
    +
    801 {
    +
    802 std::array<T, N + 1> temp;
    +
    803 std::copy(arr.begin(), arr.begin() + axis, temp.begin());
    +
    804 temp[axis] = value;
    +
    805 std::copy(arr.begin() + axis, arr.end(), temp.begin() + axis + 1);
    +
    806 return temp;
    +
    807 }
    +
    808
    +
    809 template <class T>
    +
    810 inline T add_axis(T arr, std::size_t axis, std::size_t value)
    +
    811 {
    +
    812 T temp(arr);
    +
    813 temp.insert(temp.begin() + std::ptrdiff_t(axis), value);
    +
    814 return temp;
    +
    815 }
    +
    816 }
    +
    817
    +
    836 template <class... CT>
    +
    +
    837 inline auto stack(std::tuple<CT...>&& t, std::size_t axis = 0)
    +
    838 {
    +
    839 using shape_type = promote_shape_t<typename std::decay_t<CT>::shape_type...>;
    +
    840 using source_shape_type = decltype(std::get<0>(t).shape());
    +
    841 auto new_shape = detail::add_axis(
    +
    842 xtl::forward_sequence<shape_type, source_shape_type>(std::get<0>(t).shape()),
    +
    843 axis,
    +
    844 sizeof...(CT)
    +
    845 );
    +
    846 return detail::make_xgenerator(detail::stack_impl<CT...>(std::move(t), axis), new_shape);
    +
    847 }
    +
    +
    848
    +
    857 template <class... CT>
    +
    +
    858 inline auto hstack(std::tuple<CT...>&& t)
    +
    859 {
    +
    860 auto dim = std::get<0>(t).dimension();
    +
    861 std::size_t axis = dim > std::size_t(1) ? 1 : 0;
    +
    862 return concatenate(std::move(t), axis);
    +
    863 }
    +
    +
    864
    +
    865 namespace detail
    +
    866 {
    +
    867 template <class S, class... CT>
    +
    868 inline auto vstack_shape(std::tuple<CT...>& t, const S& shape)
    +
    869 {
    +
    870 using size_type = typename S::value_type;
    +
    871 auto res = shape.size() == size_type(1)
    +
    872 ? S({sizeof...(CT), shape[0]})
    +
    873 : concat_shape_builder_t::build(std::move(t), size_type(0));
    +
    874 return res;
    +
    875 }
    +
    876
    +
    877 template <class T, class... CT>
    +
    878 inline auto vstack_shape(const std::tuple<CT...>&, std::array<T, 1> shape)
    +
    879 {
    +
    880 std::array<T, 2> res = {sizeof...(CT), shape[0]};
    +
    881 return res;
    +
    882 }
    +
    883 }
    +
    884
    +
    893 template <class... CT>
    +
    +
    894 inline auto vstack(std::tuple<CT...>&& t)
    +
    895 {
    +
    896 using shape_type = promote_shape_t<typename std::decay_t<CT>::shape_type...>;
    +
    897 using source_shape_type = decltype(std::get<0>(t).shape());
    +
    898 auto new_shape = detail::vstack_shape(
    +
    899 t,
    +
    900 xtl::forward_sequence<shape_type, source_shape_type>(std::get<0>(t).shape())
    +
    901 );
    +
    902 return detail::make_xgenerator(detail::vstack_impl<CT...>(std::move(t), size_t(0)), new_shape);
    +
    903 }
    +
    +
    904
    +
    905 namespace detail
    +
    906 {
    +
    907
    +
    908 template <std::size_t... I, class... E>
    +
    909 inline auto meshgrid_impl(std::index_sequence<I...>, E&&... e) noexcept
    +
    910 {
    +
    911#if defined _MSC_VER
    +
    912 const std::array<std::size_t, sizeof...(E)> shape = {e.shape()[0]...};
    +
    913 return std::make_tuple(
    +
    914 detail::make_xgenerator(detail::repeat_impl<xclosure_t<E>>(std::forward<E>(e), I), shape)...
    +
    915 );
    +
    916#else
    +
    917 return std::make_tuple(detail::make_xgenerator(
    +
    918 detail::repeat_impl<xclosure_t<E>>(std::forward<E>(e), I),
    +
    919 {e.shape()[0]...}
    +
    920 )...);
    +
    921#endif
    +
    922 }
    +
    923 }
    +
    924
    +
    933 template <class... E>
    +
    +
    934 inline auto meshgrid(E&&... e) noexcept
    +
    935 {
    +
    936 return detail::meshgrid_impl(std::make_index_sequence<sizeof...(E)>(), std::forward<E>(e)...);
    +
    937 }
    +
    +
    938
    +
    939 namespace detail
    +
    940 {
    +
    941 template <class CT>
    +
    942 class diagonal_fn
    +
    943 {
    +
    944 public:
    +
    945
    +
    946 using xexpression_type = std::decay_t<CT>;
    +
    947 using value_type = typename xexpression_type::value_type;
    +
    948
    +
    949 template <class CTA>
    +
    950 diagonal_fn(CTA&& source, int offset, std::size_t axis_1, std::size_t axis_2)
    +
    951 : m_source(std::forward<CTA>(source))
    +
    952 , m_offset(offset)
    +
    953 , m_axis_1(axis_1)
    +
    954 , m_axis_2(axis_2)
    +
    955 {
    +
    956 }
    +
    957
    +
    958 template <class It>
    +
    959 inline value_type operator()(It begin, It) const
    +
    960 {
    +
    961 xindex idx(m_source.shape().size());
    +
    962
    +
    963 for (std::size_t i = 0; i < idx.size(); i++)
    +
    964 {
    +
    965 if (i != m_axis_1 && i != m_axis_2)
    +
    966 {
    +
    967 idx[i] = static_cast<std::size_t>(*begin++);
    +
    968 }
    +
    969 }
    +
    970 using it_vtype = typename std::iterator_traits<It>::value_type;
    +
    971 it_vtype uoffset = static_cast<it_vtype>(m_offset);
    +
    972 if (m_offset >= 0)
    +
    973 {
    +
    974 idx[m_axis_1] = static_cast<std::size_t>(*(begin));
    +
    975 idx[m_axis_2] = static_cast<std::size_t>(*(begin) + uoffset);
    +
    976 }
    +
    977 else
    +
    978 {
    +
    979 idx[m_axis_1] = static_cast<std::size_t>(*(begin) -uoffset);
    +
    980 idx[m_axis_2] = static_cast<std::size_t>(*(begin));
    +
    981 }
    +
    982 return m_source[idx];
    +
    983 }
    +
    984
    +
    985 private:
    +
    986
    +
    987 CT m_source;
    +
    988 const int m_offset;
    +
    989 const std::size_t m_axis_1;
    +
    990 const std::size_t m_axis_2;
    +
    991 };
    +
    992
    +
    993 template <class CT>
    +
    994 class diag_fn
    +
    995 {
    +
    996 public:
    +
    997
    +
    998 using xexpression_type = std::decay_t<CT>;
    +
    999 using value_type = typename xexpression_type::value_type;
    +
    1000
    +
    1001 template <class CTA>
    +
    1002 diag_fn(CTA&& source, int k)
    +
    1003 : m_source(std::forward<CTA>(source))
    +
    1004 , m_k(k)
    +
    1005 {
    +
    1006 }
    +
    1007
    +
    1008 template <class It>
    +
    1009 inline value_type operator()(It begin, It) const
    +
    1010 {
    +
    1011 using it_vtype = typename std::iterator_traits<It>::value_type;
    +
    1012 it_vtype umk = static_cast<it_vtype>(m_k);
    +
    1013 if (m_k > 0)
    +
    1014 {
    +
    1015 return *begin + umk == *(begin + 1) ? m_source(*begin) : value_type(0);
    +
    1016 }
    +
    1017 else
    +
    1018 {
    +
    1019 return *begin + umk == *(begin + 1) ? m_source(*begin + umk) : value_type(0);
    +
    1020 }
    +
    1021 }
    +
    1022
    +
    1023 private:
    +
    1024
    +
    1025 CT m_source;
    +
    1026 const int m_k;
    +
    1027 };
    +
    1028
    +
    1029 template <class CT, class Comp>
    +
    1030 class trilu_fn
    +
    1031 {
    +
    1032 public:
    +
    1033
    +
    1034 using xexpression_type = std::decay_t<CT>;
    +
    1035 using value_type = typename xexpression_type::value_type;
    +
    1036 using signed_idx_type = long int;
    +
    1037
    +
    1038 template <class CTA>
    +
    1039 trilu_fn(CTA&& source, int k, Comp comp)
    +
    1040 : m_source(std::forward<CTA>(source))
    +
    1041 , m_k(k)
    +
    1042 , m_comp(comp)
    +
    1043 {
    +
    1044 }
    +
    1045
    +
    1046 template <class It>
    +
    1047 inline value_type operator()(It begin, It end) const
    +
    1048 {
    +
    1049 // have to cast to signed int otherwise -1 can lead to overflow
    +
    1050 return m_comp(signed_idx_type(*begin) + m_k, signed_idx_type(*(begin + 1)))
    +
    1051 ? m_source.element(begin, end)
    +
    1052 : value_type(0);
    +
    1053 }
    +
    1054
    +
    1055 private:
    +
    1056
    +
    1057 CT m_source;
    +
    1058 const signed_idx_type m_k;
    +
    1059 const Comp m_comp;
    +
    1060 };
    +
    1061 }
    +
    1062
    +
    1063 namespace detail
    +
    1064 {
    +
    1065 // meta-function returning the shape type for a diagonal
    +
    1066 template <class ST, class... S>
    +
    1067 struct diagonal_shape_type
    +
    1068 {
    +
    1069 using type = ST;
    +
    1070 };
    +
    1071
    +
    1072 template <class I, std::size_t L>
    +
    1073 struct diagonal_shape_type<std::array<I, L>>
    +
    1074 {
    +
    1075 using type = std::array<I, L - 1>;
    +
    1076 };
    +
    1077 }
    +
    1078
    +
    1103 template <class E>
    +
    +
    1104 inline auto diagonal(E&& arr, int offset = 0, std::size_t axis_1 = 0, std::size_t axis_2 = 1)
    +
    1105 {
    +
    1106 using CT = xclosure_t<E>;
    +
    1107 using shape_type = typename detail::diagonal_shape_type<typename std::decay_t<E>::shape_type>::type;
    +
    1108
    +
    1109 auto shape = arr.shape();
    +
    1110 auto dimension = arr.dimension();
    +
    1111
    +
    1112 // The following shape calculation code is an almost verbatim adaptation of NumPy:
    +
    1113 // https://github.com/numpy/numpy/blob/2aabeafb97bea4e1bfa29d946fbf31e1104e7ae0/numpy/core/src/multiarray/item_selection.c#L1799
    +
    1114 auto ret_shape = xtl::make_sequence<shape_type>(dimension - 1, 0);
    +
    1115 int dim_1 = static_cast<int>(shape[axis_1]);
    +
    1116 int dim_2 = static_cast<int>(shape[axis_2]);
    +
    1117
    +
    1118 offset >= 0 ? dim_2 -= offset : dim_1 += offset;
    +
    1119
    +
    1120 auto diag_size = std::size_t(dim_2 < dim_1 ? dim_2 : dim_1);
    +
    1121
    +
    1122 std::size_t i = 0;
    +
    1123 for (std::size_t idim = 0; idim < dimension; ++idim)
    +
    1124 {
    +
    1125 if (idim != axis_1 && idim != axis_2)
    +
    1126 {
    +
    1127 ret_shape[i++] = shape[idim];
    +
    1128 }
    +
    1129 }
    +
    1130
    +
    1131 ret_shape.back() = diag_size;
    +
    1132
    +
    1133 return detail::make_xgenerator(
    +
    1134 detail::fn_impl<detail::diagonal_fn<CT>>(
    +
    1135 detail::diagonal_fn<CT>(std::forward<E>(arr), offset, axis_1, axis_2)
    +
    1136 ),
    +
    1137 ret_shape
    +
    1138 );
    +
    1139 }
    +
    +
    1140
    +
    1155 template <class E>
    +
    +
    1156 inline auto diag(E&& arr, int k = 0)
    +
    1157 {
    +
    1158 using CT = xclosure_t<E>;
    +
    1159 std::size_t sk = std::size_t(std::abs(k));
    +
    1160 std::size_t s = arr.shape()[0] + sk;
    +
    1161 return detail::make_xgenerator(
    +
    1162 detail::fn_impl<detail::diag_fn<CT>>(detail::diag_fn<CT>(std::forward<E>(arr), k)),
    +
    1163 {s, s}
    +
    1164 );
    +
    1165 }
    +
    +
    1166
    +
    1176 template <class E>
    +
    +
    1177 inline auto tril(E&& arr, int k = 0)
    +
    1178 {
    +
    1179 using CT = xclosure_t<E>;
    +
    1180 auto shape = arr.shape();
    +
    1181 return detail::make_xgenerator(
    +
    1182 detail::fn_impl<detail::trilu_fn<CT, std::greater_equal<long int>>>(
    +
    1183 detail::trilu_fn<CT, std::greater_equal<long int>>(
    +
    1184 std::forward<E>(arr),
    +
    1185 k,
    +
    1186 std::greater_equal<long int>()
    +
    1187 )
    +
    1188 ),
    +
    1189 shape
    +
    1190 );
    +
    1191 }
    +
    +
    1192
    +
    1202 template <class E>
    +
    +
    1203 inline auto triu(E&& arr, int k = 0)
    +
    1204 {
    +
    1205 using CT = xclosure_t<E>;
    +
    1206 auto shape = arr.shape();
    +
    1207 return detail::make_xgenerator(
    +
    1208 detail::fn_impl<detail::trilu_fn<CT, std::less_equal<long int>>>(
    +
    1209 detail::trilu_fn<CT, std::less_equal<long int>>(std::forward<E>(arr), k, std::less_equal<long int>())
    +
    1210 ),
    +
    1211 shape
    +
    1212 );
    +
    1213 }
    +
    +
    1214}
    +
    1215#endif
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    auto pow(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >
    Power function.
    Definition xmath.hpp:1014
    +
    standard mathematical functions for xexpressions
    +
    auto broadcast(E &&e, const S &s)
    Returns an xexpression broadcasting the given expression to a specified shape.
    +
    auto stack(std::tuple< CT... > &&t, std::size_t axis=0)
    Stack xexpressions along axis.
    Definition xbuilder.hpp:837
    +
    auto arange(T start, T stop, S step=1) noexcept
    Generates numbers evenly spaced within given half-open interval [start, stop).
    Definition xbuilder.hpp:432
    +
    auto concatenate(std::tuple< CT... > &&t, std::size_t axis=0)
    Concatenates xexpressions along axis.
    Definition xbuilder.hpp:784
    +
    auto eye(const std::vector< std::size_t > &shape, int k=0)
    Generates an array with ones on the diagonal.
    Definition xbuilder.hpp:403
    +
    auto ones_like(const xexpression< E > &e)
    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with ones and of the same shape,...
    Definition xbuilder.hpp:169
    +
    auto ones(S shape) noexcept
    Returns an xexpression containing ones of the specified shape.
    Definition xbuilder.hpp:46
    +
    auto meshgrid(E &&... e) noexcept
    Return coordinate tensors from coordinate vectors.
    Definition xbuilder.hpp:934
    +
    layout_type
    Definition xlayout.hpp:24
    +
    auto triu(E &&arr, int k=0)
    Extract upper triangular matrix from xexpression.
    +
    auto full_like(const xexpression< E > &e, typename E::value_type fill_value)
    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with fill_value and of the same shape,...
    Definition xbuilder.hpp:136
    +
    auto zeros_like(const xexpression< E > &e)
    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with zeros and of the same shape,...
    Definition xbuilder.hpp:154
    +
    auto zeros(S shape) noexcept
    Returns an xexpression containing zeros of the specified shape.
    Definition xbuilder.hpp:66
    +
    auto accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())
    Accumulate and flatten array NOTE This function is not lazy!
    +
    auto linspace(T start, T stop, std::size_t num_samples=50, bool endpoint=true) noexcept
    Generates num_samples evenly spaced numbers over given interval.
    Definition xbuilder.hpp:460
    +
    xfixed_container< T, FSH, L, Sharable > xtensor_fixed
    Alias template on xfixed_container with default parameters for layout type.
    +
    auto vstack(std::tuple< CT... > &&t)
    Stack xexpressions in sequence vertically (row wise).
    Definition xbuilder.hpp:894
    +
    auto diagonal(E &&arr, int offset=0, std::size_t axis_1=0, std::size_t axis_2=1)
    Returns the elements on the diagonal of arr If arr has more than two dimensions, then the axes specif...
    +
    auto hstack(std::tuple< CT... > &&t)
    Stack xexpressions in sequence horizontally (column wise).
    Definition xbuilder.hpp:858
    +
    auto tril(E &&arr, int k=0)
    Extract lower triangular matrix from xexpression.
    +
    auto empty_like(const xexpression< E > &e)
    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of the same shape,...
    Definition xbuilder.hpp:121
    +
    auto diag(E &&arr, int k=0)
    xexpression with values of arr on the diagonal, zeroes otherwise
    +
    auto xtuple(Types &&... args)
    Creates tuples from arguments for concatenate and stack.
    Definition xbuilder.hpp:661
    +
    auto logspace(T start, T stop, std::size_t num_samples, T base=10, bool endpoint=true) noexcept
    Generates num_samples numbers evenly spaced on a log scale over given interval.
    Definition xbuilder.hpp:481
    +
    xarray< T, L > empty(const S &shape)
    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of with value_type T...
    Definition xbuilder.hpp:89
    + +
    +
    + + + + diff --git a/xchunked__array_8hpp_source.html b/xchunked__array_8hpp_source.html new file mode 100644 index 000000000..55e8cfcbb --- /dev/null +++ b/xchunked__array_8hpp_source.html @@ -0,0 +1,770 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xchunked_array.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xchunked_array.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_CHUNKED_ARRAY_HPP
    +
    11#define XTENSOR_CHUNKED_ARRAY_HPP
    +
    12
    +
    13#include <array>
    +
    14#include <vector>
    +
    15
    +
    16#include "xarray.hpp"
    +
    17#include "xchunked_assign.hpp"
    +
    18
    +
    19namespace xt
    +
    20{
    +
    28 /******************************
    +
    29 * xchunked_array declaration *
    +
    30 ******************************/
    +
    31
    +
    32 template <class chunk_storage>
    +
    33 class xchunked_array;
    +
    34
    +
    35 template <class chunk_storage>
    +
    + +
    37 {
    +
    38 using chunk_type = typename chunk_storage::value_type;
    +
    39 using const_reference = typename chunk_type::const_reference;
    +
    40 using reference = typename chunk_type::reference;
    +
    41 using size_type = std::size_t;
    +
    42 using storage_type = chunk_type;
    + +
    44 };
    +
    +
    45
    +
    46 template <class chunk_storage>
    +
    + +
    48 {
    +
    49 using chunk_type = typename chunk_storage::value_type;
    +
    50 using inner_shape_type = typename chunk_type::shape_type;
    + + +
    53 };
    +
    +
    54
    +
    55 template <class chunk_storage>
    +
    +
    56 class xchunked_array : public xaccessible<xchunked_array<chunk_storage>>,
    +
    57 public xiterable<xchunked_array<chunk_storage>>,
    +
    58 public xchunked_semantic<xchunked_array<chunk_storage>>
    +
    59 {
    +
    60 public:
    +
    61
    +
    62 using chunk_storage_type = chunk_storage;
    +
    63 using chunk_type = typename chunk_storage::value_type;
    +
    64 using grid_shape_type = typename chunk_storage::shape_type;
    +
    65 using const_reference = typename chunk_type::const_reference;
    +
    66 using reference = typename chunk_type::reference;
    + + + +
    70 using const_stepper = typename iterable_base::const_stepper;
    +
    71 using stepper = typename iterable_base::stepper;
    + +
    73 using size_type = typename inner_types::size_type;
    +
    74 using storage_type = typename inner_types::storage_type;
    +
    75 using value_type = typename storage_type::value_type;
    +
    76 using pointer = value_type*;
    +
    77 using const_pointer = const value_type*;
    +
    78 using difference_type = std::ptrdiff_t;
    +
    79 using shape_type = typename chunk_type::shape_type;
    +
    80 using temporary_type = typename inner_types::temporary_type;
    +
    81 using bool_load_type = xt::bool_load_type<value_type>;
    +
    82 static constexpr layout_type static_layout = layout_type::dynamic;
    +
    83 static constexpr bool contiguous_layout = false;
    + + +
    86
    +
    87 template <class S>
    + +
    89 chunk_storage_type&& chunks,
    +
    90 S&& shape,
    +
    91 S&& chunk_shape,
    +
    92 layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT
    +
    93 );
    +
    94 ~xchunked_array() = default;
    +
    95
    +
    96 xchunked_array(const xchunked_array&) = default;
    +
    97 xchunked_array& operator=(const xchunked_array&) = default;
    +
    98
    +
    99 xchunked_array(xchunked_array&&) = default;
    +
    100 xchunked_array& operator=(xchunked_array&&) = default;
    +
    101
    +
    102 template <class E>
    + +
    104 const xexpression<E>& e,
    +
    105 chunk_storage_type&& chunks,
    +
    106 layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT
    +
    107 );
    +
    108
    +
    109 template <class E, class S>
    + +
    111 const xexpression<E>& e,
    +
    112 chunk_storage_type&& chunks,
    +
    113 S&& chunk_shape,
    +
    114 layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT
    +
    115 );
    +
    116
    +
    117 template <class E>
    +
    118 xchunked_array& operator=(const xexpression<E>& e);
    +
    119
    +
    120 size_type dimension() const noexcept;
    +
    121 const shape_type& shape() const noexcept;
    +
    122 layout_type layout() const noexcept;
    +
    123 bool is_contiguous() const noexcept;
    +
    124
    +
    125 template <class... Idxs>
    +
    126 reference operator()(Idxs... idxs);
    +
    127
    +
    128 template <class... Idxs>
    +
    129 const_reference operator()(Idxs... idxs) const;
    +
    130
    +
    131 template <class It>
    +
    132 reference element(It first, It last);
    +
    133
    +
    134 template <class It>
    +
    135 const_reference element(It first, It last) const;
    +
    136
    +
    137 template <class S>
    +
    138 bool broadcast_shape(S& s, bool reuse_cache = false) const;
    +
    139
    +
    140 template <class S>
    +
    141 bool has_linear_assign(const S& strides) const noexcept;
    +
    142
    +
    143 template <class S>
    +
    144 stepper stepper_begin(const S& shape) noexcept;
    +
    145 template <class S>
    +
    146 stepper stepper_end(const S& shape, layout_type) noexcept;
    +
    147
    +
    148 template <class S>
    +
    149 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    150 template <class S>
    +
    151 const_stepper stepper_end(const S& shape, layout_type) const noexcept;
    +
    152
    +
    153 const shape_type& chunk_shape() const noexcept;
    +
    154 size_type grid_size() const noexcept;
    +
    155 const grid_shape_type& grid_shape() const noexcept;
    +
    156
    +
    157 chunk_storage_type& chunks();
    +
    158 const chunk_storage_type& chunks() const;
    +
    159
    +
    160 chunk_iterator chunk_begin();
    +
    161 chunk_iterator chunk_end();
    +
    162
    +
    163 const_chunk_iterator chunk_begin() const;
    +
    164 const_chunk_iterator chunk_end() const;
    +
    165 const_chunk_iterator chunk_cbegin() const;
    +
    166 const_chunk_iterator chunk_cend() const;
    +
    167
    +
    168 private:
    +
    169
    +
    170 template <class... Idxs>
    +
    171 using indexes_type = std::
    +
    172 pair<std::array<std::size_t, sizeof...(Idxs)>, std::array<std::size_t, sizeof...(Idxs)>>;
    +
    173
    +
    174 template <class... Idxs>
    +
    175 using chunk_indexes_type = std::array<std::pair<std::size_t, std::size_t>, sizeof...(Idxs)>;
    +
    176
    +
    177 template <std::size_t N>
    +
    178 using static_indexes_type = std::pair<std::array<std::size_t, N>, std::array<std::size_t, N>>;
    +
    179
    +
    180 using dynamic_indexes_type = std::pair<std::vector<std::size_t>, std::vector<std::size_t>>;
    +
    181
    +
    182 template <class S1, class S2>
    +
    183 void resize(S1&& shape, S2&& chunk_shape, layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT);
    +
    184
    +
    185 template <class... Idxs>
    +
    186 indexes_type<Idxs...> get_indexes(Idxs... idxs) const;
    +
    187
    +
    188 template <class Idx>
    +
    189 std::pair<std::size_t, std::size_t> get_chunk_indexes_in_dimension(std::size_t dim, Idx idx) const;
    +
    190
    +
    191 template <std::size_t... dims, class... Idxs>
    +
    192 chunk_indexes_type<Idxs...> get_chunk_indexes(std::index_sequence<dims...>, Idxs... idxs) const;
    +
    193
    +
    194 template <class T, std::size_t N>
    +
    195 static_indexes_type<N> unpack(const std::array<T, N>& arr) const;
    +
    196
    +
    197 template <class It>
    +
    198 dynamic_indexes_type get_indexes_dynamic(It first, It last) const;
    +
    199
    +
    200 shape_type m_shape;
    +
    201 shape_type m_chunk_shape;
    +
    202 chunk_storage_type m_chunks;
    +
    203 };
    +
    +
    204
    +
    205 template <class E>
    +
    206 constexpr bool is_chunked(const xexpression<E>& e);
    +
    207
    +
    208 template <class E>
    +
    209 constexpr bool is_chunked();
    +
    210
    +
    228 template <class T, layout_type L = XTENSOR_DEFAULT_LAYOUT, class S>
    + +
    230 chunked_array(S&& shape, S&& chunk_shape, layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT);
    +
    231
    +
    232 template <class T, layout_type L = XTENSOR_DEFAULT_LAYOUT, class S>
    + +
    234 std::initializer_list<S> shape,
    +
    235 std::initializer_list<S> chunk_shape,
    +
    236 layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT
    +
    237 );
    +
    238
    +
    255 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class E, class S>
    + +
    257 chunked_array(const xexpression<E>& e, S&& chunk_shape, layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT);
    +
    258
    +
    274 template <layout_type L = XTENSOR_DEFAULT_LAYOUT, class E>
    + +
    276 chunked_array(const xexpression<E>& e, layout_type chunk_memory_layout = XTENSOR_DEFAULT_LAYOUT);
    +
    277
    +
    278 /*******************************
    +
    279 * chunk_helper implementation *
    +
    280 *******************************/
    +
    281
    +
    282 namespace detail
    +
    283 {
    +
    284 // Workaround for VS2015
    +
    285 template <class E>
    +
    286 using try_chunk_shape = decltype(std::declval<E>().chunk_shape());
    +
    287
    +
    288 template <class E, template <class> class OP, class = void>
    +
    289 struct chunk_helper_impl
    +
    290 {
    +
    291 using is_chunked = std::false_type;
    +
    292
    +
    293 static const auto& chunk_shape(const xexpression<E>& e)
    +
    294 {
    +
    295 return e.derived_cast().shape();
    +
    296 }
    +
    297
    +
    298 template <class S1, class S2>
    +
    299 static void
    +
    300 resize(E& chunks, const S1& container_shape, const S2& chunk_shape, layout_type chunk_memory_layout)
    +
    301 {
    +
    302 chunks.resize(container_shape);
    +
    303 for (auto& c : chunks)
    +
    304 {
    +
    305 c.resize(chunk_shape, chunk_memory_layout);
    +
    306 }
    +
    307 }
    +
    308 };
    +
    309
    +
    310 template <class E, template <class> class OP>
    +
    311 struct chunk_helper_impl<E, OP, void_t<OP<E>>>
    +
    312 {
    +
    313 using is_chunked = std::true_type;
    +
    314
    +
    315 static const auto& chunk_shape(const xexpression<E>& e)
    +
    316 {
    +
    317 return e.derived_cast().chunk_shape();
    +
    318 }
    +
    319
    +
    320 template <class S1, class S2>
    +
    321 static void
    +
    322 resize(E& chunks, const S1& container_shape, const S2& /*chunk_shape*/, layout_type /*chunk_memory_layout*/)
    +
    323 {
    +
    324 chunks.resize(container_shape);
    +
    325 }
    +
    326 };
    +
    327
    +
    328 template <class E>
    +
    329 using chunk_helper = chunk_helper_impl<E, try_chunk_shape>;
    +
    330 }
    +
    331
    +
    332 template <class E>
    +
    333 constexpr bool is_chunked(const xexpression<E>&)
    +
    334 {
    +
    335 return is_chunked<E>();
    +
    336 }
    +
    337
    +
    338 template <class E>
    +
    339 constexpr bool is_chunked()
    +
    340 {
    +
    341 using return_type = typename detail::chunk_helper<E>::is_chunked;
    +
    342 return return_type::value;
    +
    343 }
    +
    344
    +
    345 template <class T, layout_type L, class S>
    +
    346 inline xchunked_array<xarray<xarray<T>>>
    +
    +
    347 chunked_array(S&& shape, S&& chunk_shape, layout_type chunk_memory_layout)
    +
    348 {
    +
    349 using chunk_storage = xarray<xarray<T, L>>;
    + +
    351 chunk_storage(),
    +
    352 std::forward<S>(shape),
    +
    353 std::forward<S>(chunk_shape),
    +
    354 chunk_memory_layout
    +
    355 );
    +
    356 }
    +
    +
    357
    +
    358 template <class T, layout_type L, class S>
    +
    359 xchunked_array<xarray<xarray<T>>>
    +
    360 chunked_array(std::initializer_list<S> shape, std::initializer_list<S> chunk_shape, layout_type chunk_memory_layout)
    +
    361 {
    +
    362 using sh_type = std::vector<std::size_t>;
    +
    363 auto sh = xtl::forward_sequence<sh_type, std::initializer_list<S>>(shape);
    +
    364 auto ch_sh = xtl::forward_sequence<sh_type, std::initializer_list<S>>(chunk_shape);
    +
    365 return chunked_array<T, L, sh_type>(std::move(sh), std::move(ch_sh), chunk_memory_layout);
    +
    366 }
    +
    367
    +
    368 template <layout_type L, class E, class S>
    +
    369 inline xchunked_array<xarray<xarray<typename E::value_type>>>
    +
    +
    370 chunked_array(const xexpression<E>& e, S&& chunk_shape, layout_type chunk_memory_layout)
    +
    371 {
    +
    372 using chunk_storage = xarray<xarray<typename E::value_type, L>>;
    +
    373 return xchunked_array<chunk_storage>(e, chunk_storage(), std::forward<S>(chunk_shape), chunk_memory_layout);
    +
    374 }
    +
    +
    375
    +
    376 template <layout_type L, class E>
    +
    377 inline xchunked_array<xarray<xarray<typename E::value_type>>>
    +
    +
    378 chunked_array(const xexpression<E>& e, layout_type chunk_memory_layout)
    +
    379 {
    +
    380 using chunk_storage = xarray<xarray<typename E::value_type, L>>;
    +
    381 return xchunked_array<chunk_storage>(e, chunk_storage(), chunk_memory_layout);
    +
    382 }
    +
    +
    383
    +
    384 /*********************************
    +
    385 * xchunked_array implementation *
    +
    386 *********************************/
    +
    387
    +
    388 template <class CS>
    +
    389 template <class S>
    +
    390 inline xchunked_array<CS>::xchunked_array(CS&& chunks, S&& shape, S&& chunk_shape, layout_type chunk_memory_layout)
    +
    391 : m_chunks(std::move(chunks))
    +
    392 {
    +
    393 resize(std::forward<S>(shape), std::forward<S>(chunk_shape), chunk_memory_layout);
    +
    394 }
    +
    395
    +
    396 template <class CS>
    +
    397 template <class E>
    +
    398 inline xchunked_array<CS>::xchunked_array(const xexpression<E>& e, CS&& chunks, layout_type chunk_memory_layout)
    +
    399 : xchunked_array(e, std::move(chunks), detail::chunk_helper<E>::chunk_shape(e), chunk_memory_layout)
    +
    400 {
    +
    401 }
    +
    402
    +
    403 template <class CS>
    +
    404 template <class E, class S>
    +
    405 inline xchunked_array<CS>::xchunked_array(
    +
    406 const xexpression<E>& e,
    +
    407 CS&& chunks,
    +
    408 S&& chunk_shape,
    +
    409 layout_type chunk_memory_layout
    +
    410 )
    +
    411 : m_chunks(std::move(chunks))
    +
    412 {
    +
    413 resize(e.derived_cast().shape(), std::forward<S>(chunk_shape), chunk_memory_layout);
    +
    414 semantic_base::assign_xexpression(e);
    +
    415 }
    +
    416
    +
    417 template <class CS>
    +
    418 template <class E>
    +
    419 inline auto xchunked_array<CS>::operator=(const xexpression<E>& e) -> self_type&
    +
    420 {
    +
    421 return semantic_base::operator=(e);
    +
    422 }
    +
    423
    +
    424 template <class CS>
    +
    425 inline auto xchunked_array<CS>::dimension() const noexcept -> size_type
    +
    426 {
    +
    427 return m_shape.size();
    +
    428 }
    +
    429
    +
    430 template <class CS>
    +
    431 inline auto xchunked_array<CS>::shape() const noexcept -> const shape_type&
    +
    432 {
    +
    433 return m_shape;
    +
    434 }
    +
    435
    +
    436 template <class CS>
    +
    437 inline auto xchunked_array<CS>::layout() const noexcept -> layout_type
    +
    438 {
    +
    439 return static_layout;
    +
    440 }
    +
    441
    +
    442 template <class CS>
    +
    443 inline bool xchunked_array<CS>::is_contiguous() const noexcept
    +
    444 {
    +
    445 return false;
    +
    446 }
    +
    447
    +
    448 template <class CS>
    +
    449 template <class... Idxs>
    +
    450 inline auto xchunked_array<CS>::operator()(Idxs... idxs) -> reference
    +
    451 {
    +
    452 auto ii = get_indexes(idxs...);
    +
    453 auto& chunk = m_chunks.element(ii.first.cbegin(), ii.first.cend());
    +
    454 return chunk.element(ii.second.cbegin(), ii.second.cend());
    +
    455 }
    +
    456
    +
    457 template <class CS>
    +
    458 template <class... Idxs>
    +
    459 inline auto xchunked_array<CS>::operator()(Idxs... idxs) const -> const_reference
    +
    460 {
    +
    461 auto ii = get_indexes(idxs...);
    +
    462 auto& chunk = m_chunks.element(ii.first.cbegin(), ii.first.cend());
    +
    463 return chunk.element(ii.second.cbegin(), ii.second.cend());
    +
    464 }
    +
    465
    +
    466 template <class CS>
    +
    467 template <class It>
    +
    468 inline auto xchunked_array<CS>::element(It first, It last) -> reference
    +
    469 {
    +
    470 auto ii = get_indexes_dynamic(first, last);
    +
    471 auto& chunk = m_chunks.element(ii.first.begin(), ii.first.end());
    +
    472 return chunk.element(ii.second.begin(), ii.second.end());
    +
    473 }
    +
    474
    +
    475 template <class CS>
    +
    476 template <class It>
    +
    477 inline auto xchunked_array<CS>::element(It first, It last) const -> const_reference
    +
    478 {
    +
    479 auto ii = get_indexes_dynamic(first, last);
    +
    480 auto& chunk = m_chunks.element(ii.first.begin(), ii.first.end());
    +
    481 return chunk.element(ii.second.begin(), ii.second.end());
    +
    482 }
    +
    483
    +
    484 template <class CS>
    +
    485 template <class S>
    +
    486 inline bool xchunked_array<CS>::broadcast_shape(S& s, bool) const
    +
    487 {
    +
    488 return xt::broadcast_shape(shape(), s);
    +
    489 }
    +
    490
    +
    491 template <class CS>
    +
    492 template <class S>
    +
    493 inline bool xchunked_array<CS>::has_linear_assign(const S&) const noexcept
    +
    494 {
    +
    495 return false;
    +
    496 }
    +
    497
    +
    498 template <class CS>
    +
    499 template <class S>
    +
    500 inline auto xchunked_array<CS>::stepper_begin(const S& shape) noexcept -> stepper
    +
    501 {
    +
    502 size_type offset = shape.size() - this->dimension();
    +
    503 return stepper(this, offset);
    +
    504 }
    +
    505
    +
    506 template <class CS>
    +
    507 template <class S>
    +
    508 inline auto xchunked_array<CS>::stepper_end(const S& shape, layout_type) noexcept -> stepper
    +
    509 {
    +
    510 size_type offset = shape.size() - this->dimension();
    +
    511 return stepper(this, offset, true);
    +
    512 }
    +
    513
    +
    514 template <class CS>
    +
    515 template <class S>
    +
    516 inline auto xchunked_array<CS>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    517 {
    +
    518 size_type offset = shape.size() - this->dimension();
    +
    519 return const_stepper(this, offset);
    +
    520 }
    +
    521
    +
    522 template <class CS>
    +
    523 template <class S>
    +
    524 inline auto xchunked_array<CS>::stepper_end(const S& shape, layout_type) const noexcept -> const_stepper
    +
    525 {
    +
    526 size_type offset = shape.size() - this->dimension();
    +
    527 return const_stepper(this, offset, true);
    +
    528 }
    +
    529
    +
    530 template <class CS>
    +
    531 inline auto xchunked_array<CS>::chunk_shape() const noexcept -> const shape_type&
    +
    532 {
    +
    533 return m_chunk_shape;
    +
    534 }
    +
    535
    +
    536 template <class CS>
    +
    537 inline auto xchunked_array<CS>::grid_size() const noexcept -> size_type
    +
    538 {
    +
    539 return m_chunks.size();
    +
    540 }
    +
    541
    +
    542 template <class CS>
    +
    543 inline auto xchunked_array<CS>::grid_shape() const noexcept -> const grid_shape_type&
    +
    544 {
    +
    545 return m_chunks.shape();
    +
    546 }
    +
    547
    +
    548 template <class CS>
    +
    549 inline auto xchunked_array<CS>::chunks() -> chunk_storage_type&
    +
    550 {
    +
    551 return m_chunks;
    +
    552 }
    +
    553
    +
    554 template <class CS>
    +
    555 inline auto xchunked_array<CS>::chunks() const -> const chunk_storage_type&
    +
    556 {
    +
    557 return m_chunks;
    +
    558 }
    +
    559
    +
    560 template <class CS>
    +
    561 inline auto xchunked_array<CS>::chunk_begin() -> chunk_iterator
    +
    562 {
    +
    563 shape_type chunk_index(m_shape.size(), size_type(0));
    +
    564 return chunk_iterator(*this, std::move(chunk_index), 0u);
    +
    565 }
    +
    566
    +
    567 template <class CS>
    +
    568 inline auto xchunked_array<CS>::chunk_end() -> chunk_iterator
    +
    569 {
    +
    570 shape_type sh = xtl::forward_sequence<shape_type, const grid_shape_type>(grid_shape());
    +
    571 return chunk_iterator(*this, std::move(sh), grid_size());
    +
    572 }
    +
    573
    +
    574 template <class CS>
    +
    575 inline auto xchunked_array<CS>::chunk_begin() const -> const_chunk_iterator
    +
    576 {
    +
    577 shape_type chunk_index(m_shape.size(), size_type(0));
    +
    578 return const_chunk_iterator(*this, std::move(chunk_index), 0u);
    +
    579 }
    +
    580
    +
    581 template <class CS>
    +
    582 inline auto xchunked_array<CS>::chunk_end() const -> const_chunk_iterator
    +
    583 {
    +
    584 shape_type sh = xtl::forward_sequence<shape_type, const grid_shape_type>(grid_shape());
    +
    585 return const_chunk_iterator(*this, std::move(sh), grid_size());
    +
    586 }
    +
    587
    +
    588 template <class CS>
    +
    589 inline auto xchunked_array<CS>::chunk_cbegin() const -> const_chunk_iterator
    +
    590 {
    +
    591 return chunk_begin();
    +
    592 }
    +
    593
    +
    594 template <class CS>
    +
    595 inline auto xchunked_array<CS>::chunk_cend() const -> const_chunk_iterator
    +
    596 {
    +
    597 return chunk_end();
    +
    598 }
    +
    599
    +
    600 template <class CS>
    +
    601 template <class S1, class S2>
    +
    602 inline void xchunked_array<CS>::resize(S1&& shape, S2&& chunk_shape, layout_type chunk_memory_layout)
    +
    603 {
    +
    604 // compute chunk number in each dimension (shape_of_chunks)
    +
    605 std::vector<std::size_t> shape_of_chunks(shape.size());
    +
    606 std::transform(
    +
    607 shape.cbegin(),
    +
    608 shape.cend(),
    +
    609 chunk_shape.cbegin(),
    +
    610 shape_of_chunks.begin(),
    +
    611 [](auto s, auto cs)
    +
    612 {
    +
    613 std::size_t cn = s / cs;
    +
    614 if (s % cs > 0)
    +
    615 {
    +
    616 cn += std::size_t(1); // edge_chunk
    +
    617 }
    +
    618 return cn;
    +
    619 }
    +
    620 );
    +
    621
    +
    622 detail::chunk_helper<CS>::resize(m_chunks, shape_of_chunks, chunk_shape, chunk_memory_layout);
    +
    623
    +
    624 m_shape = xtl::forward_sequence<shape_type, S1>(shape);
    +
    625 m_chunk_shape = xtl::forward_sequence<shape_type, S2>(chunk_shape);
    +
    626 }
    +
    627
    +
    628 template <class CS>
    +
    629 template <class... Idxs>
    +
    630 inline auto xchunked_array<CS>::get_indexes(Idxs... idxs) const -> indexes_type<Idxs...>
    +
    631 {
    +
    632 auto chunk_indexes_packed = get_chunk_indexes(std::make_index_sequence<sizeof...(Idxs)>(), idxs...);
    +
    633 return unpack(chunk_indexes_packed);
    +
    634 }
    +
    635
    +
    636 template <class CS>
    +
    637 template <class Idx>
    +
    638 inline std::pair<std::size_t, std::size_t>
    +
    639 xchunked_array<CS>::get_chunk_indexes_in_dimension(std::size_t dim, Idx idx) const
    +
    640 {
    +
    641 std::size_t index_of_chunk = static_cast<size_t>(idx) / m_chunk_shape[dim];
    +
    642 std::size_t index_in_chunk = static_cast<size_t>(idx) - index_of_chunk * m_chunk_shape[dim];
    +
    643 return std::make_pair(index_of_chunk, index_in_chunk);
    +
    644 }
    +
    645
    +
    646 template <class CS>
    +
    647 template <std::size_t... dims, class... Idxs>
    +
    648 inline auto xchunked_array<CS>::get_chunk_indexes(std::index_sequence<dims...>, Idxs... idxs) const
    +
    649 -> chunk_indexes_type<Idxs...>
    +
    650 {
    +
    651 chunk_indexes_type<Idxs...> chunk_indexes = {{get_chunk_indexes_in_dimension(dims, idxs)...}};
    +
    652 return chunk_indexes;
    +
    653 }
    +
    654
    +
    655 template <class CS>
    +
    656 template <class T, std::size_t N>
    +
    657 inline auto xchunked_array<CS>::unpack(const std::array<T, N>& arr) const -> static_indexes_type<N>
    +
    658 {
    +
    659 std::array<std::size_t, N> arr0;
    +
    660 std::array<std::size_t, N> arr1;
    +
    661 for (std::size_t i = 0; i < N; ++i)
    +
    662 {
    +
    663 arr0[i] = std::get<0>(arr[i]);
    +
    664 arr1[i] = std::get<1>(arr[i]);
    +
    665 }
    +
    666 return std::make_pair(arr0, arr1);
    +
    667 }
    +
    668
    +
    669 template <class CS>
    +
    670 template <class It>
    +
    671 inline auto xchunked_array<CS>::get_indexes_dynamic(It first, It last) const -> dynamic_indexes_type
    +
    672 {
    +
    673 auto size = static_cast<std::size_t>(std::distance(first, last));
    +
    674 std::vector<std::size_t> indexes_of_chunk(size);
    +
    675 std::vector<std::size_t> indexes_in_chunk(size);
    +
    676 for (std::size_t dim = 0; dim < size; ++dim)
    +
    677 {
    +
    678 auto chunk_index = get_chunk_indexes_in_dimension(dim, *first++);
    +
    679 indexes_of_chunk[dim] = chunk_index.first;
    +
    680 indexes_in_chunk[dim] = chunk_index.second;
    +
    681 }
    +
    682 return std::make_pair(indexes_of_chunk, indexes_in_chunk);
    +
    683 }
    +
    684}
    +
    685
    +
    686#endif
    +
    Base class for implementation of common expression access methods.
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    + + + +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    + +
    Base class for multidimensional iterable expressions.
    +
    xchunked_array< xarray< xarray< T > > > chunked_array(S &&shape, S &&chunk_shape, layout_type chunk_memory_layout=::xt::layout_type::row_major)
    Creates an in-memory chunked array.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    +
    + + + + diff --git a/xchunked__assign_8hpp_source.html b/xchunked__assign_8hpp_source.html new file mode 100644 index 000000000..5ed351f61 --- /dev/null +++ b/xchunked__assign_8hpp_source.html @@ -0,0 +1,508 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xchunked_assign.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xchunked_assign.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_CHUNKED_ASSIGN_HPP
    +
    11#define XTENSOR_CHUNKED_ASSIGN_HPP
    +
    12
    +
    13#include "xnoalias.hpp"
    +
    14#include "xstrided_view.hpp"
    +
    15
    +
    16namespace xt
    +
    17{
    +
    18
    +
    19 /*******************
    +
    20 * xchunk_assigner *
    +
    21 *******************/
    +
    22
    +
    23 template <class T, class chunk_storage>
    +
    + +
    25 {
    +
    26 public:
    +
    27
    +
    28 using temporary_type = T;
    +
    29
    +
    30 template <class E, class DST>
    +
    31 void build_and_assign_temporary(const xexpression<E>& e, DST& dst);
    +
    32 };
    +
    +
    33
    +
    34 /*********************************
    +
    35 * xchunked_semantic declaration *
    +
    36 *********************************/
    +
    37
    +
    38 template <class D>
    +
    + +
    40 {
    +
    41 public:
    +
    42
    + +
    44 using derived_type = D;
    +
    45 using temporary_type = typename base_type::temporary_type;
    +
    46
    +
    47 template <class E>
    +
    48 derived_type& assign_xexpression(const xexpression<E>& e);
    +
    49
    +
    50 template <class E>
    +
    51 derived_type& computed_assign(const xexpression<E>& e);
    +
    52
    +
    53 template <class E, class F>
    +
    54 derived_type& scalar_computed_assign(const E& e, F&& f);
    +
    55
    +
    56 protected:
    +
    57
    +
    58 xchunked_semantic() = default;
    +
    59 ~xchunked_semantic() = default;
    +
    60
    +
    61 xchunked_semantic(const xchunked_semantic&) = default;
    +
    62 xchunked_semantic& operator=(const xchunked_semantic&) = default;
    +
    63
    + +
    65 xchunked_semantic& operator=(xchunked_semantic&&) = default;
    +
    66
    +
    67 template <class E>
    +
    68 derived_type& operator=(const xexpression<E>& e);
    +
    69
    +
    70 private:
    +
    71
    +
    72 template <class CS>
    +
    73 xchunked_assigner<temporary_type, CS> get_assigner(const CS&) const;
    +
    74 };
    +
    +
    75
    +
    76 /*******************
    +
    77 * xchunk_iterator *
    +
    78 *******************/
    +
    79
    +
    80 template <class CS>
    +
    81 class xchunked_array;
    +
    82
    +
    83 template <class E>
    +
    84 class xchunked_view;
    +
    85
    +
    86 namespace detail
    +
    87 {
    +
    88 template <class T>
    +
    89 struct is_xchunked_array : std::false_type
    +
    90 {
    +
    91 };
    +
    92
    +
    93 template <class CS>
    +
    94 struct is_xchunked_array<xchunked_array<CS>> : std::true_type
    +
    95 {
    +
    96 };
    +
    97
    +
    98 template <class T>
    +
    99 struct is_xchunked_view : std::false_type
    +
    100 {
    +
    101 };
    +
    102
    +
    103 template <class E>
    +
    104 struct is_xchunked_view<xchunked_view<E>> : std::true_type
    +
    105 {
    +
    106 };
    +
    107
    +
    108 struct invalid_chunk_iterator
    +
    109 {
    +
    110 };
    +
    111
    +
    112 template <class A>
    +
    113 struct xchunk_iterator_array
    +
    114 {
    +
    115 using reference = decltype(*(std::declval<A>().chunks().begin()));
    +
    116
    +
    117 inline decltype(auto) get_chunk(A& arr, typename A::size_type i, const xstrided_slice_vector&) const
    +
    118 {
    +
    119 using difference_type = typename A::difference_type;
    +
    120 return *(arr.chunks().begin() + static_cast<difference_type>(i));
    +
    121 }
    +
    122 };
    +
    123
    +
    124 template <class V>
    +
    125 struct xchunk_iterator_view
    +
    126 {
    +
    127 using reference = decltype(xt::strided_view(
    +
    128 std::declval<V>().expression(),
    +
    129 std::declval<xstrided_slice_vector>()
    +
    130 ));
    +
    131
    +
    132 inline auto get_chunk(V& view, typename V::size_type, const xstrided_slice_vector& sv) const
    +
    133 {
    +
    134 return xt::strided_view(view.expression(), sv);
    +
    135 }
    +
    136 };
    +
    137
    +
    138 template <class T>
    +
    139 struct xchunk_iterator_base
    +
    140 : std::conditional_t<
    +
    141 is_xchunked_array<std::decay_t<T>>::value,
    +
    142 xchunk_iterator_array<T>,
    +
    143 std::conditional_t<is_xchunked_view<std::decay_t<T>>::value, xchunk_iterator_view<T>, invalid_chunk_iterator>>
    +
    144 {
    +
    145 };
    +
    146 }
    +
    147
    +
    148 template <class E>
    +
    +
    149 class xchunk_iterator : private detail::xchunk_iterator_base<E>
    +
    150 {
    +
    151 public:
    +
    152
    +
    153 using base_type = detail::xchunk_iterator_base<E>;
    + +
    155 using size_type = typename E::size_type;
    +
    156 using shape_type = typename E::shape_type;
    +
    157 using slice_vector = xstrided_slice_vector;
    +
    158
    +
    159 using reference = typename base_type::reference;
    +
    160 using value_type = std::remove_reference_t<reference>;
    +
    161 using pointer = value_type*;
    +
    162 using difference_type = typename E::difference_type;
    +
    163 using iterator_category = std::forward_iterator_tag;
    +
    164
    +
    165
    +
    166 xchunk_iterator() = default;
    +
    167 xchunk_iterator(E& chunked_expression, shape_type&& chunk_index, size_type chunk_linear_index);
    +
    168
    +
    169 self_type& operator++();
    +
    170 self_type operator++(int);
    +
    171 decltype(auto) operator*() const;
    +
    172
    +
    173 bool operator==(const self_type& rhs) const;
    +
    174 bool operator!=(const self_type& rhs) const;
    +
    175
    +
    176 const shape_type& chunk_index() const;
    +
    177
    +
    178 const slice_vector& get_slice_vector() const;
    +
    179 slice_vector get_chunk_slice_vector() const;
    +
    180
    +
    181 private:
    +
    182
    +
    183 void fill_slice_vector(size_type index);
    +
    184
    +
    185 E* p_chunked_expression;
    +
    186 shape_type m_chunk_index;
    +
    187 size_type m_chunk_linear_index;
    +
    188 xstrided_slice_vector m_slice_vector;
    +
    189 };
    +
    +
    190
    +
    191 /************************************
    +
    192 * xchunked_semantic implementation *
    +
    193 ************************************/
    +
    194
    +
    195 template <class T, class CS>
    +
    196 template <class E, class DST>
    + +
    198 {
    +
    199 temporary_type tmp(e, CS(), dst.chunk_shape());
    +
    200 dst = std::move(tmp);
    +
    201 }
    +
    202
    +
    203 template <class D>
    +
    204 template <class E>
    +
    205 inline auto xchunked_semantic<D>::assign_xexpression(const xexpression<E>& e) -> derived_type&
    +
    206 {
    +
    207 auto& d = this->derived_cast();
    +
    208 const auto& chunk_shape = d.chunk_shape();
    +
    209 size_t i = 0;
    +
    210 auto it_end = d.chunk_end();
    +
    211 for (auto it = d.chunk_begin(); it != it_end; ++it, ++i)
    +
    212 {
    +
    213 auto rhs = strided_view(e.derived_cast(), it.get_slice_vector());
    +
    214 if (rhs.shape() != chunk_shape)
    +
    215 {
    +
    216 noalias(strided_view(*it, it.get_chunk_slice_vector())) = rhs;
    +
    217 }
    +
    218 else
    +
    219 {
    +
    220 noalias(*it) = rhs;
    +
    221 }
    +
    222 }
    +
    223
    +
    224 return this->derived_cast();
    +
    225 }
    +
    226
    +
    227 template <class D>
    +
    228 template <class E>
    +
    229 inline auto xchunked_semantic<D>::computed_assign(const xexpression<E>& e) -> derived_type&
    +
    230 {
    +
    231 D& d = this->derived_cast();
    +
    232 if (e.derived_cast().dimension() > d.dimension() || e.derived_cast().shape() > d.shape())
    +
    233 {
    +
    234 return operator=(e);
    +
    235 }
    +
    236 else
    +
    237 {
    +
    238 return assign_xexpression(e);
    +
    239 }
    +
    240 }
    +
    241
    +
    242 template <class D>
    +
    243 template <class E, class F>
    +
    244 inline auto xchunked_semantic<D>::scalar_computed_assign(const E& e, F&& f) -> derived_type&
    +
    245 {
    +
    246 for (auto& c : this->derived_cast().chunks())
    +
    247 {
    +
    248 c.scalar_computed_assign(e, f);
    +
    249 }
    +
    250 return this->derived_cast();
    +
    251 }
    +
    252
    +
    253 template <class D>
    +
    254 template <class E>
    +
    255 inline auto xchunked_semantic<D>::operator=(const xexpression<E>& e) -> derived_type&
    +
    256 {
    +
    257 D& d = this->derived_cast();
    +
    258 get_assigner(d.chunks()).build_and_assign_temporary(e, d);
    +
    259 return d;
    +
    260 }
    +
    261
    +
    262 template <class D>
    +
    263 template <class CS>
    +
    264 inline auto xchunked_semantic<D>::get_assigner(const CS&) const -> xchunked_assigner<temporary_type, CS>
    +
    265 {
    +
    266 return xchunked_assigner<temporary_type, CS>();
    +
    267 }
    +
    268
    +
    269 /**********************************
    +
    270 * xchunk_iterator implementation *
    +
    271 **********************************/
    +
    272
    +
    273 template <class E>
    +
    274 inline xchunk_iterator<E>::xchunk_iterator(E& expression, shape_type&& chunk_index, size_type chunk_linear_index)
    +
    275 : p_chunked_expression(&expression)
    +
    276 , m_chunk_index(std::move(chunk_index))
    +
    277 , m_chunk_linear_index(chunk_linear_index)
    +
    278 , m_slice_vector(m_chunk_index.size())
    +
    279 {
    +
    280 for (size_type i = 0; i < m_chunk_index.size(); ++i)
    +
    281 {
    +
    282 fill_slice_vector(i);
    +
    283 }
    +
    284 }
    +
    285
    +
    286 template <class E>
    +
    287 inline xchunk_iterator<E>& xchunk_iterator<E>::operator++()
    +
    288 {
    +
    289 if (m_chunk_linear_index + 1u != p_chunked_expression->grid_size())
    +
    290 {
    +
    291 size_type i = p_chunked_expression->dimension();
    +
    292 while (i != 0)
    +
    293 {
    +
    294 --i;
    +
    295 if (m_chunk_index[i] + 1u == p_chunked_expression->grid_shape()[i])
    +
    296 {
    +
    297 m_chunk_index[i] = 0;
    +
    298 fill_slice_vector(i);
    +
    299 }
    +
    300 else
    +
    301 {
    +
    302 m_chunk_index[i] += 1;
    +
    303 fill_slice_vector(i);
    +
    304 break;
    +
    305 }
    +
    306 }
    +
    307 }
    +
    308 m_chunk_linear_index++;
    +
    309 return *this;
    +
    310 }
    +
    311
    +
    312 template <class E>
    +
    313 inline xchunk_iterator<E> xchunk_iterator<E>::operator++(int)
    +
    314 {
    +
    315 xchunk_iterator<E> it = *this;
    +
    316 ++(*this);
    +
    317 return it;
    +
    318 }
    +
    319
    +
    320 template <class E>
    +
    321 inline decltype(auto) xchunk_iterator<E>::operator*() const
    +
    322 {
    +
    323 return base_type::get_chunk(*p_chunked_expression, m_chunk_linear_index, m_slice_vector);
    +
    324 }
    +
    325
    +
    326 template <class E>
    +
    327 inline bool xchunk_iterator<E>::operator==(const xchunk_iterator& other) const
    +
    328 {
    +
    329 return m_chunk_linear_index == other.m_chunk_linear_index;
    +
    330 }
    +
    331
    +
    332 template <class E>
    +
    333 inline bool xchunk_iterator<E>::operator!=(const xchunk_iterator& other) const
    +
    334 {
    +
    335 return !(*this == other);
    +
    336 }
    +
    337
    +
    338 template <class E>
    +
    339 inline auto xchunk_iterator<E>::get_slice_vector() const -> const slice_vector&
    +
    340 {
    +
    341 return m_slice_vector;
    +
    342 }
    +
    343
    +
    344 template <class E>
    +
    345 auto xchunk_iterator<E>::chunk_index() const -> const shape_type&
    +
    346 {
    +
    347 return m_chunk_index;
    +
    348 }
    +
    349
    +
    350 template <class E>
    +
    351 inline auto xchunk_iterator<E>::get_chunk_slice_vector() const -> slice_vector
    +
    352 {
    +
    353 slice_vector slices(m_chunk_index.size());
    +
    354 for (size_type i = 0; i < m_chunk_index.size(); ++i)
    +
    355 {
    +
    356 size_type chunk_shape = p_chunked_expression->chunk_shape()[i];
    +
    357 size_type end = std::min(
    +
    358 chunk_shape,
    +
    359 p_chunked_expression->shape()[i] - m_chunk_index[i] * chunk_shape
    +
    360 );
    +
    361 slices[i] = range(0u, end);
    +
    362 }
    +
    363 return slices;
    +
    364 }
    +
    365
    +
    366 template <class E>
    +
    367 inline void xchunk_iterator<E>::fill_slice_vector(size_type i)
    +
    368 {
    +
    369 size_type range_start = m_chunk_index[i] * p_chunked_expression->chunk_shape()[i];
    +
    370 size_type range_end = std::min(
    +
    371 (m_chunk_index[i] + 1) * p_chunked_expression->chunk_shape()[i],
    +
    372 p_chunked_expression->shape()[i]
    +
    373 );
    +
    374 m_slice_vector[i] = range(range_start, range_end);
    +
    375 }
    +
    376}
    +
    377
    +
    378#endif
    + + + + + +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Base interface for assignable xexpressions.
    Definition xsemantic.hpp:58
    +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    + +
    +
    + + + + diff --git a/xchunked__view_8hpp_source.html b/xchunked__view_8hpp_source.html new file mode 100644 index 000000000..a24bee860 --- /dev/null +++ b/xchunked__view_8hpp_source.html @@ -0,0 +1,416 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xchunked_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xchunked_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_CHUNKED_VIEW_HPP
    +
    11#define XTENSOR_CHUNKED_VIEW_HPP
    +
    12
    +
    13#include <xtl/xsequence.hpp>
    +
    14
    +
    15#include "xchunked_array.hpp"
    +
    16#include "xnoalias.hpp"
    +
    17#include "xstorage.hpp"
    +
    18#include "xstrided_view.hpp"
    +
    19
    +
    20namespace xt
    +
    21{
    +
    22
    +
    23 template <class E>
    +
    +
    24 struct is_chunked_t : detail::chunk_helper<E>::is_chunked
    +
    25 {
    +
    26 };
    +
    +
    27
    +
    28 /*****************
    +
    29 * xchunked_view *
    +
    30 *****************/
    +
    31
    +
    32 template <class E>
    +
    33 class xchunk_iterator;
    +
    34
    +
    35 template <class E>
    +
    + +
    37 {
    +
    38 public:
    +
    39
    + +
    41 using expression_type = std::decay_t<E>;
    +
    42 using value_type = typename expression_type::value_type;
    +
    43 using reference = typename expression_type::reference;
    +
    44 using const_reference = typename expression_type::const_reference;
    +
    45 using pointer = typename expression_type::pointer;
    +
    46 using const_pointer = typename expression_type::const_pointer;
    +
    47 using size_type = typename expression_type::size_type;
    +
    48 using difference_type = typename expression_type::difference_type;
    + + + +
    52
    +
    53 template <class OE, class S>
    +
    54 xchunked_view(OE&& e, S&& chunk_shape);
    +
    55
    +
    56 template <class OE>
    +
    57 xchunked_view(OE&& e);
    +
    58
    +
    59 void init();
    +
    60
    +
    61 template <class OE>
    +
    62 typename std::enable_if_t<!is_chunked_t<OE>::value, xchunked_view<E>&> operator=(const OE& e);
    +
    63
    +
    64 template <class OE>
    +
    65 typename std::enable_if_t<is_chunked_t<OE>::value, xchunked_view<E>&> operator=(const OE& e);
    +
    66
    +
    67 size_type dimension() const noexcept;
    +
    68 const shape_type& shape() const noexcept;
    +
    69 const shape_type& chunk_shape() const noexcept;
    +
    70 size_type grid_size() const noexcept;
    +
    71 const shape_type& grid_shape() const noexcept;
    +
    72
    +
    73 expression_type& expression() noexcept;
    +
    74 const expression_type& expression() const noexcept;
    +
    75
    +
    76 chunk_iterator chunk_begin();
    +
    77 chunk_iterator chunk_end();
    +
    78
    +
    79 const_chunk_iterator chunk_begin() const;
    +
    80 const_chunk_iterator chunk_end() const;
    +
    81 const_chunk_iterator chunk_cbegin() const;
    +
    82 const_chunk_iterator chunk_cend() const;
    +
    83
    +
    84 private:
    +
    85
    +
    86 E m_expression;
    +
    87 shape_type m_shape;
    +
    88 shape_type m_chunk_shape;
    +
    89 shape_type m_grid_shape;
    +
    90 size_type m_chunk_nb;
    +
    91 };
    +
    +
    92
    +
    93 template <class E, class S>
    +
    94 xchunked_view<E> as_chunked(E&& e, S&& chunk_shape);
    +
    95
    +
    96 /********************************
    +
    97 * xchunked_view implementation *
    +
    98 ********************************/
    +
    99
    +
    100 template <class E>
    +
    101 template <class OE, class S>
    +
    102 inline xchunked_view<E>::xchunked_view(OE&& e, S&& chunk_shape)
    +
    103 : m_expression(std::forward<OE>(e))
    +
    104 , m_chunk_shape(xtl::forward_sequence<shape_type, S>(chunk_shape))
    +
    105 {
    +
    106 m_shape.resize(e.dimension());
    +
    107 const auto& s = e.shape();
    +
    108 std::copy(s.cbegin(), s.cend(), m_shape.begin());
    +
    109 init();
    +
    110 }
    +
    111
    +
    112 template <class E>
    +
    113 template <class OE>
    +
    114 inline xchunked_view<E>::xchunked_view(OE&& e)
    +
    115 : m_expression(std::forward<OE>(e))
    +
    116 {
    +
    117 m_shape.resize(e.dimension());
    +
    118 const auto& s = e.shape();
    +
    119 std::copy(s.cbegin(), s.cend(), m_shape.begin());
    +
    120 }
    +
    121
    +
    122 template <class E>
    +
    123 void xchunked_view<E>::init()
    +
    124 {
    +
    125 // compute chunk number in each dimension
    +
    126 m_grid_shape.resize(m_shape.size());
    +
    127 std::transform(
    +
    128 m_shape.cbegin(),
    +
    129 m_shape.cend(),
    +
    130 m_chunk_shape.cbegin(),
    +
    131 m_grid_shape.begin(),
    +
    132 [](auto s, auto cs)
    +
    133 {
    +
    134 std::size_t cn = s / cs;
    +
    135 if (s % cs > 0)
    +
    136 {
    +
    137 cn++; // edge_chunk
    +
    138 }
    +
    139 return cn;
    +
    140 }
    +
    141 );
    +
    142 m_chunk_nb = std::accumulate(
    +
    143 std::begin(m_grid_shape),
    +
    144 std::end(m_grid_shape),
    +
    145 std::size_t(1),
    +
    146 std::multiplies<>()
    +
    147 );
    +
    148 }
    +
    149
    +
    150 template <class E>
    +
    151 template <class OE>
    +
    152 typename std::enable_if_t<!is_chunked_t<OE>::value, xchunked_view<E>&>
    +
    153 xchunked_view<E>::operator=(const OE& e)
    +
    154 {
    +
    155 auto end = chunk_end();
    +
    156 for (auto it = chunk_begin(); it != end; ++it)
    +
    157 {
    +
    158 auto el = *it;
    +
    159 noalias(el) = strided_view(e, it.get_slice_vector());
    +
    160 }
    +
    161 return *this;
    +
    162 }
    +
    163
    +
    164 template <class E>
    +
    165 template <class OE>
    +
    166 typename std::enable_if_t<is_chunked_t<OE>::value, xchunked_view<E>&>
    +
    167 xchunked_view<E>::operator=(const OE& e)
    +
    168 {
    +
    169 m_chunk_shape.resize(e.dimension());
    +
    170 const auto& cs = e.chunk_shape();
    +
    171 std::copy(cs.cbegin(), cs.cend(), m_chunk_shape.begin());
    +
    172 init();
    +
    173 auto it2 = e.chunks().begin();
    +
    174 auto end1 = chunk_end();
    +
    175 for (auto it1 = chunk_begin(); it1 != end1; ++it1, ++it2)
    +
    176 {
    +
    177 auto el1 = *it1;
    +
    178 auto el2 = *it2;
    +
    179 auto lhs_shape = el1.shape();
    +
    180 if (lhs_shape != el2.shape())
    +
    181 {
    +
    182 xstrided_slice_vector esv(el2.dimension()); // element slice in edge chunk
    +
    183 std::transform(
    +
    184 lhs_shape.begin(),
    +
    185 lhs_shape.end(),
    +
    186 esv.begin(),
    +
    187 [](auto size)
    +
    188 {
    +
    189 return range(0, size);
    +
    190 }
    +
    191 );
    +
    192 noalias(el1) = strided_view(el2, esv);
    +
    193 }
    +
    194 else
    +
    195 {
    +
    196 noalias(el1) = el2;
    +
    197 }
    +
    198 }
    +
    199 return *this;
    +
    200 }
    +
    201
    +
    202 template <class E>
    +
    203 inline auto xchunked_view<E>::dimension() const noexcept -> size_type
    +
    204 {
    +
    205 return m_shape.size();
    +
    206 }
    +
    207
    +
    208 template <class E>
    +
    209 inline auto xchunked_view<E>::shape() const noexcept -> const shape_type&
    +
    210 {
    +
    211 return m_shape;
    +
    212 }
    +
    213
    +
    214 template <class E>
    +
    215 inline auto xchunked_view<E>::chunk_shape() const noexcept -> const shape_type&
    +
    216 {
    +
    217 return m_chunk_shape;
    +
    218 }
    +
    219
    +
    220 template <class E>
    +
    221 inline auto xchunked_view<E>::grid_size() const noexcept -> size_type
    +
    222 {
    +
    223 return m_chunk_nb;
    +
    224 }
    +
    225
    +
    226 template <class E>
    +
    227 inline auto xchunked_view<E>::grid_shape() const noexcept -> const shape_type&
    +
    228 {
    +
    229 return m_grid_shape;
    +
    230 }
    +
    231
    +
    232 template <class E>
    +
    233 inline auto xchunked_view<E>::expression() noexcept -> expression_type&
    +
    234 {
    +
    235 return m_expression;
    +
    236 }
    +
    237
    +
    238 template <class E>
    +
    239 inline auto xchunked_view<E>::expression() const noexcept -> const expression_type&
    +
    240 {
    +
    241 return m_expression;
    +
    242 }
    +
    243
    +
    244 template <class E>
    +
    245 inline auto xchunked_view<E>::chunk_begin() -> chunk_iterator
    +
    246 {
    +
    247 shape_type chunk_index(m_shape.size(), size_type(0));
    +
    248 return chunk_iterator(*this, std::move(chunk_index), 0u);
    +
    249 }
    +
    250
    +
    251 template <class E>
    +
    252 inline auto xchunked_view<E>::chunk_end() -> chunk_iterator
    +
    253 {
    +
    254 return chunk_iterator(*this, shape_type(grid_shape()), grid_size());
    +
    255 }
    +
    256
    +
    257 template <class E>
    +
    258 inline auto xchunked_view<E>::chunk_begin() const -> const_chunk_iterator
    +
    259 {
    +
    260 shape_type chunk_index(m_shape.size(), size_type(0));
    +
    261 return const_chunk_iterator(*this, std::move(chunk_index), 0u);
    +
    262 }
    +
    263
    +
    264 template <class E>
    +
    265 inline auto xchunked_view<E>::chunk_end() const -> const_chunk_iterator
    +
    266 {
    +
    267 return const_chunk_iterator(*this, shape_type(grid_shape()), grid_size());
    +
    268 }
    +
    269
    +
    270 template <class E>
    +
    271 inline auto xchunked_view<E>::chunk_cbegin() const -> const_chunk_iterator
    +
    272 {
    +
    273 return chunk_begin();
    +
    274 }
    +
    275
    +
    276 template <class E>
    +
    277 inline auto xchunked_view<E>::chunk_cend() const -> const_chunk_iterator
    +
    278 {
    +
    279 return chunk_end();
    +
    280 }
    +
    281
    +
    282 template <class E, class S>
    +
    283 inline xchunked_view<E> as_chunked(E&& e, S&& chunk_shape)
    +
    284 {
    +
    285 return xchunked_view<E>(std::forward<E>(e), std::forward<S>(chunk_shape));
    +
    286 }
    +
    287
    +
    288 template <class E>
    +
    289 inline xchunked_view<E> as_chunked(E&& e)
    +
    290 {
    +
    291 return xchunked_view<E>(std::forward<E>(e));
    +
    292 }
    +
    293}
    +
    294
    +
    295#endif
    + + + +
    standard mathematical functions for xexpressions
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    + +
    +
    + + + + diff --git a/xcomplex_8hpp_source.html b/xcomplex_8hpp_source.html new file mode 100644 index 000000000..9b9c2902b --- /dev/null +++ b/xcomplex_8hpp_source.html @@ -0,0 +1,346 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xcomplex.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xcomplex.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_COMPLEX_HPP
    +
    11#define XTENSOR_COMPLEX_HPP
    +
    12
    +
    13#include <type_traits>
    +
    14#include <utility>
    +
    15
    +
    16#include <xtl/xcomplex.hpp>
    +
    17
    +
    18#include "xtensor/xbuilder.hpp"
    +
    19#include "xtensor/xexpression.hpp"
    +
    20#include "xtensor/xoffset_view.hpp"
    +
    21
    +
    22namespace xt
    +
    23{
    +
    24
    +
    31 /******************************
    +
    32 * real and imag declarations *
    +
    33 ******************************/
    +
    34
    +
    35 template <class E>
    +
    36 decltype(auto) real(E&& e) noexcept;
    +
    37
    +
    38 template <class E>
    +
    39 decltype(auto) imag(E&& e) noexcept;
    +
    40
    +
    41 /********************************
    +
    42 * real and imag implementation *
    +
    43 ********************************/
    +
    44
    +
    45 namespace detail
    +
    46 {
    +
    47 template <bool iscomplex = true>
    +
    48 struct complex_helper
    +
    49 {
    +
    50 template <class E>
    +
    51 inline static auto real(E&& e) noexcept
    +
    52 {
    +
    53 using real_type = typename std::decay_t<E>::value_type::value_type;
    +
    54 return xoffset_view<xclosure_t<E>, real_type, 0>(std::forward<E>(e));
    +
    55 }
    +
    56
    +
    57 template <class E>
    +
    58 inline static auto imag(E&& e) noexcept
    +
    59 {
    +
    60 using real_type = typename std::decay_t<E>::value_type::value_type;
    +
    61 return xoffset_view<xclosure_t<E>, real_type, sizeof(real_type)>(std::forward<E>(e));
    +
    62 }
    +
    63 };
    +
    64
    +
    65 template <>
    +
    66 struct complex_helper<false>
    +
    67 {
    +
    68 template <class E>
    +
    69 inline static decltype(auto) real(E&& e) noexcept
    +
    70 {
    +
    71 return std::forward<E>(e);
    +
    72 }
    +
    73
    +
    74 template <class E>
    +
    75 inline static auto imag(E&& e) noexcept
    +
    76 {
    +
    77 return zeros<typename std::decay_t<E>::value_type>(e.shape());
    +
    78 }
    +
    79 };
    +
    80
    +
    81 template <bool isexpression = true>
    +
    82 struct complex_expression_helper
    +
    83 {
    +
    84 template <class E>
    +
    85 inline static decltype(auto) real(E&& e) noexcept
    +
    86 {
    +
    87 return detail::complex_helper<xtl::is_complex<typename std::decay_t<E>::value_type>::value>::real(
    +
    88 std::forward<E>(e)
    +
    89 );
    +
    90 }
    +
    91
    +
    92 template <class E>
    +
    93 inline static decltype(auto) imag(E&& e) noexcept
    +
    94 {
    +
    95 return detail::complex_helper<xtl::is_complex<typename std::decay_t<E>::value_type>::value>::imag(
    +
    96 std::forward<E>(e)
    +
    97 );
    +
    98 }
    +
    99 };
    +
    100
    +
    101 template <>
    +
    102 struct complex_expression_helper<false>
    +
    103 {
    +
    104 template <class E>
    +
    105 inline static decltype(auto) real(E&& e) noexcept
    +
    106 {
    +
    107 return xtl::forward_real(std::forward<E>(e));
    +
    108 }
    +
    109
    +
    110 template <class E>
    +
    111 inline static decltype(auto) imag(E&& e) noexcept
    +
    112 {
    +
    113 return xtl::forward_imag(std::forward<E>(e));
    +
    114 }
    +
    115 };
    +
    116 }
    +
    117
    +
    127 template <class E>
    +
    +
    128 inline decltype(auto) real(E&& e) noexcept
    +
    129 {
    +
    130 return detail::complex_expression_helper<is_xexpression<std::decay_t<E>>::value>::real(std::forward<E>(e
    +
    131 ));
    +
    132 }
    +
    +
    133
    +
    143 template <class E>
    +
    +
    144 inline decltype(auto) imag(E&& e) noexcept
    +
    145 {
    +
    146 return detail::complex_expression_helper<is_xexpression<std::decay_t<E>>::value>::imag(std::forward<E>(e
    +
    147 ));
    +
    148 }
    +
    +
    149
    +
    150#define UNARY_COMPLEX_FUNCTOR(NS, NAME) \
    +
    151 struct NAME##_fun \
    +
    152 { \
    +
    153 template <class T> \
    +
    154 constexpr auto operator()(const T& t) const \
    +
    155 { \
    +
    156 using NS::NAME; \
    +
    157 return NAME(t); \
    +
    158 } \
    +
    159 \
    +
    160 template <class B> \
    +
    161 constexpr auto simd_apply(const B& t) const \
    +
    162 { \
    +
    163 using NS::NAME; \
    +
    164 return NAME(t); \
    +
    165 } \
    +
    166 }
    +
    167
    +
    168 namespace math
    +
    169 {
    +
    170 namespace detail
    +
    171 {
    +
    172 template <class T>
    +
    173 constexpr std::complex<T> conj_impl(const std::complex<T>& c)
    +
    174 {
    +
    175 return std::complex<T>(c.real(), -c.imag());
    +
    176 }
    +
    177
    +
    178 template <class T>
    +
    179 constexpr std::complex<T> conj_impl(const T& real)
    +
    180 {
    +
    181 return std::complex<T>(real, 0);
    +
    182 }
    +
    183
    +
    184#ifdef XTENSOR_USE_XSIMD
    +
    185 template <class T, class A>
    +
    186 xsimd::complex_batch_type_t<xsimd::batch<T, A>> conj_impl(const xsimd::batch<T, A>& z)
    +
    187 {
    +
    188 return xsimd::conj(z);
    +
    189 }
    +
    190#endif
    +
    191 }
    +
    192
    +
    193 UNARY_COMPLEX_FUNCTOR(std, norm);
    +
    194 UNARY_COMPLEX_FUNCTOR(std, arg);
    +
    195 UNARY_COMPLEX_FUNCTOR(detail, conj_impl);
    +
    196 }
    +
    197
    +
    198#undef UNARY_COMPLEX_FUNCTOR
    +
    199
    +
    206 template <class E>
    +
    +
    207 inline auto conj(E&& e) noexcept
    +
    208 {
    +
    209 using functor = math::conj_impl_fun;
    + +
    211 return type(functor(), std::forward<E>(e));
    +
    212 }
    +
    +
    213
    +
    220 template <class E>
    +
    +
    221 inline auto arg(E&& e) noexcept
    +
    222 {
    +
    223 using functor = math::arg_fun;
    + +
    225 return type(functor(), std::forward<E>(e));
    +
    226 }
    +
    +
    227
    +
    237 template <class E>
    +
    +
    238 inline auto angle(E&& e, bool deg = false) noexcept
    +
    239 {
    +
    240 using value_type = xtl::complex_value_type_t<typename std::decay_t<E>::value_type>;
    +
    241 value_type multiplier = 1.0;
    +
    242 if (deg)
    +
    243 {
    +
    244 multiplier = value_type(180) / numeric_constants<value_type>::PI;
    +
    245 }
    +
    246 return arg(std::forward<E>(e)) * std::move(multiplier);
    +
    247 }
    +
    +
    248
    +
    256 template <class E>
    +
    +
    257 inline auto norm(E&& e) noexcept
    +
    258 {
    +
    259 using functor = math::norm_fun;
    + +
    261 return type(functor(), std::forward<E>(e));
    +
    262 }
    +
    +
    263}
    +
    264#endif
    +
    Multidimensional function operating on xtensor expressions.
    +
    decltype(auto) imag(E &&e) noexcept
    Return an xt::xexpression representing the imaginary part of the given expression.
    Definition xcomplex.hpp:144
    +
    decltype(auto) real(E &&e) noexcept
    Return an xt::xexpression representing the real part of the given expression.
    Definition xcomplex.hpp:128
    +
    auto conj(E &&e) noexcept
    Return an xt::xfunction evaluating to the complex conjugate of the given expression.
    Definition xcomplex.hpp:207
    +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    auto angle(E &&e, bool deg=false) noexcept
    Calculates the phase angle elementwise for the complex numbers in e.
    Definition xcomplex.hpp:238
    +
    auto norm(E &&e) noexcept
    Calculates the squared magnitude elementwise for the complex numbers in e.
    Definition xcomplex.hpp:257
    +
    standard mathematical functions for xexpressions
    + + + + +
    +
    + + + + diff --git a/xcontainer_8hpp_source.html b/xcontainer_8hpp_source.html new file mode 100644 index 000000000..d812c935a --- /dev/null +++ b/xcontainer_8hpp_source.html @@ -0,0 +1,1234 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xcontainer.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xcontainer.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_CONTAINER_HPP
    +
    11#define XTENSOR_CONTAINER_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <functional>
    +
    15#include <memory>
    +
    16#include <numeric>
    +
    17#include <stdexcept>
    +
    18
    +
    19#include <xtl/xmeta_utils.hpp>
    +
    20#include <xtl/xsequence.hpp>
    +
    21
    +
    22#include "xaccessible.hpp"
    +
    23#include "xiterable.hpp"
    +
    24#include "xiterator.hpp"
    +
    25#include "xmath.hpp"
    +
    26#include "xoperation.hpp"
    +
    27#include "xstrides.hpp"
    +
    28#include "xtensor_config.hpp"
    +
    29#include "xtensor_forward.hpp"
    +
    30
    +
    31namespace xt
    +
    32{
    +
    33 template <class D>
    +
    + +
    35 {
    +
    36 using inner_shape_type = typename xcontainer_inner_types<D>::inner_shape_type;
    +
    37 using stepper = xstepper<D>;
    + +
    39 };
    +
    +
    40
    +
    41 namespace detail
    +
    42 {
    +
    43 template <class T>
    +
    44 struct allocator_type_impl
    +
    45 {
    +
    46 using type = typename T::allocator_type;
    +
    47 };
    +
    48
    +
    49 template <class T, std::size_t N>
    +
    50 struct allocator_type_impl<std::array<T, N>>
    +
    51 {
    +
    52 using type = std::allocator<T>; // fake allocator for testing
    +
    53 };
    +
    54 }
    +
    55
    +
    56 template <class T>
    +
    57 using allocator_type_t = typename detail::allocator_type_impl<T>::type;
    +
    58
    +
    70 template <class D>
    +
    + +
    72 private xaccessible<D>
    +
    73 {
    +
    74 public:
    +
    75
    +
    76 using derived_type = D;
    +
    77
    + +
    79 using storage_type = typename inner_types::storage_type;
    +
    80 using allocator_type = allocator_type_t<std::decay_t<storage_type>>;
    +
    81 using value_type = typename storage_type::value_type;
    +
    82 using reference = typename inner_types::reference;
    +
    83 using const_reference = typename inner_types::const_reference;
    +
    84 using pointer = typename storage_type::pointer;
    +
    85 using const_pointer = typename storage_type::const_pointer;
    +
    86 using size_type = typename inner_types::size_type;
    +
    87 using difference_type = typename storage_type::difference_type;
    +
    88 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    89 using bool_load_type = xt::bool_load_type<value_type>;
    +
    90
    +
    91 using shape_type = typename inner_types::shape_type;
    +
    92 using strides_type = typename inner_types::strides_type;
    +
    93 using backstrides_type = typename inner_types::backstrides_type;
    +
    94
    +
    95 using inner_shape_type = typename inner_types::inner_shape_type;
    +
    96 using inner_strides_type = typename inner_types::inner_strides_type;
    +
    97 using inner_backstrides_type = typename inner_types::inner_backstrides_type;
    +
    98
    + +
    100 using stepper = typename iterable_base::stepper;
    +
    101 using const_stepper = typename iterable_base::const_stepper;
    +
    102
    + +
    104
    +
    105 static constexpr layout_type static_layout = inner_types::layout;
    +
    106 static constexpr bool contiguous_layout = static_layout != layout_type::dynamic;
    +
    107 using data_alignment = xt_simd::container_alignment_t<storage_type>;
    +
    108 using simd_type = xt_simd::simd_type<value_type>;
    +
    109
    +
    110 using linear_iterator = typename iterable_base::linear_iterator;
    +
    111 using const_linear_iterator = typename iterable_base::const_linear_iterator;
    +
    112 using reverse_linear_iterator = typename iterable_base::reverse_linear_iterator;
    +
    113 using const_reverse_linear_iterator = typename iterable_base::const_reverse_linear_iterator;
    +
    114
    +
    115 static_assert(static_layout != layout_type::any, "Container layout can never be layout_type::any!");
    +
    116
    +
    +
    117 size_type size() const noexcept;
    +
    118
    +
    +
    119 XTENSOR_CONSTEXPR_RETURN size_type dimension() const noexcept;
    +
    120
    +
    +
    121 XTENSOR_CONSTEXPR_RETURN const inner_shape_type& shape() const noexcept;
    +
    +
    122 XTENSOR_CONSTEXPR_RETURN const inner_strides_type& strides() const noexcept;
    +
    +
    123 XTENSOR_CONSTEXPR_RETURN const inner_backstrides_type& backstrides() const noexcept;
    +
    124
    +
    125 template <class T>
    +
    +
    126 void fill(const T& value);
    +
    127
    +
    128 template <class... Args>
    +
    129 reference operator()(Args... args);
    +
    130
    +
    131 template <class... Args>
    +
    132 const_reference operator()(Args... args) const;
    +
    133
    +
    134 template <class... Args>
    +
    135 reference unchecked(Args... args);
    +
    136
    +
    137 template <class... Args>
    +
    138 const_reference unchecked(Args... args) const;
    +
    139
    +
    140 using accessible_base::at;
    +
    141 using accessible_base::shape;
    +
    142 using accessible_base::operator[];
    +
    143 using accessible_base::back;
    +
    144 using accessible_base::front;
    + +
    146 using accessible_base::periodic;
    +
    147
    +
    148 template <class It>
    +
    149 reference element(It first, It last);
    +
    150 template <class It>
    +
    151 const_reference element(It first, It last) const;
    +
    152
    +
    +
    153 storage_type& storage() noexcept;
    +
    +
    154 const storage_type& storage() const noexcept;
    +
    155
    +
    +
    156 pointer data() noexcept;
    +
    +
    157 const_pointer data() const noexcept;
    +
    +
    158 const size_type data_offset() const noexcept;
    +
    159
    +
    160 template <class S>
    +
    +
    161 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    162
    +
    163 template <class S>
    +
    +
    164 bool has_linear_assign(const S& strides) const noexcept;
    +
    165 template <class S>
    +
    166 stepper stepper_begin(const S& shape) noexcept;
    +
    167 template <class S>
    +
    168 stepper stepper_end(const S& shape, layout_type l) noexcept;
    +
    169
    +
    170 template <class S>
    +
    171 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    172 template <class S>
    +
    173 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    174
    +
    175 reference data_element(size_type i);
    +
    176 const_reference data_element(size_type i) const;
    +
    177
    +
    +
    178 reference flat(size_type i);
    +
    +
    179 const_reference flat(size_type i) const;
    +
    180
    +
    181 template <class requested_type>
    +
    182 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    183
    +
    184 template <class align, class simd>
    +
    185 void store_simd(size_type i, const simd& e);
    +
    186 template <class align, class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
    +
    187 container_simd_return_type_t<storage_type, value_type, requested_type>
    +
    188 /*simd_return_type<requested_type>*/ load_simd(size_type i) const;
    +
    189
    +
    190 linear_iterator linear_begin() noexcept;
    +
    191 linear_iterator linear_end() noexcept;
    +
    192
    +
    193 const_linear_iterator linear_begin() const noexcept;
    +
    194 const_linear_iterator linear_end() const noexcept;
    +
    195 const_linear_iterator linear_cbegin() const noexcept;
    +
    196 const_linear_iterator linear_cend() const noexcept;
    +
    197
    +
    198 reverse_linear_iterator linear_rbegin() noexcept;
    +
    199 reverse_linear_iterator linear_rend() noexcept;
    +
    200
    +
    201 const_reverse_linear_iterator linear_rbegin() const noexcept;
    +
    202 const_reverse_linear_iterator linear_rend() const noexcept;
    +
    203 const_reverse_linear_iterator linear_crbegin() const noexcept;
    +
    204 const_reverse_linear_iterator linear_crend() const noexcept;
    +
    205
    +
    206 using container_iterator = linear_iterator;
    +
    207 using const_container_iterator = const_linear_iterator;
    +
    208
    +
    209 protected:
    +
    210
    +
    211 xcontainer() = default;
    +
    212 ~xcontainer() = default;
    +
    213
    +
    214 xcontainer(const xcontainer&) = default;
    +
    215 xcontainer& operator=(const xcontainer&) = default;
    +
    216
    +
    217 xcontainer(xcontainer&&) = default;
    +
    218 xcontainer& operator=(xcontainer&&) = default;
    +
    219
    +
    220 container_iterator data_xbegin() noexcept;
    +
    221 const_container_iterator data_xbegin() const noexcept;
    +
    222 container_iterator data_xend(layout_type l, size_type offset) noexcept;
    +
    223 const_container_iterator data_xend(layout_type l, size_type offset) const noexcept;
    +
    224
    +
    225 protected:
    +
    226
    +
    227 derived_type& derived_cast() & noexcept;
    +
    228 const derived_type& derived_cast() const& noexcept;
    +
    229 derived_type derived_cast() && noexcept;
    +
    230
    +
    231 private:
    +
    232
    +
    233 template <class It>
    +
    234 It data_xend_impl(It begin, layout_type l, size_type offset) const noexcept;
    +
    235
    +
    236 inner_shape_type& mutable_shape();
    +
    237 inner_strides_type& mutable_strides();
    +
    238 inner_backstrides_type& mutable_backstrides();
    +
    239
    +
    240 template <class C>
    +
    241 friend class xstepper;
    +
    242
    +
    243 friend class xaccessible<D>;
    +
    244 friend class xconst_accessible<D>;
    +
    245 };
    +
    246
    +
    259 template <class D>
    +
    + +
    261 {
    +
    262 public:
    +
    263
    +
    264 using base_type = xcontainer<D>;
    +
    265 using storage_type = typename base_type::storage_type;
    +
    266 using value_type = typename base_type::value_type;
    +
    267 using reference = typename base_type::reference;
    +
    268 using const_reference = typename base_type::const_reference;
    +
    269 using pointer = typename base_type::pointer;
    +
    270 using const_pointer = typename base_type::const_pointer;
    +
    271 using size_type = typename base_type::size_type;
    +
    272 using shape_type = typename base_type::shape_type;
    +
    273 using strides_type = typename base_type::strides_type;
    +
    274 using inner_shape_type = typename base_type::inner_shape_type;
    +
    275 using inner_strides_type = typename base_type::inner_strides_type;
    +
    276 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    277
    +
    278 template <class S = shape_type>
    +
    +
    279 void resize(S&& shape, bool force = false);
    +
    280 template <class S = shape_type>
    +
    + +
    282 template <class S = shape_type>
    +
    +
    283 void resize(S&& shape, const strides_type& strides);
    +
    284
    +
    285 template <class S = shape_type>
    +
    +
    286 auto& reshape(S&& shape, layout_type layout = base_type::static_layout) &;
    +
    287
    +
    288 template <class T>
    +
    289 auto& reshape(std::initializer_list<T> shape, layout_type layout = base_type::static_layout) &;
    +
    290
    +
    +
    291 layout_type layout() const noexcept;
    +
    292 bool is_contiguous() const noexcept;
    +
    293
    +
    294 protected:
    +
    295
    +
    296 xstrided_container() noexcept;
    +
    297 ~xstrided_container() = default;
    +
    298
    +
    299 xstrided_container(const xstrided_container&) = default;
    +
    300 xstrided_container& operator=(const xstrided_container&) = default;
    +
    301
    + +
    303 xstrided_container& operator=(xstrided_container&&) = default;
    +
    304
    +
    305 explicit xstrided_container(inner_shape_type&&, inner_strides_type&&) noexcept;
    +
    306 explicit xstrided_container(inner_shape_type&&, inner_strides_type&&, inner_backstrides_type&&, layout_type&&) noexcept;
    +
    307
    +
    308 inner_shape_type& shape_impl() noexcept;
    +
    309 const inner_shape_type& shape_impl() const noexcept;
    +
    310
    +
    311 inner_strides_type& strides_impl() noexcept;
    +
    312 const inner_strides_type& strides_impl() const noexcept;
    +
    313
    +
    314 inner_backstrides_type& backstrides_impl() noexcept;
    +
    315 const inner_backstrides_type& backstrides_impl() const noexcept;
    +
    316
    +
    317 template <class S = shape_type>
    +
    318 void reshape_impl(S&& shape, std::true_type, layout_type layout = base_type::static_layout);
    +
    319 template <class S = shape_type>
    +
    320 void reshape_impl(S&& shape, std::false_type, layout_type layout = base_type::static_layout);
    +
    321
    +
    322 layout_type& mutable_layout() noexcept;
    +
    323
    +
    324 private:
    +
    325
    +
    326 inner_shape_type m_shape;
    +
    327 inner_strides_type m_strides;
    +
    328 inner_backstrides_type m_backstrides;
    +
    329 layout_type m_layout = base_type::static_layout;
    +
    330 };
    +
    331
    +
    332 /******************************
    +
    333 * xcontainer implementation *
    +
    334 ******************************/
    +
    335
    +
    336 template <class D>
    +
    337 template <class It>
    +
    338 inline It xcontainer<D>::data_xend_impl(It begin, layout_type l, size_type offset) const noexcept
    +
    339 {
    +
    340 return strided_data_end(*this, begin, l, offset);
    +
    341 }
    +
    342
    +
    343 template <class D>
    +
    344 inline auto xcontainer<D>::mutable_shape() -> inner_shape_type&
    +
    345 {
    +
    346 return derived_cast().shape_impl();
    +
    347 }
    +
    348
    +
    349 template <class D>
    +
    350 inline auto xcontainer<D>::mutable_strides() -> inner_strides_type&
    +
    351 {
    +
    352 return derived_cast().strides_impl();
    +
    353 }
    +
    354
    +
    355 template <class D>
    +
    356 inline auto xcontainer<D>::mutable_backstrides() -> inner_backstrides_type&
    +
    357 {
    +
    358 return derived_cast().backstrides_impl();
    +
    359 }
    +
    360
    +
    368 template <class D>
    +
    +
    369 inline auto xcontainer<D>::size() const noexcept -> size_type
    +
    370 {
    +
    371 return contiguous_layout ? storage().size() : compute_size(shape());
    +
    372 }
    +
    +
    373
    +
    377 template <class D>
    +
    +
    378 XTENSOR_CONSTEXPR_RETURN auto xcontainer<D>::dimension() const noexcept -> size_type
    +
    379 {
    +
    380 return shape().size();
    +
    381 }
    +
    +
    382
    +
    386 template <class D>
    +
    +
    387 XTENSOR_CONSTEXPR_RETURN auto xcontainer<D>::shape() const noexcept -> const inner_shape_type&
    +
    388 {
    +
    389 return derived_cast().shape_impl();
    +
    390 }
    +
    +
    391
    +
    395 template <class D>
    +
    +
    396 XTENSOR_CONSTEXPR_RETURN auto xcontainer<D>::strides() const noexcept -> const inner_strides_type&
    +
    397 {
    +
    398 return derived_cast().strides_impl();
    +
    399 }
    +
    +
    400
    +
    404 template <class D>
    +
    +
    405 XTENSOR_CONSTEXPR_RETURN auto xcontainer<D>::backstrides() const noexcept -> const inner_backstrides_type&
    +
    406 {
    +
    407 return derived_cast().backstrides_impl();
    +
    408 }
    +
    +
    409
    +
    411
    +
    416
    +
    421 template <class D>
    +
    422 template <class T>
    +
    +
    423 inline void xcontainer<D>::fill(const T& value)
    +
    424 {
    +
    425 if (contiguous_layout)
    +
    426 {
    +
    427 std::fill(this->linear_begin(), this->linear_end(), value);
    +
    428 }
    +
    429 else
    +
    430 {
    +
    431 std::fill(this->begin(), this->end(), value);
    +
    432 }
    +
    433 }
    +
    +
    434
    +
    441 template <class D>
    +
    442 template <class... Args>
    +
    +
    443 inline auto xcontainer<D>::operator()(Args... args) -> reference
    +
    444 {
    +
    445 XTENSOR_TRY(check_index(shape(), args...));
    +
    446 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    447 size_type index = xt::data_offset<size_type>(strides(), args...);
    +
    448 return storage()[index];
    +
    449 }
    +
    +
    450
    +
    457 template <class D>
    +
    458 template <class... Args>
    +
    +
    459 inline auto xcontainer<D>::operator()(Args... args) const -> const_reference
    +
    460 {
    +
    461 XTENSOR_TRY(check_index(shape(), args...));
    +
    462 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    463 size_type index = xt::data_offset<size_type>(strides(), args...);
    +
    464 return storage()[index];
    +
    465 }
    +
    +
    466
    +
    486 template <class D>
    +
    487 template <class... Args>
    +
    +
    488 inline auto xcontainer<D>::unchecked(Args... args) -> reference
    +
    489 {
    +
    490 size_type index = xt::unchecked_data_offset<size_type, static_layout>(
    +
    491 strides(),
    +
    492 static_cast<std::ptrdiff_t>(args)...
    +
    493 );
    +
    494 return storage()[index];
    +
    495 }
    +
    +
    496
    +
    516 template <class D>
    +
    517 template <class... Args>
    +
    +
    518 inline auto xcontainer<D>::unchecked(Args... args) const -> const_reference
    +
    519 {
    +
    520 size_type index = xt::unchecked_data_offset<size_type, static_layout>(
    +
    521 strides(),
    +
    522 static_cast<std::ptrdiff_t>(args)...
    +
    523 );
    +
    524 return storage()[index];
    +
    525 }
    +
    +
    526
    +
    534 template <class D>
    +
    535 template <class It>
    +
    +
    536 inline auto xcontainer<D>::element(It first, It last) -> reference
    +
    537 {
    +
    538 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    539 return storage()[element_offset<size_type>(strides(), first, last)];
    +
    540 }
    +
    +
    541
    +
    549 template <class D>
    +
    550 template <class It>
    +
    +
    551 inline auto xcontainer<D>::element(It first, It last) const -> const_reference
    +
    552 {
    +
    553 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    554 return storage()[element_offset<size_type>(strides(), first, last)];
    +
    555 }
    +
    +
    556
    +
    560 template <class D>
    +
    +
    561 inline auto xcontainer<D>::storage() noexcept -> storage_type&
    +
    562 {
    +
    563 return derived_cast().storage_impl();
    +
    564 }
    +
    +
    565
    +
    570 template <class D>
    +
    +
    571 inline auto xcontainer<D>::storage() const noexcept -> const storage_type&
    +
    572 {
    +
    573 return derived_cast().storage_impl();
    +
    574 }
    +
    +
    575
    +
    581 template <class D>
    +
    +
    582 inline auto xcontainer<D>::data() noexcept -> pointer
    +
    583 {
    +
    584 return storage().data();
    +
    585 }
    +
    +
    586
    +
    592 template <class D>
    +
    +
    593 inline auto xcontainer<D>::data() const noexcept -> const_pointer
    +
    594 {
    +
    595 return storage().data();
    +
    596 }
    +
    +
    597
    +
    601 template <class D>
    +
    +
    602 inline auto xcontainer<D>::data_offset() const noexcept -> const size_type
    +
    603 {
    +
    604 return size_type(0);
    +
    605 }
    +
    +
    606
    +
    608
    +
    619 template <class D>
    +
    620 template <class S>
    +
    +
    621 inline bool xcontainer<D>::broadcast_shape(S& shape, bool) const
    +
    622 {
    +
    623 return xt::broadcast_shape(this->shape(), shape);
    +
    624 }
    +
    +
    625
    +
    631 template <class D>
    +
    632 template <class S>
    +
    +
    633 inline bool xcontainer<D>::has_linear_assign(const S& str) const noexcept
    +
    634 {
    +
    635 return str.size() == strides().size() && std::equal(str.cbegin(), str.cend(), strides().begin());
    +
    636 }
    +
    +
    637
    +
    639
    +
    640 template <class D>
    +
    641 inline auto xcontainer<D>::derived_cast() const& noexcept -> const derived_type&
    +
    642 {
    +
    643 return *static_cast<const derived_type*>(this);
    +
    644 }
    +
    645
    +
    646 template <class D>
    +
    647 inline auto xcontainer<D>::derived_cast() && noexcept -> derived_type
    +
    648 {
    +
    649 return *static_cast<derived_type*>(this);
    +
    650 }
    +
    651
    +
    652 template <class D>
    +
    653 inline auto xcontainer<D>::data_element(size_type i) -> reference
    +
    654 {
    +
    655 return storage()[i];
    +
    656 }
    +
    657
    +
    658 template <class D>
    +
    659 inline auto xcontainer<D>::data_element(size_type i) const -> const_reference
    +
    660 {
    +
    661 return storage()[i];
    +
    662 }
    +
    663
    +
    670 template <class D>
    +
    +
    671 inline auto xcontainer<D>::flat(size_type i) -> reference
    +
    672 {
    +
    673 XTENSOR_ASSERT(i < size());
    +
    674 return storage()[i];
    +
    675 }
    +
    +
    676
    +
    683 template <class D>
    +
    +
    684 inline auto xcontainer<D>::flat(size_type i) const -> const_reference
    +
    685 {
    +
    686 XTENSOR_ASSERT(i < size());
    +
    687 return storage()[i];
    +
    688 }
    +
    +
    689
    +
    690 /***************
    +
    691 * stepper api *
    +
    692 ***************/
    +
    693
    +
    694 template <class D>
    +
    695 template <class S>
    +
    696 inline auto xcontainer<D>::stepper_begin(const S& shape) noexcept -> stepper
    +
    697 {
    +
    698 size_type offset = shape.size() - dimension();
    +
    699 return stepper(static_cast<derived_type*>(this), data_xbegin(), offset);
    +
    700 }
    +
    701
    +
    702 template <class D>
    +
    703 template <class S>
    +
    704 inline auto xcontainer<D>::stepper_end(const S& shape, layout_type l) noexcept -> stepper
    +
    705 {
    +
    706 size_type offset = shape.size() - dimension();
    +
    707 return stepper(static_cast<derived_type*>(this), data_xend(l, offset), offset);
    +
    708 }
    +
    709
    +
    710 template <class D>
    +
    711 template <class S>
    +
    712 inline auto xcontainer<D>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    713 {
    +
    714 size_type offset = shape.size() - dimension();
    +
    715 return const_stepper(static_cast<const derived_type*>(this), data_xbegin(), offset);
    +
    716 }
    +
    717
    +
    718 template <class D>
    +
    719 template <class S>
    +
    720 inline auto xcontainer<D>::stepper_end(const S& shape, layout_type l) const noexcept -> const_stepper
    +
    721 {
    +
    722 size_type offset = shape.size() - dimension();
    +
    723 return const_stepper(static_cast<const derived_type*>(this), data_xend(l, offset), offset);
    +
    724 }
    +
    725
    +
    726 template <class D>
    +
    727 inline auto xcontainer<D>::data_xbegin() noexcept -> container_iterator
    +
    728 {
    +
    729 return storage().begin();
    +
    730 }
    +
    731
    +
    732 template <class D>
    +
    733 inline auto xcontainer<D>::data_xbegin() const noexcept -> const_container_iterator
    +
    734 {
    +
    735 return storage().cbegin();
    +
    736 }
    +
    737
    +
    738 template <class D>
    +
    739 inline auto xcontainer<D>::data_xend(layout_type l, size_type offset) noexcept -> container_iterator
    +
    740 {
    +
    741 return data_xend_impl(storage().begin(), l, offset);
    +
    742 }
    +
    743
    +
    744 template <class D>
    +
    745 inline auto xcontainer<D>::data_xend(layout_type l, size_type offset) const noexcept
    +
    746 -> const_container_iterator
    +
    747 {
    +
    748 return data_xend_impl(storage().cbegin(), l, offset);
    +
    749 }
    +
    750
    +
    751 template <class D>
    +
    752 template <class alignment, class simd>
    +
    753 inline void xcontainer<D>::store_simd(size_type i, const simd& e)
    +
    754 {
    +
    755 using align_mode = driven_align_mode_t<alignment, data_alignment>;
    +
    756 xt_simd::store_as(std::addressof(storage()[i]), e, align_mode());
    +
    757 }
    +
    758
    +
    759 template <class D>
    +
    760 template <class alignment, class requested_type, std::size_t N>
    +
    761 inline auto xcontainer<D>::load_simd(size_type i) const
    +
    762 -> container_simd_return_type_t<storage_type, value_type, requested_type>
    +
    763 {
    +
    764 using align_mode = driven_align_mode_t<alignment, data_alignment>;
    +
    765 return xt_simd::load_as<requested_type>(std::addressof(storage()[i]), align_mode());
    +
    766 }
    +
    767
    +
    768 template <class D>
    +
    769 inline auto xcontainer<D>::linear_begin() noexcept -> linear_iterator
    +
    770 {
    +
    771 return storage().begin();
    +
    772 }
    +
    773
    +
    774 template <class D>
    +
    775 inline auto xcontainer<D>::linear_end() noexcept -> linear_iterator
    +
    776 {
    +
    777 return storage().end();
    +
    778 }
    +
    779
    +
    780 template <class D>
    +
    781 inline auto xcontainer<D>::linear_begin() const noexcept -> const_linear_iterator
    +
    782 {
    +
    783 return storage().begin();
    +
    784 }
    +
    785
    +
    786 template <class D>
    +
    787 inline auto xcontainer<D>::linear_end() const noexcept -> const_linear_iterator
    +
    788 {
    +
    789 return storage().cend();
    +
    790 }
    +
    791
    +
    792 template <class D>
    +
    793 inline auto xcontainer<D>::linear_cbegin() const noexcept -> const_linear_iterator
    +
    794 {
    +
    795 return storage().cbegin();
    +
    796 }
    +
    797
    +
    798 template <class D>
    +
    799 inline auto xcontainer<D>::linear_cend() const noexcept -> const_linear_iterator
    +
    800 {
    +
    801 return storage().cend();
    +
    802 }
    +
    803
    +
    804 template <class D>
    +
    805 inline auto xcontainer<D>::linear_rbegin() noexcept -> reverse_linear_iterator
    +
    806 {
    +
    807 return storage().rbegin();
    +
    808 }
    +
    809
    +
    810 template <class D>
    +
    811 inline auto xcontainer<D>::linear_rend() noexcept -> reverse_linear_iterator
    +
    812 {
    +
    813 return storage().rend();
    +
    814 }
    +
    815
    +
    816 template <class D>
    +
    817 inline auto xcontainer<D>::linear_rbegin() const noexcept -> const_reverse_linear_iterator
    +
    818 {
    +
    819 return storage().rbegin();
    +
    820 }
    +
    821
    +
    822 template <class D>
    +
    823 inline auto xcontainer<D>::linear_rend() const noexcept -> const_reverse_linear_iterator
    +
    824 {
    +
    825 return storage().rend();
    +
    826 }
    +
    827
    +
    828 template <class D>
    +
    829 inline auto xcontainer<D>::linear_crbegin() const noexcept -> const_reverse_linear_iterator
    +
    830 {
    +
    831 return storage().crbegin();
    +
    832 }
    +
    833
    +
    834 template <class D>
    +
    835 inline auto xcontainer<D>::linear_crend() const noexcept -> const_reverse_linear_iterator
    +
    836 {
    +
    837 return storage().crend();
    +
    838 }
    +
    839
    +
    840 template <class D>
    +
    841 inline auto xcontainer<D>::derived_cast() & noexcept -> derived_type&
    +
    842 {
    +
    843 return *static_cast<derived_type*>(this);
    +
    844 }
    +
    845
    +
    846 /*************************************
    +
    847 * xstrided_container implementation *
    +
    848 *************************************/
    +
    849
    +
    850 template <class D>
    +
    851 inline xstrided_container<D>::xstrided_container() noexcept
    +
    852 : base_type()
    +
    853 {
    +
    854 m_shape = xtl::make_sequence<inner_shape_type>(base_type::dimension(), 0);
    +
    855 m_strides = xtl::make_sequence<inner_strides_type>(base_type::dimension(), 0);
    +
    856 m_backstrides = xtl::make_sequence<inner_backstrides_type>(base_type::dimension(), 0);
    +
    857 }
    +
    858
    +
    859 template <class D>
    +
    860 inline xstrided_container<D>::xstrided_container(inner_shape_type&& shape, inner_strides_type&& strides) noexcept
    +
    861 : base_type()
    +
    862 , m_shape(std::move(shape))
    +
    863 , m_strides(std::move(strides))
    +
    864 {
    +
    865 m_backstrides = xtl::make_sequence<inner_backstrides_type>(m_shape.size(), 0);
    +
    866 adapt_strides(m_shape, m_strides, m_backstrides);
    +
    867 }
    +
    868
    +
    869 template <class D>
    +
    870 inline xstrided_container<D>::xstrided_container(
    +
    871 inner_shape_type&& shape,
    +
    872 inner_strides_type&& strides,
    +
    873 inner_backstrides_type&& backstrides,
    +
    874 layout_type&& layout
    +
    875 ) noexcept
    +
    876 : base_type()
    +
    877 , m_shape(std::move(shape))
    +
    878 , m_strides(std::move(strides))
    +
    879 , m_backstrides(std::move(backstrides))
    +
    880 , m_layout(std::move(layout))
    +
    881 {
    +
    882 }
    +
    883
    +
    884 template <class D>
    +
    885 inline auto xstrided_container<D>::shape_impl() noexcept -> inner_shape_type&
    +
    886 {
    +
    887 return m_shape;
    +
    888 }
    +
    889
    +
    890 template <class D>
    +
    891 inline auto xstrided_container<D>::shape_impl() const noexcept -> const inner_shape_type&
    +
    892 {
    +
    893 return m_shape;
    +
    894 }
    +
    895
    +
    896 template <class D>
    +
    897 inline auto xstrided_container<D>::strides_impl() noexcept -> inner_strides_type&
    +
    898 {
    +
    899 return m_strides;
    +
    900 }
    +
    901
    +
    902 template <class D>
    +
    903 inline auto xstrided_container<D>::strides_impl() const noexcept -> const inner_strides_type&
    +
    904 {
    +
    905 return m_strides;
    +
    906 }
    +
    907
    +
    908 template <class D>
    +
    909 inline auto xstrided_container<D>::backstrides_impl() noexcept -> inner_backstrides_type&
    +
    910 {
    +
    911 return m_backstrides;
    +
    912 }
    +
    913
    +
    914 template <class D>
    +
    915 inline auto xstrided_container<D>::backstrides_impl() const noexcept -> const inner_backstrides_type&
    +
    916 {
    +
    917 return m_backstrides;
    +
    918 }
    +
    919
    +
    924 template <class D>
    +
    + +
    926 {
    +
    927 return m_layout;
    +
    928 }
    +
    +
    +
    929
    +
    930 template <class D>
    +
    931 inline bool xstrided_container<D>::is_contiguous() const noexcept
    +
    932 {
    +
    933 using str_type = typename inner_strides_type::value_type;
    +
    934 auto is_zero = [](auto i)
    +
    935 {
    +
    936 return i == 0;
    +
    937 };
    +
    938 if (!is_contiguous_container<storage_type>::value)
    +
    939 {
    +
    940 return false;
    +
    941 }
    +
    942 // We need to make sure the inner-most non-zero stride is one.
    +
    943 // Trailing zero strides are ignored because they indicate bradcasted dimensions.
    +
    944 if (m_layout == layout_type::row_major)
    +
    945 {
    +
    946 auto it = std::find_if_not(m_strides.rbegin(), m_strides.rend(), is_zero);
    +
    947 // If the array has strides of zero, it is a constant, and therefore contiguous.
    +
    948 return it == m_strides.rend() || *it == str_type(1);
    +
    949 }
    +
    950 else if (m_layout == layout_type::column_major)
    +
    951 {
    +
    952 auto it = std::find_if_not(m_strides.begin(), m_strides.end(), is_zero);
    +
    953 // If the array has strides of zero, it is a constant, and therefore contiguous.
    +
    954 return it == m_strides.end() || *it == str_type(1);
    +
    955 }
    +
    956 else
    +
    957 {
    +
    958 return m_strides.empty();
    +
    959 }
    +
    960 }
    +
    961
    +
    962 namespace detail
    +
    963 {
    +
    964 template <class C, class S>
    +
    965 inline void resize_data_container(C& c, S size)
    +
    966 {
    +
    967 xt::resize_container(c, size);
    +
    968 }
    +
    969
    +
    970 template <class C, class S>
    +
    971 inline void resize_data_container(const C& c, S size)
    +
    972 {
    +
    973 (void) c; // remove unused parameter warning
    +
    974 (void) size;
    +
    975 XTENSOR_ASSERT_MSG(c.size() == size, "Trying to resize const data container with wrong size.");
    +
    976 }
    +
    977
    +
    978 template <class S, class T>
    +
    979 constexpr bool check_resize_dimension(const S&, const T&)
    +
    980 {
    +
    981 return true;
    +
    982 }
    +
    983
    +
    984 template <class T, size_t N, class S>
    +
    985 constexpr bool check_resize_dimension(const std::array<T, N>&, const S& s)
    +
    986 {
    +
    987 return N == s.size();
    +
    988 }
    +
    989 }
    +
    990
    +
    998 template <class D>
    +
    999 template <class S>
    +
    +
    1000 inline void xstrided_container<D>::resize(S&& shape, bool force)
    +
    1001 {
    +
    1002 XTENSOR_ASSERT_MSG(
    +
    1003 detail::check_resize_dimension(m_shape, shape),
    +
    1004 "cannot change the number of dimensions of xtensor"
    +
    1005 )
    +
    1006 std::size_t dim = shape.size();
    +
    1007 if (m_shape.size() != dim || !std::equal(std::begin(shape), std::end(shape), std::begin(m_shape))
    +
    1008 || force)
    +
    1009 {
    +
    1010 if (D::static_layout == layout_type::dynamic && m_layout == layout_type::dynamic)
    +
    1011 {
    +
    1012 m_layout = XTENSOR_DEFAULT_LAYOUT; // fall back to default layout
    +
    1013 }
    +
    1014 m_shape = xtl::forward_sequence<shape_type, S>(shape);
    +
    1015
    +
    1016 resize_container(m_strides, dim);
    +
    1017 resize_container(m_backstrides, dim);
    +
    1018 size_type data_size = compute_strides<D::static_layout>(m_shape, m_layout, m_strides, m_backstrides);
    +
    1019 detail::resize_data_container(this->storage(), data_size);
    +
    1020 }
    +
    1021 }
    +
    +
    1022
    +
    1030 template <class D>
    +
    1031 template <class S>
    +
    + +
    1033 {
    +
    1034 XTENSOR_ASSERT_MSG(
    +
    1035 detail::check_resize_dimension(m_shape, shape),
    +
    1036 "cannot change the number of dimensions of xtensor"
    +
    1037 )
    +
    1038 if (base_type::static_layout != layout_type::dynamic && l != base_type::static_layout)
    +
    1039 {
    +
    1040 XTENSOR_THROW(
    +
    1041 std::runtime_error,
    +
    1042 "Cannot change layout_type if template parameter not layout_type::dynamic."
    +
    1043 );
    +
    1044 }
    +
    1045 m_layout = l;
    +
    1046 resize(std::forward<S>(shape), true);
    +
    1047 }
    +
    +
    1048
    +
    1056 template <class D>
    +
    1057 template <class S>
    +
    +
    1058 inline void xstrided_container<D>::resize(S&& shape, const strides_type& strides)
    +
    1059 {
    +
    1060 XTENSOR_ASSERT_MSG(
    +
    1061 detail::check_resize_dimension(m_shape, shape),
    +
    1062 "cannot change the number of dimensions of xtensor"
    +
    1063 )
    +
    1064 if (base_type::static_layout != layout_type::dynamic)
    +
    1065 {
    +
    1066 XTENSOR_THROW(
    +
    1067 std::runtime_error,
    +
    1068 "Cannot resize with custom strides when layout() is != layout_type::dynamic."
    +
    1069 );
    +
    1070 }
    +
    1071 m_shape = xtl::forward_sequence<shape_type, S>(shape);
    +
    1072 m_strides = strides;
    +
    1073 resize_container(m_backstrides, m_strides.size());
    +
    1074 adapt_strides(m_shape, m_strides, m_backstrides);
    +
    1075 m_layout = layout_type::dynamic;
    +
    1076 detail::resize_data_container(this->storage(), compute_size(m_shape));
    +
    1077 }
    +
    +
    1078
    +
    1092 template <class D>
    +
    1093 template <class S>
    +
    + +
    1095 {
    +
    1096 reshape_impl(
    +
    1097 std::forward<S>(shape),
    +
    1098 xtl::is_signed<std::decay_t<typename std::decay_t<S>::value_type>>(),
    +
    1099 std::forward<layout_type>(layout)
    +
    1100 );
    +
    1101 return this->derived_cast();
    +
    1102 }
    +
    +
    +
    1103
    +
    1104 template <class D>
    +
    1105 template <class T>
    +
    1106 inline auto& xstrided_container<D>::reshape(std::initializer_list<T> shape, layout_type layout) &
    +
    1107 {
    +
    1108 using sh_type = rebind_container_t<T, shape_type>;
    +
    1109 sh_type sh = xtl::make_sequence<sh_type>(shape.size());
    +
    1110 std::copy(shape.begin(), shape.end(), sh.begin());
    +
    1111 reshape_impl(std::move(sh), xtl::is_signed<T>(), std::forward<layout_type>(layout));
    +
    1112 return this->derived_cast();
    +
    1113 }
    +
    1114
    +
    1115 template <class D>
    +
    1116 template <class S>
    +
    1117 inline void
    +
    1118 xstrided_container<D>::reshape_impl(S&& shape, std::false_type /* is unsigned */, layout_type layout)
    +
    1119 {
    +
    1120 if (compute_size(shape) != this->size())
    +
    1121 {
    +
    1122 XTENSOR_THROW(
    +
    1123 std::runtime_error,
    +
    1124 "Cannot reshape with incorrect number of elements. Do you mean to resize?"
    +
    1125 );
    +
    1126 }
    +
    1127 if (D::static_layout == layout_type::dynamic && layout == layout_type::dynamic)
    +
    1128 {
    +
    1129 layout = XTENSOR_DEFAULT_LAYOUT; // fall back to default layout
    +
    1130 }
    +
    1131 if (D::static_layout != layout_type::dynamic && layout != D::static_layout)
    +
    1132 {
    +
    1133 XTENSOR_THROW(std::runtime_error, "Cannot reshape with different layout if static layout != dynamic.");
    +
    1134 }
    +
    1135 m_layout = layout;
    +
    1136 m_shape = xtl::forward_sequence<shape_type, S>(shape);
    +
    1137 resize_container(m_strides, m_shape.size());
    +
    1138 resize_container(m_backstrides, m_shape.size());
    +
    1139 compute_strides<D::static_layout>(m_shape, m_layout, m_strides, m_backstrides);
    +
    1140 }
    +
    1141
    +
    1142 template <class D>
    +
    1143 template <class S>
    +
    1144 inline void
    +
    1145 xstrided_container<D>::reshape_impl(S&& _shape, std::true_type /* is signed */, layout_type layout)
    +
    1146 {
    +
    1147 using tmp_value_type = typename std::decay_t<S>::value_type;
    +
    1148 auto new_size = compute_size(_shape);
    +
    1149 if (this->size() % new_size)
    +
    1150 {
    +
    1151 XTENSOR_THROW(std::runtime_error, "Negative axis size cannot be inferred. Shape mismatch.");
    +
    1152 }
    +
    1153 std::decay_t<S> shape = _shape;
    +
    1154 tmp_value_type accumulator = 1;
    +
    1155 std::size_t neg_idx = 0;
    +
    1156 std::size_t i = 0;
    +
    1157 for (auto it = shape.begin(); it != shape.end(); ++it, i++)
    +
    1158 {
    +
    1159 auto&& dim = *it;
    +
    1160 if (dim < 0)
    +
    1161 {
    +
    1162 XTENSOR_ASSERT(dim == -1 && !neg_idx);
    +
    1163 neg_idx = i;
    +
    1164 }
    +
    1165 accumulator *= dim;
    +
    1166 }
    +
    1167 if (accumulator < 0)
    +
    1168 {
    +
    1169 shape[neg_idx] = static_cast<tmp_value_type>(this->size()) / std::abs(accumulator);
    +
    1170 }
    +
    1171 else if (this->size() != new_size)
    +
    1172 {
    +
    1173 XTENSOR_THROW(
    +
    1174 std::runtime_error,
    +
    1175 "Cannot reshape with incorrect number of elements. Do you mean to resize?"
    +
    1176 );
    +
    1177 }
    +
    1178 m_layout = layout;
    +
    1179 m_shape = xtl::forward_sequence<shape_type, S>(shape);
    +
    1180 resize_container(m_strides, m_shape.size());
    +
    1181 resize_container(m_backstrides, m_shape.size());
    +
    1182 compute_strides<D::static_layout>(m_shape, m_layout, m_strides, m_backstrides);
    +
    1183 }
    +
    1184
    +
    1185 template <class D>
    +
    1186 inline auto xstrided_container<D>::mutable_layout() noexcept -> layout_type&
    +
    1187 {
    +
    1188 return m_layout;
    +
    1189 }
    +
    1190}
    +
    1191
    +
    1192#endif
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Base class for implementation of common expression access methods.
    +
    Dense multidimensional container adaptor with tensor semantic.
    Definition xarray.hpp:217
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    Base class for dense multidimensional containers.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the container.
    +
    size_type size() const noexcept
    Returns the number of element in the container.
    +
    constexpr const inner_backstrides_type & backstrides() const noexcept
    Returns the backstrides of the container.
    +
    constexpr size_type dimension() const noexcept
    Returns the number of dimensions of the container.
    +
    reference flat(size_type i)
    Returns a reference to the element at the specified position in the container storage (as if it was o...
    +
    constexpr const inner_strides_type & strides() const noexcept
    Returns the strides of the container.
    +
    bool has_linear_assign(const S &strides) const noexcept
    Checks whether the xcontainer can be linearly assigned to an expression with the specified strides.
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the container to the specified parameter.
    +
    constexpr const inner_shape_type & shape() const noexcept
    Returns the shape of the container.
    +
    pointer data() noexcept
    Returns a pointer to the underlying array serving as element storage.
    +
    const size_type data_offset() const noexcept
    Returns the offset to the first element in the container.
    +
    reference back()
    Returns a reference to the last element of the expression.
    +
    reference front()
    Returns a reference to the first element of the expression.
    +
    void fill(const T &value)
    Fills the container with the given value.
    +
    Base class for multidimensional iterable expressions with contiguous storage.
    + +
    Partial implementation of xcontainer that embeds the strides and the shape.
    +
    layout_type layout() const noexcept
    Return the layout_type of the container.
    +
    void resize(S &&shape, const strides_type &strides)
    Resizes the container.
    +
    void resize(S &&shape, layout_type l)
    Resizes the container.
    +
    auto & reshape(S &&shape, layout_type layout=base_type::static_layout) &
    Reshapes the container and keeps old elements.
    +
    void resize(S &&shape, bool force=false)
    Resizes the container.
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + +
    +
    + + + + diff --git a/xcsv_8hpp_source.html b/xcsv_8hpp_source.html new file mode 100644 index 000000000..4b6532b42 --- /dev/null +++ b/xcsv_8hpp_source.html @@ -0,0 +1,385 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xcsv.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xcsv.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_CSV_HPP
    +
    11#define XTENSOR_CSV_HPP
    +
    12
    +
    13#include <exception>
    +
    14#include <istream>
    +
    15#include <iterator>
    +
    16#include <sstream>
    +
    17#include <string>
    +
    18#include <utility>
    +
    19
    +
    20#include "xtensor.hpp"
    +
    21#include "xtensor_config.hpp"
    +
    22
    +
    23namespace xt
    +
    24{
    +
    25
    +
    26 /**************************************
    +
    27 * load_csv and dump_csv declarations *
    +
    28 **************************************/
    +
    29
    +
    30 template <class T, class A = std::allocator<T>>
    +
    31 using xcsv_tensor = xtensor_container<std::vector<T, A>, 2, layout_type::row_major>;
    +
    32
    +
    33 template <class T, class A = std::allocator<T>>
    +
    34 xcsv_tensor<T, A> load_csv(
    +
    35 std::istream& stream,
    +
    36 const char delimiter = ',',
    +
    37 const std::size_t skip_rows = 0,
    +
    38 const std::ptrdiff_t max_rows = -1,
    +
    39 const std::string comments = "#"
    +
    40 );
    +
    41
    +
    42 template <class E>
    +
    43 void dump_csv(std::ostream& stream, const xexpression<E>& e);
    +
    44
    +
    45 /*****************************************
    +
    46 * load_csv and dump_csv implementations *
    +
    47 *****************************************/
    +
    48
    +
    49 namespace detail
    +
    50 {
    +
    51 template <class T>
    +
    52 inline T lexical_cast(const std::string& cell)
    +
    53 {
    +
    54 T res;
    +
    55 std::istringstream iss(cell);
    +
    56 iss >> res;
    +
    57 return res;
    +
    58 }
    +
    59
    +
    60 template <>
    +
    61 inline std::string lexical_cast(const std::string& cell)
    +
    62 {
    +
    63 size_t first = cell.find_first_not_of(' ');
    +
    64 if (first == std::string::npos)
    +
    65 {
    +
    66 return cell;
    +
    67 }
    +
    68
    +
    69 size_t last = cell.find_last_not_of(' ');
    +
    70 return cell.substr(first, last == std::string::npos ? cell.size() : last + 1);
    +
    71 }
    +
    72
    +
    73 template <>
    +
    74 inline float lexical_cast<float>(const std::string& cell)
    +
    75 {
    +
    76 return std::stof(cell);
    +
    77 }
    +
    78
    +
    79 template <>
    +
    80 inline double lexical_cast<double>(const std::string& cell)
    +
    81 {
    +
    82 return std::stod(cell);
    +
    83 }
    +
    84
    +
    85 template <>
    +
    86 inline long double lexical_cast<long double>(const std::string& cell)
    +
    87 {
    +
    88 return std::stold(cell);
    +
    89 }
    +
    90
    +
    91 template <>
    +
    92 inline int lexical_cast<int>(const std::string& cell)
    +
    93 {
    +
    94 return std::stoi(cell);
    +
    95 }
    +
    96
    +
    97 template <>
    +
    98 inline long lexical_cast<long>(const std::string& cell)
    +
    99 {
    +
    100 return std::stol(cell);
    +
    101 }
    +
    102
    +
    103 template <>
    +
    104 inline long long lexical_cast<long long>(const std::string& cell)
    +
    105 {
    +
    106 return std::stoll(cell);
    +
    107 }
    +
    108
    +
    109 template <>
    +
    110 inline unsigned int lexical_cast<unsigned int>(const std::string& cell)
    +
    111 {
    +
    112 return static_cast<unsigned int>(std::stoul(cell));
    +
    113 }
    +
    114
    +
    115 template <>
    +
    116 inline unsigned long lexical_cast<unsigned long>(const std::string& cell)
    +
    117 {
    +
    118 return std::stoul(cell);
    +
    119 }
    +
    120
    +
    121 template <>
    +
    122 inline unsigned long long lexical_cast<unsigned long long>(const std::string& cell)
    +
    123 {
    +
    124 return std::stoull(cell);
    +
    125 }
    +
    126
    +
    127 template <class ST, class T, class OI>
    +
    128 ST load_csv_row(std::istream& row_stream, OI output, std::string cell, const char delimiter = ',')
    +
    129 {
    +
    130 ST length = 0;
    +
    131 while (std::getline(row_stream, cell, delimiter))
    +
    132 {
    +
    133 *output++ = lexical_cast<T>(cell);
    +
    134 ++length;
    +
    135 }
    +
    136 return length;
    +
    137 }
    +
    138 }
    +
    139
    +
    151 template <class T, class A>
    +
    + +
    153 std::istream& stream,
    +
    154 const char delimiter,
    +
    155 const std::size_t skip_rows,
    +
    156 const std::ptrdiff_t max_rows,
    +
    157 const std::string comments
    +
    158 )
    +
    159 {
    +
    160 using tensor_type = xcsv_tensor<T, A>;
    +
    161 using storage_type = typename tensor_type::storage_type;
    +
    162 using size_type = typename tensor_type::size_type;
    +
    163 using inner_shape_type = typename tensor_type::inner_shape_type;
    +
    164 using inner_strides_type = typename tensor_type::inner_strides_type;
    +
    165 using output_iterator = std::back_insert_iterator<storage_type>;
    +
    166
    +
    167 storage_type data;
    +
    168 size_type nbrow = 0, nbcol = 0, nhead = 0;
    +
    169 {
    +
    170 output_iterator output(data);
    +
    171 std::string row, cell;
    +
    172 while (std::getline(stream, row))
    +
    173 {
    +
    174 if (nhead < skip_rows)
    +
    175 {
    +
    176 ++nhead;
    +
    177 continue;
    +
    178 }
    +
    179 if (std::equal(comments.begin(), comments.end(), row.begin()))
    +
    180 {
    +
    181 continue;
    +
    182 }
    +
    183 if (0 < max_rows && max_rows <= static_cast<const long long>(nbrow))
    +
    184 {
    +
    185 break;
    +
    186 }
    +
    187 std::stringstream row_stream(row);
    +
    188 nbcol = detail::load_csv_row<size_type, T, output_iterator>(row_stream, output, cell, delimiter);
    +
    189 ++nbrow;
    +
    190 }
    +
    191 }
    +
    192 inner_shape_type shape = {nbrow, nbcol};
    +
    193 inner_strides_type strides; // no need for initializer list for stack-allocated strides_type
    +
    194 size_type data_size = compute_strides(shape, layout_type::row_major, strides);
    +
    195 // Sanity check for data size.
    +
    196 if (data.size() != data_size)
    +
    197 {
    +
    198 XTENSOR_THROW(std::runtime_error, "Inconsistent row lengths in CSV");
    +
    199 }
    +
    200 return tensor_type(std::move(data), std::move(shape), std::move(strides));
    +
    201 }
    +
    +
    202
    +
    209 template <class E>
    +
    +
    210 void dump_csv(std::ostream& stream, const xexpression<E>& e)
    +
    211 {
    +
    212 using size_type = typename E::size_type;
    +
    213 const E& ex = e.derived_cast();
    +
    214 if (ex.dimension() != 2)
    +
    215 {
    +
    216 XTENSOR_THROW(std::runtime_error, "Only 2-D expressions can be serialized to CSV");
    +
    217 }
    +
    218 size_type nbrows = ex.shape()[0], nbcols = ex.shape()[1];
    +
    219 auto st = ex.stepper_begin(ex.shape());
    +
    220 for (size_type r = 0; r != nbrows; ++r)
    +
    221 {
    +
    222 for (size_type c = 0; c != nbcols; ++c)
    +
    223 {
    +
    224 stream << *st;
    +
    225 if (c != nbcols - 1)
    +
    226 {
    +
    227 st.step(1);
    +
    228 stream << ',';
    +
    229 }
    +
    230 else
    +
    231 {
    +
    232 st.reset(1);
    +
    233 st.step(0);
    +
    234 stream << std::endl;
    +
    235 }
    +
    236 }
    +
    237 }
    +
    238 }
    +
    +
    239
    +
    + +
    241 {
    +
    242 char delimiter;
    +
    243 std::size_t skip_rows;
    +
    244 std::ptrdiff_t max_rows;
    +
    245 std::string comments;
    +
    246
    + +
    248 : delimiter(',')
    +
    249 , skip_rows(0)
    +
    250 , max_rows(-1)
    +
    251 , comments("#")
    +
    252 {
    +
    253 }
    +
    254 };
    +
    +
    255
    +
    256 template <class E>
    +
    257 void load_file(std::istream& stream, xexpression<E>& e, const xcsv_config& config)
    +
    258 {
    +
    259 e.derived_cast() = load_csv<typename E::value_type>(
    +
    260 stream,
    +
    261 config.delimiter,
    +
    262 config.skip_rows,
    +
    263 config.max_rows,
    +
    264 config.comments
    +
    265 );
    +
    266 }
    +
    267
    +
    268 template <class E>
    +
    269 void dump_file(std::ostream& stream, const xexpression<E>& e, const xcsv_config&)
    +
    270 {
    +
    271 dump_csv(stream, e);
    +
    272 }
    +
    273}
    +
    274
    +
    275#endif
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    xcsv_tensor< T, A > load_csv(std::istream &stream, const char delimiter=',', const std::size_t skip_rows=0, const std::ptrdiff_t max_rows=-1, const std::string comments="#")
    Load tensor from CSV.
    Definition xcsv.hpp:152
    +
    auto row(E &&e, std::ptrdiff_t index)
    Constructs and returns a row (sliced view) on the specified expression.
    Definition xview.hpp:1922
    + +
    void dump_csv(std::ostream &stream, const xexpression< E > &e)
    Dump tensor to CSV.
    Definition xcsv.hpp:210
    + +
    +
    + + + + diff --git a/xdynamic__view_8hpp_source.html b/xdynamic__view_8hpp_source.html new file mode 100644 index 000000000..a2c53c6d8 --- /dev/null +++ b/xdynamic__view_8hpp_source.html @@ -0,0 +1,972 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xdynamic_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xdynamic_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) 2016, Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * *
    +
    4 * Distributed under the terms of the BSD 3-Clause License. *
    +
    5 * *
    +
    6 * The full license is in the file LICENSE, distributed with this software. *
    +
    7 ****************************************************************************/
    +
    8
    +
    9#ifndef XTENSOR_DYNAMIC_VIEW_HPP
    +
    10#define XTENSOR_DYNAMIC_VIEW_HPP
    +
    11
    +
    12#include <xtl/xsequence.hpp>
    +
    13#include <xtl/xvariant.hpp>
    +
    14
    +
    15#include "xexpression.hpp"
    +
    16#include "xiterable.hpp"
    +
    17#include "xlayout.hpp"
    +
    18#include "xsemantic.hpp"
    +
    19#include "xstrided_view_base.hpp"
    +
    20
    +
    21namespace xt
    +
    22{
    +
    23
    +
    24 template <class CT, class S, layout_type L, class FST>
    +
    25 class xdynamic_view;
    +
    26
    +
    27 template <class CT, class S, layout_type L, class FST>
    +
    + +
    29 {
    +
    30 using xexpression_type = std::decay_t<CT>;
    +
    31 using undecay_expression = CT;
    +
    32 using reference = inner_reference_t<undecay_expression>;
    +
    33 using const_reference = typename xexpression_type::const_reference;
    +
    34 using size_type = typename xexpression_type::size_type;
    +
    35 using shape_type = std::decay_t<S>;
    +
    36 using undecay_shape = S;
    +
    37 using storage_getter = FST;
    +
    38 using inner_storage_type = typename storage_getter::type;
    +
    39 using temporary_type = xarray<std::decay_t<typename xexpression_type::value_type>, xexpression_type::static_layout>;
    +
    40 static constexpr layout_type layout = L;
    +
    41 };
    +
    +
    42
    +
    43 template <class CT, class S, layout_type L, class FST>
    +
    +
    44 struct xiterable_inner_types<xdynamic_view<CT, S, L, FST>>
    +
    45 {
    +
    46 using inner_shape_type = S;
    +
    47 using inner_strides_type = inner_shape_type;
    +
    48 using inner_backstrides_type = inner_shape_type;
    +
    49
    +
    50#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ == 8
    +
    51 static constexpr auto
    +
    52 random_instantiation_var_for_gcc8_data_iface = has_data_interface<xdynamic_view<CT, S, L, FST>>::value;
    +
    53 static constexpr auto
    +
    54 random_instantiation_var_for_gcc8_has_strides = has_strides<xdynamic_view<CT, S, L, FST>>::value;
    +
    55#endif
    +
    56
    +
    57 // TODO: implement efficient stepper specific to the dynamic_view
    + + +
    60 };
    +
    +
    61
    +
    62 /****************************
    +
    63 * xdynamic_view extensions *
    +
    64 ****************************/
    +
    65
    +
    66 namespace extension
    +
    67 {
    +
    68 template <class Tag, class CT, class S, layout_type L, class FST>
    + +
    70
    +
    71 template <class CT, class S, layout_type L, class FST>
    +
    + +
    73 {
    + +
    75 };
    +
    +
    76
    +
    77 template <class CT, class S, layout_type L, class FST>
    +
    +
    78 struct xdynamic_view_base : xdynamic_view_base_impl<xexpression_tag_t<CT>, CT, S, L, FST>
    +
    79 {
    +
    80 };
    +
    +
    81
    +
    82 template <class CT, class S, layout_type L, class FST>
    +
    83 using xdynamic_view_base_t = typename xdynamic_view_base<CT, S, L, FST>::type;
    +
    84 }
    +
    85
    +
    86 /*****************
    +
    87 * xdynamic_view *
    +
    88 *****************/
    +
    89
    +
    90 namespace detail
    +
    91 {
    +
    92 template <class T>
    +
    93 class xfake_slice;
    +
    94 }
    +
    95
    +
    96 template <class CT, class S, layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, XTENSOR_DEFAULT_TRAVERSAL>>
    +
    +
    97 class xdynamic_view : public xview_semantic<xdynamic_view<CT, S, L, FST>>,
    +
    98 public xiterable<xdynamic_view<CT, S, L, FST>>,
    +
    99 public extension::xdynamic_view_base_t<CT, S, L, FST>,
    +
    100 private xstrided_view_base<xdynamic_view<CT, S, L, FST>>
    +
    101 {
    +
    102 public:
    +
    103
    + + + +
    107 using extension_base = extension::xdynamic_view_base_t<CT, S, L, FST>;
    +
    108 using expression_tag = typename extension_base::expression_tag;
    +
    109
    +
    110 using xexpression_type = typename base_type::xexpression_type;
    +
    111 using base_type::is_const;
    +
    112
    +
    113 using value_type = typename base_type::value_type;
    +
    114 using reference = typename base_type::reference;
    +
    115 using const_reference = typename base_type::const_reference;
    +
    116 using pointer = typename base_type::pointer;
    +
    117 using const_pointer = typename base_type::const_pointer;
    +
    118 using size_type = typename base_type::size_type;
    +
    119 using difference_type = typename base_type::difference_type;
    +
    120
    +
    121 using inner_storage_type = typename base_type::inner_storage_type;
    +
    122 using storage_type = typename base_type::storage_type;
    +
    123
    + +
    125 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    126 using inner_strides_type = typename base_type::inner_strides_type;
    +
    127 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    128
    +
    129 using shape_type = typename base_type::shape_type;
    +
    130 using strides_type = typename base_type::strides_type;
    +
    131 using backstrides_type = typename base_type::backstrides_type;
    +
    132
    +
    133 using stepper = typename iterable_base::stepper;
    +
    134 using const_stepper = typename iterable_base::const_stepper;
    +
    135
    +
    136 using base_type::contiguous_layout;
    +
    137 using base_type::static_layout;
    +
    138
    +
    139 using temporary_type = typename xcontainer_inner_types<self_type>::temporary_type;
    +
    140 using base_index_type = xindex_type_t<shape_type>;
    +
    141
    +
    142 using simd_value_type = typename base_type::simd_value_type;
    +
    143 using bool_load_type = typename base_type::bool_load_type;
    +
    144
    +
    145 using strides_vt = typename strides_type::value_type;
    +
    146 using slice_type = xtl::variant<detail::xfake_slice<strides_vt>, xkeep_slice<strides_vt>, xdrop_slice<strides_vt>>;
    +
    147 using slice_vector_type = std::vector<slice_type>;
    +
    148
    +
    149 template <class CTA, class SA>
    + +
    151 CTA&& e,
    +
    152 SA&& shape,
    +
    153 get_strides_t<S>&& strides,
    +
    154 std::size_t offset,
    + +
    156 slice_vector_type&& slices,
    +
    157 get_strides_t<S>&& adj_strides
    +
    158 ) noexcept;
    +
    159
    +
    160 template <class E>
    +
    161 self_type& operator=(const xexpression<E>& e);
    +
    162
    +
    163 template <class E>
    +
    164 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    165
    + +
    167 using base_type::is_contiguous;
    +
    168 using base_type::layout;
    +
    169 using base_type::shape;
    +
    170 using base_type::size;
    +
    171
    +
    172 // Explicitly deleting strides method to avoid compilers complaining
    +
    173 // about not being able to call the strides method from xstrided_view_base
    +
    174 // private base
    +
    175 const inner_strides_type& strides() const noexcept = delete;
    +
    176
    +
    177 reference operator()();
    +
    178 const_reference operator()() const;
    +
    179
    +
    180 template <class... Args>
    +
    181 reference operator()(Args... args);
    +
    182
    +
    183 template <class... Args>
    +
    184 const_reference operator()(Args... args) const;
    +
    185
    +
    186 template <class... Args>
    +
    187 reference unchecked(Args... args);
    +
    188
    +
    189 template <class... Args>
    +
    190 const_reference unchecked(Args... args) const;
    +
    191
    +
    192 reference flat(size_type index);
    +
    193 const_reference flat(size_type index) const;
    +
    194
    +
    195 using base_type::operator[];
    +
    196 using base_type::at;
    +
    197 using base_type::back;
    +
    198 using base_type::front;
    + +
    200 using base_type::periodic;
    +
    201
    +
    202 template <class It>
    +
    203 reference element(It first, It last);
    +
    204
    +
    205 template <class It>
    +
    206 const_reference element(It first, It last) const;
    +
    207
    +
    208 size_type data_offset() const noexcept;
    +
    209
    +
    210 // Explicitly deleting data methods so has_data_interface results
    +
    211 // to false instead of having compilers complaining about not being
    +
    212 // able to call the methods from the private base
    +
    213 value_type* data() noexcept = delete;
    +
    214 const value_type* data() const noexcept = delete;
    +
    215
    + + +
    218 using base_type::storage;
    +
    219
    +
    220 template <class O>
    +
    221 bool has_linear_assign(const O& str) const noexcept;
    +
    222
    +
    223 template <class T>
    +
    224 void fill(const T& value);
    +
    225
    +
    226 template <class ST>
    +
    227 stepper stepper_begin(const ST& shape);
    +
    228 template <class ST>
    +
    229 stepper stepper_end(const ST& shape, layout_type l);
    +
    230
    +
    231 template <class ST>
    +
    232 const_stepper stepper_begin(const ST& shape) const;
    +
    233 template <class ST>
    +
    234 const_stepper stepper_end(const ST& shape, layout_type l) const;
    +
    235
    +
    236 using container_iterator = std::
    +
    237 conditional_t<is_const, typename storage_type::const_iterator, typename storage_type::iterator>;
    +
    238 using const_container_iterator = typename storage_type::const_iterator;
    +
    239
    +
    240 template <class E>
    + +
    242
    +
    243 template <class E>
    +
    244 rebind_t<E> build_view(E&& e) const;
    +
    245
    +
    246 private:
    +
    247
    +
    248 using offset_type = typename base_type::offset_type;
    +
    249
    +
    250 slice_vector_type m_slices;
    +
    251 inner_strides_type m_adj_strides;
    +
    252
    +
    253 container_iterator data_xbegin() noexcept;
    +
    254 const_container_iterator data_xbegin() const noexcept;
    +
    255 container_iterator data_xend(layout_type l, size_type offset) noexcept;
    +
    256 const_container_iterator data_xend(layout_type l, size_type offset) const noexcept;
    +
    257
    +
    258 template <class It>
    +
    259 It data_xbegin_impl(It begin) const noexcept;
    +
    260
    +
    261 template <class It>
    +
    262 It data_xend_impl(It end, layout_type l, size_type offset) const noexcept;
    +
    263
    +
    264 void assign_temporary_impl(temporary_type&& tmp);
    +
    265
    +
    266 template <class T, class... Args>
    +
    267 offset_type adjust_offset(offset_type offset, T idx, Args... args) const noexcept;
    +
    268 offset_type adjust_offset(offset_type offset) const noexcept;
    +
    269
    +
    270 template <class T, class... Args>
    +
    271 offset_type
    +
    272 adjust_offset_impl(offset_type offset, size_type idx_offset, T idx, Args... args) const noexcept;
    +
    273 offset_type adjust_offset_impl(offset_type offset, size_type idx_offset) const noexcept;
    +
    274
    +
    275 template <class It>
    +
    276 offset_type adjust_element_offset(offset_type offset, It first, It last) const noexcept;
    +
    277
    +
    278 template <class C>
    +
    279 friend class xstepper;
    +
    280 friend class xview_semantic<self_type>;
    +
    281 friend class xaccessible<self_type>;
    +
    282 friend class xconst_accessible<self_type>;
    +
    283 };
    +
    +
    284
    +
    285 /**************************
    +
    286 * xdynamic_view builders *
    +
    287 **************************/
    +
    288
    +
    289 template <class T>
    +
    290 using xdynamic_slice = xtl::variant<
    +
    291 T,
    +
    292
    + + + +
    296
    + + + +
    300
    + + +
    303
    +
    304 xrange<T>,
    + +
    306
    + + +
    309
    +
    310 xall_tag,
    + + +
    313
    +
    314 using xdynamic_slice_vector = std::vector<xdynamic_slice<std::ptrdiff_t>>;
    +
    315
    +
    316 template <class E>
    +
    317 auto dynamic_view(E&& e, const xdynamic_slice_vector& slices);
    +
    318
    +
    319 /******************************
    +
    320 * xfake_slice implementation *
    +
    321 ******************************/
    +
    322
    +
    323 namespace detail
    +
    324 {
    +
    325 template <class T>
    +
    326 class xfake_slice : public xslice<xfake_slice<T>>
    +
    327 {
    +
    328 public:
    +
    329
    +
    330 using size_type = T;
    +
    331 using self_type = xfake_slice<T>;
    +
    332
    +
    333 xfake_slice() = default;
    +
    334
    +
    335 size_type operator()(size_type /*i*/) const noexcept
    +
    336 {
    +
    337 return size_type(0);
    +
    338 }
    +
    339
    +
    340 size_type size() const noexcept
    +
    341 {
    +
    342 return size_type(1);
    +
    343 }
    +
    344
    +
    345 size_type step_size() const noexcept
    +
    346 {
    +
    347 return size_type(0);
    +
    348 }
    +
    349
    +
    350 size_type step_size(std::size_t /*i*/, std::size_t /*n*/ = 1) const noexcept
    +
    351 {
    +
    352 return size_type(0);
    +
    353 }
    +
    354
    +
    355 size_type revert_index(std::size_t i) const noexcept
    +
    356 {
    +
    357 return i;
    +
    358 }
    +
    359
    +
    360 bool contains(size_type /*i*/) const noexcept
    +
    361 {
    +
    362 return true;
    +
    363 }
    +
    364
    +
    365 bool operator==(const self_type& /*rhs*/) const noexcept
    +
    366 {
    +
    367 return true;
    +
    368 }
    +
    369
    +
    370 bool operator!=(const self_type& /*rhs*/) const noexcept
    +
    371 {
    +
    372 return false;
    +
    373 }
    +
    374 };
    +
    375 }
    +
    376
    +
    377 /********************************
    +
    378 * xdynamic_view implementation *
    +
    379 ********************************/
    +
    380
    +
    381 template <class CT, class S, layout_type L, class FST>
    +
    382 template <class CTA, class SA>
    +
    383 inline xdynamic_view<CT, S, L, FST>::xdynamic_view(
    +
    384 CTA&& e,
    +
    385 SA&& shape,
    +
    386 get_strides_t<S>&& strides,
    +
    387 std::size_t offset,
    +
    388 layout_type layout,
    +
    389 slice_vector_type&& slices,
    +
    390 get_strides_t<S>&& adj_strides
    +
    391 ) noexcept
    +
    392 : base_type(std::forward<CTA>(e), std::forward<SA>(shape), std::move(strides), offset, layout)
    +
    393 , m_slices(std::move(slices))
    +
    394 , m_adj_strides(std::move(adj_strides))
    +
    395 {
    +
    396 }
    +
    397
    +
    398 template <class CT, class S, layout_type L, class FST>
    +
    399 template <class E>
    +
    400 inline auto xdynamic_view<CT, S, L, FST>::operator=(const xexpression<E>& e) -> self_type&
    +
    401 {
    +
    402 return semantic_base::operator=(e);
    +
    403 }
    +
    404
    +
    405 template <class CT, class S, layout_type L, class FST>
    +
    406 template <class E>
    +
    407 inline auto xdynamic_view<CT, S, L, FST>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    408 {
    +
    409 std::fill(this->begin(), this->end(), e);
    +
    410 return *this;
    +
    411 }
    +
    412
    +
    413 template <class CT, class S, layout_type L, class FST>
    +
    414 inline auto xdynamic_view<CT, S, L, FST>::operator()() -> reference
    +
    415 {
    +
    416 return base_type::storage()[data_offset()];
    +
    417 }
    +
    418
    +
    419 template <class CT, class S, layout_type L, class FST>
    +
    420 inline auto xdynamic_view<CT, S, L, FST>::operator()() const -> const_reference
    +
    421 {
    +
    422 return base_type::storage()[data_offset()];
    +
    423 }
    +
    424
    +
    425 template <class CT, class S, layout_type L, class FST>
    +
    426 template <class... Args>
    +
    427 inline auto xdynamic_view<CT, S, L, FST>::operator()(Args... args) -> reference
    +
    428 {
    +
    429 XTENSOR_TRY(check_index(base_type::shape(), args...));
    +
    430 XTENSOR_CHECK_DIMENSION(base_type::shape(), args...);
    +
    431 offset_type offset = base_type::compute_index(args...);
    +
    432 offset = adjust_offset(offset, args...);
    +
    433 return base_type::storage()[static_cast<size_type>(offset)];
    +
    434 }
    +
    435
    +
    436 template <class CT, class S, layout_type L, class FST>
    +
    437 template <class... Args>
    +
    438 inline auto xdynamic_view<CT, S, L, FST>::operator()(Args... args) const -> const_reference
    +
    439 {
    +
    440 XTENSOR_TRY(check_index(base_type::shape(), args...));
    +
    441 XTENSOR_CHECK_DIMENSION(base_type::shape(), args...);
    +
    442 offset_type offset = base_type::compute_index(args...);
    +
    443 offset = adjust_offset(offset, args...);
    +
    444 return base_type::storage()[static_cast<size_type>(offset)];
    +
    445 }
    +
    446
    +
    447 template <class CT, class S, layout_type L, class FST>
    +
    448 template <class O>
    +
    449 inline bool xdynamic_view<CT, S, L, FST>::has_linear_assign(const O&) const noexcept
    +
    450 {
    +
    451 return false;
    +
    452 }
    +
    453
    +
    454 template <class CT, class S, layout_type L, class FST>
    +
    455 template <class... Args>
    +
    456 inline auto xdynamic_view<CT, S, L, FST>::unchecked(Args... args) -> reference
    +
    457 {
    +
    458 offset_type offset = base_type::compute_unchecked_index(args...);
    +
    459 offset = adjust_offset(args...);
    +
    460 return base_type::storage()[static_cast<size_type>(offset)];
    +
    461 }
    +
    462
    +
    463 template <class CT, class S, layout_type L, class FST>
    +
    464 template <class... Args>
    +
    465 inline auto xdynamic_view<CT, S, L, FST>::unchecked(Args... args) const -> const_reference
    +
    466 {
    +
    467 offset_type offset = base_type::compute_unchecked_index(args...);
    +
    468 offset = adjust_offset(args...);
    +
    469 return base_type::storage()[static_cast<size_type>(offset)];
    +
    470 }
    +
    471
    +
    472 template <class CT, class S, layout_type L, class FST>
    +
    473 inline auto xdynamic_view<CT, S, L, FST>::flat(size_type i) -> reference
    +
    474 {
    +
    475 return base_type::storage()[data_offset() + i];
    +
    476 }
    +
    477
    +
    478 template <class CT, class S, layout_type L, class FST>
    +
    479 inline auto xdynamic_view<CT, S, L, FST>::flat(size_type i) const -> const_reference
    +
    480 {
    +
    481 return base_type::storage()[data_offset() + i];
    +
    482 }
    +
    483
    +
    484 template <class CT, class S, layout_type L, class FST>
    +
    485 template <class It>
    +
    486 inline auto xdynamic_view<CT, S, L, FST>::element(It first, It last) -> reference
    +
    487 {
    +
    488 XTENSOR_TRY(check_element_index(base_type::shape(), first, last));
    +
    489 offset_type offset = base_type::compute_element_index(first, last);
    +
    490 offset = adjust_element_offset(offset, first, last);
    +
    491 return base_type::storage()[static_cast<size_type>(offset)];
    +
    492 }
    +
    493
    +
    494 template <class CT, class S, layout_type L, class FST>
    +
    495 template <class It>
    +
    496 inline auto xdynamic_view<CT, S, L, FST>::element(It first, It last) const -> const_reference
    +
    497 {
    +
    498 XTENSOR_TRY(check_element_index(base_type::shape(), first, last));
    +
    499 offset_type offset = base_type::compute_element_index(first, last);
    +
    500 offset = adjust_element_offset(offset, first, last);
    +
    501 return base_type::storage()[static_cast<size_type>(offset)];
    +
    502 }
    +
    503
    +
    504 template <class CT, class S, layout_type L, class FST>
    +
    505 inline auto xdynamic_view<CT, S, L, FST>::data_offset() const noexcept -> size_type
    +
    506 {
    +
    507 size_type offset = base_type::data_offset();
    +
    508 size_type sl_offset = xtl::visit(
    +
    509 [](const auto& sl)
    +
    510 {
    +
    511 return sl(size_type(0));
    +
    512 },
    +
    513 m_slices[0]
    +
    514 );
    +
    515 return offset + sl_offset * m_adj_strides[0];
    +
    516 }
    +
    517
    +
    518 template <class CT, class S, layout_type L, class FST>
    +
    519 template <class T>
    +
    520 inline void xdynamic_view<CT, S, L, FST>::fill(const T& value)
    +
    521 {
    +
    522 return std::fill(this->linear_begin(), this->linear_end(), value);
    +
    523 }
    +
    524
    +
    525 template <class CT, class S, layout_type L, class FST>
    +
    526 template <class ST>
    +
    527 inline auto xdynamic_view<CT, S, L, FST>::stepper_begin(const ST& shape) -> stepper
    +
    528 {
    +
    529 size_type offset = shape.size() - dimension();
    +
    530 return stepper(this, offset);
    +
    531 }
    +
    532
    +
    533 template <class CT, class S, layout_type L, class FST>
    +
    534 template <class ST>
    +
    535 inline auto xdynamic_view<CT, S, L, FST>::stepper_end(const ST& shape, layout_type /*l*/) -> stepper
    +
    536 {
    +
    537 size_type offset = shape.size() - dimension();
    +
    538 return stepper(this, offset, true);
    +
    539 }
    +
    540
    +
    541 template <class CT, class S, layout_type L, class FST>
    +
    542 template <class ST>
    +
    543 inline auto xdynamic_view<CT, S, L, FST>::stepper_begin(const ST& shape) const -> const_stepper
    +
    544 {
    +
    545 size_type offset = shape.size() - dimension();
    +
    546 return const_stepper(this, offset);
    +
    547 }
    +
    548
    +
    549 template <class CT, class S, layout_type L, class FST>
    +
    550 template <class ST>
    +
    551 inline auto xdynamic_view<CT, S, L, FST>::stepper_end(const ST& shape, layout_type /*l*/) const
    +
    552 -> const_stepper
    +
    553 {
    +
    554 size_type offset = shape.size() - dimension();
    +
    555 return const_stepper(this, offset, true);
    +
    556 }
    +
    557
    +
    558 template <class CT, class S, layout_type L, class FST>
    +
    559 template <class E>
    +
    560 inline auto xdynamic_view<CT, S, L, FST>::build_view(E&& e) const -> rebind_t<E>
    +
    561 {
    +
    562 inner_shape_type sh(this->shape());
    +
    563 inner_strides_type str(base_type::strides());
    +
    564 slice_vector_type svt(m_slices);
    +
    565 inner_strides_type adj_str(m_adj_strides);
    +
    566 return rebind_t<E>(
    +
    567 std::forward<E>(e),
    +
    568 std::move(sh),
    +
    569 std::move(str),
    +
    570 base_type::data_offset(),
    +
    571 this->layout(),
    +
    572 std::move(svt),
    +
    573 std::move(adj_str)
    +
    574 );
    +
    575 }
    +
    576
    +
    577 template <class CT, class S, layout_type L, class FST>
    +
    578 inline auto xdynamic_view<CT, S, L, FST>::data_xbegin() noexcept -> container_iterator
    +
    579 {
    +
    580 return data_xbegin_impl(this->storage().begin());
    +
    581 }
    +
    582
    +
    583 template <class CT, class S, layout_type L, class FST>
    +
    584 inline auto xdynamic_view<CT, S, L, FST>::data_xbegin() const noexcept -> const_container_iterator
    +
    585 {
    +
    586 return data_xbegin_impl(this->storage().cbegin());
    +
    587 }
    +
    588
    +
    589 template <class CT, class S, layout_type L, class FST>
    +
    590 inline auto xdynamic_view<CT, S, L, FST>::data_xend(layout_type l, size_type offset) noexcept
    +
    591 -> container_iterator
    +
    592 {
    +
    593 return data_xend_impl(this->storage().begin(), l, offset);
    +
    594 }
    +
    595
    +
    596 template <class CT, class S, layout_type L, class FST>
    +
    597 inline auto xdynamic_view<CT, S, L, FST>::data_xend(layout_type l, size_type offset) const noexcept
    +
    598 -> const_container_iterator
    +
    599 {
    +
    600 return data_xend_impl(this->storage().cbegin(), l, offset);
    +
    601 }
    +
    602
    +
    603 template <class CT, class S, layout_type L, class FST>
    +
    604 template <class It>
    +
    605 inline It xdynamic_view<CT, S, L, FST>::data_xbegin_impl(It begin) const noexcept
    +
    606 {
    +
    607 return begin + static_cast<std::ptrdiff_t>(data_offset());
    +
    608 }
    +
    609
    +
    610 // TODO: fix the data_xend implementation and assign_temporary_impl
    +
    611
    +
    612 template <class CT, class S, layout_type L, class FST>
    +
    613 template <class It>
    +
    614 inline It
    +
    615 xdynamic_view<CT, S, L, FST>::data_xend_impl(It begin, layout_type l, size_type offset) const noexcept
    +
    616 {
    +
    617 return strided_data_end(*this, begin + std::ptrdiff_t(data_offset()), l, offset);
    +
    618 }
    +
    619
    +
    620 template <class CT, class S, layout_type L, class FST>
    +
    621 inline void xdynamic_view<CT, S, L, FST>::assign_temporary_impl(temporary_type&& tmp)
    +
    622 {
    +
    623 std::copy(tmp.cbegin(), tmp.cend(), this->begin());
    +
    624 }
    +
    625
    +
    626 template <class CT, class S, layout_type L, class FST>
    +
    627 template <class T, class... Args>
    +
    628 inline auto
    +
    629 xdynamic_view<CT, S, L, FST>::adjust_offset(offset_type offset, T idx, Args... args) const noexcept
    +
    630 -> offset_type
    +
    631 {
    +
    632 constexpr size_type nb_args = sizeof...(Args) + 1;
    +
    633 size_type dim = base_type::dimension();
    +
    634 offset_type res = nb_args > dim ? adjust_offset(offset, args...)
    +
    635 : adjust_offset_impl(offset, dim - nb_args, idx, args...);
    +
    636 return res;
    +
    637 }
    +
    638
    +
    639 template <class CT, class S, layout_type L, class FST>
    +
    640 inline auto xdynamic_view<CT, S, L, FST>::adjust_offset(offset_type offset) const noexcept -> offset_type
    +
    641 {
    +
    642 return offset;
    +
    643 }
    +
    644
    +
    645 template <class CT, class S, layout_type L, class FST>
    +
    646 template <class T, class... Args>
    +
    647 inline auto
    +
    648 xdynamic_view<CT, S, L, FST>::adjust_offset_impl(offset_type offset, size_type idx_offset, T idx, Args... args)
    +
    649 const noexcept -> offset_type
    +
    650 {
    +
    651 offset_type sl_offset = xtl::visit(
    +
    652 [idx](const auto& sl)
    +
    653 {
    +
    654 using type = typename std::decay_t<decltype(sl)>::size_type;
    +
    655 return sl(type(idx));
    +
    656 },
    +
    657 m_slices[idx_offset]
    +
    658 );
    +
    659 offset_type res = offset + sl_offset * m_adj_strides[idx_offset];
    +
    660 return adjust_offset_impl(res, idx_offset + 1, args...);
    +
    661 }
    +
    662
    +
    663 template <class CT, class S, layout_type L, class FST>
    +
    664 inline auto xdynamic_view<CT, S, L, FST>::adjust_offset_impl(offset_type offset, size_type) const noexcept
    +
    665 -> offset_type
    +
    666 {
    +
    667 return offset;
    +
    668 }
    +
    669
    +
    670 template <class CT, class S, layout_type L, class FST>
    +
    671 template <class It>
    +
    672 inline auto
    +
    673 xdynamic_view<CT, S, L, FST>::adjust_element_offset(offset_type offset, It first, It last) const noexcept
    +
    674 -> offset_type
    +
    675 {
    +
    676 auto dst = std::distance(first, last);
    +
    677 offset_type dim = static_cast<offset_type>(dimension());
    +
    678 offset_type loop_offset = dst < dim ? dim - dst : offset_type(0);
    +
    679 offset_type idx_offset = dim < dst ? dst - dim : offset_type(0);
    +
    680 offset_type res = offset;
    +
    681 for (offset_type i = loop_offset; i < dim; ++i, ++first)
    +
    682 {
    +
    683 offset_type j = static_cast<offset_type>(first[idx_offset]);
    +
    684 offset_type sl_offset = xtl::visit(
    +
    685 [j](const auto& sl)
    +
    686 {
    +
    687 return static_cast<offset_type>(sl(j));
    +
    688 },
    +
    689 m_slices[static_cast<std::size_t>(i)]
    +
    690 );
    +
    691 res += sl_offset * m_adj_strides[static_cast<std::size_t>(i)];
    +
    692 }
    +
    693 return res;
    +
    694 }
    +
    695
    +
    696 /*****************************************
    +
    697 * xdynamic_view builders implementation *
    +
    698 *****************************************/
    +
    699
    +
    700 namespace detail
    +
    701 {
    +
    702 template <class V>
    +
    703 struct adj_strides_policy
    +
    704 {
    +
    705 using slice_vector = V;
    +
    706 using strides_type = dynamic_shape<std::ptrdiff_t>;
    +
    707
    +
    708 slice_vector new_slices;
    +
    709 strides_type new_adj_strides;
    +
    710
    +
    711 protected:
    +
    712
    +
    713 inline void resize(std::size_t size)
    +
    714 {
    +
    715 new_slices.resize(size);
    +
    716 new_adj_strides.resize(size);
    +
    717 }
    +
    718
    +
    719 inline void set_fake_slice(std::size_t idx)
    +
    720 {
    +
    721 new_slices[idx] = xfake_slice<std::ptrdiff_t>();
    +
    722 new_adj_strides[idx] = std::ptrdiff_t(0);
    +
    723 }
    +
    724
    +
    725 template <class ST, class S>
    +
    726 bool fill_args(
    +
    727 const xdynamic_slice_vector& slices,
    +
    728 std::size_t sl_idx,
    +
    729 std::size_t i,
    +
    730 std::size_t old_shape,
    +
    731 const ST& old_stride,
    +
    732 S& shape,
    +
    733 get_strides_t<S>& strides
    +
    734 )
    +
    735 {
    +
    736 return fill_args_impl<xkeep_slice<std::ptrdiff_t>>(
    +
    737 slices,
    +
    738 sl_idx,
    +
    739 i,
    +
    740 old_shape,
    +
    741 old_stride,
    +
    742 shape,
    +
    743 strides
    +
    744 )
    +
    745 || fill_args_impl<xdrop_slice<std::ptrdiff_t>>(
    +
    746 slices,
    +
    747 sl_idx,
    +
    748 i,
    +
    749 old_shape,
    +
    750 old_stride,
    +
    751 shape,
    +
    752 strides
    +
    753 );
    +
    754 }
    +
    755
    +
    756 template <class SL, class ST, class S>
    +
    757 bool fill_args_impl(
    +
    758 const xdynamic_slice_vector& slices,
    +
    759 std::size_t sl_idx,
    +
    760 std::size_t i,
    +
    761 std::size_t old_shape,
    +
    762 const ST& old_stride,
    +
    763 S& shape,
    +
    764 get_strides_t<S>& strides
    +
    765 )
    +
    766 {
    +
    767 auto* sl = xtl::get_if<SL>(&slices[sl_idx]);
    +
    768 if (sl != nullptr)
    +
    769 {
    +
    770 new_slices[i] = *sl;
    +
    771 auto& ns = xtl::get<SL>(new_slices[i]);
    +
    772 ns.normalize(old_shape);
    +
    773 shape[i] = static_cast<std::size_t>(ns.size());
    +
    774 strides[i] = std::ptrdiff_t(0);
    +
    775 new_adj_strides[i] = static_cast<std::ptrdiff_t>(old_stride);
    +
    776 }
    +
    777 return sl != nullptr;
    +
    778 }
    +
    779 };
    +
    780 }
    +
    781
    +
    782 template <class E>
    +
    783 inline auto dynamic_view(E&& e, const xdynamic_slice_vector& slices)
    +
    784 {
    +
    785 using view_type = xdynamic_view<xclosure_t<E>, dynamic_shape<std::size_t>>;
    +
    786 using slice_vector = typename view_type::slice_vector_type;
    +
    787 using policy = detail::adj_strides_policy<slice_vector>;
    +
    788 detail::strided_view_args<policy> args;
    +
    789 args.fill_args(
    +
    790 e.shape(),
    +
    791 detail::get_strides<XTENSOR_DEFAULT_TRAVERSAL>(e),
    +
    792 detail::get_offset<XTENSOR_DEFAULT_TRAVERSAL>(e),
    +
    793 e.layout(),
    +
    794 slices
    +
    795 );
    +
    796 return view_type(
    +
    797 std::forward<E>(e),
    +
    798 std::move(args.new_shape),
    +
    799 std::move(args.new_strides),
    +
    800 args.new_offset,
    +
    801 args.new_layout,
    +
    802 std::move(args.new_slices),
    +
    803 std::move(args.new_adj_strides)
    +
    804 );
    +
    805 }
    +
    806}
    +
    807
    +
    808#endif
    +
    Base class for implementation of common expression access methods.
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Base class for implementation of common expression constant access methods.
    +
    const_reference front() const
    Returns a constant reference to first the element of the expression.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    const_reference back() const
    Returns a constant reference to last the element of the expression.
    + + +
    layout_type layout() const noexcept
    Returns the layout of the xtrided_view_base.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xtrided_view_base.
    +
    Base class for xexpressions.
    + +
    Base class for multidimensional iterable expressions.
    + + + + + + +
    layout_type layout() const noexcept
    Returns the layout of the xtrided_view_base.
    +
    bool broadcast_shape(O &shape, bool reuse_cache=false) const
    Broadcast the shape of the view to the specified parameter.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xtrided_view_base.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the view.
    +
    xexpression_type & expression() noexcept
    Returns a reference to the underlying expression of the view.
    +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    layout_type
    Definition xlayout.hpp:24
    +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    + + + + + + + + + + + + +
    +
    + + + + diff --git a/xeval_8hpp_source.html b/xeval_8hpp_source.html new file mode 100644 index 000000000..3b7bd7a70 --- /dev/null +++ b/xeval_8hpp_source.html @@ -0,0 +1,244 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xeval.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xeval.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_EVAL_HPP
    +
    11#define XTENSOR_EVAL_HPP
    +
    12
    +
    13#include "xexpression_traits.hpp"
    +
    14#include "xshape.hpp"
    +
    15#include "xtensor_forward.hpp"
    +
    16
    +
    17namespace xt
    +
    18{
    +
    19
    +
    27 namespace detail
    +
    28 {
    +
    29 template <class T>
    +
    30 using is_container = std::is_base_of<xcontainer<std::remove_const_t<T>>, T>;
    +
    31 }
    +
    32
    +
    45 template <class T>
    +
    +
    46 inline auto eval(T&& t) -> std::enable_if_t<detail::is_container<std::decay_t<T>>::value, T&&>
    +
    47 {
    +
    48 return std::forward<T>(t);
    +
    49 }
    +
    +
    50
    +
    52 template <class T>
    +
    53 inline auto eval(T&& t)
    +
    54 -> std::enable_if_t<!detail::is_container<std::decay_t<T>>::value, temporary_type_t<T>>
    +
    55 {
    +
    56 return std::forward<T>(t);
    +
    57 }
    +
    58
    +
    60
    +
    61 namespace detail
    +
    62 {
    +
    63 /**********************************
    +
    64 * has_same_layout implementation *
    +
    65 **********************************/
    +
    66
    +
    67 template <layout_type L = layout_type::any, class E>
    +
    68 constexpr bool has_same_layout()
    +
    69 {
    +
    70 return (std::decay_t<E>::static_layout == L) || (L == layout_type::any);
    +
    71 }
    +
    72
    +
    73 template <layout_type L = layout_type::any, class E>
    +
    74 constexpr bool has_same_layout(E&&)
    +
    75 {
    +
    76 return has_same_layout<L, E>();
    +
    77 }
    +
    78
    +
    79 template <class E1, class E2>
    +
    80 constexpr bool has_same_layout(E1&&, E2&&)
    +
    81 {
    +
    82 return has_same_layout<std::decay_t<E1>::static_layout, E2>();
    +
    83 }
    +
    84
    +
    85 /*********************************
    +
    86 * has_fixed_dims implementation *
    +
    87 *********************************/
    +
    88
    +
    89 template <class E>
    +
    90 constexpr bool has_fixed_dims()
    +
    91 {
    +
    92 return detail::is_array<typename std::decay_t<E>::shape_type>::value;
    +
    93 }
    +
    94
    +
    95 template <class E>
    +
    96 constexpr bool has_fixed_dims(E&&)
    +
    97 {
    +
    98 return has_fixed_dims<E>();
    +
    99 }
    +
    100
    +
    101 /****************************************
    +
    102 * as_xarray_container_t implementation *
    +
    103 ****************************************/
    +
    104
    +
    105 template <class E, layout_type L>
    +
    106 using as_xarray_container_t = xarray<typename std::decay_t<E>::value_type, layout_remove_any(L)>;
    +
    107
    +
    108 /*****************************************
    +
    109 * as_xtensor_container_t implementation *
    +
    110 *****************************************/
    +
    111
    +
    112 template <class E, layout_type L>
    +
    113 using as_xtensor_container_t = xtensor<
    +
    114 typename std::decay_t<E>::value_type,
    +
    115 std::tuple_size<typename std::decay_t<E>::shape_type>::value,
    +
    116 layout_remove_any(L)>;
    +
    117 }
    +
    118
    +
    148 template <layout_type L = layout_type::any, class E>
    +
    +
    149 inline auto as_strided(E&& e)
    +
    150 -> std::enable_if_t<has_data_interface<std::decay_t<E>>::value && detail::has_same_layout<L, E>(), E&&>
    +
    151 {
    +
    152 return std::forward<E>(e);
    +
    153 }
    +
    +
    154
    +
    156 template <layout_type L = layout_type::any, class E>
    +
    157 inline auto as_strided(E&& e) -> std::enable_if_t<
    +
    158 (!(has_data_interface<std::decay_t<E>>::value && detail::has_same_layout<L, E>()))
    +
    159 && detail::has_fixed_dims<E>(),
    +
    160 detail::as_xtensor_container_t<E, L>>
    +
    161 {
    +
    162 return e;
    +
    163 }
    +
    164
    +
    165 template <layout_type L = layout_type::any, class E>
    +
    166 inline auto as_strided(E&& e) -> std::enable_if_t<
    +
    167 (!(has_data_interface<std::decay_t<E>>::value && detail::has_same_layout<L, E>()))
    +
    168 && (!detail::has_fixed_dims<E>()),
    +
    169 detail::as_xarray_container_t<E, L>>
    +
    170 {
    +
    171 return e;
    +
    172 }
    +
    173
    +
    175}
    +
    176
    +
    177#endif
    +
    auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
    Force evaluation of xexpression.
    Definition xeval.hpp:46
    +
    auto as_strided(E &&e) -> std::enable_if_t< has_data_interface< std::decay_t< E > >::value &&detail::has_same_layout< L, E >(), E && >
    Force evaluation of xexpression not providing a data interface and convert to the required layout.
    Definition xeval.hpp:149
    +
    standard mathematical functions for xexpressions
    +
    xtensor_container< uvector< T, A >, N, L > xtensor
    Alias template on xtensor_container with default parameters for data container type.
    + +
    +
    + + + + diff --git a/xexception_8hpp_source.html b/xexception_8hpp_source.html new file mode 100644 index 000000000..837566ea1 --- /dev/null +++ b/xexception_8hpp_source.html @@ -0,0 +1,496 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xexception.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xexception.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_EXCEPTION_HPP
    +
    11#define XTENSOR_EXCEPTION_HPP
    +
    12
    +
    13#include <iostream>
    +
    14#include <iterator>
    +
    15#include <sstream>
    +
    16#include <stdexcept>
    +
    17#include <string>
    +
    18#include <type_traits>
    +
    19
    +
    20#include <xtl/xcompare.hpp>
    +
    21#include <xtl/xsequence.hpp>
    +
    22#include <xtl/xspan_impl.hpp>
    +
    23
    +
    24#include "xtensor_config.hpp"
    +
    25
    +
    26#ifdef __GNUC__
    +
    27#define XTENSOR_UNUSED_VARIABLE __attribute__((unused))
    +
    28#else
    +
    29#define XTENSOR_UNUSED_VARIABLE
    +
    30#endif
    +
    31
    +
    32namespace xt
    +
    33{
    +
    + +
    35 {
    +
    36 };
    +
    +
    37
    +
    38 namespace
    +
    39 {
    +
    40 missing_type XTENSOR_UNUSED_VARIABLE missing;
    +
    41 }
    +
    42
    +
    43 namespace detail
    +
    44 {
    +
    45 template <class... Args>
    +
    46 struct last_type_is_missing_impl
    +
    47 : std::is_same<missing_type, xtl::mpl::back_t<xtl::mpl::vector<Args...>>>
    +
    48 {
    +
    49 };
    +
    50
    +
    51 template <>
    +
    52 struct last_type_is_missing_impl<> : std::false_type
    +
    53 {
    +
    54 };
    +
    55
    +
    56 template <class... Args>
    +
    57 constexpr bool last_type_is_missing = last_type_is_missing_impl<Args...>::value;
    +
    58 }
    +
    59
    +
    60 /*******************
    +
    61 * broadcast_error *
    +
    62 *******************/
    +
    63
    +
    +
    64 class broadcast_error : public std::runtime_error
    +
    65 {
    +
    66 public:
    +
    67
    +
    68 explicit broadcast_error(const char* msg)
    +
    69 : std::runtime_error(msg)
    +
    70 {
    +
    71 }
    +
    72 };
    +
    +
    73
    +
    74 template <class S1, class S2>
    +
    75 [[noreturn]] void throw_broadcast_error(const S1& lhs, const S2& rhs);
    +
    76
    +
    77 /*********************
    +
    78 * concatenate_error *
    +
    79 *********************/
    +
    80
    +
    +
    81 class concatenate_error : public std::runtime_error
    +
    82 {
    +
    83 public:
    +
    84
    +
    85 explicit concatenate_error(const char* msg)
    +
    86 : std::runtime_error(msg)
    +
    87 {
    +
    88 }
    +
    89 };
    +
    +
    90
    +
    91 template <class S1, class S2>
    +
    92 [[noreturn]] void throw_concatenate_error(const S1& lhs, const S2& rhs);
    +
    93
    +
    94 /**********************************
    +
    95 * broadcast_error implementation *
    +
    96 **********************************/
    +
    97
    +
    98 namespace detail
    +
    99 {
    +
    100 template <class S1, class S2>
    +
    101 inline std::string shape_error_message(const S1& lhs, const S2& rhs)
    +
    102 {
    +
    103 std::ostringstream buf("Incompatible dimension of arrays:", std::ios_base::ate);
    +
    104
    +
    105 buf << "\n LHS shape = (";
    +
    106 using size_type1 = typename S1::value_type;
    +
    107 std::ostream_iterator<size_type1> iter1(buf, ", ");
    +
    108 std::copy(lhs.cbegin(), lhs.cend(), iter1);
    +
    109
    +
    110 buf << ")\n RHS shape = (";
    +
    111 using size_type2 = typename S2::value_type;
    +
    112 std::ostream_iterator<size_type2> iter2(buf, ", ");
    +
    113 std::copy(rhs.cbegin(), rhs.cend(), iter2);
    +
    114 buf << ")";
    +
    115
    +
    116 return buf.str();
    +
    117 }
    +
    118 }
    +
    119
    +
    120#ifdef NDEBUG
    +
    121 // Do not inline this function
    +
    122 template <class S1, class S2>
    +
    123 [[noreturn]] void throw_broadcast_error(const S1&, const S2&)
    +
    124 {
    +
    125 XTENSOR_THROW(broadcast_error, "Incompatible dimension of arrays, compile in DEBUG for more info");
    +
    126 }
    +
    127#else
    +
    128 template <class S1, class S2>
    +
    129 [[noreturn]] void throw_broadcast_error(const S1& lhs, const S2& rhs)
    +
    130 {
    +
    131 std::string msg = detail::shape_error_message(lhs, rhs);
    +
    132 XTENSOR_THROW(broadcast_error, msg.c_str());
    +
    133 }
    +
    134#endif
    +
    135
    +
    136 /************************************
    +
    137 * concatenate_error implementation *
    +
    138 ************************************/
    +
    139
    +
    140#ifdef NDEBUG
    +
    141 // Do not inline this function
    +
    142 template <class S1, class S2>
    +
    143 [[noreturn]] void throw_concatenate_error(const S1&, const S2&)
    +
    144 {
    +
    145 XTENSOR_THROW(concatenate_error, "Incompatible dimension of arrays, compile in DEBUG for more info");
    +
    146 }
    +
    147#else
    +
    148 template <class S1, class S2>
    +
    149 [[noreturn]] void throw_concatenate_error(const S1& lhs, const S2& rhs)
    +
    150 {
    +
    151 std::string msg = detail::shape_error_message(lhs, rhs);
    +
    152 XTENSOR_THROW(concatenate_error, msg.c_str());
    +
    153 }
    +
    154#endif
    +
    155
    +
    156 /*******************
    +
    157 * transpose_error *
    +
    158 *******************/
    +
    159
    +
    +
    160 class transpose_error : public std::runtime_error
    +
    161 {
    +
    162 public:
    +
    163
    +
    164 explicit transpose_error(const char* msg)
    +
    165 : std::runtime_error(msg)
    +
    166 {
    +
    167 }
    +
    168 };
    +
    +
    169
    +
    170 /***************
    +
    171 * check_index *
    +
    172 ***************/
    +
    173
    +
    174 template <class S, class... Args>
    +
    175 void check_index(const S& shape, Args... args);
    +
    176
    +
    177 template <class S, class It>
    +
    178 void check_element_index(const S& shape, It first, It last);
    +
    179
    +
    180 namespace detail
    +
    181 {
    +
    182 template <class S, std::size_t dim>
    +
    183 inline void check_index_impl(const S&)
    +
    184 {
    +
    185 }
    +
    186
    +
    187 template <class S, std::size_t dim>
    +
    188 inline void check_index_impl(const S&, missing_type)
    +
    189 {
    +
    190 }
    +
    191
    +
    192 template <class S, std::size_t dim, class T, class... Args>
    +
    193 inline void check_index_impl(const S& shape, T arg, Args... args)
    +
    194 {
    +
    195 if (std::size_t(arg) >= std::size_t(shape[dim]) && shape[dim] != 1)
    +
    196 {
    +
    197 XTENSOR_THROW(
    +
    198 std::out_of_range,
    +
    199 "index " + std::to_string(arg) + " is out of bounds for axis " + std::to_string(dim)
    +
    200 + " with size " + std::to_string(shape[dim])
    +
    201 );
    +
    202 }
    +
    203 check_index_impl<S, dim + 1>(shape, args...);
    +
    204 }
    +
    205 }
    +
    206
    +
    207 template <class S>
    +
    208 inline void check_index(const S&)
    +
    209 {
    +
    210 }
    +
    211
    +
    212 template <class S>
    +
    213 inline void check_index(const S&, missing_type)
    +
    214 {
    +
    215 }
    +
    216
    +
    217 template <class S, class Arg, class... Args>
    +
    218 inline void check_index(const S& shape, Arg arg, Args... args)
    +
    219 {
    +
    220 constexpr std::size_t nargs = sizeof...(Args) + 1;
    +
    221 if (nargs == shape.size())
    +
    222 {
    +
    223 detail::check_index_impl<S, 0>(shape, arg, args...);
    +
    224 }
    +
    225 else if (nargs > shape.size())
    +
    226 {
    +
    227 // Too many arguments: drop the first
    +
    228 check_index(shape, args...);
    +
    229 }
    +
    230 else if (detail::last_type_is_missing<Args...>)
    +
    231 {
    +
    232 // Too few arguments & last argument xt::missing: postfix index with zeros
    +
    233 detail::check_index_impl<S, 0>(shape, arg, args...);
    +
    234 }
    +
    235 else
    +
    236 {
    +
    237 // Too few arguments: ignore the beginning of the shape
    +
    238 auto it = shape.end() - nargs;
    +
    239 detail::check_index_impl<decltype(it), 0>(it, arg, args...);
    +
    240 }
    +
    241 }
    +
    242
    +
    243 template <class S, class It>
    +
    244 inline void check_element_index(const S& shape, It first, It last)
    +
    245 {
    +
    246 using value_type = typename std::iterator_traits<It>::value_type;
    +
    247 using size_type = typename S::size_type;
    +
    248 auto dst = static_cast<size_type>(last - first);
    +
    249 It efirst = last - static_cast<std::ptrdiff_t>((std::min)(shape.size(), dst));
    +
    250 std::size_t axis = 0;
    +
    251
    +
    252 while (efirst != last)
    +
    253 {
    +
    254 if (*efirst >= value_type(shape[axis]) && shape[axis] != 1)
    +
    255 {
    +
    256 XTENSOR_THROW(
    +
    257 std::out_of_range,
    +
    258 "index " + std::to_string(*efirst) + " is out of bounds for axis " + std::to_string(axis)
    +
    259 + " with size " + std::to_string(shape[axis])
    +
    260 );
    +
    261 }
    +
    262 ++efirst, ++axis;
    +
    263 }
    +
    264 }
    +
    265
    +
    266 /*******************
    +
    267 * check_dimension *
    +
    268 *******************/
    +
    269
    +
    270 template <class S, class... Args>
    +
    271 inline void check_dimension(const S& shape, Args...)
    +
    272 {
    +
    273 if (sizeof...(Args) > shape.size())
    +
    274 {
    +
    275 XTENSOR_THROW(
    +
    276 std::out_of_range,
    +
    277 "Number of arguments (" + std::to_string(sizeof...(Args))
    +
    278 + ") is greater than the number of dimensions (" + std::to_string(shape.size()) + ")"
    +
    279 );
    +
    280 }
    +
    281 }
    +
    282
    +
    283 /*******************************
    +
    284 * check_axis implementation *
    +
    285 *******************************/
    +
    286
    +
    287 template <class A, class D>
    +
    288 inline void check_axis_in_dim(A axis, D dim, const char* subject = "Axis")
    +
    289 {
    +
    290 const auto sdim = static_cast<std::make_signed_t<D>>(dim);
    +
    291 if (xtl::cmp_greater_equal(axis, dim) || xtl::cmp_less(axis, -sdim))
    +
    292 {
    +
    293 XTENSOR_THROW(
    +
    294 std::out_of_range,
    +
    295 std::string(subject) + " (" + std::to_string(axis)
    +
    296 + ") is not within the number of dimensions (" + std::to_string(dim) + ')'
    +
    297 );
    +
    298 }
    +
    299 }
    +
    300
    +
    301 /****************
    +
    302 * check_access *
    +
    303 ****************/
    +
    304
    +
    305 template <class S, class... Args>
    +
    306 inline void check_access(const S& shape, Args... args)
    +
    307 {
    +
    308 check_dimension(shape, args...);
    +
    309 check_index(shape, args...);
    +
    310 }
    +
    311
    +
    312#if (defined(XTENSOR_ENABLE_ASSERT) && !defined(XTENSOR_DISABLE_EXCEPTIONS))
    +
    313#define XTENSOR_TRY(expr) XTENSOR_TRY_IMPL(expr, __FILE__, __LINE__)
    +
    314#define XTENSOR_TRY_IMPL(expr, file, line) \
    +
    315 try \
    +
    316 { \
    +
    317 expr; \
    +
    318 } \
    +
    319 catch (std::exception & e) \
    +
    320 { \
    +
    321 XTENSOR_THROW( \
    +
    322 std::runtime_error, \
    +
    323 std::string(file) + ':' + std::to_string(line) + ": check failed\n\t" + std::string(e.what()) \
    +
    324 ); \
    +
    325 }
    +
    326#else
    +
    327#define XTENSOR_TRY(expr)
    +
    328#endif
    +
    329
    +
    330#ifdef XTENSOR_ENABLE_ASSERT
    +
    331#define XTENSOR_ASSERT(expr) XTENSOR_ASSERT_IMPL(expr, __FILE__, __LINE__)
    +
    332#define XTENSOR_ASSERT_IMPL(expr, file, line) \
    +
    333 if (!(expr)) \
    +
    334 { \
    +
    335 XTENSOR_THROW( \
    +
    336 std::runtime_error, \
    +
    337 std::string(file) + ':' + std::to_string(line) + ": assertion failed (" #expr ") \n\t" \
    +
    338 ); \
    +
    339 }
    +
    340#else
    +
    341#define XTENSOR_ASSERT(expr)
    +
    342#endif
    +
    343
    +
    344#ifdef XTENSOR_ENABLE_CHECK_DIMENSION
    +
    345#define XTENSOR_CHECK_DIMENSION(S, ARGS) XTENSOR_TRY(check_dimension(S, ARGS))
    +
    346#else
    +
    347#define XTENSOR_CHECK_DIMENSION(S, ARGS)
    +
    348#endif
    +
    349
    +
    350#ifdef XTENSOR_ENABLE_ASSERT
    +
    351#define XTENSOR_ASSERT_MSG(expr, msg) \
    +
    352 if (!(expr)) \
    +
    353 { \
    +
    354 XTENSOR_THROW( \
    +
    355 std::runtime_error, \
    +
    356 std::string("Assertion error!\n") + msg + "\n " + __FILE__ + '(' + std::to_string(__LINE__) + ")\n" \
    +
    357 ); \
    +
    358 }
    +
    359#else
    +
    360#define XTENSOR_ASSERT_MSG(expr, msg)
    +
    361#endif
    +
    362
    +
    363#define XTENSOR_PRECONDITION(expr, msg) \
    +
    364 if (!(expr)) \
    +
    365 { \
    +
    366 XTENSOR_THROW( \
    +
    367 std::runtime_error, \
    +
    368 std::string("Precondition violation!\n") + msg + "\n " + __FILE__ + '(' \
    +
    369 + std::to_string(__LINE__) + ")\n" \
    +
    370 ); \
    +
    371 }
    +
    372}
    +
    373#endif // XEXCEPTION_HPP
    + + + +
    standard mathematical functions for xexpressions
    + +
    +
    + + + + diff --git a/xexpression_8hpp_source.html b/xexpression_8hpp_source.html new file mode 100644 index 000000000..219692db1 --- /dev/null +++ b/xexpression_8hpp_source.html @@ -0,0 +1,903 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xexpression.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xexpression.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_EXPRESSION_HPP
    +
    11#define XTENSOR_EXPRESSION_HPP
    +
    12
    +
    13#include <cstddef>
    +
    14#include <type_traits>
    +
    15#include <vector>
    +
    16
    +
    17#include <xtl/xclosure.hpp>
    +
    18#include <xtl/xmeta_utils.hpp>
    +
    19#include <xtl/xtype_traits.hpp>
    +
    20
    +
    21#include "xlayout.hpp"
    +
    22#include "xshape.hpp"
    +
    23#include "xtensor_forward.hpp"
    +
    24#include "xutils.hpp"
    +
    25
    +
    26namespace xt
    +
    27{
    +
    28
    +
    29 /***************************
    +
    30 * xexpression declaration *
    +
    31 ***************************/
    +
    32
    +
    45 template <class D>
    +
    + +
    47 {
    +
    48 public:
    +
    49
    +
    50 using derived_type = D;
    +
    51
    +
    + +
    +
    53 const derived_type& derived_cast() const& noexcept;
    +
    + +
    55
    +
    56 protected:
    +
    57
    +
    58 xexpression() = default;
    +
    59 ~xexpression() = default;
    +
    60
    +
    61 xexpression(const xexpression&) = default;
    +
    62 xexpression& operator=(const xexpression&) = default;
    +
    63
    +
    64 xexpression(xexpression&&) = default;
    +
    65 xexpression& operator=(xexpression&&) = default;
    +
    66 };
    +
    67
    +
    68 /************************************
    +
    69 * xsharable_expression declaration *
    +
    70 ************************************/
    +
    71
    +
    72 template <class E>
    + +
    74
    +
    75 template <class E>
    + +
    77
    +
    78 namespace detail
    +
    79 {
    +
    80 template <class E>
    + +
    82 }
    +
    83
    +
    84 template <class D>
    +
    + +
    86 {
    +
    87 protected:
    +
    88
    + +
    90 ~xsharable_expression() = default;
    +
    91
    + +
    93 xsharable_expression& operator=(const xsharable_expression&) = default;
    +
    94
    + +
    96 xsharable_expression& operator=(xsharable_expression&&) = default;
    +
    97
    +
    98 private:
    +
    99
    +
    100 std::shared_ptr<D> p_shared;
    +
    101
    +
    102 friend xshared_expression<D> detail::make_xshared_impl<D>(xsharable_expression<D>&&);
    +
    103 };
    +
    +
    104
    +
    105 /******************************
    +
    106 * xexpression implementation *
    +
    107 ******************************/
    +
    108
    +
    116 template <class D>
    +
    +
    117 inline auto xexpression<D>::derived_cast() & noexcept -> derived_type&
    +
    118 {
    +
    119 return *static_cast<derived_type*>(this);
    +
    120 }
    +
    +
    121
    +
    125 template <class D>
    +
    +
    126 inline auto xexpression<D>::derived_cast() const& noexcept -> const derived_type&
    +
    127 {
    +
    128 return *static_cast<const derived_type*>(this);
    +
    129 }
    +
    +
    130
    +
    134 template <class D>
    +
    +
    135 inline auto xexpression<D>::derived_cast() && noexcept -> derived_type
    +
    136 {
    +
    137 return *static_cast<derived_type*>(this);
    +
    138 }
    +
    +
    +
    139
    +
    141
    +
    142 /***************************************
    +
    143 * xsharable_expression implementation *
    +
    144 ***************************************/
    +
    145
    +
    146 template <class D>
    + +
    148 : p_shared(nullptr)
    +
    149 {
    +
    150 }
    +
    151
    +
    162 namespace detail
    +
    163 {
    +
    164 template <template <class> class B, class E>
    +
    165 struct is_crtp_base_of_impl : std::is_base_of<B<E>, E>
    +
    166 {
    +
    167 };
    +
    168
    +
    169 template <template <class> class B, class E, template <class> class F>
    +
    170 struct is_crtp_base_of_impl<B, F<E>>
    +
    171 : xtl::disjunction<std::is_base_of<B<E>, F<E>>, std::is_base_of<B<F<E>>, F<E>>>
    +
    172 {
    +
    173 };
    +
    174 }
    +
    175
    +
    176 template <template <class> class B, class E>
    +
    177 using is_crtp_base_of = detail::is_crtp_base_of_impl<B, std::decay_t<E>>;
    +
    178
    +
    179 template <class E>
    +
    180 using is_xexpression = is_crtp_base_of<xexpression, E>;
    +
    181
    +
    182 template <class E, class R = void>
    +
    183 using enable_xexpression = typename std::enable_if<is_xexpression<E>::value, R>::type;
    +
    184
    +
    185 template <class E, class R = void>
    +
    186 using disable_xexpression = typename std::enable_if<!is_xexpression<E>::value, R>::type;
    +
    187
    +
    188 template <class... E>
    +
    189 using has_xexpression = xtl::disjunction<is_xexpression<E>...>;
    +
    190
    +
    191 template <class E>
    +
    192 using is_xsharable_expression = is_crtp_base_of<xsharable_expression, E>;
    +
    193
    +
    194 template <class E, class R = void>
    +
    195 using enable_xsharable_expression = typename std::enable_if<is_xsharable_expression<E>::value, R>::type;
    +
    196
    +
    197 template <class E, class R = void>
    +
    198 using disable_xsharable_expression = typename std::enable_if<!is_xsharable_expression<E>::value, R>::type;
    +
    199
    +
    200 template <class LHS, class RHS>
    +
    +
    201 struct can_assign : std::is_assignable<LHS, RHS>
    +
    202 {
    +
    203 };
    +
    +
    204
    +
    205 template <class LHS, class RHS, class R = void>
    +
    206 using enable_assignable_expression = typename std::enable_if<can_assign<LHS, RHS>::value, R>::type;
    +
    207
    +
    208 template <class LHS, class RHS, class R = void>
    +
    209 using enable_not_assignable_expression = typename std::enable_if<!can_assign<LHS, RHS>::value, R>::type;
    +
    210
    +
    211 /***********************
    +
    212 * evaluation_strategy *
    +
    213 ***********************/
    +
    214
    +
    215 namespace detail
    +
    216 {
    +
    217 struct option_base
    +
    218 {
    +
    219 };
    +
    220 }
    +
    221
    +
    222 namespace evaluation_strategy
    +
    223 {
    +
    224
    +
    +
    225 struct immediate_type : xt::detail::option_base
    +
    226 {
    +
    227 };
    +
    +
    228
    +
    229 constexpr auto immediate = std::tuple<immediate_type>{};
    +
    230
    +
    +
    231 struct lazy_type : xt::detail::option_base
    +
    232 {
    +
    233 };
    +
    +
    234
    +
    235 constexpr auto lazy = std::tuple<lazy_type>{};
    +
    236
    +
    237 /*
    +
    238 struct cached {};
    +
    239 */
    +
    240 }
    +
    241
    +
    242 template <class T>
    +
    +
    243 struct is_evaluation_strategy : std::is_base_of<detail::option_base, std::decay_t<T>>
    +
    244 {
    +
    245 };
    +
    +
    246
    +
    247 /************
    +
    248 * xclosure *
    +
    249 ************/
    +
    250
    +
    251 template <class T>
    +
    252 class xscalar;
    +
    253
    +
    254 template <class E, class EN = void>
    +
    +
    255 struct xclosure
    +
    256 {
    +
    257 using type = xtl::closure_type_t<E>;
    +
    258 };
    +
    +
    259
    +
    260 template <class E>
    +
    +
    261 struct xclosure<xshared_expression<E>, std::enable_if_t<true>>
    +
    262 {
    +
    263 using type = xshared_expression<E>; // force copy
    +
    264 };
    +
    +
    265
    +
    266 template <class E>
    +
    +
    267 struct xclosure<E, disable_xexpression<std::decay_t<E>>>
    +
    268 {
    + +
    270 };
    +
    +
    271
    +
    272 template <class E>
    +
    273 using xclosure_t = typename xclosure<E>::type;
    +
    274
    +
    275 template <class E, class EN = void>
    +
    + +
    277 {
    +
    278 using type = xtl::const_closure_type_t<E>;
    +
    279 };
    +
    +
    280
    +
    281 template <class E>
    +
    +
    282 struct const_xclosure<E, disable_xexpression<std::decay_t<E>>>
    +
    283 {
    + +
    285 };
    +
    +
    286
    +
    287 template <class E>
    +
    +
    288 struct const_xclosure<xshared_expression<E>&, std::enable_if_t<true>>
    +
    289 {
    +
    290 using type = xshared_expression<E>; // force copy
    +
    291 };
    +
    +
    292
    +
    293 template <class E>
    +
    294 using const_xclosure_t = typename const_xclosure<E>::type;
    +
    295
    +
    296 /*************************
    +
    297 * expression tag system *
    +
    298 *************************/
    +
    299
    +
    + +
    301 {
    +
    302 };
    +
    +
    303
    +
    + +
    305 {
    +
    306 };
    +
    +
    307
    +
    308 namespace extension
    +
    309 {
    +
    310 template <class E, class = void_t<int>>
    +
    + +
    312 {
    + +
    314 };
    +
    +
    315
    +
    316 template <class E>
    +
    +
    317 struct get_expression_tag_impl<E, void_t<typename std::decay_t<E>::expression_tag>>
    +
    318 {
    +
    319 using type = typename std::decay_t<E>::expression_tag;
    +
    320 };
    +
    +
    321
    +
    322 template <class E>
    +
    + +
    324 {
    +
    325 };
    +
    +
    326
    +
    327 template <class E>
    +
    328 using get_expression_tag_t = typename get_expression_tag<E>::type;
    +
    329
    +
    330 template <class... T>
    + +
    332
    +
    333 template <>
    +
    + +
    335 {
    + +
    337 };
    +
    +
    338
    +
    339 template <class T>
    +
    + +
    341 {
    +
    342 using type = T;
    +
    343 };
    +
    +
    344
    +
    345 template <class T>
    +
    + +
    347 {
    +
    348 using type = T;
    +
    349 };
    +
    +
    350
    +
    351 template <class T>
    +
    + +
    353 {
    +
    354 using type = T;
    +
    355 };
    +
    +
    356
    +
    357 template <class T>
    +
    +
    358 struct expression_tag_and<T, xtensor_expression_tag> : expression_tag_and<xtensor_expression_tag, T>
    +
    359 {
    +
    360 };
    +
    +
    361
    +
    362 template <>
    + +
    367
    +
    368 template <class T1, class... T>
    +
    +
    369 struct expression_tag_and<T1, T...> : expression_tag_and<T1, typename expression_tag_and<T...>::type>
    +
    370 {
    +
    371 };
    +
    +
    372
    +
    373 template <class... T>
    +
    374 using expression_tag_and_t = typename expression_tag_and<T...>::type;
    +
    375
    +
    + +
    377 {
    + +
    379 };
    +
    +
    380 }
    +
    381
    +
    382 template <class... T>
    +
    + +
    384 {
    +
    385 using type = extension::expression_tag_and_t<
    +
    386 extension::get_expression_tag_t<std::decay_t<const_xclosure_t<T>>>...>;
    +
    387 };
    +
    +
    388
    +
    389 template <class... T>
    +
    390 using xexpression_tag_t = typename xexpression_tag<T...>::type;
    +
    391
    +
    392 template <class E>
    +
    +
    393 struct is_xtensor_expression : std::is_same<xexpression_tag_t<E>, xtensor_expression_tag>
    +
    394 {
    +
    395 };
    +
    +
    396
    +
    397 template <class E>
    +
    +
    398 struct is_xoptional_expression : std::is_same<xexpression_tag_t<E>, xoptional_expression_tag>
    +
    399 {
    +
    400 };
    +
    +
    401
    +
    402 /********************************
    +
    403 * xoptional_comparable concept *
    +
    404 ********************************/
    +
    405
    +
    406 template <class... E>
    +
    + +
    408 : xtl::conjunction<xtl::disjunction<is_xtensor_expression<E>, is_xoptional_expression<E>>...>
    +
    409 {
    +
    410 };
    +
    +
    411
    +
    412#define XTENSOR_FORWARD_CONST_METHOD(name) \
    +
    413 auto name() const->decltype(std::declval<xtl::constify_t<E>>().name()) \
    +
    414 { \
    +
    415 return m_ptr->name(); \
    +
    416 }
    +
    417
    +
    418#define XTENSOR_FORWARD_METHOD(name) \
    +
    419 auto name()->decltype(std::declval<E>().name()) \
    +
    420 { \
    +
    421 return m_ptr->name(); \
    +
    422 }
    +
    423
    +
    424#define XTENSOR_FORWARD_CONST_ITERATOR_METHOD(name) \
    +
    425 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL> \
    +
    426 auto name() const noexcept -> decltype(std::declval<xtl::constify_t<E>>().template name<L>()) \
    +
    427 { \
    +
    428 return m_ptr->template name<L>(); \
    +
    429 } \
    +
    430 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S> \
    +
    431 auto name(const S& shape) const noexcept \
    +
    432 -> decltype(std::declval<xtl::constify_t<E>>().template name<L>(shape)) \
    +
    433 { \
    +
    434 return m_ptr->template name<L>(); \
    +
    435 }
    +
    436
    +
    437#define XTENSOR_FORWARD_ITERATOR_METHOD(name) \
    +
    438 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S> \
    +
    439 auto name(const S& shape) noexcept -> decltype(std::declval<E>().template name<L>(shape)) \
    +
    440 { \
    +
    441 return m_ptr->template name<L>(); \
    +
    442 } \
    +
    443 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL> \
    +
    444 auto name() noexcept -> decltype(std::declval<E>().template name<L>()) \
    +
    445 { \
    +
    446 return m_ptr->template name<L>(); \
    +
    447 }
    +
    448
    +
    449 namespace detail
    +
    450 {
    +
    451 template <class E>
    +
    452 struct expr_strides_type
    +
    453 {
    +
    454 using type = typename E::strides_type;
    +
    455 };
    +
    456
    +
    457 template <class E>
    +
    458 struct expr_inner_strides_type
    +
    459 {
    +
    460 using type = typename E::inner_strides_type;
    +
    461 };
    +
    462
    +
    463 template <class E>
    +
    464 struct expr_backstrides_type
    +
    465 {
    +
    466 using type = typename E::backstrides_type;
    +
    467 };
    +
    468
    +
    469 template <class E>
    +
    470 struct expr_inner_backstrides_type
    +
    471 {
    +
    472 using type = typename E::inner_backstrides_type;
    +
    473 };
    +
    474
    +
    475 template <class E>
    +
    476 struct expr_storage_type
    +
    477 {
    +
    478 using type = typename E::storage_type;
    +
    479 };
    +
    480 }
    +
    481
    +
    507 template <class E>
    +
    +
    508 class xshared_expression : public xexpression<xshared_expression<E>>
    +
    509 {
    +
    510 public:
    +
    511
    + +
    513
    +
    514 using value_type = typename E::value_type;
    +
    515 using reference = typename E::reference;
    +
    516 using const_reference = typename E::const_reference;
    +
    517 using pointer = typename E::pointer;
    +
    518 using const_pointer = typename E::const_pointer;
    +
    519 using size_type = typename E::size_type;
    +
    520 using difference_type = typename E::difference_type;
    +
    521
    +
    522 using inner_shape_type = typename E::inner_shape_type;
    +
    523 using shape_type = typename E::shape_type;
    +
    524
    +
    525 using strides_type = xtl::mpl::
    +
    526 eval_if_t<has_strides<E>, detail::expr_strides_type<E>, get_strides_type<shape_type>>;
    +
    527 using backstrides_type = xtl::mpl::
    +
    528 eval_if_t<has_strides<E>, detail::expr_backstrides_type<E>, get_strides_type<shape_type>>;
    +
    529 using inner_strides_type = xtl::mpl::
    +
    530 eval_if_t<has_strides<E>, detail::expr_inner_strides_type<E>, get_strides_type<shape_type>>;
    +
    531 using inner_backstrides_type = xtl::mpl::
    +
    532 eval_if_t<has_strides<E>, detail::expr_inner_backstrides_type<E>, get_strides_type<shape_type>>;
    +
    533 using storage_type = xtl::mpl::eval_if_t<has_storage_type<E>, detail::expr_storage_type<E>, make_invalid_type<>>;
    +
    534
    +
    535 using stepper = typename E::stepper;
    +
    536 using const_stepper = typename E::const_stepper;
    +
    537
    +
    538 using linear_iterator = typename E::linear_iterator;
    +
    539 using const_linear_iterator = typename E::const_linear_iterator;
    +
    540
    +
    541 using bool_load_type = typename E::bool_load_type;
    +
    542
    +
    543 static constexpr layout_type static_layout = E::static_layout;
    +
    544 static constexpr bool contiguous_layout = static_layout != layout_type::dynamic;
    +
    545
    +
    546 explicit xshared_expression(const std::shared_ptr<E>& ptr);
    +
    547 long use_count() const noexcept;
    +
    548
    +
    549 template <class... Args>
    +
    550 auto operator()(Args... args) -> decltype(std::declval<E>()(args...))
    +
    551 {
    +
    552 return m_ptr->operator()(args...);
    +
    553 }
    +
    554
    +
    555 XTENSOR_FORWARD_CONST_METHOD(shape)
    +
    556 XTENSOR_FORWARD_CONST_METHOD(dimension)
    +
    557 XTENSOR_FORWARD_CONST_METHOD(size)
    +
    558 XTENSOR_FORWARD_CONST_METHOD(layout)
    +
    559 XTENSOR_FORWARD_CONST_METHOD(is_contiguous)
    +
    560
    +
    561 XTENSOR_FORWARD_ITERATOR_METHOD(begin)
    +
    562 XTENSOR_FORWARD_ITERATOR_METHOD(end)
    +
    563 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(begin)
    +
    564 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(end)
    +
    565 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(cbegin)
    +
    566 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(cend)
    +
    567
    +
    568 XTENSOR_FORWARD_ITERATOR_METHOD(rbegin)
    +
    569 XTENSOR_FORWARD_ITERATOR_METHOD(rend)
    +
    570 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(rbegin)
    +
    571 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(rend)
    +
    572 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(crbegin)
    +
    573 XTENSOR_FORWARD_CONST_ITERATOR_METHOD(crend)
    +
    574
    +
    575 XTENSOR_FORWARD_METHOD(linear_begin)
    +
    576 XTENSOR_FORWARD_METHOD(linear_end)
    +
    577 XTENSOR_FORWARD_CONST_METHOD(linear_begin)
    +
    578 XTENSOR_FORWARD_CONST_METHOD(linear_end)
    +
    579 XTENSOR_FORWARD_CONST_METHOD(linear_cbegin)
    +
    580 XTENSOR_FORWARD_CONST_METHOD(linear_cend)
    +
    581
    +
    582 XTENSOR_FORWARD_METHOD(linear_rbegin)
    +
    583 XTENSOR_FORWARD_METHOD(linear_rend)
    +
    584 XTENSOR_FORWARD_CONST_METHOD(linear_rbegin)
    +
    585 XTENSOR_FORWARD_CONST_METHOD(linear_rend)
    +
    586 XTENSOR_FORWARD_CONST_METHOD(linear_crbegin)
    +
    587 XTENSOR_FORWARD_CONST_METHOD(linear_crend)
    +
    588
    +
    589 template <class T = E>
    +
    590 std::enable_if_t<has_strides<T>::value, const inner_strides_type&> strides() const
    +
    591 {
    +
    592 return m_ptr->strides();
    +
    593 }
    +
    594
    +
    595 template <class T = E>
    +
    596 std::enable_if_t<has_strides<T>::value, const inner_strides_type&> backstrides() const
    +
    597 {
    +
    598 return m_ptr->backstrides();
    +
    599 }
    +
    600
    +
    601 template <class T = E>
    +
    602 std::enable_if_t<has_data_interface<T>::value, pointer> data() noexcept
    +
    603 {
    +
    604 return m_ptr->data();
    +
    605 }
    +
    606
    +
    607 template <class T = E>
    +
    608 std::enable_if_t<has_data_interface<T>::value, pointer> data() const noexcept
    +
    609 {
    +
    610 return m_ptr->data();
    +
    611 }
    +
    612
    +
    613 template <class T = E>
    +
    614 std::enable_if_t<has_data_interface<T>::value, size_type> data_offset() const noexcept
    +
    615 {
    +
    616 return m_ptr->data_offset();
    +
    617 }
    +
    618
    +
    619 template <class T = E>
    +
    620 std::enable_if_t<has_data_interface<T>::value, typename T::storage_type&> storage() noexcept
    +
    621 {
    +
    622 return m_ptr->storage();
    +
    623 }
    +
    624
    +
    625 template <class T = E>
    +
    626 std::enable_if_t<has_data_interface<T>::value, const typename T::storage_type&> storage() const noexcept
    +
    627 {
    +
    628 return m_ptr->storage();
    +
    629 }
    +
    630
    +
    631 template <class It>
    +
    632 reference element(It first, It last)
    +
    633 {
    +
    634 return m_ptr->element(first, last);
    +
    635 }
    +
    636
    +
    637 template <class It>
    +
    638 const_reference element(It first, It last) const
    +
    639 {
    +
    640 return m_ptr->element(first, last);
    +
    641 }
    +
    642
    +
    643 template <class S>
    +
    644 bool broadcast_shape(S& shape, bool reuse_cache = false) const
    +
    645 {
    +
    646 return m_ptr->broadcast_shape(shape, reuse_cache);
    +
    647 }
    +
    648
    +
    649 template <class S>
    +
    650 bool has_linear_assign(const S& strides) const noexcept
    +
    651 {
    +
    652 return m_ptr->has_linear_assign(strides);
    +
    653 }
    +
    654
    +
    655 template <class S>
    +
    656 auto stepper_begin(const S& shape) noexcept -> decltype(std::declval<E>().stepper_begin(shape))
    +
    657 {
    +
    658 return m_ptr->stepper_begin(shape);
    +
    659 }
    +
    660
    +
    661 template <class S>
    +
    662 auto stepper_end(const S& shape, layout_type l) noexcept
    +
    663 -> decltype(std::declval<E>().stepper_end(shape, l))
    +
    664 {
    +
    665 return m_ptr->stepper_end(shape, l);
    +
    666 }
    +
    667
    +
    668 template <class S>
    +
    669 auto stepper_begin(const S& shape) const noexcept
    +
    670 -> decltype(std::declval<const E>().stepper_begin(shape))
    +
    671 {
    +
    672 return static_cast<const E*>(m_ptr.get())->stepper_begin(shape);
    +
    673 }
    +
    674
    +
    675 template <class S>
    +
    676 auto stepper_end(const S& shape, layout_type l) const noexcept
    +
    677 -> decltype(std::declval<const E>().stepper_end(shape, l))
    +
    678 {
    +
    679 return static_cast<const E*>(m_ptr.get())->stepper_end(shape, l);
    +
    680 }
    +
    681
    +
    682 private:
    +
    683
    +
    684 std::shared_ptr<E> m_ptr;
    +
    685 };
    +
    +
    686
    +
    694 template <class E>
    +
    +
    695 inline xshared_expression<E>::xshared_expression(const std::shared_ptr<E>& ptr)
    +
    696 : m_ptr(ptr)
    +
    697 {
    +
    698 }
    +
    +
    699
    +
    704 template <class E>
    +
    +
    705 inline long xshared_expression<E>::use_count() const noexcept
    +
    706 {
    +
    707 return m_ptr.use_count();
    +
    708 }
    +
    +
    709
    +
    710 namespace detail
    +
    711 {
    +
    712 template <class E>
    +
    713 inline xshared_expression<E> make_xshared_impl(xsharable_expression<E>&& expr)
    +
    714 {
    +
    715 if (expr.p_shared == nullptr)
    +
    716 {
    +
    717 expr.p_shared = std::make_shared<E>(std::move(expr).derived_cast());
    +
    718 }
    +
    719 return xshared_expression<E>(expr.p_shared);
    +
    720 }
    +
    721 }
    +
    722
    +
    729 template <class E>
    +
    + +
    731 {
    +
    732 static_assert(
    +
    733 is_xsharable_expression<E>::value,
    +
    734 "make_shared requires E to inherit from xsharable_expression"
    +
    735 );
    +
    736 return detail::make_xshared_impl(std::move(expr.derived_cast()));
    +
    737 }
    +
    +
    738
    +
    746 template <class E>
    +
    +
    747 inline auto share(xexpression<E>& expr)
    +
    748 {
    +
    749 return make_xshared(std::move(expr));
    +
    750 }
    +
    +
    751
    +
    759 template <class E>
    +
    +
    760 inline auto share(xexpression<E>&& expr)
    +
    761 {
    +
    762 return make_xshared(std::move(expr));
    +
    763 }
    +
    +
    764
    +
    765#undef XTENSOR_FORWARD_METHOD
    +
    766
    +
    767}
    +
    768
    +
    769#endif
    +
    +
    +
    +
    Broadcasted xexpression to a specified shape.
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    const derived_type & derived_cast() const &noexcept
    Returns a constant reference to the actual derived type of the xexpression.
    + + +
    Shared xexpressions.
    +
    xshared_expression(const std::shared_ptr< E > &ptr)
    Constructor for xshared expression (note: usually the free function make_xshared is recommended).
    +
    long use_count() const noexcept
    Return the number of times this expression is referenced.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto share(xexpression< E > &expr)
    Helper function to create shared expression from any xexpression.
    +
    layout_type
    Definition xlayout.hpp:24
    + +
    xshared_expression< E > make_xshared(xexpression< E > &&expr)
    Helper function to create shared expression from any xexpression.
    + + + + + + + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xexpression__holder_8hpp_source.html b/xexpression__holder_8hpp_source.html new file mode 100644 index 000000000..4160f6a44 --- /dev/null +++ b/xexpression__holder_8hpp_source.html @@ -0,0 +1,386 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xexpression_holder.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xexpression_holder.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_XEXPRESSION_HOLDER_HPP
    +
    11#define XTENSOR_XEXPRESSION_HOLDER_HPP
    +
    12
    +
    13#include <memory>
    +
    14
    +
    15#include <nlohmann/json.hpp>
    +
    16
    +
    17#include "xarray.hpp"
    +
    18#include "xjson.hpp"
    +
    19#include "xtensor_config.hpp"
    +
    20#include "xtl/xany.hpp"
    +
    21
    +
    22namespace xt
    +
    23{
    +
    24
    +
    25 namespace detail
    +
    26 {
    +
    27 class xexpression_holder_impl;
    +
    28
    +
    29 template <class CTE>
    +
    30 class xexpression_wrapper;
    +
    31 }
    +
    32
    +
    +
    33 class xexpression_holder // Value semantic
    +
    34 {
    +
    35 public:
    +
    36
    +
    37 using implementation_type = detail::xexpression_holder_impl;
    +
    38
    +
    39 xexpression_holder() = default;
    +
    40
    +
    41 template <class E>
    +
    42 xexpression_holder(E&& expr);
    +
    43
    +
    44 xexpression_holder(implementation_type* holder);
    + + +
    47
    +
    48 xexpression_holder& operator=(const xexpression_holder&);
    + +
    50
    +
    51 void swap(xexpression_holder&);
    +
    52
    +
    53 void to_json(nlohmann::json&) const;
    +
    54 void from_json(const nlohmann::json&);
    +
    55
    +
    56 private:
    +
    57
    +
    58 void init_pointer_from_json(const nlohmann::json&);
    +
    59 void check_holder() const;
    +
    60
    +
    61 std::unique_ptr<implementation_type> p_holder;
    +
    62 };
    +
    +
    63
    +
    64 /*************************************
    +
    65 * to_json and from_json declaration *
    +
    66 *************************************/
    +
    67
    +
    69 void to_json(nlohmann::json& j, const xexpression_holder& o);
    +
    70 void from_json(const nlohmann::json& j, xexpression_holder& o);
    +
    71
    +
    73
    +
    74 namespace detail
    +
    75 {
    +
    76 class xexpression_holder_impl // Entity semantic
    +
    77 {
    +
    78 public:
    +
    79
    +
    80 xexpression_holder_impl(xexpression_holder_impl&&) = delete;
    +
    81
    +
    82 xexpression_holder_impl& operator=(const xexpression_holder_impl&) = delete;
    +
    83 xexpression_holder_impl& operator=(xexpression_holder_impl&&) = delete;
    +
    84
    +
    85 virtual xexpression_holder_impl* clone() const = 0;
    +
    86 virtual void to_json(nlohmann::json&) const = 0;
    +
    87 virtual void from_json(const nlohmann::json&) = 0;
    +
    88 virtual ~xexpression_holder_impl() = default;
    +
    89
    +
    90 protected:
    +
    91
    +
    92 xexpression_holder_impl() = default;
    +
    93 xexpression_holder_impl(const xexpression_holder_impl&) = default;
    +
    94 };
    +
    95
    +
    96 template <class CTE>
    +
    97 class xexpression_wrapper : public xexpression_holder_impl
    +
    98 {
    +
    99 public:
    +
    100
    +
    101 template <class E>
    +
    102 xexpression_wrapper(E&& expr);
    +
    103
    +
    104 xexpression_wrapper* clone() const;
    +
    105
    +
    106 void to_json(nlohmann::json&) const;
    +
    107 void from_json(const nlohmann::json&);
    +
    108
    +
    109 ~xexpression_wrapper() = default;
    +
    110
    +
    111 protected:
    +
    112
    +
    113 xexpression_wrapper(const xexpression_wrapper&);
    +
    114
    +
    115 private:
    +
    116
    +
    117 CTE m_expression;
    +
    118 };
    +
    119 }
    +
    120
    +
    121 template <class E>
    +
    122 inline xexpression_holder::xexpression_holder(E&& expr)
    +
    123 : p_holder(new detail::xexpression_wrapper<E>(std::forward<E>(expr)))
    +
    124 {
    +
    125 }
    +
    126
    +
    127 inline xexpression_holder::xexpression_holder(implementation_type* holder)
    +
    128 : p_holder(holder)
    +
    129 {
    +
    130 }
    +
    131
    +
    132 inline xexpression_holder::xexpression_holder(const xexpression_holder& holder)
    +
    133 : p_holder(holder.p_holder->clone())
    +
    134 {
    +
    135 }
    +
    136
    +
    137 inline xexpression_holder::xexpression_holder(xexpression_holder&& holder)
    +
    138 : p_holder(std::move(holder.p_holder))
    +
    139 {
    +
    140 }
    +
    141
    +
    142 inline xexpression_holder& xexpression_holder::operator=(const xexpression_holder& holder)
    +
    143 {
    +
    144 xexpression_holder tmp(holder);
    +
    145 swap(tmp);
    +
    146 return *this;
    +
    147 }
    +
    148
    +
    149 inline xexpression_holder& xexpression_holder::operator=(xexpression_holder&& holder)
    +
    150 {
    +
    151 swap(holder);
    +
    152 return *this;
    +
    153 }
    +
    154
    +
    155 inline void xexpression_holder::swap(xexpression_holder& holder)
    +
    156 {
    +
    157 std::swap(p_holder, holder.p_holder);
    +
    158 }
    +
    159
    +
    160 inline void xexpression_holder::to_json(nlohmann::json& j) const
    +
    161 {
    +
    162 if (p_holder == nullptr)
    +
    163 {
    +
    164 return;
    +
    165 }
    +
    166 p_holder->to_json(j);
    +
    167 }
    +
    168
    +
    169 inline void xexpression_holder::from_json(const nlohmann::json& j)
    +
    170 {
    +
    171 if (!j.is_array())
    +
    172 {
    +
    173 XTENSOR_THROW(std::runtime_error, "Received a JSON that does not contain a tensor");
    +
    174 }
    +
    175
    +
    176 if (p_holder == nullptr)
    +
    177 {
    +
    178 init_pointer_from_json(j);
    +
    179 }
    +
    180 p_holder->from_json(j);
    +
    181 }
    +
    182
    +
    183 inline void xexpression_holder::init_pointer_from_json(const nlohmann::json& j)
    +
    184 {
    +
    185 if (j.is_array())
    +
    186 {
    +
    187 return init_pointer_from_json(j[0]);
    +
    188 }
    +
    189
    +
    190 if (j.is_number())
    +
    191 {
    +
    192 xt::xarray<double> empty_arr;
    +
    193 p_holder.reset(new detail::xexpression_wrapper<xt::xarray<double>>(std::move(empty_arr)));
    +
    194 }
    +
    195
    +
    196 if (j.is_boolean())
    +
    197 {
    +
    198 xt::xarray<bool> empty_arr;
    +
    199 p_holder.reset(new detail::xexpression_wrapper<xt::xarray<bool>>(std::move(empty_arr)));
    +
    200 }
    +
    201
    +
    202 if (j.is_string())
    +
    203 {
    +
    204 xt::xarray<std::string> empty_arr;
    +
    205 p_holder.reset(new detail::xexpression_wrapper<xt::xarray<std::string>>(std::move(empty_arr)));
    +
    206 }
    +
    207
    +
    208 XTENSOR_THROW(std::runtime_error, "Received a JSON with a tensor that contains unsupported data type");
    +
    209 }
    +
    210
    +
    211 inline void xexpression_holder::check_holder() const
    +
    212 {
    +
    213 if (p_holder == nullptr)
    +
    214 {
    +
    215 XTENSOR_THROW(std::runtime_error, "The holder does not contain an expression");
    +
    216 }
    +
    217 }
    +
    218
    +
    219 /****************************************
    +
    220 * to_json and from_json implementation *
    +
    221 ****************************************/
    +
    222
    +
    224 inline void to_json(nlohmann::json& j, const xexpression_holder& o)
    +
    225 {
    +
    226 o.to_json(j);
    +
    227 }
    +
    228
    +
    229 inline void from_json(const nlohmann::json& j, xexpression_holder& o)
    +
    230 {
    +
    231 o.from_json(j);
    +
    232 }
    +
    233
    +
    235
    +
    236 namespace detail
    +
    237 {
    +
    238 template <class CTE>
    +
    239 template <class E>
    +
    240 inline xexpression_wrapper<CTE>::xexpression_wrapper(E&& expr)
    +
    241 : xexpression_holder_impl()
    +
    242 , m_expression(std::forward<E>(expr))
    +
    243 {
    +
    244 }
    +
    245
    +
    246 template <class CTE>
    +
    247 inline xexpression_wrapper<CTE>* xexpression_wrapper<CTE>::clone() const
    +
    248 {
    +
    249 return new xexpression_wrapper<CTE>(*this);
    +
    250 }
    +
    251
    +
    252 template <class CTE>
    +
    253 inline void xexpression_wrapper<CTE>::to_json(nlohmann::json& j) const
    +
    254 {
    +
    255 ::xt::to_json(j, m_expression);
    +
    256 }
    +
    257
    +
    258 template <class CTE>
    +
    259 inline void xexpression_wrapper<CTE>::from_json(const nlohmann::json& j)
    +
    260 {
    +
    261 ::xt::from_json(j, m_expression);
    +
    262 }
    +
    263
    +
    264 template <class CTE>
    +
    265 inline xexpression_wrapper<CTE>::xexpression_wrapper(const xexpression_wrapper& wrapper)
    +
    266 : xexpression_holder_impl()
    +
    267 , m_expression(wrapper.m_expression)
    +
    268 {
    +
    269 }
    +
    270 }
    +
    271}
    +
    272
    +
    273#endif
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    + +
    standard mathematical functions for xexpressions
    +
    enable_xcontainer_semantics< E > from_json(const nlohmann::basic_json< M > &, E &)
    JSON deserialization of a xtensor expression with a container or a view semantics.
    Definition xjson.hpp:156
    +
    enable_xexpression< E > to_json(nlohmann::basic_json< M > &, const E &)
    JSON serialization of an xtensor expression.
    Definition xjson.hpp:133
    +
    +
    + + + + diff --git a/xexpression__traits_8hpp_source.html b/xexpression__traits_8hpp_source.html new file mode 100644 index 000000000..702dca0d8 --- /dev/null +++ b/xexpression__traits_8hpp_source.html @@ -0,0 +1,342 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xexpression_traits.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xexpression_traits.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_EXPRESSION_TRAITS_HPP
    +
    11#define XTENSOR_EXPRESSION_TRAITS_HPP
    +
    12
    +
    13#include "xexpression.hpp"
    +
    14
    +
    15namespace xt
    +
    16{
    +
    17 /***************
    +
    18 * xvalue_type *
    +
    19 ***************/
    +
    20
    +
    21 namespace detail
    +
    22 {
    +
    23 template <class E, class enable = void>
    +
    24 struct xvalue_type_impl
    +
    25 {
    +
    26 using type = E;
    +
    27 };
    +
    28
    +
    29 template <class E>
    +
    30 struct xvalue_type_impl<E, std::enable_if_t<is_xexpression<E>::value>>
    +
    31 {
    +
    32 using type = typename E::value_type;
    +
    33 };
    +
    34 }
    +
    35
    +
    36 template <class E>
    +
    37 using xvalue_type = detail::xvalue_type_impl<E>;
    +
    38
    +
    39 template <class E>
    +
    40 using xvalue_type_t = typename xvalue_type<E>::type;
    +
    41
    +
    42 /*********************
    +
    43 * common_value_type *
    +
    44 *********************/
    +
    45
    +
    46 template <class... C>
    +
    + +
    48 {
    +
    49 using type = std::common_type_t<typename std::decay_t<C>::value_type...>;
    +
    50 };
    +
    +
    51
    +
    52 template <class... C>
    +
    53 using common_value_type_t = typename common_value_type<C...>::type;
    +
    54
    +
    55 /********************
    +
    56 * common_size_type *
    +
    57 ********************/
    +
    58
    +
    59 template <class... Args>
    +
    + +
    61 {
    +
    62 using type = std::common_type_t<typename Args::size_type...>;
    +
    63 };
    +
    +
    64
    +
    65 template <>
    +
    + +
    67 {
    +
    68 using type = std::size_t;
    +
    69 };
    +
    +
    70
    +
    71 template <class... Args>
    +
    72 using common_size_type_t = typename common_size_type<Args...>::type;
    +
    73
    +
    74 /**************************
    +
    75 * common_difference type *
    +
    76 **************************/
    +
    77
    +
    78 template <class... Args>
    +
    + +
    80 {
    +
    81 using type = std::common_type_t<typename Args::difference_type...>;
    +
    82 };
    +
    +
    83
    +
    84 template <>
    +
    + +
    86 {
    +
    87 using type = std::ptrdiff_t;
    +
    88 };
    +
    +
    89
    +
    90 template <class... Args>
    +
    91 using common_difference_type_t = typename common_difference_type<Args...>::type;
    +
    92
    +
    93 /******************
    +
    94 * temporary_type *
    +
    95 ******************/
    +
    96
    +
    97 namespace detail
    +
    98 {
    +
    99 template <class S>
    +
    100 struct xtype_for_shape
    +
    101 {
    +
    102 template <class T, layout_type L>
    +
    103 using type = xarray<T, L>;
    +
    104 };
    +
    105
    +
    106#if defined(__GNUC__) && (__GNUC__ > 6)
    +
    107#if __cplusplus == 201703L
    +
    108 template <template <class, std::size_t, class, bool> class S, class X, std::size_t N, class A, bool Init>
    +
    109 struct xtype_for_shape<S<X, N, A, Init>>
    +
    110 {
    +
    111 template <class T, layout_type L>
    +
    112 using type = xarray<T, L>;
    +
    113 };
    +
    114#endif // __cplusplus == 201703L
    +
    115#endif // __GNUC__ && (__GNUC__ > 6)
    +
    116
    +
    117 template <template <class, std::size_t> class S, class X, std::size_t N>
    +
    118 struct xtype_for_shape<S<X, N>>
    +
    119 {
    +
    120 template <class T, layout_type L>
    +
    121 using type = xtensor<T, N, L>;
    +
    122 };
    +
    123
    +
    124 template <template <std::size_t...> class S, std::size_t... X>
    +
    125 struct xtype_for_shape<S<X...>>
    +
    126 {
    +
    127 template <class T, layout_type L>
    +
    128 using type = xtensor_fixed<T, xshape<X...>, L>;
    +
    129 };
    +
    130 }
    +
    131
    +
    132 template <class Tag, class T>
    + +
    134
    +
    135 template <class T>
    +
    + +
    137 {
    +
    138 using I = std::decay_t<T>;
    +
    139 using shape_type = typename I::shape_type;
    +
    140 using value_type = typename I::value_type;
    +
    141 static constexpr layout_type static_layout = XTENSOR_DEFAULT_LAYOUT;
    +
    142 using type = typename detail::xtype_for_shape<shape_type>::template type<value_type, static_layout>;
    +
    143 };
    +
    +
    144
    +
    145 template <class T, class = void>
    +
    + +
    147 {
    +
    148 using type = typename temporary_type_from_tag<xexpression_tag_t<T>, T>::type;
    +
    149 };
    +
    +
    150
    +
    151 template <class T>
    +
    +
    152 struct temporary_type<T, void_t<typename std::decay_t<T>::temporary_type>>
    +
    153 {
    +
    154 using type = typename std::decay_t<T>::temporary_type;
    +
    155 };
    +
    +
    156
    +
    157 template <class T>
    +
    158 using temporary_type_t = typename temporary_type<T>::type;
    +
    159
    +
    160 /**********************
    +
    161 * common_tensor_type *
    +
    162 **********************/
    +
    163
    +
    164 namespace detail
    +
    165 {
    +
    166 template <class... C>
    +
    167 struct common_tensor_type_impl
    +
    168 {
    +
    169 static constexpr layout_type static_layout = compute_layout(std::decay_t<C>::static_layout...);
    +
    170 using value_type = common_value_type_t<C...>;
    +
    171 using shape_type = promote_shape_t<typename C::shape_type...>;
    +
    172 using type = typename xtype_for_shape<shape_type>::template type<value_type, static_layout>;
    +
    173 };
    +
    174 }
    +
    175
    +
    176 template <class... C>
    +
    +
    177 struct common_tensor_type : detail::common_tensor_type_impl<std::decay_t<C>...>
    +
    178 {
    +
    179 };
    +
    +
    180
    +
    181 template <class... C>
    +
    182 using common_tensor_type_t = typename common_tensor_type<C...>::type;
    +
    183
    +
    184 /**************************
    +
    185 * big_promote_value_type *
    +
    186 **************************/
    +
    187
    +
    188 template <class E>
    +
    + +
    190 {
    +
    191 using type = xtl::big_promote_type_t<typename std::decay_t<E>::value_type>;
    +
    192 };
    +
    +
    193
    +
    194 template <class E>
    +
    195 using big_promote_value_type_t = typename big_promote_value_type<E>::type;
    +
    196}
    +
    197
    +
    198#endif
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    standard mathematical functions for xexpressions
    +
    fixed_shape< N... > xshape
    Alias template for fixed_shape allows for a shorter template shape definition in xtensor_fixed.
    +
    constexpr layout_type compute_layout(Args... args) noexcept
    Implementation of the following logical table:
    Definition xlayout.hpp:88
    +
    layout_type
    Definition xlayout.hpp:24
    +
    xfixed_container< T, FSH, L, Sharable > xtensor_fixed
    Alias template on xfixed_container with default parameters for layout type.
    + + + + + + + + +
    +
    + + + + diff --git a/xfixed_8hpp_source.html b/xfixed_8hpp_source.html new file mode 100644 index 000000000..4b17d7ec7 --- /dev/null +++ b/xfixed_8hpp_source.html @@ -0,0 +1,1047 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xfixed.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xfixed.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_FIXED_HPP
    +
    11#define XTENSOR_FIXED_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cstddef>
    +
    16#include <utility>
    +
    17#include <vector>
    +
    18
    +
    19#include <xtl/xsequence.hpp>
    +
    20
    +
    21#include "xcontainer.hpp"
    +
    22#include "xsemantic.hpp"
    +
    23#include "xstorage.hpp"
    +
    24#include "xstrides.hpp"
    +
    25#include "xtensor_config.hpp"
    +
    26
    +
    27namespace xtl
    +
    28{
    +
    29 namespace detail
    +
    30 {
    +
    31 template <class T, std::size_t N>
    +
    32 struct sequence_builder<xt::const_array<T, N>>
    +
    33 {
    +
    34 using sequence_type = xt::const_array<T, N>;
    +
    35 using value_type = typename sequence_type::value_type;
    +
    36 using size_type = typename sequence_type::size_type;
    +
    37
    +
    38 inline static sequence_type make(size_type /*size*/, value_type /*v*/)
    +
    39 {
    +
    40 return sequence_type();
    +
    41 }
    +
    42 };
    +
    43 }
    +
    44}
    +
    45
    +
    46namespace xt
    +
    47{
    +
    48
    +
    49 /**********************
    +
    50 * xfixed declaration *
    +
    51 **********************/
    +
    52
    +
    53 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    54 class xfixed_container;
    +
    55
    +
    56 namespace detail
    +
    57 {
    +
    58 /**************************************************************************************
    +
    59 The following is something we can currently only dream about -- for when we drop
    +
    60 support for a lot of the old compilers (e.g. GCC 4.9, MSVC 2017 ;)
    +
    61
    +
    62 template <class T>
    +
    63 constexpr std::size_t calculate_stride(T& shape, std::size_t idx, layout_type L)
    +
    64 {
    +
    65 if (shape[idx] == 1)
    +
    66 {
    +
    67 return std::size_t(0);
    +
    68 }
    +
    69
    +
    70 std::size_t data_size = 1;
    +
    71 std::size_t stride = 1;
    +
    72 if (L == layout_type::row_major)
    +
    73 {
    +
    74 // because we have a integer sequence that counts
    +
    75 // from 0 to sz - 1, we need to "invert" idx here
    +
    76 idx = shape.size() - idx;
    +
    77 for (std::size_t i = idx; i != 0; --i)
    +
    78 {
    +
    79 stride = data_size;
    +
    80 data_size = stride * shape[i - 1];
    +
    81 }
    +
    82 }
    +
    83 else
    +
    84 {
    +
    85 for (std::size_t i = 0; i < idx + 1; ++i)
    +
    86 {
    +
    87 stride = data_size;
    +
    88 data_size = stride * shape[i];
    +
    89 }
    +
    90 }
    +
    91 return stride;
    +
    92 }
    +
    93
    +
    94 *****************************************************************************************/
    +
    95
    +
    96 template <layout_type L, std::size_t I, std::size_t... X>
    +
    97 struct calculate_stride;
    +
    98
    +
    99 template <std::size_t I, std::size_t Y, std::size_t... X>
    +
    100 struct calculate_stride<layout_type::column_major, I, Y, X...>
    +
    101 {
    +
    102 static constexpr std::ptrdiff_t value = Y
    +
    103 * calculate_stride<layout_type::column_major, I - 1, X...>::value;
    +
    104 };
    +
    105
    +
    106 template <std::size_t Y, std::size_t... X>
    +
    107 struct calculate_stride<layout_type::column_major, 0, Y, X...>
    +
    108 {
    +
    109 static constexpr std::ptrdiff_t value = 1;
    +
    110 };
    +
    111
    +
    112 template <std::size_t I, std::size_t... X>
    +
    113 struct calculate_stride_row_major
    +
    114 {
    +
    115 static constexpr std::ptrdiff_t value = at<sizeof...(X) - I, X...>::value
    +
    116 * calculate_stride_row_major<I - 1, X...>::value;
    +
    117 };
    +
    118
    +
    119 template <std::size_t... X>
    +
    120 struct calculate_stride_row_major<0, X...>
    +
    121 {
    +
    122 static constexpr std::ptrdiff_t value = 1;
    +
    123 };
    +
    124
    +
    125 template <std::size_t I, std::size_t... X>
    +
    126 struct calculate_stride<layout_type::row_major, I, X...>
    +
    127 {
    +
    128 static constexpr std::ptrdiff_t value = calculate_stride_row_major<sizeof...(X) - I - 1, X...>::value;
    +
    129 };
    +
    130
    +
    131 namespace workaround
    +
    132 {
    +
    133 template <layout_type L, size_t I, class SEQ>
    +
    134 struct computed_strides;
    +
    135
    +
    136 template <layout_type L, size_t I, size_t... X>
    +
    137 struct computed_strides<L, I, std::index_sequence<X...>>
    +
    138 {
    +
    139 static constexpr std::ptrdiff_t value = calculate_stride<L, I, X...>::value;
    +
    140 };
    +
    141
    +
    142 template <layout_type L, size_t I, class SEQ>
    +
    143 constexpr std::ptrdiff_t get_computed_strides(bool cond)
    +
    144 {
    +
    145 return cond ? 0 : computed_strides<L, I, SEQ>::value;
    +
    146 }
    +
    147 }
    +
    148
    +
    149 template <layout_type L, class R, std::size_t... X, std::size_t... I>
    +
    150 constexpr R get_strides_impl(const xt::fixed_shape<X...>& shape, std::index_sequence<I...>)
    +
    151 {
    +
    152 static_assert(
    + +
    154 "Layout not supported for fixed array"
    +
    155 );
    +
    156#if (_MSC_VER >= 1910)
    +
    157 using temp_type = std::index_sequence<X...>;
    +
    158 return R({workaround::get_computed_strides<L, I, temp_type>(shape[I] == 1)...});
    +
    159#else
    +
    160 return R({shape[I] == 1 ? 0 : calculate_stride<L, I, X...>::value...});
    +
    161#endif
    +
    162 }
    +
    163
    +
    164 template <class S, class T, std::size_t... I>
    +
    165 constexpr T get_backstrides_impl(const S& shape, const T& strides, std::index_sequence<I...>)
    +
    166 {
    +
    167 return T({(strides[I] * std::ptrdiff_t(shape[I] - 1))...});
    +
    168 }
    +
    169
    +
    170 template <std::size_t... X>
    +
    171 struct fixed_compute_size_impl;
    +
    172
    +
    173 template <std::size_t Y, std::size_t... X>
    +
    174 struct fixed_compute_size_impl<Y, X...>
    +
    175 {
    +
    176 static constexpr std::size_t value = Y * fixed_compute_size_impl<X...>::value;
    +
    177 };
    +
    178
    +
    179 template <std::size_t X>
    +
    180 struct fixed_compute_size_impl<X>
    +
    181 {
    +
    182 static constexpr std::size_t value = X;
    +
    183 };
    +
    184
    +
    185 template <>
    +
    186 struct fixed_compute_size_impl<>
    +
    187 {
    +
    188 // support for 0D xtensor fixed (empty shape = xshape<>)
    +
    189 static constexpr std::size_t value = 1;
    +
    190 };
    +
    191
    +
    192 // TODO unify with constexpr compute_size when dropping MSVC 2015
    +
    193 template <class T>
    +
    194 struct fixed_compute_size;
    +
    195
    +
    196 template <std::size_t... X>
    +
    197 struct fixed_compute_size<xt::fixed_shape<X...>>
    +
    198 {
    +
    199 static constexpr std::size_t value = fixed_compute_size_impl<X...>::value;
    +
    200 };
    +
    201
    +
    202 template <class V, std::size_t... X>
    +
    203 struct get_init_type_impl;
    +
    204
    +
    205 template <class V, std::size_t Y>
    +
    206 struct get_init_type_impl<V, Y>
    +
    207 {
    +
    208 using type = V[Y];
    +
    209 };
    +
    210
    +
    211 template <class V>
    +
    212 struct get_init_type_impl<V>
    +
    213 {
    +
    214 using type = V[1];
    +
    215 };
    +
    216
    +
    217 template <class V, std::size_t Y, std::size_t... X>
    +
    218 struct get_init_type_impl<V, Y, X...>
    +
    219 {
    +
    220 using tmp_type = typename get_init_type_impl<V, X...>::type;
    +
    221 using type = tmp_type[Y];
    +
    222 };
    +
    223 }
    +
    224
    +
    225 template <layout_type L, class R, std::size_t... X>
    +
    226 constexpr R get_strides(const fixed_shape<X...>& shape) noexcept
    +
    227 {
    +
    228 return detail::get_strides_impl<L, R>(shape, std::make_index_sequence<sizeof...(X)>{});
    +
    229 }
    +
    230
    +
    231 template <class S, class T>
    +
    232 constexpr T get_backstrides(const S& shape, const T& strides) noexcept
    +
    233 {
    +
    234 return detail::get_backstrides_impl(shape, strides, std::make_index_sequence<std::tuple_size<T>::value>{});
    +
    235 }
    +
    236
    +
    237 template <class V, class S>
    + +
    239
    +
    240 template <class V, std::size_t... X>
    +
    +
    241 struct get_init_type<V, fixed_shape<X...>>
    +
    242 {
    +
    243 using type = typename detail::get_init_type_impl<V, X...>::type;
    +
    244 };
    +
    +
    245
    +
    246 template <class V, class S>
    +
    247 using get_init_type_t = typename get_init_type<V, S>::type;
    +
    248
    +
    249 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    +
    250 struct xcontainer_inner_types<xfixed_container<ET, S, L, SH, Tag>>
    +
    251 {
    +
    252 using shape_type = S;
    +
    253 using inner_shape_type = typename S::cast_type;
    +
    254 using strides_type = get_strides_t<inner_shape_type>;
    +
    255 using inner_strides_type = strides_type;
    +
    256 using backstrides_type = inner_strides_type;
    +
    257 using inner_backstrides_type = backstrides_type;
    +
    258
    +
    259 // NOTE: 0D (S::size() == 0) results in storage for 1 element (scalar)
    +
    260#if defined(_MSC_VER) && _MSC_VER < 1910 && !defined(_WIN64)
    +
    261 // WORKAROUND FOR MSVC 2015 32 bit, fallback to unaligned container for 0D scalar case
    +
    262 using storage_type = std::array<ET, detail::fixed_compute_size<S>::value>;
    +
    263#else
    + +
    265#endif
    +
    266
    +
    267 using reference = typename storage_type::reference;
    +
    268 using const_reference = typename storage_type::const_reference;
    +
    269 using size_type = typename storage_type::size_type;
    + +
    271 static constexpr layout_type layout = L;
    +
    272 };
    +
    +
    273
    +
    274 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    +
    275 struct xiterable_inner_types<xfixed_container<ET, S, L, SH, Tag>>
    +
    276 : xcontainer_iterable_types<xfixed_container<ET, S, L, SH, Tag>>
    +
    277 {
    +
    278 };
    +
    +
    279
    +
    295 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    +
    296 class xfixed_container : public xcontainer<xfixed_container<ET, S, L, SH, Tag>>,
    +
    297 public xcontainer_semantic<xfixed_container<ET, S, L, SH, Tag>>
    +
    298 {
    +
    299 public:
    +
    300
    + + + +
    304
    +
    305 using storage_type = typename base_type::storage_type;
    +
    306 using value_type = typename base_type::value_type;
    +
    307 using reference = typename base_type::reference;
    +
    308 using const_reference = typename base_type::const_reference;
    +
    309 using pointer = typename base_type::pointer;
    +
    310 using const_pointer = typename base_type::const_pointer;
    +
    311 using shape_type = typename base_type::shape_type;
    +
    312 using inner_shape_type = typename base_type::inner_shape_type;
    +
    313 using strides_type = typename base_type::strides_type;
    +
    314 using backstrides_type = typename base_type::backstrides_type;
    +
    315 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    316 using inner_strides_type = typename base_type::inner_strides_type;
    +
    317 using temporary_type = typename semantic_base::temporary_type;
    +
    318 using expression_tag = Tag;
    +
    319
    +
    320 static constexpr std::size_t N = std::tuple_size<shape_type>::value;
    +
    321 static constexpr std::size_t rank = N;
    +
    322
    +
    323 xfixed_container() = default;
    +
    324 xfixed_container(const value_type& v);
    +
    325 explicit xfixed_container(const inner_shape_type& shape, layout_type l = L);
    +
    326 explicit xfixed_container(const inner_shape_type& shape, value_type v, layout_type l = L);
    +
    327
    +
    328 // remove this enable_if when removing the other value_type constructor
    +
    329 template <class IX = std::integral_constant<std::size_t, N>, class EN = std::enable_if_t<IX::value != 0, int>>
    +
    330 xfixed_container(nested_initializer_list_t<value_type, N> t);
    +
    331
    +
    332 ~xfixed_container() = default;
    +
    333
    +
    334 xfixed_container(const xfixed_container&) = default;
    +
    335 xfixed_container& operator=(const xfixed_container&) = default;
    +
    336
    + +
    338 xfixed_container& operator=(xfixed_container&&) = default;
    +
    339
    +
    340 template <class E>
    + +
    342
    +
    343 template <class E>
    +
    344 xfixed_container& operator=(const xexpression<E>& e);
    +
    345
    +
    346 template <class ST = std::array<std::size_t, N>>
    +
    347 static xfixed_container from_shape(ST&& /*s*/);
    +
    348
    +
    349 template <class ST = std::array<std::size_t, N>>
    +
    350 void resize(ST&& shape, bool force = false) const;
    +
    351 template <class ST = shape_type>
    +
    352 void resize(ST&& shape, layout_type l) const;
    +
    353 template <class ST = shape_type>
    +
    354 void resize(ST&& shape, const strides_type& strides) const;
    +
    355
    +
    356 template <class ST = std::array<std::size_t, N>>
    +
    357 const auto& reshape(ST&& shape, layout_type layout = L) const;
    +
    358
    +
    359 template <class ST>
    +
    360 bool broadcast_shape(ST& s, bool reuse_cache = false) const;
    +
    361
    +
    362 constexpr layout_type layout() const noexcept;
    +
    363 bool is_contiguous() const noexcept;
    +
    364
    +
    365 private:
    +
    366
    +
    367 storage_type m_storage;
    +
    368
    +
    369 XTENSOR_CONSTEXPR_ENHANCED_STATIC inner_shape_type m_shape = S();
    +
    370 XTENSOR_CONSTEXPR_ENHANCED_STATIC inner_strides_type m_strides = get_strides<L, inner_strides_type>(S());
    +
    371 XTENSOR_CONSTEXPR_ENHANCED_STATIC inner_backstrides_type
    +
    372 m_backstrides = get_backstrides(m_shape, m_strides);
    +
    373
    +
    374 storage_type& storage_impl() noexcept;
    +
    375 const storage_type& storage_impl() const noexcept;
    +
    376
    +
    377 XTENSOR_CONSTEXPR_RETURN const inner_shape_type& shape_impl() const noexcept;
    +
    378 XTENSOR_CONSTEXPR_RETURN const inner_strides_type& strides_impl() const noexcept;
    +
    379 XTENSOR_CONSTEXPR_RETURN const inner_backstrides_type& backstrides_impl() const noexcept;
    +
    380
    +
    381 friend class xcontainer<xfixed_container<ET, S, L, SH, Tag>>;
    +
    382 };
    +
    +
    383
    +
    384#ifdef XTENSOR_HAS_CONSTEXPR_ENHANCED
    +
    385 // Out of line definitions to prevent linker errors prior to C++17
    +
    386 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    387 constexpr
    +
    388 typename xfixed_container<ET, S, L, SH, Tag>::inner_shape_type xfixed_container<ET, S, L, SH, Tag>::m_shape;
    +
    389
    +
    390 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    391 constexpr
    +
    392 typename xfixed_container<ET, S, L, SH, Tag>::inner_strides_type xfixed_container<ET, S, L, SH, Tag>::m_strides;
    +
    393
    +
    394 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    395 constexpr typename xfixed_container<ET, S, L, SH, Tag>::inner_backstrides_type
    + +
    397#endif
    +
    398
    +
    399 /****************************************
    +
    400 * xfixed_container_adaptor declaration *
    +
    401 ****************************************/
    +
    402
    +
    403 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    404 class xfixed_adaptor;
    +
    405
    +
    406 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    +
    407 struct xcontainer_inner_types<xfixed_adaptor<EC, S, L, SH, Tag>>
    +
    408 {
    +
    409 using storage_type = std::remove_reference_t<EC>;
    +
    410 using reference = typename storage_type::reference;
    +
    411 using const_reference = typename storage_type::const_reference;
    +
    412 using size_type = typename storage_type::size_type;
    +
    413 using shape_type = S;
    +
    414 using inner_shape_type = typename S::cast_type;
    +
    415 using strides_type = get_strides_t<inner_shape_type>;
    +
    416 using backstrides_type = strides_type;
    +
    417 using inner_strides_type = strides_type;
    +
    418 using inner_backstrides_type = backstrides_type;
    + +
    420 static constexpr layout_type layout = L;
    +
    421 };
    +
    +
    422
    +
    423 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    +
    424 struct xiterable_inner_types<xfixed_adaptor<EC, S, L, SH, Tag>>
    +
    425 : xcontainer_iterable_types<xfixed_adaptor<EC, S, L, SH, Tag>>
    +
    426 {
    +
    427 };
    +
    +
    428
    +
    445 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    +
    446 class xfixed_adaptor : public xcontainer<xfixed_adaptor<EC, S, L, SH, Tag>>,
    +
    447 public xcontainer_semantic<xfixed_adaptor<EC, S, L, SH, Tag>>
    +
    448 {
    +
    449 public:
    +
    450
    +
    451 using container_closure_type = EC;
    +
    452
    + + + +
    456 using storage_type = typename base_type::storage_type;
    +
    457 using shape_type = typename base_type::shape_type;
    +
    458 using strides_type = typename base_type::strides_type;
    +
    459 using backstrides_type = typename base_type::backstrides_type;
    +
    460 using inner_shape_type = typename base_type::inner_shape_type;
    +
    461 using inner_strides_type = typename base_type::inner_strides_type;
    +
    462 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    463 using temporary_type = typename semantic_base::temporary_type;
    +
    464 using expression_tag = Tag;
    +
    465
    +
    466 static constexpr std::size_t N = S::size();
    +
    467
    +
    468 xfixed_adaptor(storage_type&& data);
    +
    469 xfixed_adaptor(const storage_type& data);
    +
    470
    +
    471 template <class D>
    +
    472 xfixed_adaptor(D&& data);
    +
    473
    +
    474 ~xfixed_adaptor() = default;
    +
    475
    +
    476 xfixed_adaptor(const xfixed_adaptor&) = default;
    +
    477 xfixed_adaptor& operator=(const xfixed_adaptor&);
    +
    478
    +
    479 xfixed_adaptor(xfixed_adaptor&&) = default;
    +
    480 xfixed_adaptor& operator=(xfixed_adaptor&&);
    +
    481 xfixed_adaptor& operator=(temporary_type&&);
    +
    482
    +
    483 template <class E>
    +
    484 xfixed_adaptor& operator=(const xexpression<E>& e);
    +
    485
    +
    486 template <class ST = std::array<std::size_t, N>>
    +
    487 void resize(ST&& shape, bool force = false) const;
    +
    488 template <class ST = shape_type>
    +
    489 void resize(ST&& shape, layout_type l) const;
    +
    490 template <class ST = shape_type>
    +
    491 void resize(ST&& shape, const strides_type& strides) const;
    +
    492
    +
    493 template <class ST = std::array<std::size_t, N>>
    +
    494 const auto& reshape(ST&& shape, layout_type layout = L) const;
    +
    495
    +
    496 template <class ST>
    +
    497 bool broadcast_shape(ST& s, bool reuse_cache = false) const;
    +
    498
    +
    499 constexpr layout_type layout() const noexcept;
    +
    500 bool is_contiguous() const noexcept;
    +
    501
    +
    502 private:
    +
    503
    +
    504 container_closure_type m_storage;
    +
    505
    +
    506 XTENSOR_CONSTEXPR_ENHANCED_STATIC inner_shape_type m_shape = S();
    +
    507 XTENSOR_CONSTEXPR_ENHANCED_STATIC inner_strides_type m_strides = get_strides<L, inner_strides_type>(S());
    +
    508 XTENSOR_CONSTEXPR_ENHANCED_STATIC inner_backstrides_type
    +
    509 m_backstrides = get_backstrides(m_shape, m_strides);
    +
    510
    +
    511 storage_type& storage_impl() noexcept;
    +
    512 const storage_type& storage_impl() const noexcept;
    +
    513
    +
    514 XTENSOR_CONSTEXPR_RETURN const inner_shape_type& shape_impl() const noexcept;
    +
    515 XTENSOR_CONSTEXPR_RETURN const inner_strides_type& strides_impl() const noexcept;
    +
    516 XTENSOR_CONSTEXPR_RETURN const inner_backstrides_type& backstrides_impl() const noexcept;
    +
    517
    +
    518 friend class xcontainer<xfixed_adaptor<EC, S, L, SH, Tag>>;
    +
    519 };
    +
    +
    520
    +
    521#ifdef XTENSOR_HAS_CONSTEXPR_ENHANCED
    +
    522 // Out of line definitions to prevent linker errors prior to C++17
    +
    523 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    524 constexpr
    +
    525 typename xfixed_adaptor<EC, S, L, SH, Tag>::inner_shape_type xfixed_adaptor<EC, S, L, SH, Tag>::m_shape;
    +
    526
    +
    527 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    528 constexpr
    +
    529 typename xfixed_adaptor<EC, S, L, SH, Tag>::inner_strides_type xfixed_adaptor<EC, S, L, SH, Tag>::m_strides;
    +
    530
    +
    531 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    532 constexpr typename xfixed_adaptor<EC, S, L, SH, Tag>::inner_backstrides_type
    + +
    534#endif
    +
    535
    +
    536 /************************************
    +
    537 * xfixed_container implementation *
    +
    538 ************************************/
    +
    539
    +
    544
    +
    553 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    + +
    555 {
    +
    556 (void) (shape);
    +
    557 (void) (l);
    +
    558 XTENSOR_ASSERT(shape.size() == N && std::equal(shape.begin(), shape.end(), m_shape.begin()));
    +
    559 XTENSOR_ASSERT(L == l);
    +
    560 }
    +
    +
    561
    +
    562 template <class ET, class S, layout_type L, bool SH, class Tag>
    + +
    564 {
    +
    565 if (this->size() != 1)
    +
    566 {
    +
    567 XTENSOR_THROW(std::runtime_error, "wrong shape for scalar assignment (has to be xshape<>).");
    +
    568 }
    +
    569 m_storage[0] = v;
    +
    570 }
    +
    571
    +
    581 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    + +
    583 const inner_shape_type& shape,
    +
    584 value_type v,
    + +
    586 )
    +
    587 {
    +
    588 (void) (shape);
    +
    589 (void) (l);
    +
    590 XTENSOR_ASSERT(shape.size() == N && std::equal(shape.begin(), shape.end(), m_shape.begin()));
    +
    591 XTENSOR_ASSERT(L == l);
    +
    592 std::fill(m_storage.begin(), m_storage.end(), v);
    +
    593 }
    +
    +
    594
    +
    595 namespace detail
    +
    596 {
    +
    597 template <std::size_t X>
    +
    598 struct check_initializer_list_shape
    +
    599 {
    +
    600 template <class T, class S>
    +
    601 static bool run(const T& t, const S& shape)
    +
    602 {
    +
    603 std::size_t IX = shape.size() - X;
    +
    604 bool result = (shape[IX] == t.size());
    +
    605 for (std::size_t i = 0; i < shape[IX]; ++i)
    +
    606 {
    +
    607 result = result && check_initializer_list_shape<X - 1>::run(t.begin()[i], shape);
    +
    608 }
    +
    609 return result;
    +
    610 }
    +
    611 };
    +
    612
    +
    613 template <>
    +
    614 struct check_initializer_list_shape<0>
    +
    615 {
    +
    616 template <class T, class S>
    +
    617 static bool run(const T& /*t*/, const S& /*shape*/)
    +
    618 {
    +
    619 return true;
    +
    620 }
    +
    621 };
    +
    622 }
    +
    623
    +
    624 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    625 template <class ST>
    +
    626 inline xfixed_container<ET, S, L, SH, Tag> xfixed_container<ET, S, L, SH, Tag>::from_shape(ST&& shape)
    +
    627 {
    +
    628 (void) shape;
    +
    629 self_type tmp;
    +
    630 XTENSOR_ASSERT(shape.size() == N && std::equal(shape.begin(), shape.end(), tmp.shape().begin()));
    +
    631 return tmp;
    +
    632 }
    +
    633
    +
    641 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    642 template <class IX, class EN>
    +
    +
    643 inline xfixed_container<ET, S, L, SH, Tag>::xfixed_container(nested_initializer_list_t<value_type, N> t)
    +
    644 {
    +
    645 XTENSOR_ASSERT_MSG(
    +
    646 detail::check_initializer_list_shape<N>::run(t, this->shape()) == true,
    +
    647 "initializer list shape does not match fixed shape"
    +
    648 );
    +
    649 constexpr auto tmp = layout_type::row_major;
    +
    650 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    651 }
    +
    +
    652
    +
    654
    +
    662 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    663 template <class E>
    +
    + +
    665 {
    +
    666 semantic_base::assign(e);
    +
    667 }
    +
    +
    668
    +
    672 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    673 template <class E>
    +
    + +
    675 {
    +
    676 return semantic_base::operator=(e);
    +
    677 }
    +
    +
    678
    +
    680
    +
    685 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    686 template <class ST>
    +
    +
    687 inline void xfixed_container<ET, S, L, SH, Tag>::resize(ST&& shape, bool) const
    +
    688 {
    +
    689 (void) (shape); // remove unused parameter warning if XTENSOR_ASSERT undefined
    +
    690 XTENSOR_ASSERT(std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size());
    +
    691 }
    +
    +
    692
    +
    697 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    698 template <class ST>
    +
    + +
    700 {
    +
    701 (void) (shape); // remove unused parameter warning if XTENSOR_ASSERT undefined
    +
    702 (void) (l);
    +
    703 XTENSOR_ASSERT(
    +
    704 std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size() && L == l
    +
    705 );
    +
    706 }
    +
    +
    707
    +
    712 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    713 template <class ST>
    +
    +
    714 inline void xfixed_container<ET, S, L, SH, Tag>::resize(ST&& shape, const strides_type& strides) const
    +
    715 {
    +
    716 (void) (shape); // remove unused parameter warning if XTENSOR_ASSERT undefined
    +
    717 (void) (strides);
    +
    718 XTENSOR_ASSERT(std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size());
    +
    719 XTENSOR_ASSERT(
    +
    720 std::equal(strides.begin(), strides.end(), m_strides.begin()) && strides.size() == m_strides.size()
    +
    721 );
    +
    722 }
    +
    +
    723
    +
    727 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    728 template <class ST>
    +
    +
    729 inline const auto& xfixed_container<ET, S, L, SH, Tag>::reshape(ST&& shape, layout_type layout) const
    +
    730 {
    +
    731 if (!(std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size()
    +
    732 && layout == L))
    +
    733 {
    +
    734 XTENSOR_THROW(std::runtime_error, "Trying to reshape xtensor_fixed with different shape or layout.");
    +
    735 }
    +
    736 return *this;
    +
    737 }
    +
    +
    738
    +
    739 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    740 template <class ST>
    +
    741 inline bool xfixed_container<ET, S, L, SH, Tag>::broadcast_shape(ST& shape, bool) const
    +
    742 {
    +
    743 return xt::broadcast_shape(m_shape, shape);
    +
    744 }
    +
    745
    +
    746 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    747 constexpr layout_type xfixed_container<ET, S, L, SH, Tag>::layout() const noexcept
    +
    748 {
    +
    749 return base_type::static_layout;
    +
    750 }
    +
    751
    +
    752 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    753 inline bool xfixed_container<ET, S, L, SH, Tag>::is_contiguous() const noexcept
    +
    754 {
    +
    755 using str_type = typename inner_strides_type::value_type;
    +
    756 return m_strides.empty() || (layout() == layout_type::row_major && m_strides.back() == str_type(1))
    +
    757 || (layout() == layout_type::column_major && m_strides.front() == str_type(1));
    +
    758 }
    +
    759
    +
    760 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    761 inline auto xfixed_container<ET, S, L, SH, Tag>::storage_impl() noexcept -> storage_type&
    +
    762 {
    +
    763 return m_storage;
    +
    764 }
    +
    765
    +
    766 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    767 inline auto xfixed_container<ET, S, L, SH, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    768 {
    +
    769 return m_storage;
    +
    770 }
    +
    771
    +
    772 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    773 XTENSOR_CONSTEXPR_RETURN auto xfixed_container<ET, S, L, SH, Tag>::shape_impl() const noexcept
    +
    774 -> const inner_shape_type&
    +
    775 {
    +
    776 return m_shape;
    +
    777 }
    +
    778
    +
    779 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    780 XTENSOR_CONSTEXPR_RETURN auto xfixed_container<ET, S, L, SH, Tag>::strides_impl() const noexcept
    +
    781 -> const inner_strides_type&
    +
    782 {
    +
    783 return m_strides;
    +
    784 }
    +
    785
    +
    786 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    787 XTENSOR_CONSTEXPR_RETURN auto xfixed_container<ET, S, L, SH, Tag>::backstrides_impl() const noexcept
    +
    788 -> const inner_backstrides_type&
    +
    789 {
    +
    790 return m_backstrides;
    +
    791 }
    +
    792
    +
    793 /*******************
    +
    794 * xfixed_adaptor *
    +
    795 *******************/
    +
    796
    +
    805 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    + +
    807 : base_type()
    +
    808 , m_storage(std::move(data))
    +
    809 {
    +
    810 }
    +
    +
    811
    +
    816 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    + +
    818 : base_type()
    +
    819 , m_storage(data)
    +
    820 {
    +
    821 }
    +
    +
    822
    +
    828 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    829 template <class D>
    +
    + +
    831 : base_type()
    +
    832 , m_storage(std::forward<D>(data))
    +
    833 {
    +
    834 }
    +
    +
    835
    +
    837
    +
    838 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    839 inline auto xfixed_adaptor<EC, S, L, SH, Tag>::operator=(const xfixed_adaptor& rhs) -> self_type&
    +
    840 {
    +
    841 base_type::operator=(rhs);
    +
    842 m_storage = rhs.m_storage;
    +
    843 return *this;
    +
    844 }
    +
    845
    +
    846 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    847 inline auto xfixed_adaptor<EC, S, L, SH, Tag>::operator=(xfixed_adaptor&& rhs) -> self_type&
    +
    848 {
    +
    849 base_type::operator=(std::move(rhs));
    +
    850 m_storage = rhs.m_storage;
    +
    851 return *this;
    +
    852 }
    +
    853
    +
    854 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    855 inline auto xfixed_adaptor<EC, S, L, SH, Tag>::operator=(temporary_type&& rhs) -> self_type&
    +
    856 {
    +
    857 m_storage.resize(rhs.storage().size());
    +
    858 std::copy(rhs.storage().cbegin(), rhs.storage().cend(), m_storage.begin());
    +
    859 return *this;
    +
    860 }
    +
    861
    +
    869 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    870 template <class E>
    +
    + +
    872 {
    +
    873 return semantic_base::operator=(e);
    +
    874 }
    +
    +
    875
    +
    877
    +
    882 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    883 template <class ST>
    +
    +
    884 inline void xfixed_adaptor<ET, S, L, SH, Tag>::resize(ST&& shape, bool) const
    +
    885 {
    +
    886 (void) (shape); // remove unused parameter warning if XTENSOR_ASSERT undefined
    +
    887 XTENSOR_ASSERT(std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size());
    +
    888 }
    +
    +
    889
    +
    894 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    895 template <class ST>
    +
    + +
    897 {
    +
    898 (void) (shape); // remove unused parameter warning if XTENSOR_ASSERT undefined
    +
    899 (void) (l);
    +
    900 XTENSOR_ASSERT(
    +
    901 std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size() && L == l
    +
    902 );
    +
    903 }
    +
    +
    904
    +
    909 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    910 template <class ST>
    +
    +
    911 inline void xfixed_adaptor<ET, S, L, SH, Tag>::resize(ST&& shape, const strides_type& strides) const
    +
    912 {
    +
    913 (void) (shape); // remove unused parameter warning if XTENSOR_ASSERT undefined
    +
    914 (void) (strides);
    +
    915 XTENSOR_ASSERT(std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size());
    +
    916 XTENSOR_ASSERT(
    +
    917 std::equal(strides.begin(), strides.end(), m_strides.begin()) && strides.size() == m_strides.size()
    +
    918 );
    +
    919 }
    +
    +
    920
    +
    924 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    925 template <class ST>
    +
    +
    926 inline const auto& xfixed_adaptor<ET, S, L, SH, Tag>::reshape(ST&& shape, layout_type layout) const
    +
    927 {
    +
    928 if (!(std::equal(shape.begin(), shape.end(), m_shape.begin()) && shape.size() == m_shape.size()
    +
    929 && layout == L))
    +
    930 {
    +
    931 XTENSOR_THROW(std::runtime_error, "Trying to reshape xtensor_fixed with different shape or layout.");
    +
    932 }
    +
    933 return *this;
    +
    934 }
    +
    +
    935
    +
    936 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    937 template <class ST>
    +
    938 inline bool xfixed_adaptor<ET, S, L, SH, Tag>::broadcast_shape(ST& shape, bool) const
    +
    939 {
    +
    940 return xt::broadcast_shape(m_shape, shape);
    +
    941 }
    +
    942
    +
    943 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    944 inline auto xfixed_adaptor<EC, S, L, SH, Tag>::storage_impl() noexcept -> storage_type&
    +
    945 {
    +
    946 return m_storage;
    +
    947 }
    +
    948
    +
    949 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    950 inline auto xfixed_adaptor<EC, S, L, SH, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    951 {
    +
    952 return m_storage;
    +
    953 }
    +
    954
    +
    955 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    956 constexpr layout_type xfixed_adaptor<EC, S, L, SH, Tag>::layout() const noexcept
    +
    957 {
    +
    958 return base_type::static_layout;
    +
    959 }
    +
    960
    +
    961 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    962 inline bool xfixed_adaptor<EC, S, L, SH, Tag>::is_contiguous() const noexcept
    +
    963 {
    +
    964 using str_type = typename inner_strides_type::value_type;
    +
    965 return m_strides.empty() || (layout() == layout_type::row_major && m_strides.back() == str_type(1))
    +
    966 || (layout() == layout_type::column_major && m_strides.front() == str_type(1));
    +
    967 }
    +
    968
    +
    969 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    970 XTENSOR_CONSTEXPR_RETURN auto xfixed_adaptor<EC, S, L, SH, Tag>::shape_impl() const noexcept
    +
    971 -> const inner_shape_type&
    +
    972 {
    +
    973 return m_shape;
    +
    974 }
    +
    975
    +
    976 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    977 XTENSOR_CONSTEXPR_RETURN auto xfixed_adaptor<EC, S, L, SH, Tag>::strides_impl() const noexcept
    +
    978 -> const inner_strides_type&
    +
    979 {
    +
    980 return m_strides;
    +
    981 }
    +
    982
    +
    983 template <class EC, class S, layout_type L, bool SH, class Tag>
    +
    984 XTENSOR_CONSTEXPR_RETURN auto xfixed_adaptor<EC, S, L, SH, Tag>::backstrides_impl() const noexcept
    +
    985 -> const inner_backstrides_type&
    +
    986 {
    +
    987 return m_backstrides;
    +
    988 }
    +
    989}
    +
    990
    +
    991#endif
    +
    This array class is modeled after std::array but adds optional alignment through a template parameter...
    +
    Fixed shape implementation for compile time defined arrays.
    +
    Implementation of the xsemantic_base interface for dense multidimensional containers.
    +
    Base class for dense multidimensional containers.
    +
    constexpr const inner_strides_type & strides() const noexcept
    Returns the strides of the container.
    +
    constexpr const inner_shape_type & shape() const noexcept
    Returns the shape of the container.
    +
    pointer data() noexcept
    Returns a pointer to the underlying array serving as element storage.
    +
    Base class for xexpressions.
    +
    Dense multidimensional container adaptor with tensor semantic and fixed dimension.
    Definition xfixed.hpp:448
    +
    xfixed_adaptor(storage_type &&data)
    Constructs an xfixed_adaptor of the given stl-like container.
    Definition xfixed.hpp:806
    +
    const auto & reshape(ST &&shape, layout_type layout=L) const
    Note that the xfixed_container cannot be reshaped to a shape different from S.
    Definition xfixed.hpp:926
    +
    void resize(ST &&shape, bool force=false) const
    Note that the xfixed_adaptor cannot be resized.
    Definition xfixed.hpp:884
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xfixed.hpp:298
    +
    void resize(ST &&shape, bool force=false) const
    Note that the xfixed_container cannot be resized.
    Definition xfixed.hpp:687
    +
    const auto & reshape(ST &&shape, layout_type layout=L) const
    Note that the xfixed_container cannot be reshaped to a shape different from S.
    Definition xfixed.hpp:729
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    A std::array like class with all member function (except reverse iterators) as constexpr.
    + + + + +
    +
    + + + + diff --git a/xfunction_8hpp_source.html b/xfunction_8hpp_source.html new file mode 100644 index 000000000..8c55521ae --- /dev/null +++ b/xfunction_8hpp_source.html @@ -0,0 +1,1242 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xfunction.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xfunction.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_FUNCTION_HPP
    +
    11#define XTENSOR_FUNCTION_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <iterator>
    +
    16#include <numeric>
    +
    17#include <tuple>
    +
    18#include <type_traits>
    +
    19#include <utility>
    +
    20
    +
    21#include <xtl/xsequence.hpp>
    +
    22#include <xtl/xtype_traits.hpp>
    +
    23
    +
    24#include "xaccessible.hpp"
    +
    25#include "xexpression_traits.hpp"
    +
    26#include "xiterable.hpp"
    +
    27#include "xiterator.hpp"
    +
    28#include "xlayout.hpp"
    +
    29#include "xscalar.hpp"
    +
    30#include "xshape.hpp"
    +
    31#include "xstrides.hpp"
    +
    32#include "xtensor_simd.hpp"
    +
    33#include "xutils.hpp"
    +
    34
    +
    35namespace xt
    +
    36{
    +
    37 namespace detail
    +
    38 {
    +
    39
    +
    40 template <bool... B>
    + +
    42
    +
    43 /************************
    +
    44 * xfunction_cache_impl *
    +
    45 ************************/
    +
    46
    +
    47 template <class S, class is_shape_trivial>
    +
    48 struct xfunction_cache_impl
    +
    49 {
    +
    50 S shape;
    +
    51 bool is_trivial;
    +
    52 bool is_initialized;
    +
    53
    +
    54 xfunction_cache_impl()
    +
    55 : shape(xtl::make_sequence<S>(0, std::size_t(0)))
    +
    56 , is_trivial(false)
    +
    57 , is_initialized(false)
    +
    58 {
    +
    59 }
    +
    60 };
    +
    61
    +
    62 template <std::size_t... N, class is_shape_trivial>
    +
    63 struct xfunction_cache_impl<fixed_shape<N...>, is_shape_trivial>
    +
    64 {
    +
    65 XTENSOR_CONSTEXPR_ENHANCED_STATIC fixed_shape<N...> shape = fixed_shape<N...>();
    +
    66 XTENSOR_CONSTEXPR_ENHANCED_STATIC bool is_trivial = is_shape_trivial::value;
    +
    67 XTENSOR_CONSTEXPR_ENHANCED_STATIC bool is_initialized = true;
    +
    68 };
    +
    69
    +
    70#ifdef XTENSOR_HAS_CONSTEXPR_ENHANCED
    +
    71 // Out of line definitions to prevent linker errors prior to C++17
    +
    72 template <std::size_t... N, class is_shape_trivial>
    +
    73 constexpr fixed_shape<N...> xfunction_cache_impl<fixed_shape<N...>, is_shape_trivial>::shape;
    +
    74
    +
    75 template <std::size_t... N, class is_shape_trivial>
    +
    76 constexpr bool xfunction_cache_impl<fixed_shape<N...>, is_shape_trivial>::is_trivial;
    +
    77
    +
    78 template <std::size_t... N, class is_shape_trivial>
    +
    79 constexpr bool xfunction_cache_impl<fixed_shape<N...>, is_shape_trivial>::is_initialized;
    +
    80#endif
    +
    81
    +
    82 template <class... CT>
    +
    83 struct xfunction_bool_load_type
    +
    84 {
    +
    85 using type = xtl::promote_type_t<typename std::decay_t<CT>::bool_load_type...>;
    +
    86 };
    +
    87
    +
    88 template <class CT>
    +
    89 struct xfunction_bool_load_type<CT>
    +
    90 {
    +
    91 using type = typename std::decay_t<CT>::bool_load_type;
    +
    92 };
    +
    93
    +
    94 template <class... CT>
    +
    95 using xfunction_bool_load_type_t = typename xfunction_bool_load_type<CT...>::type;
    +
    96 }
    +
    97
    +
    98 /************************
    +
    99 * xfunction extensions *
    +
    100 ************************/
    +
    101
    +
    102 namespace extension
    +
    103 {
    +
    104
    +
    105 template <class Tag, class F, class... CT>
    + +
    107
    +
    108 template <class F, class... CT>
    +
    + +
    110 {
    +
    111 using type = xtensor_empty_base;
    +
    112 };
    +
    +
    113
    +
    114 template <class F, class... CT>
    +
    +
    115 struct xfunction_base : xfunction_base_impl<xexpression_tag_t<CT...>, F, CT...>
    +
    116 {
    +
    117 };
    +
    +
    118
    +
    119 template <class F, class... CT>
    +
    120 using xfunction_base_t = typename xfunction_base<F, CT...>::type;
    +
    121 }
    +
    122
    +
    123 template <class promote>
    +
    +
    124 struct xfunction_cache : detail::xfunction_cache_impl<typename promote::type, promote>
    +
    125 {
    +
    126 };
    +
    +
    127
    +
    128 template <class F, class... CT>
    +
    129 class xfunction_iterator;
    +
    130
    +
    131 template <class F, class... CT>
    +
    132 class xfunction_stepper;
    +
    133
    +
    134 template <class F, class... CT>
    +
    135 class xfunction;
    +
    136
    +
    137 template <class F, class... CT>
    +
    + +
    139 {
    +
    140 using inner_shape_type = promote_shape_t<typename std::decay_t<CT>::shape_type...>;
    +
    141 using const_stepper = xfunction_stepper<F, CT...>;
    +
    142 using stepper = const_stepper;
    +
    143 };
    +
    +
    144
    +
    145 template <class F, class... CT>
    +
    + +
    147 {
    +
    148 // Added indirection for MSVC 2017 bug with the operator value_type()
    +
    149 using func_return_type = typename meta_identity<
    +
    150 decltype(std::declval<F>()(std::declval<xvalue_type_t<std::decay_t<CT>>>()...))>::type;
    +
    151 using value_type = std::decay_t<func_return_type>;
    +
    152 using reference = func_return_type;
    +
    153 using const_reference = reference;
    +
    154 using size_type = common_size_type_t<std::decay_t<CT>...>;
    +
    155 };
    +
    +
    156
    +
    157 template <class T, class F, class... CT>
    +
    + +
    159 has_simd_type<T>,
    +
    160 has_simd_apply<F, xt_simd::simd_type<T>>,
    +
    161 has_simd_interface<std::decay_t<CT>, T>...>
    +
    162 {
    +
    163 };
    +
    +
    164
    +
    165 /*************
    +
    166 * xfunction *
    +
    167 *************/
    +
    168
    +
    180 template <class F, class... CT>
    +
    +
    181 class xfunction : private xconst_iterable<xfunction<F, CT...>>,
    +
    182 public xsharable_expression<xfunction<F, CT...>>,
    +
    183 private xconst_accessible<xfunction<F, CT...>>,
    +
    184 public extension::xfunction_base_t<F, CT...>
    +
    185 {
    +
    186 public:
    +
    187
    +
    188 using self_type = xfunction<F, CT...>;
    + +
    190 using extension_base = extension::xfunction_base_t<F, CT...>;
    +
    191 using expression_tag = typename extension_base::expression_tag;
    +
    192 using only_scalar = all_xscalar<CT...>;
    +
    193 using functor_type = typename std::remove_reference<F>::type;
    +
    194 using tuple_type = std::tuple<CT...>;
    +
    195
    + +
    197 using value_type = typename inner_types::value_type;
    +
    198 using reference = typename inner_types::reference;
    +
    199 using const_reference = typename inner_types::const_reference;
    +
    200 using pointer = value_type*;
    +
    201 using const_pointer = const value_type*;
    +
    202 using size_type = typename inner_types::size_type;
    +
    203 using difference_type = common_difference_type_t<std::decay_t<CT>...>;
    +
    204
    +
    205 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    206
    +
    207 // xtl::promote_type_t<typename std::decay_t<CT>::bool_load_type...>;
    +
    208 using bool_load_type = detail::xfunction_bool_load_type_t<CT...>;
    +
    209
    +
    210 template <class requested_type>
    +
    211 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    212
    +
    213 using iterable_base = xconst_iterable<xfunction<F, CT...>>;
    +
    214 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    215 using shape_type = inner_shape_type;
    +
    216
    +
    217 using stepper = typename iterable_base::stepper;
    +
    218 using const_stepper = typename iterable_base::const_stepper;
    +
    219
    +
    220 static constexpr layout_type static_layout = compute_layout(std::decay_t<CT>::static_layout...);
    +
    221 static constexpr bool contiguous_layout = static_layout != layout_type::dynamic;
    +
    222
    +
    223 template <layout_type L>
    +
    224 using layout_iterator = typename iterable_base::template layout_iterator<L>;
    +
    225 template <layout_type L>
    +
    226 using const_layout_iterator = typename iterable_base::template const_layout_iterator<L>;
    +
    227 template <layout_type L>
    +
    228 using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>;
    +
    229 template <layout_type L>
    +
    230 using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>;
    +
    231
    +
    232 template <class S, layout_type L>
    +
    233 using broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>;
    +
    234 template <class S, layout_type L>
    +
    235 using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>;
    +
    236 template <class S, layout_type L>
    +
    237 using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>;
    +
    238 template <class S, layout_type L>
    +
    239 using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>;
    +
    240
    + + +
    243 using const_reverse_linear_iterator = std::reverse_iterator<const_linear_iterator>;
    +
    244 using reverse_linear_iterator = std::reverse_iterator<linear_iterator>;
    +
    245
    +
    246 using iterator = typename iterable_base::iterator;
    +
    247 using const_iterator = typename iterable_base::const_iterator;
    +
    248 using reverse_iterator = typename iterable_base::reverse_iterator;
    +
    249 using const_reverse_iterator = typename iterable_base::const_reverse_iterator;
    +
    250
    +
    251 template <class Func, class... CTA, class U = std::enable_if_t<!std::is_base_of<std::decay_t<Func>, self_type>::value>>
    +
    252 xfunction(Func&& f, CTA&&... e) noexcept;
    +
    253
    +
    254 template <class FA, class... CTA>
    +
    255 xfunction(xfunction<FA, CTA...> xf) noexcept;
    +
    256
    +
    257 ~xfunction() = default;
    +
    258
    +
    259 xfunction(const xfunction&) = default;
    +
    260 xfunction& operator=(const xfunction&) = default;
    +
    261
    +
    262 xfunction(xfunction&&) = default;
    +
    263 xfunction& operator=(xfunction&&) = default;
    +
    264
    + +
    266 size_type dimension() const noexcept;
    +
    267 const inner_shape_type& shape() const;
    +
    268 layout_type layout() const noexcept;
    +
    269 bool is_contiguous() const noexcept;
    + +
    271
    +
    272 template <class... Args>
    +
    273 const_reference operator()(Args... args) const;
    +
    274
    +
    275 template <class... Args>
    +
    276 const_reference unchecked(Args... args) const;
    +
    277
    +
    278 using accessible_base::at;
    +
    279 using accessible_base::operator[];
    + + + +
    283 using accessible_base::periodic;
    +
    284
    +
    285 template <class It>
    +
    286 const_reference element(It first, It last) const;
    +
    287
    +
    288 template <class S>
    +
    289 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    290
    +
    291 template <class S>
    +
    292 bool has_linear_assign(const S& strides) const noexcept;
    +
    293
    +
    294 using iterable_base::begin;
    +
    295 using iterable_base::cbegin;
    +
    296 using iterable_base::cend;
    +
    297 using iterable_base::crbegin;
    +
    298 using iterable_base::crend;
    +
    299 using iterable_base::end;
    +
    300 using iterable_base::rbegin;
    +
    301 using iterable_base::rend;
    +
    302
    +
    303 const_linear_iterator linear_begin() const noexcept;
    +
    304 const_linear_iterator linear_end() const noexcept;
    +
    305 const_linear_iterator linear_cbegin() const noexcept;
    +
    306 const_linear_iterator linear_cend() const noexcept;
    +
    307
    +
    308 const_reverse_linear_iterator linear_rbegin() const noexcept;
    +
    309 const_reverse_linear_iterator linear_rend() const noexcept;
    +
    310 const_reverse_linear_iterator linear_crbegin() const noexcept;
    +
    311 const_reverse_linear_iterator linear_crend() const noexcept;
    +
    312
    +
    313 template <class S>
    +
    314 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    315 template <class S>
    +
    316 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    317
    +
    318 const_reference data_element(size_type i) const;
    +
    319
    +
    320 const_reference flat(size_type i) const;
    +
    321
    +
    322 template <class UT = self_type, class = typename std::enable_if<UT::only_scalar::value>::type>
    +
    323 operator value_type() const;
    +
    324
    +
    325 template <class align, class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
    +
    326 simd_return_type<requested_type> load_simd(size_type i) const;
    +
    327
    +
    328 const tuple_type& arguments() const noexcept;
    +
    329
    +
    330 const functor_type& functor() const noexcept;
    +
    331
    +
    332 private:
    +
    333
    +
    334 template <std::size_t... I>
    +
    335 layout_type layout_impl(std::index_sequence<I...>) const noexcept;
    +
    336
    +
    337 template <std::size_t... I, class... Args>
    +
    338 const_reference access_impl(std::index_sequence<I...>, Args... args) const;
    +
    339
    +
    340 template <std::size_t... I, class... Args>
    +
    341 const_reference unchecked_impl(std::index_sequence<I...>, Args... args) const;
    +
    342
    +
    343 template <std::size_t... I, class It>
    +
    344 const_reference element_access_impl(std::index_sequence<I...>, It first, It last) const;
    +
    345
    +
    346 template <std::size_t... I>
    +
    347 const_reference data_element_impl(std::index_sequence<I...>, size_type i) const;
    +
    348
    +
    349 template <class align, class requested_type, std::size_t N, std::size_t... I>
    +
    350 auto load_simd_impl(std::index_sequence<I...>, size_type i) const;
    +
    351
    +
    352 template <class Func, std::size_t... I>
    +
    353 const_stepper build_stepper(Func&& f, std::index_sequence<I...>) const noexcept;
    +
    354
    +
    355 template <class Func, std::size_t... I>
    +
    356 auto build_iterator(Func&& f, std::index_sequence<I...>) const noexcept;
    +
    357
    +
    358 size_type compute_dimension() const noexcept;
    +
    359
    +
    360 void compute_cached_shape() const;
    +
    361
    +
    362 tuple_type m_e;
    +
    363 functor_type m_f;
    + +
    365
    +
    366 friend class xfunction_iterator<F, CT...>;
    +
    367 friend class xfunction_stepper<F, CT...>;
    +
    368 friend class xconst_iterable<self_type>;
    +
    369 friend class xconst_accessible<self_type>;
    +
    370 };
    +
    +
    371
    +
    372 /**********************
    +
    373 * xfunction_iterator *
    +
    374 **********************/
    +
    375
    +
    376 template <class F, class... CT>
    +
    +
    377 class xfunction_iterator : public xtl::xrandom_access_iterator_base<
    +
    378 xfunction_iterator<F, CT...>,
    +
    379 typename xfunction<F, CT...>::value_type,
    +
    380 typename xfunction<F, CT...>::difference_type,
    +
    381 typename xfunction<F, CT...>::pointer,
    +
    382 typename xfunction<F, CT...>::reference>
    +
    383 {
    +
    384 public:
    +
    385
    +
    386 using self_type = xfunction_iterator<F, CT...>;
    +
    387 using functor_type = typename std::remove_reference<F>::type;
    +
    388 using xfunction_type = xfunction<F, CT...>;
    +
    389
    +
    390 using value_type = typename xfunction_type::value_type;
    +
    391 using reference = typename xfunction_type::value_type;
    +
    392 using pointer = typename xfunction_type::const_pointer;
    +
    393 using difference_type = typename xfunction_type::difference_type;
    +
    394 using iterator_category = std::random_access_iterator_tag;
    +
    395
    +
    396 template <class... It>
    +
    397 xfunction_iterator(const xfunction_type* func, It&&... it) noexcept;
    +
    398
    +
    399 self_type& operator++();
    +
    400 self_type& operator--();
    +
    401
    +
    402 self_type& operator+=(difference_type n);
    +
    403 self_type& operator-=(difference_type n);
    +
    404
    +
    405 difference_type operator-(const self_type& rhs) const;
    +
    406
    +
    407 reference operator*() const;
    +
    408
    +
    409 bool equal(const self_type& rhs) const;
    +
    410 bool less_than(const self_type& rhs) const;
    +
    411
    +
    412 private:
    +
    413
    +
    414 using data_type = std::tuple<decltype(xt::linear_begin(std::declval<const std::decay_t<CT>>()))...>;
    +
    415
    +
    416 template <std::size_t... I>
    +
    417 reference deref_impl(std::index_sequence<I...>) const;
    +
    418
    +
    419 template <std::size_t... I>
    +
    420 difference_type
    +
    421 tuple_max_diff(std::index_sequence<I...>, const data_type& lhs, const data_type& rhs) const;
    +
    422
    +
    423 const xfunction_type* p_f;
    +
    424 data_type m_it;
    +
    425 };
    +
    +
    426
    +
    427 template <class F, class... CT>
    + +
    429
    +
    430 template <class F, class... CT>
    +
    431 bool operator<(const xfunction_iterator<F, CT...>& it1, const xfunction_iterator<F, CT...>& it2);
    +
    432
    +
    433 /*********************
    +
    434 * xfunction_stepper *
    +
    435 *********************/
    +
    436
    +
    437 template <class F, class... CT>
    +
    + +
    439 {
    +
    440 public:
    +
    441
    +
    442 using self_type = xfunction_stepper<F, CT...>;
    +
    443 using functor_type = typename std::remove_reference<F>::type;
    +
    444 using xfunction_type = xfunction<F, CT...>;
    +
    445
    +
    446 using value_type = typename xfunction_type::value_type;
    +
    447 using reference = typename xfunction_type::reference;
    +
    448 using pointer = typename xfunction_type::const_pointer;
    +
    449 using size_type = typename xfunction_type::size_type;
    +
    450 using difference_type = typename xfunction_type::difference_type;
    +
    451
    +
    452 using shape_type = typename xfunction_type::shape_type;
    +
    453
    +
    454 template <class requested_type>
    +
    455 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    456
    +
    457 template <class... St>
    +
    458 xfunction_stepper(const xfunction_type* func, St&&... st) noexcept;
    +
    459
    +
    460 void step(size_type dim);
    +
    461 void step_back(size_type dim);
    +
    462 void step(size_type dim, size_type n);
    +
    463 void step_back(size_type dim, size_type n);
    +
    464 void reset(size_type dim);
    +
    465 void reset_back(size_type dim);
    +
    466
    +
    467 void to_begin();
    +
    468 void to_end(layout_type l);
    +
    469
    +
    470 reference operator*() const;
    +
    471
    +
    472 template <class T>
    +
    473 simd_return_type<T> step_simd();
    +
    474
    +
    475 void step_leading();
    +
    476
    +
    477 private:
    +
    478
    +
    479 template <std::size_t... I>
    +
    480 reference deref_impl(std::index_sequence<I...>) const;
    +
    481
    +
    482 template <class T, std::size_t... I>
    +
    483 simd_return_type<T> step_simd_impl(std::index_sequence<I...>);
    +
    484
    +
    485 const xfunction_type* p_f;
    +
    486 std::tuple<typename std::decay_t<CT>::const_stepper...> m_st;
    +
    487 };
    +
    +
    488
    +
    489 /*********************************
    +
    490 * xfunction implementation *
    +
    491 *********************************/
    +
    492
    +
    503 template <class F, class... CT>
    +
    504 template <class Func, class... CTA, class U>
    +
    +
    505 inline xfunction<F, CT...>::xfunction(Func&& f, CTA&&... e) noexcept
    +
    506 : m_e(std::forward<CTA>(e)...)
    +
    507 , m_f(std::forward<Func>(f))
    +
    508 {
    +
    509 }
    +
    +
    510
    +
    516 template <class F, class... CT>
    +
    517 template <class FA, class... CTA>
    +
    + +
    519 : m_e(xf.arguments())
    +
    520 , m_f(xf.functor())
    +
    521 {
    +
    522 }
    +
    +
    523
    +
    525
    +
    533 template <class F, class... CT>
    +
    +
    534 inline auto xfunction<F, CT...>::dimension() const noexcept -> size_type
    +
    535 {
    +
    536 size_type dimension = m_cache.is_initialized ? m_cache.shape.size() : compute_dimension();
    +
    537 return dimension;
    +
    538 }
    +
    +
    539
    +
    540 template <class F, class... CT>
    + +
    542 {
    +
    543 static_assert(!detail::is_fixed<shape_type>::value, "Calling compute_cached_shape on fixed!");
    +
    544
    +
    545 m_cache.shape = uninitialized_shape<xindex_type_t<inner_shape_type>>(compute_dimension());
    +
    546 m_cache.is_trivial = broadcast_shape(m_cache.shape, false);
    +
    547 m_cache.is_initialized = true;
    +
    548 }
    +
    549
    +
    553 template <class F, class... CT>
    +
    +
    554 inline auto xfunction<F, CT...>::shape() const -> const inner_shape_type&
    +
    555 {
    +
    556 xtl::mpl::static_if<!detail::is_fixed<inner_shape_type>::value>(
    +
    557 [&](auto self)
    +
    558 {
    +
    559 if (!m_cache.is_initialized)
    +
    560 {
    +
    561 self(this)->compute_cached_shape();
    +
    562 }
    +
    563 },
    +
    564 [](auto /*self*/) {}
    +
    565 );
    +
    566 return m_cache.shape;
    +
    567 }
    +
    +
    568
    +
    572 template <class F, class... CT>
    +
    + +
    574 {
    +
    575 return layout_impl(std::make_index_sequence<sizeof...(CT)>());
    +
    576 }
    +
    +
    577
    +
    578 template <class F, class... CT>
    +
    579 inline bool xfunction<F, CT...>::is_contiguous() const noexcept
    +
    580 {
    +
    581 return layout() != layout_type::dynamic
    +
    582 && accumulate(
    +
    583 [](bool r, const auto& exp)
    +
    584 {
    +
    585 return r && exp.is_contiguous();
    +
    586 },
    +
    587 true,
    +
    588 m_e
    +
    589 );
    +
    590 }
    +
    591
    +
    593
    +
    604 template <class F, class... CT>
    +
    605 template <class... Args>
    +
    +
    606 inline auto xfunction<F, CT...>::operator()(Args... args) const -> const_reference
    +
    607 {
    +
    608 // The static cast prevents the compiler from instantiating the template methods with signed integers,
    +
    609 // leading to warning about signed/unsigned conversions in the deeper layers of the access methods
    +
    610 return access_impl(std::make_index_sequence<sizeof...(CT)>(), static_cast<size_type>(args)...);
    +
    611 }
    +
    +
    612
    +
    622 template <class F, class... CT>
    +
    +
    623 inline auto xfunction<F, CT...>::flat(size_type index) const -> const_reference
    +
    624 {
    +
    625 return data_element_impl(std::make_index_sequence<sizeof...(CT)>(), index);
    +
    626 }
    +
    +
    627
    +
    647 template <class F, class... CT>
    +
    648 template <class... Args>
    +
    +
    649 inline auto xfunction<F, CT...>::unchecked(Args... args) const -> const_reference
    +
    650 {
    +
    651 // The static cast prevents the compiler from instantiating the template methods with signed integers,
    +
    652 // leading to warning about signed/unsigned conversions in the deeper layers of the access methods
    +
    653 return unchecked_impl(std::make_index_sequence<sizeof...(CT)>(), static_cast<size_type>(args)...);
    +
    654 }
    +
    +
    655
    +
    663 template <class F, class... CT>
    +
    664 template <class It>
    +
    +
    665 inline auto xfunction<F, CT...>::element(It first, It last) const -> const_reference
    +
    666 {
    +
    667 return element_access_impl(std::make_index_sequence<sizeof...(CT)>(), first, last);
    +
    668 }
    +
    +
    669
    +
    671
    +
    682 template <class F, class... CT>
    +
    683 template <class S>
    +
    +
    684 inline bool xfunction<F, CT...>::broadcast_shape(S& shape, bool reuse_cache) const
    +
    685 {
    +
    686 if (m_cache.is_initialized && reuse_cache)
    +
    687 {
    +
    688 std::copy(m_cache.shape.cbegin(), m_cache.shape.cend(), shape.begin());
    +
    689 return m_cache.is_trivial;
    +
    690 }
    +
    691 else
    +
    692 {
    +
    693 // e.broadcast_shape must be evaluated even if b is false
    +
    694 auto func = [&shape](bool b, auto&& e)
    +
    695 {
    +
    696 return e.broadcast_shape(shape) && b;
    +
    697 };
    +
    698 return accumulate(func, true, m_e);
    +
    699 }
    +
    700 }
    +
    +
    701
    +
    707 template <class F, class... CT>
    +
    708 template <class S>
    +
    +
    709 inline bool xfunction<F, CT...>::has_linear_assign(const S& strides) const noexcept
    +
    710 {
    +
    711 auto func = [&strides](bool b, auto&& e)
    +
    712 {
    +
    713 return b && e.has_linear_assign(strides);
    +
    714 };
    +
    715 return accumulate(func, true, m_e);
    +
    716 }
    +
    +
    717
    +
    719
    +
    720 template <class F, class... CT>
    +
    721 inline auto xfunction<F, CT...>::linear_begin() const noexcept -> const_linear_iterator
    +
    722 {
    +
    723 return linear_cbegin();
    +
    724 }
    +
    725
    +
    726 template <class F, class... CT>
    +
    727 inline auto xfunction<F, CT...>::linear_end() const noexcept -> const_linear_iterator
    +
    728 {
    +
    729 return linear_cend();
    +
    730 }
    +
    731
    +
    732 template <class F, class... CT>
    +
    733 inline auto xfunction<F, CT...>::linear_cbegin() const noexcept -> const_linear_iterator
    +
    734 {
    +
    735 auto f = [](const auto& e) noexcept
    +
    736 {
    +
    737 return xt::linear_begin(e);
    +
    738 };
    +
    739 return build_iterator(f, std::make_index_sequence<sizeof...(CT)>());
    +
    740 }
    +
    741
    +
    742 template <class F, class... CT>
    +
    743 inline auto xfunction<F, CT...>::linear_cend() const noexcept -> const_linear_iterator
    +
    744 {
    +
    745 auto f = [](const auto& e) noexcept
    +
    746 {
    +
    747 return xt::linear_end(e);
    +
    748 };
    +
    749 return build_iterator(f, std::make_index_sequence<sizeof...(CT)>());
    +
    750 }
    +
    751
    +
    752 template <class F, class... CT>
    +
    753 inline auto xfunction<F, CT...>::linear_rbegin() const noexcept -> const_reverse_linear_iterator
    +
    754 {
    +
    755 return linear_crbegin();
    +
    756 }
    +
    757
    +
    758 template <class F, class... CT>
    +
    759 inline auto xfunction<F, CT...>::linear_rend() const noexcept -> const_reverse_linear_iterator
    +
    760 {
    +
    761 return linear_crend();
    +
    762 }
    +
    763
    +
    764 template <class F, class... CT>
    +
    765 inline auto xfunction<F, CT...>::linear_crbegin() const noexcept -> const_reverse_linear_iterator
    +
    766 {
    +
    767 return const_reverse_linear_iterator(linear_cend());
    +
    768 }
    +
    769
    +
    770 template <class F, class... CT>
    +
    771 inline auto xfunction<F, CT...>::linear_crend() const noexcept -> const_reverse_linear_iterator
    +
    772 {
    +
    773 return const_reverse_linear_iterator(linear_cbegin());
    +
    774 }
    +
    775
    +
    776 template <class F, class... CT>
    +
    777 template <class S>
    +
    778 inline auto xfunction<F, CT...>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    779 {
    +
    780 auto f = [&shape](const auto& e) noexcept
    +
    781 {
    +
    782 return e.stepper_begin(shape);
    +
    783 };
    +
    784 return build_stepper(f, std::make_index_sequence<sizeof...(CT)>());
    +
    785 }
    +
    786
    +
    787 template <class F, class... CT>
    +
    788 template <class S>
    +
    789 inline auto xfunction<F, CT...>::stepper_end(const S& shape, layout_type l) const noexcept -> const_stepper
    +
    790 {
    +
    791 auto f = [&shape, l](const auto& e) noexcept
    +
    792 {
    +
    793 return e.stepper_end(shape, l);
    +
    794 };
    +
    795 return build_stepper(f, std::make_index_sequence<sizeof...(CT)>());
    +
    796 }
    +
    797
    +
    798 template <class F, class... CT>
    +
    799 inline auto xfunction<F, CT...>::data_element(size_type i) const -> const_reference
    +
    800 {
    +
    801 return data_element_impl(std::make_index_sequence<sizeof...(CT)>(), i);
    +
    802 }
    +
    803
    +
    804 template <class F, class... CT>
    +
    805 template <class UT, class>
    +
    806 inline xfunction<F, CT...>::operator value_type() const
    +
    807 {
    +
    808 return operator()();
    +
    809 }
    +
    810
    +
    811 template <class F, class... CT>
    +
    812 template <class align, class requested_type, std::size_t N>
    +
    813 inline auto xfunction<F, CT...>::load_simd(size_type i) const -> simd_return_type<requested_type>
    +
    814 {
    +
    815 return load_simd_impl<align, requested_type, N>(std::make_index_sequence<sizeof...(CT)>(), i);
    +
    816 }
    +
    817
    +
    818 template <class F, class... CT>
    +
    819 inline auto xfunction<F, CT...>::arguments() const noexcept -> const tuple_type&
    +
    820 {
    +
    821 return m_e;
    +
    822 }
    +
    823
    +
    824 template <class F, class... CT>
    +
    825 inline auto xfunction<F, CT...>::functor() const noexcept -> const functor_type&
    +
    826 {
    +
    827 return m_f;
    +
    828 }
    +
    829
    +
    830 template <class F, class... CT>
    +
    831 template <std::size_t... I>
    +
    832 inline layout_type xfunction<F, CT...>::layout_impl(std::index_sequence<I...>) const noexcept
    +
    833 {
    +
    834 return compute_layout(std::get<I>(m_e).layout()...);
    +
    835 }
    +
    836
    +
    837 template <class F, class... CT>
    +
    838 template <std::size_t... I, class... Args>
    +
    839 inline auto xfunction<F, CT...>::access_impl(std::index_sequence<I...>, Args... args) const
    +
    840 -> const_reference
    +
    841 {
    +
    842 XTENSOR_TRY(check_index(shape(), args...));
    +
    843 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    844 return m_f(std::get<I>(m_e)(args...)...);
    +
    845 }
    +
    846
    +
    847 template <class F, class... CT>
    +
    848 template <std::size_t... I, class... Args>
    +
    849 inline auto xfunction<F, CT...>::unchecked_impl(std::index_sequence<I...>, Args... args) const
    +
    850 -> const_reference
    +
    851 {
    +
    852 return m_f(std::get<I>(m_e).unchecked(args...)...);
    +
    853 }
    +
    854
    +
    855 template <class F, class... CT>
    +
    856 template <std::size_t... I, class It>
    +
    857 inline auto xfunction<F, CT...>::element_access_impl(std::index_sequence<I...>, It first, It last) const
    +
    858 -> const_reference
    +
    859 {
    +
    860 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    861 return m_f((std::get<I>(m_e).element(first, last))...);
    +
    862 }
    +
    863
    +
    864 template <class F, class... CT>
    +
    865 template <std::size_t... I>
    +
    866 inline auto xfunction<F, CT...>::data_element_impl(std::index_sequence<I...>, size_type i) const
    +
    867 -> const_reference
    +
    868 {
    +
    869 return m_f((std::get<I>(m_e).data_element(i))...);
    +
    870 }
    +
    871
    +
    872 template <class F, class... CT>
    +
    873 template <class align, class requested_type, std::size_t N, std::size_t... I>
    +
    874 inline auto xfunction<F, CT...>::load_simd_impl(std::index_sequence<I...>, size_type i) const
    +
    875 {
    +
    876 return m_f.simd_apply((std::get<I>(m_e).template load_simd<align, requested_type>(i))...);
    +
    877 }
    +
    878
    +
    879 template <class F, class... CT>
    +
    880 template <class Func, std::size_t... I>
    +
    881 inline auto xfunction<F, CT...>::build_stepper(Func&& f, std::index_sequence<I...>) const noexcept
    +
    882 -> const_stepper
    +
    883 {
    +
    884 return const_stepper(this, f(std::get<I>(m_e))...);
    +
    885 }
    +
    886
    +
    887 template <class F, class... CT>
    +
    888 template <class Func, std::size_t... I>
    +
    889 inline auto xfunction<F, CT...>::build_iterator(Func&& f, std::index_sequence<I...>) const noexcept
    +
    890 {
    +
    891 return const_linear_iterator(this, f(std::get<I>(m_e))...);
    +
    892 }
    +
    893
    +
    894 template <class F, class... CT>
    +
    895 inline auto xfunction<F, CT...>::compute_dimension() const noexcept -> size_type
    +
    896 {
    +
    897 auto func = [](size_type d, auto&& e) noexcept
    +
    898 {
    +
    899 return (std::max)(d, e.dimension());
    +
    900 };
    +
    901 return accumulate(func, size_type(0), m_e);
    +
    902 }
    +
    903
    +
    904 /*************************************
    +
    905 * xfunction_iterator implementation *
    +
    906 *************************************/
    +
    907
    +
    908 template <class F, class... CT>
    +
    909 template <class... It>
    +
    910 inline xfunction_iterator<F, CT...>::xfunction_iterator(const xfunction_type* func, It&&... it) noexcept
    +
    911 : p_f(func)
    +
    912 , m_it(std::forward<It>(it)...)
    +
    913 {
    +
    914 }
    +
    915
    +
    916 template <class F, class... CT>
    +
    917 inline auto xfunction_iterator<F, CT...>::operator++() -> self_type&
    +
    918 {
    +
    919 auto f = [](auto& it)
    +
    920 {
    +
    921 ++it;
    +
    922 };
    +
    923 for_each(f, m_it);
    +
    924 return *this;
    +
    925 }
    +
    926
    +
    927 template <class F, class... CT>
    +
    928 inline auto xfunction_iterator<F, CT...>::operator--() -> self_type&
    +
    929 {
    +
    930 auto f = [](auto& it)
    +
    931 {
    +
    932 return --it;
    +
    933 };
    +
    934 for_each(f, m_it);
    +
    935 return *this;
    +
    936 }
    +
    937
    +
    938 template <class F, class... CT>
    +
    939 inline auto xfunction_iterator<F, CT...>::operator+=(difference_type n) -> self_type&
    +
    940 {
    +
    941 auto f = [n](auto& it)
    +
    942 {
    +
    943 it += n;
    +
    944 };
    +
    945 for_each(f, m_it);
    +
    946 return *this;
    +
    947 }
    +
    948
    +
    949 template <class F, class... CT>
    +
    950 inline auto xfunction_iterator<F, CT...>::operator-=(difference_type n) -> self_type&
    +
    951 {
    +
    952 auto f = [n](auto& it)
    +
    953 {
    +
    954 it -= n;
    +
    955 };
    +
    956 for_each(f, m_it);
    +
    957 return *this;
    +
    958 }
    +
    959
    +
    960 template <class F, class... CT>
    +
    961 inline auto xfunction_iterator<F, CT...>::operator-(const self_type& rhs) const -> difference_type
    +
    962 {
    +
    963 return tuple_max_diff(std::make_index_sequence<sizeof...(CT)>(), m_it, rhs.m_it);
    +
    964 }
    +
    965
    +
    966 template <class F, class... CT>
    +
    967 inline auto xfunction_iterator<F, CT...>::operator*() const -> reference
    +
    968 {
    +
    969 return deref_impl(std::make_index_sequence<sizeof...(CT)>());
    +
    970 }
    +
    971
    +
    972 template <class F, class... CT>
    +
    973 inline bool xfunction_iterator<F, CT...>::equal(const self_type& rhs) const
    +
    974 {
    +
    975 // Optimization: no need to compare each subiterator since they all
    +
    976 // are incremented decremented together.
    +
    977 constexpr std::size_t temp = xtl::mpl::find_if<is_not_xdummy_iterator, data_type>::value;
    +
    978 constexpr std::size_t index = (temp == std::tuple_size<data_type>::value) ? 0 : temp;
    +
    979 return std::get<index>(m_it) == std::get<index>(rhs.m_it);
    +
    980 }
    +
    981
    +
    982 template <class F, class... CT>
    +
    983 inline bool xfunction_iterator<F, CT...>::less_than(const self_type& rhs) const
    +
    984 {
    +
    985 // Optimization: no need to compare each subiterator since they all
    +
    986 // are incremented decremented together.
    +
    987 constexpr std::size_t temp = xtl::mpl::find_if<is_not_xdummy_iterator, data_type>::value;
    +
    988 constexpr std::size_t index = (temp == std::tuple_size<data_type>::value) ? 0 : temp;
    +
    989 return std::get<index>(m_it) < std::get<index>(rhs.m_it);
    +
    990 }
    +
    991
    +
    992 template <class F, class... CT>
    +
    993 template <std::size_t... I>
    +
    994 inline auto xfunction_iterator<F, CT...>::deref_impl(std::index_sequence<I...>) const -> reference
    +
    995 {
    +
    996 return (p_f->m_f)(*std::get<I>(m_it)...);
    +
    997 }
    +
    998
    +
    999 template <class F, class... CT>
    +
    1000 template <std::size_t... I>
    +
    1001 inline auto xfunction_iterator<F, CT...>::tuple_max_diff(
    +
    1002 std::index_sequence<I...>,
    +
    1003 const data_type& lhs,
    +
    1004 const data_type& rhs
    +
    1005 ) const -> difference_type
    +
    1006 {
    +
    1007 auto diff = std::make_tuple((std::get<I>(lhs) - std::get<I>(rhs))...);
    +
    1008 auto func = [](difference_type n, auto&& v)
    +
    1009 {
    +
    1010 return (std::max)(n, v);
    +
    1011 };
    +
    1012 return accumulate(func, difference_type(0), diff);
    +
    1013 }
    +
    1014
    +
    1015 template <class F, class... CT>
    +
    1016 inline bool operator==(const xfunction_iterator<F, CT...>& it1, const xfunction_iterator<F, CT...>& it2)
    +
    1017 {
    +
    1018 return it1.equal(it2);
    +
    1019 }
    +
    1020
    +
    1021 template <class F, class... CT>
    +
    1022 inline bool operator<(const xfunction_iterator<F, CT...>& it1, const xfunction_iterator<F, CT...>& it2)
    +
    1023 {
    +
    1024 return it1.less_than(it2);
    +
    1025 }
    +
    1026
    +
    1027 /************************************
    +
    1028 * xfunction_stepper implementation *
    +
    1029 ************************************/
    +
    1030
    +
    1031 template <class F, class... CT>
    +
    1032 template <class... St>
    +
    1033 inline xfunction_stepper<F, CT...>::xfunction_stepper(const xfunction_type* func, St&&... st) noexcept
    +
    1034 : p_f(func)
    +
    1035 , m_st(std::forward<St>(st)...)
    +
    1036 {
    +
    1037 }
    +
    1038
    +
    1039 template <class F, class... CT>
    +
    1040 inline void xfunction_stepper<F, CT...>::step(size_type dim)
    +
    1041 {
    +
    1042 auto f = [dim](auto& st)
    +
    1043 {
    +
    1044 st.step(dim);
    +
    1045 };
    +
    1046 for_each(f, m_st);
    +
    1047 }
    +
    1048
    +
    1049 template <class F, class... CT>
    +
    1050 inline void xfunction_stepper<F, CT...>::step_back(size_type dim)
    +
    1051 {
    +
    1052 auto f = [dim](auto& st)
    +
    1053 {
    +
    1054 st.step_back(dim);
    +
    1055 };
    +
    1056 for_each(f, m_st);
    +
    1057 }
    +
    1058
    +
    1059 template <class F, class... CT>
    +
    1060 inline void xfunction_stepper<F, CT...>::step(size_type dim, size_type n)
    +
    1061 {
    +
    1062 auto f = [dim, n](auto& st)
    +
    1063 {
    +
    1064 st.step(dim, n);
    +
    1065 };
    +
    1066 for_each(f, m_st);
    +
    1067 }
    +
    1068
    +
    1069 template <class F, class... CT>
    +
    1070 inline void xfunction_stepper<F, CT...>::step_back(size_type dim, size_type n)
    +
    1071 {
    +
    1072 auto f = [dim, n](auto& st)
    +
    1073 {
    +
    1074 st.step_back(dim, n);
    +
    1075 };
    +
    1076 for_each(f, m_st);
    +
    1077 }
    +
    1078
    +
    1079 template <class F, class... CT>
    +
    1080 inline void xfunction_stepper<F, CT...>::reset(size_type dim)
    +
    1081 {
    +
    1082 auto f = [dim](auto& st)
    +
    1083 {
    +
    1084 st.reset(dim);
    +
    1085 };
    +
    1086 for_each(f, m_st);
    +
    1087 }
    +
    1088
    +
    1089 template <class F, class... CT>
    +
    1090 inline void xfunction_stepper<F, CT...>::reset_back(size_type dim)
    +
    1091 {
    +
    1092 auto f = [dim](auto& st)
    +
    1093 {
    +
    1094 st.reset_back(dim);
    +
    1095 };
    +
    1096 for_each(f, m_st);
    +
    1097 }
    +
    1098
    +
    1099 template <class F, class... CT>
    +
    1100 inline void xfunction_stepper<F, CT...>::to_begin()
    +
    1101 {
    +
    1102 auto f = [](auto& st)
    +
    1103 {
    +
    1104 st.to_begin();
    +
    1105 };
    +
    1106 for_each(f, m_st);
    +
    1107 }
    +
    1108
    +
    1109 template <class F, class... CT>
    +
    1110 inline void xfunction_stepper<F, CT...>::to_end(layout_type l)
    +
    1111 {
    +
    1112 auto f = [l](auto& st)
    +
    1113 {
    +
    1114 st.to_end(l);
    +
    1115 };
    +
    1116 for_each(f, m_st);
    +
    1117 }
    +
    1118
    +
    1119 template <class F, class... CT>
    +
    1120 inline auto xfunction_stepper<F, CT...>::operator*() const -> reference
    +
    1121 {
    +
    1122 return deref_impl(std::make_index_sequence<sizeof...(CT)>());
    +
    1123 }
    +
    1124
    +
    1125 template <class F, class... CT>
    +
    1126 template <std::size_t... I>
    +
    1127 inline auto xfunction_stepper<F, CT...>::deref_impl(std::index_sequence<I...>) const -> reference
    +
    1128 {
    +
    1129 return (p_f->m_f)(*std::get<I>(m_st)...);
    +
    1130 }
    +
    1131
    +
    1132 template <class F, class... CT>
    +
    1133 template <class T, std::size_t... I>
    +
    1134 inline auto xfunction_stepper<F, CT...>::step_simd_impl(std::index_sequence<I...>) -> simd_return_type<T>
    +
    1135 {
    +
    1136 return (p_f->m_f.simd_apply)(std::get<I>(m_st).template step_simd<T>()...);
    +
    1137 }
    +
    1138
    +
    1139 template <class F, class... CT>
    +
    1140 template <class T>
    +
    1141 inline auto xfunction_stepper<F, CT...>::step_simd() -> simd_return_type<T>
    +
    1142 {
    +
    1143 return step_simd_impl<T>(std::make_index_sequence<sizeof...(CT)>());
    +
    1144 }
    +
    1145
    +
    1146 template <class F, class... CT>
    +
    1147 inline void xfunction_stepper<F, CT...>::step_leading()
    +
    1148 {
    +
    1149 auto step_leading_lambda = [](auto&& st)
    +
    1150 {
    +
    1151 st.step_leading();
    +
    1152 };
    +
    1153 for_each(step_leading_lambda, m_st);
    +
    1154 }
    +
    1155}
    +
    1156
    +
    1157#endif
    +
    Base class for implementation of common expression constant access methods.
    +
    const_reference front() const
    Returns a constant reference to first the element of the expression.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    const_reference back() const
    Returns a constant reference to last the element of the expression.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    + + +
    Multidimensional function operating on xtensor expressions.
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the function to the specified parameter.
    +
    layout_type layout() const noexcept
    Returns the layout_type of the xfunction.
    +
    const inner_shape_type & shape() const
    Returns the shape of the xfunction.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the function.
    +
    xfunction(Func &&f, CTA &&... e) noexcept
    Constructs an xfunction applying the specified function to the given arguments.
    +
    bool has_linear_assign(const S &strides) const noexcept
    Checks whether the xfunction can be linearly assigned to an expression with the specified strides.
    +
    const_reference flat(size_type i) const
    Returns a constant reference to the element at the specified position of the underlying contiguous st...
    + + +
    auto exp(E &&e) noexcept -> detail::xfunction_type_t< math::exp_fun, E >
    Natural exponential function.
    Definition xmath.hpp:899
    +
    auto diff(const xexpression< T > &a, std::size_t n=1, std::ptrdiff_t axis=-1)
    Calculate the n-th discrete difference along the given axis.
    Definition xmath.hpp:2910
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    constexpr layout_type compute_layout(Args... args) noexcept
    Implementation of the following logical table:
    Definition xlayout.hpp:88
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    layout_type
    Definition xlayout.hpp:24
    + +
    auto accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())
    Accumulate and flatten array NOTE This function is not lazy!
    + + + + + + + + + + +
    +
    + + + + diff --git a/xfunctor__view_8hpp_source.html b/xfunctor__view_8hpp_source.html new file mode 100644 index 000000000..d1b3fb4d7 --- /dev/null +++ b/xfunctor__view_8hpp_source.html @@ -0,0 +1,1633 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xfunctor_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xfunctor_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_FUNCTOR_VIEW_HPP
    +
    11#define XTENSOR_FUNCTOR_VIEW_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cstddef>
    +
    16#include <type_traits>
    +
    17#include <utility>
    +
    18
    +
    19#include <xtl/xproxy_wrapper.hpp>
    +
    20
    +
    21#include "xaccessible.hpp"
    +
    22#include "xarray.hpp"
    +
    23#include "xexpression.hpp"
    +
    24#include "xiterator.hpp"
    +
    25#include "xsemantic.hpp"
    +
    26#include "xtensor.hpp"
    +
    27#include "xutils.hpp"
    +
    28
    +
    29namespace xt
    +
    30{
    +
    38 /************************************************
    +
    39 * xfunctor_view and xfunctor_adaptor extension *
    +
    40 ************************************************/
    +
    41
    +
    42 namespace extension
    +
    43 {
    +
    44 template <class Tag, class F, class CT>
    + +
    46
    +
    47 template <class F, class CT>
    +
    + +
    49 {
    + +
    51 };
    +
    +
    52
    +
    53 template <class F, class CT>
    +
    +
    54 struct xfunctor_view_base : xfunctor_view_base_impl<xexpression_tag_t<CT>, F, CT>
    +
    55 {
    +
    56 };
    +
    +
    57
    +
    58 template <class F, class CT>
    +
    59 using xfunctor_view_base_t = typename xfunctor_view_base<F, CT>::type;
    +
    60 }
    +
    61
    +
    62 /*************************************
    +
    63 * xfunctor_applier_base declaration *
    +
    64 *************************************/
    +
    65
    +
    66 template <class F, class IT>
    + +
    68
    +
    69 template <class F, class ST>
    +
    70 class xfunctor_stepper;
    +
    71
    +
    72 template <class D>
    +
    + +
    74 {
    +
    75 public:
    +
    76
    + + +
    79 using xexpression_type = typename inner_types::xexpression_type;
    +
    80 using undecay_expression = typename inner_types::undecay_expression;
    +
    81 using functor_type = typename inner_types::functor_type;
    + +
    83
    +
    84 using extension_base = extension::xfunctor_view_base_t<functor_type, undecay_expression>;
    +
    85 using expression_tag = typename extension_base::expression_tag;
    +
    86
    +
    87 using value_type = typename functor_type::value_type;
    +
    88 using reference = typename inner_types::reference;
    +
    89 using const_reference = typename inner_types::const_reference;
    +
    90 using pointer = typename functor_type::pointer;
    +
    91 using const_pointer = typename functor_type::const_pointer;
    +
    92 using size_type = typename inner_types::size_type;
    +
    93 using difference_type = typename xexpression_type::difference_type;
    +
    94
    +
    95 using shape_type = typename xexpression_type::shape_type;
    +
    96 using strides_type = xtl::mpl::eval_if_t<
    + +
    98 detail::expr_strides_type<xexpression_type>,
    + +
    100 using backstrides_type = xtl::mpl::eval_if_t<
    + +
    102 detail::expr_backstrides_type<xexpression_type>,
    + +
    104
    +
    105 using inner_shape_type = typename xexpression_type::inner_shape_type;
    +
    106 using inner_strides_type = xtl::mpl::eval_if_t<
    + +
    108 detail::expr_inner_strides_type<xexpression_type>,
    + +
    110 using inner_backstrides_type = xtl::mpl::eval_if_t<
    + +
    112 detail::expr_inner_backstrides_type<xexpression_type>,
    + +
    114
    +
    115 using bool_load_type = xt::bool_load_type<value_type>;
    +
    116
    +
    117 static constexpr layout_type static_layout = xexpression_type::static_layout;
    +
    118 static constexpr bool contiguous_layout = xexpression_type::contiguous_layout;
    +
    119
    + + +
    122
    +
    123 template <layout_type L>
    + +
    125 template <layout_type L>
    + +
    127 const functor_type,
    +
    128 typename xexpression_type::template const_layout_iterator<L>>;
    +
    129
    +
    130 template <layout_type L>
    + +
    132 functor_type,
    +
    133 typename xexpression_type::template reverse_layout_iterator<L>>;
    +
    134 template <layout_type L>
    + +
    136 const functor_type,
    +
    137 typename xexpression_type::template const_reverse_layout_iterator<L>>;
    +
    138
    +
    139 template <class S, layout_type L>
    + +
    141 template <class S, layout_type L>
    + +
    143 functor_type,
    + +
    145
    +
    146 template <class S, layout_type L>
    + +
    148 functor_type,
    +
    149 typename xexpression_type::template reverse_broadcast_iterator<S, L>>;
    +
    150 template <class S, layout_type L>
    + +
    152 functor_type,
    +
    153 typename xexpression_type::template const_reverse_broadcast_iterator<S, L>>;
    +
    154
    + + + + +
    159 const functor_type,
    +
    160 typename xexpression_type::const_reverse_linear_iterator>;
    +
    161
    + + + + +
    166
    +
    +
    167 explicit xfunctor_applier_base(undecay_expression) noexcept;
    +
    168
    +
    169 template <class Func, class E>
    +
    +
    170 xfunctor_applier_base(Func&&, E&&) noexcept;
    +
    171
    +
    +
    172 size_type size() const noexcept;
    +
    +
    173 const inner_shape_type& shape() const noexcept;
    +
    +
    174 const inner_strides_type& strides() const noexcept;
    +
    +
    175 const inner_backstrides_type& backstrides() const noexcept;
    + +
    177 using accessible_base::shape;
    +
    178
    +
    +
    179 layout_type layout() const noexcept;
    +
    180 bool is_contiguous() const noexcept;
    +
    181
    +
    182 template <class... Args>
    +
    183 reference operator()(Args... args);
    +
    184
    +
    185 template <class... Args>
    +
    186 reference unchecked(Args... args);
    +
    187
    +
    188 template <class IT>
    +
    189 reference element(IT first, IT last);
    +
    190
    +
    191 template <class... Args>
    +
    192 const_reference operator()(Args... args) const;
    +
    193
    +
    194 template <class... Args>
    +
    195 const_reference unchecked(Args... args) const;
    +
    196
    +
    197 template <class IT>
    +
    198 const_reference element(IT first, IT last) const;
    +
    199
    +
    200 using accessible_base::at;
    +
    201 using accessible_base::operator[];
    +
    202 using accessible_base::back;
    +
    203 using accessible_base::front;
    +
    204 using accessible_base::periodic;
    +
    205
    + +
    207
    +
    +
    208 xexpression_type& expression() noexcept;
    +
    +
    209 const xexpression_type& expression() const noexcept;
    +
    210
    +
    211 template <class S>
    +
    +
    212 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    213
    +
    214 template <class S>
    +
    +
    215 bool has_linear_assign(const S& strides) const;
    +
    216
    +
    217 template <class FCT = functor_type>
    +
    218 auto data_element(size_type i)
    +
    219 -> decltype(std::declval<FCT>()(std::declval<undecay_expression>().data_element(i)))
    +
    220 {
    +
    221 return m_functor(m_e.data_element(i));
    +
    222 }
    +
    223
    +
    224 template <class FCT = functor_type>
    +
    225 auto data_element(size_type i) const
    +
    226 -> decltype(std::declval<FCT>()(std::declval<const undecay_expression>().data_element(i)))
    +
    227 {
    +
    228 return m_functor(m_e.data_element(i));
    +
    229 }
    +
    230
    +
    231 template <class FCT = functor_type>
    +
    232 auto flat(size_type i) -> decltype(std::declval<FCT>()(std::declval<undecay_expression>().flat(i)))
    +
    233 {
    +
    234 return m_functor(m_e.flat(i));
    +
    235 }
    +
    236
    +
    237 template <class FCT = functor_type>
    +
    238 auto flat(size_type i) const
    +
    239 -> decltype(std::declval<FCT>()(std::declval<const undecay_expression>().flat(i)))
    +
    240 {
    +
    241 return m_functor(m_e.flat(i));
    +
    242 }
    +
    243
    +
    244 // The following functions are defined inline because otherwise signatures
    +
    245 // don't match on GCC.
    +
    246 template <
    +
    247 class align,
    +
    248 class requested_type = typename xexpression_type::value_type,
    + +
    250 class FCT = functor_type>
    +
    251 auto load_simd(size_type i) const
    +
    252 -> decltype(std::declval<FCT>().template proxy_simd_load<align, requested_type, N>(
    +
    253 std::declval<undecay_expression>(),
    +
    254 i
    +
    255 ))
    +
    256 {
    +
    257 return m_functor.template proxy_simd_load<align, requested_type, N>(m_e, i);
    +
    258 }
    +
    259
    +
    260 template <class align, class simd, class FCT = functor_type>
    +
    261 auto store_simd(size_type i, const simd& e)
    +
    262 -> decltype(std::declval<FCT>()
    +
    263 .template proxy_simd_store<align>(std::declval<undecay_expression>(), i, e))
    +
    264 {
    +
    265 return m_functor.template proxy_simd_store<align>(m_e, i, e);
    +
    266 }
    +
    267
    +
    268 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    269 auto begin() noexcept;
    +
    270 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    271 auto end() noexcept;
    +
    272
    +
    273 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    274 auto begin() const noexcept;
    +
    275 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    276 auto end() const noexcept;
    +
    277 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    278 auto cbegin() const noexcept;
    +
    279 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    280 auto cend() const noexcept;
    +
    281
    +
    282 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    283 auto rbegin() noexcept;
    +
    284 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    285 auto rend() noexcept;
    +
    286
    +
    287 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    288 auto rbegin() const noexcept;
    +
    289 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    290 auto rend() const noexcept;
    +
    291 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    292 auto crbegin() const noexcept;
    +
    293 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    +
    294 auto crend() const noexcept;
    +
    295
    +
    296 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    297 broadcast_iterator<S, L> begin(const S& shape) noexcept;
    +
    298 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    299 broadcast_iterator<S, L> end(const S& shape) noexcept;
    +
    300
    +
    301 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    302 const_broadcast_iterator<S, L> begin(const S& shape) const noexcept;
    +
    303 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    304 const_broadcast_iterator<S, L> end(const S& shape) const noexcept;
    +
    305 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    306 const_broadcast_iterator<S, L> cbegin(const S& shape) const noexcept;
    +
    307 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    308 const_broadcast_iterator<S, L> cend(const S& shape) const noexcept;
    +
    309
    +
    310 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    311 reverse_broadcast_iterator<S, L> rbegin(const S& shape) noexcept;
    +
    312 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    313 reverse_broadcast_iterator<S, L> rend(const S& shape) noexcept;
    +
    314
    +
    315 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    316 const_reverse_broadcast_iterator<S, L> rbegin(const S& shape) const noexcept;
    +
    317 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    318 const_reverse_broadcast_iterator<S, L> rend(const S& shape) const noexcept;
    +
    319 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    320 const_reverse_broadcast_iterator<S, L> crbegin(const S& shape) const noexcept;
    +
    321 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    322 const_reverse_broadcast_iterator<S, L> crend(const S& shape) const noexcept;
    +
    323
    +
    324 linear_iterator linear_begin() noexcept;
    +
    325 linear_iterator linear_end() noexcept;
    +
    326
    +
    327 const_linear_iterator linear_begin() const noexcept;
    +
    328 const_linear_iterator linear_end() const noexcept;
    +
    329 const_linear_iterator linear_cbegin() const noexcept;
    +
    330 const_linear_iterator linear_cend() const noexcept;
    +
    331
    +
    332 reverse_linear_iterator linear_rbegin() noexcept;
    +
    333 reverse_linear_iterator linear_rend() noexcept;
    +
    334
    +
    335 const_reverse_linear_iterator linear_rbegin() const noexcept;
    +
    336 const_reverse_linear_iterator linear_rend() const noexcept;
    +
    337 const_reverse_linear_iterator linear_crbegin() const noexcept;
    +
    338 const_reverse_linear_iterator linear_crend() const noexcept;
    +
    339
    +
    340 template <class S>
    +
    341 stepper stepper_begin(const S& shape) noexcept;
    +
    342 template <class S>
    +
    343 stepper stepper_end(const S& shape, layout_type l) noexcept;
    +
    344 template <class S>
    +
    345 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    346 template <class S>
    +
    347 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    348
    +
    349 protected:
    +
    350
    +
    351 undecay_expression m_e;
    +
    352 functor_type m_functor;
    +
    353
    +
    354 private:
    +
    355
    +
    356 friend class xaccessible<D>;
    +
    357 friend class xconst_accessible<D>;
    +
    358 };
    +
    359
    +
    360 template <class D, class T>
    +
    + +
    362 : xtl::conjunction<
    +
    363 has_simd_type<T>,
    +
    364 has_simd_interface<typename xfunctor_applier_base<D>::xexpression_type>,
    +
    365 detail::has_simd_interface_impl<xfunctor_applier_base<D>, T>>
    +
    366 {
    +
    367 };
    +
    +
    368
    +
    369 /********************************
    +
    370 * xfunctor_view_temporary_type *
    +
    371 ********************************/
    +
    372
    +
    373 namespace detail
    +
    374 {
    +
    375 // TODO replace with xexpression_for_shape ...
    +
    376 template <class F, class S, layout_type L>
    +
    377 struct functorview_temporary_type_impl
    +
    378 {
    + +
    380 };
    +
    381
    +
    382 template <class F, class T, std::size_t N, layout_type L>
    +
    383 struct functorview_temporary_type_impl<F, std::array<T, N>, L>
    +
    384 {
    +
    385 using type = xtensor<typename F::value_type, N, L>;
    +
    386 };
    +
    387 }
    +
    388
    +
    389 template <class F, class E>
    + +
    394
    +
    395 /*****************************
    +
    396 * xfunctor_view declaration *
    +
    397 *****************************/
    +
    398
    +
    399 template <class F, class CT>
    +
    400 class xfunctor_view;
    +
    401
    +
    402 template <class F, class CT>
    +
    + +
    404 {
    +
    405 using xexpression_type = std::decay_t<CT>;
    +
    406 using undecay_expression = CT;
    +
    407 using functor_type = std::decay_t<F>;
    +
    408 using reference = decltype(std::declval<F>()(std::declval<xexpression_type>()()));
    +
    409 using const_reference = decltype(std::declval<F>()(std::declval<const xexpression_type>()()));
    +
    410 using size_type = typename xexpression_type::size_type;
    +
    411 using temporary_type = typename xfunctor_view_temporary_type<F, xexpression_type>::type;
    +
    412 };
    +
    +
    413
    +
    414 template <class F, class CT, class T>
    +
    + +
    416 : has_simd_interface<xfunctor_applier_base<xfunctor_view<F, CT>>, T>
    +
    417 {
    +
    418 };
    +
    +
    419
    +
    439 template <class F, class CT>
    +
    +
    440 class xfunctor_view : public xfunctor_applier_base<xfunctor_view<F, CT>>,
    +
    441 public xview_semantic<xfunctor_view<F, CT>>,
    +
    442 public extension::xfunctor_view_base_t<F, CT>
    +
    443 {
    +
    444 public:
    +
    445
    + + +
    448
    +
    449 // constructors
    +
    450 using xfunctor_applier_base<self_type>::xfunctor_applier_base;
    +
    451
    +
    452 template <class E>
    +
    453 self_type& operator=(const xexpression<E>& e);
    +
    454
    +
    455 template <class E>
    +
    456 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    457
    +
    458 template <class E>
    + +
    460
    +
    461 template <class E>
    +
    462 rebind_t<E> build_functor_view(E&& e) const;
    +
    463
    +
    464 private:
    +
    465
    +
    466 using temporary_type = typename xcontainer_inner_types<self_type>::temporary_type;
    +
    467 void assign_temporary_impl(temporary_type&& tmp);
    +
    468 friend class xview_semantic<self_type>;
    +
    469 friend class xaccessible<self_type>;
    +
    470 };
    +
    +
    471
    +
    472 /********************************
    +
    473 * xfunctor_adaptor declaration *
    +
    474 ********************************/
    +
    475
    +
    476 template <class F, class CT>
    +
    477 class xfunctor_adaptor;
    +
    478
    +
    479 template <class F, class CT>
    +
    + +
    481 {
    +
    482 using xexpression_type = std::decay_t<CT>;
    +
    483 using undecay_expression = CT;
    +
    484 using functor_type = std::decay_t<F>;
    +
    485 using reference = typename functor_type::reference;
    +
    486 using const_reference = typename functor_type::const_reference;
    +
    487 using size_type = typename xexpression_type::size_type;
    +
    488 using temporary_type = typename xfunctor_view_temporary_type<F, xexpression_type>::type;
    +
    489 };
    +
    +
    490
    +
    491 template <class F, class CT, class T>
    +
    + +
    493 : has_simd_interface<xfunctor_applier_base<xfunctor_adaptor<F, CT>>, T>
    +
    494 {
    +
    495 };
    +
    +
    496
    +
    508 template <class F, class CT>
    +
    +
    509 class xfunctor_adaptor : public xfunctor_applier_base<xfunctor_adaptor<F, CT>>,
    +
    510 public xcontainer_semantic<xfunctor_adaptor<F, CT>>,
    +
    511 public extension::xfunctor_view_base_t<F, CT>
    +
    512 {
    +
    513 public:
    +
    514
    + + +
    517 using xexpression_type = std::decay_t<CT>;
    + +
    519 using shape_type = typename base_type::shape_type;
    +
    520 using strides_type = typename xexpression_type::strides_type;
    +
    521 // constructors
    +
    522 using xfunctor_applier_base<self_type>::xfunctor_applier_base;
    +
    523
    +
    524 template <class E>
    +
    525 self_type& operator=(const xexpression<E>& e);
    +
    526
    +
    527 template <class E>
    +
    528 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    529
    +
    530 template <class S = shape_type>
    +
    531 auto resize(S&& shape, bool force = false);
    +
    532
    +
    533 template <class S = shape_type>
    +
    534 auto resize(S&& shape, layout_type l);
    +
    535
    +
    536 template <class S = shape_type>
    +
    537 auto resize(S&& shape, const strides_type& strides);
    +
    538
    +
    539 template <class S = shape_type>
    +
    540 auto& reshape(S&& shape, layout_type layout = base_type::static_layout) &;
    +
    541
    +
    542 private:
    +
    543
    +
    544 using temporary_type = typename xcontainer_inner_types<self_type>::temporary_type;
    +
    545 void assign_temporary_impl(temporary_type&& tmp);
    +
    546 friend class xcontainer_semantic<self_type>;
    +
    547 friend class xaccessible<self_type>;
    +
    548 };
    +
    +
    549
    +
    550 /*********************************
    +
    551 * xfunctor_iterator declaration *
    +
    552 *********************************/
    +
    553
    +
    554 template <class R>
    +
    + +
    556 {
    +
    557 using reference = R;
    +
    558 using pointer = std::add_pointer_t<std::remove_reference_t<R>>;
    +
    559 };
    +
    +
    560
    +
    561 namespace detail
    +
    562 {
    +
    563 template <class F, class IT>
    +
    564 struct xfunctor_invoker
    +
    565 {
    +
    566 using type = decltype(std::declval<F>()(*(std::declval<IT>())));
    +
    567 };
    +
    568
    +
    569 template <class F, class IT>
    +
    570 using xfunctor_invoker_t = typename xfunctor_invoker<F, IT>::type;
    +
    571 }
    +
    572
    +
    573 template <class F, class IT>
    +
    +
    574 class xfunctor_iterator : public xtl::xrandom_access_iterator_base<
    +
    575 xfunctor_iterator<F, IT>,
    +
    576 typename std::decay_t<F>::value_type,
    +
    577 typename std::iterator_traits<IT>::difference_type,
    +
    578 typename xproxy_inner_types<detail::xfunctor_invoker_t<F, IT>>::pointer,
    +
    579 typename xproxy_inner_types<detail::xfunctor_invoker_t<F, IT>>::reference>
    +
    580 {
    +
    581 public:
    +
    582
    +
    583 using functor_type = F;
    +
    584 using subiterator_traits = std::iterator_traits<IT>;
    +
    585
    + +
    587 using value_type = typename functor_type::value_type;
    +
    588 using reference = typename proxy_inner::reference;
    +
    589 using pointer = typename proxy_inner::pointer;
    +
    590 using difference_type = typename subiterator_traits::difference_type;
    +
    591 using iterator_category = typename subiterator_traits::iterator_category;
    +
    592
    + +
    594
    +
    595 xfunctor_iterator(const IT&, functor_type*);
    +
    596
    +
    597 self_type& operator++();
    +
    598 self_type& operator--();
    +
    599
    +
    600 self_type& operator+=(difference_type n);
    +
    601 self_type& operator-=(difference_type n);
    +
    602
    +
    603 difference_type operator-(xfunctor_iterator rhs) const;
    +
    604
    +
    605 reference operator*() const;
    +
    606 pointer operator->() const;
    +
    607
    +
    608 bool equal(const xfunctor_iterator& rhs) const;
    +
    609 bool less_than(const xfunctor_iterator& rhs) const;
    +
    610
    +
    611 private:
    +
    612
    +
    613 IT m_it;
    +
    614 functor_type* p_functor;
    +
    615 };
    +
    +
    616
    +
    617 template <class F, class IT>
    + +
    619
    +
    620 template <class F, class IT>
    +
    621 bool operator<(const xfunctor_iterator<F, IT>& lhs, const xfunctor_iterator<F, IT>& rhs);
    +
    622
    +
    623 /********************************
    +
    624 * xfunctor_stepper declaration *
    +
    625 ********************************/
    +
    626
    +
    627 template <class F, class ST>
    +
    + +
    629 {
    +
    630 public:
    +
    631
    +
    632 using functor_type = F;
    +
    633
    + +
    635 using value_type = typename functor_type::value_type;
    +
    636 using reference = typename proxy_inner::reference;
    +
    637 using pointer = std::remove_reference_t<reference>*;
    +
    638 using size_type = typename ST::size_type;
    +
    639 using difference_type = typename ST::difference_type;
    +
    640
    +
    641 using shape_type = typename ST::shape_type;
    +
    642
    +
    643 xfunctor_stepper() = default;
    +
    644 xfunctor_stepper(const ST&, functor_type*);
    +
    645
    +
    646 reference operator*() const;
    +
    647
    +
    648 void step(size_type dim);
    +
    649 void step_back(size_type dim);
    +
    650 void step(size_type dim, size_type n);
    +
    651 void step_back(size_type dim, size_type n);
    +
    652 void reset(size_type dim);
    +
    653 void reset_back(size_type dim);
    +
    654
    +
    655 void to_begin();
    +
    656 void to_end(layout_type);
    +
    657
    +
    658 private:
    +
    659
    +
    660 ST m_stepper;
    +
    661 functor_type* p_functor;
    +
    662 };
    +
    +
    663
    +
    664 /****************************************
    +
    665 * xfunctor_applier_base implementation *
    +
    666 ****************************************/
    +
    667
    +
    672
    +
    678 template <class D>
    +
    +
    679 inline xfunctor_applier_base<D>::xfunctor_applier_base(undecay_expression e) noexcept
    +
    680 : m_e(e)
    +
    681 , m_functor(functor_type())
    +
    682 {
    +
    683 }
    +
    +
    684
    +
    691 template <class D>
    +
    692 template <class Func, class E>
    +
    +
    693 inline xfunctor_applier_base<D>::xfunctor_applier_base(Func&& func, E&& e) noexcept
    +
    694 : m_e(std::forward<E>(e))
    +
    695 , m_functor(std::forward<Func>(func))
    +
    696 {
    +
    697 }
    +
    +
    698
    +
    700
    +
    708 template <class D>
    +
    +
    709 inline auto xfunctor_applier_base<D>::size() const noexcept -> size_type
    +
    710 {
    +
    711 return m_e.size();
    +
    712 }
    +
    +
    713
    +
    717 template <class D>
    +
    +
    718 inline auto xfunctor_applier_base<D>::shape() const noexcept -> const inner_shape_type&
    +
    719 {
    +
    720 return m_e.shape();
    +
    721 }
    +
    +
    722
    +
    726 template <class D>
    +
    +
    727 inline auto xfunctor_applier_base<D>::strides() const noexcept -> const inner_strides_type&
    +
    728 {
    +
    729 return m_e.strides();
    +
    730 }
    +
    +
    731
    +
    735 template <class D>
    +
    +
    736 inline auto xfunctor_applier_base<D>::backstrides() const noexcept -> const inner_backstrides_type&
    +
    737 {
    +
    738 return m_e.backstrides();
    +
    739 }
    +
    +
    740
    +
    744 template <class D>
    +
    + +
    746 {
    +
    747 return m_e.layout();
    +
    748 }
    +
    +
    749
    +
    750 template <class D>
    +
    751 inline bool xfunctor_applier_base<D>::is_contiguous() const noexcept
    +
    752 {
    +
    753 return m_e.is_contiguous();
    +
    754 }
    +
    755
    +
    757
    +
    768 template <class D>
    +
    769 template <class... Args>
    +
    +
    770 inline auto xfunctor_applier_base<D>::operator()(Args... args) -> reference
    +
    771 {
    +
    772 XTENSOR_TRY(check_index(shape(), args...));
    +
    773 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    774 return m_functor(m_e(args...));
    +
    775 }
    +
    +
    776
    +
    796 template <class D>
    +
    797 template <class... Args>
    +
    +
    798 inline auto xfunctor_applier_base<D>::unchecked(Args... args) -> reference
    +
    799 {
    +
    800 return m_functor(m_e.unchecked(args...));
    +
    801 }
    +
    +
    802
    +
    810 template <class D>
    +
    811 template <class IT>
    +
    +
    812 inline auto xfunctor_applier_base<D>::element(IT first, IT last) -> reference
    +
    813 {
    +
    814 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    815 return m_functor(m_e.element(first, last));
    +
    816 }
    +
    +
    817
    +
    824 template <class D>
    +
    825 template <class... Args>
    +
    +
    826 inline auto xfunctor_applier_base<D>::operator()(Args... args) const -> const_reference
    +
    827 {
    +
    828 XTENSOR_TRY(check_index(shape(), args...));
    +
    829 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    830 return m_functor(m_e(args...));
    +
    831 }
    +
    +
    832
    +
    852 template <class D>
    +
    853 template <class... Args>
    +
    +
    854 inline auto xfunctor_applier_base<D>::unchecked(Args... args) const -> const_reference
    +
    855 {
    +
    856 return m_functor(m_e.unchecked(args...));
    +
    857 }
    +
    +
    858
    +
    866 template <class D>
    +
    867 template <class IT>
    +
    +
    868 inline auto xfunctor_applier_base<D>::element(IT first, IT last) const -> const_reference
    +
    869 {
    +
    870 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    871 return m_functor(m_e.element(first, last));
    +
    872 }
    +
    +
    873
    +
    877 template <class D>
    +
    +
    878 inline auto xfunctor_applier_base<D>::expression() noexcept -> xexpression_type&
    +
    879 {
    +
    880 return m_e;
    +
    881 }
    +
    +
    882
    +
    886 template <class D>
    +
    +
    887 inline auto xfunctor_applier_base<D>::expression() const noexcept -> const xexpression_type&
    +
    888 {
    +
    889 return m_e;
    +
    890 }
    +
    +
    891
    +
    893
    +
    904 template <class D>
    +
    905 template <class S>
    +
    +
    906 inline bool xfunctor_applier_base<D>::broadcast_shape(S& shape, bool reuse_cache) const
    +
    907 {
    +
    908 return m_e.broadcast_shape(shape, reuse_cache);
    +
    909 }
    +
    +
    910
    +
    917 template <class D>
    +
    918 template <class S>
    +
    + +
    920 {
    +
    921 return m_e.has_linear_assign(strides);
    +
    922 }
    +
    +
    923
    +
    925
    +
    934 template <class D>
    +
    935 template <layout_type L>
    +
    +
    936 inline auto xfunctor_applier_base<D>::begin() noexcept
    +
    937 {
    +
    938 return xfunctor_iterator<functor_type, decltype(m_e.template begin<L>())>(
    +
    939 m_e.template begin<L>(),
    +
    940 &m_functor
    +
    941 );
    +
    942 }
    +
    +
    943
    +
    949 template <class D>
    +
    950 template <layout_type L>
    +
    +
    951 inline auto xfunctor_applier_base<D>::end() noexcept
    +
    952 {
    +
    953 return xfunctor_iterator<functor_type, decltype(m_e.template end<L>())>(m_e.template end<L>(), &m_functor);
    +
    954 }
    +
    +
    955
    +
    960 template <class D>
    +
    961 template <layout_type L>
    +
    +
    962 inline auto xfunctor_applier_base<D>::begin() const noexcept
    +
    963 {
    +
    964 return this->template cbegin<L>();
    +
    965 }
    +
    +
    966
    +
    972 template <class D>
    +
    973 template <layout_type L>
    +
    +
    974 inline auto xfunctor_applier_base<D>::end() const noexcept
    +
    975 {
    +
    976 return this->template cend<L>();
    +
    977 }
    +
    +
    978
    +
    983 template <class D>
    +
    984 template <layout_type L>
    +
    +
    985 inline auto xfunctor_applier_base<D>::cbegin() const noexcept
    +
    986 {
    +
    987 return xfunctor_iterator<const functor_type, decltype(m_e.template cbegin<L>())>(
    +
    988 m_e.template cbegin<L>(),
    +
    989 &m_functor
    +
    990 );
    +
    991 }
    +
    +
    992
    +
    998 template <class D>
    +
    999 template <layout_type L>
    +
    +
    1000 inline auto xfunctor_applier_base<D>::cend() const noexcept
    +
    1001 {
    +
    1002 return xfunctor_iterator<const functor_type, decltype(m_e.template cend<L>())>(
    +
    1003 m_e.template cend<L>(),
    +
    1004 &m_functor
    +
    1005 );
    +
    1006 }
    +
    +
    1007
    +
    1009
    +
    1021 template <class D>
    +
    1022 template <class S, layout_type L>
    +
    + +
    1024 {
    +
    1025 return broadcast_iterator<S, L>(m_e.template begin<S, L>(shape), &m_functor);
    +
    1026 }
    +
    +
    1027
    +
    1035 template <class D>
    +
    1036 template <class S, layout_type L>
    +
    + +
    1038 {
    +
    1039 return broadcast_iterator<S, L>(m_e.template end<S, L>(shape), &m_functor);
    +
    1040 }
    +
    +
    1041
    +
    1049 template <class D>
    +
    1050 template <class S, layout_type L>
    +
    +
    1051 inline auto xfunctor_applier_base<D>::begin(const S& shape) const noexcept
    + +
    1053 {
    +
    1054 return cbegin<S, L>(shape);
    +
    1055 }
    +
    +
    1056
    +
    1064 template <class D>
    +
    1065 template <class S, layout_type L>
    +
    + +
    1067 {
    +
    1068 return cend<S, L>(shape);
    +
    1069 }
    +
    +
    1070
    +
    1078 template <class D>
    +
    1079 template <class S, layout_type L>
    +
    +
    1080 inline auto xfunctor_applier_base<D>::cbegin(const S& shape) const noexcept
    + +
    1082 {
    +
    1083 return const_broadcast_iterator<S, L>(m_e.template cbegin<S, L>(shape), &m_functor);
    +
    1084 }
    +
    +
    1085
    +
    1093 template <class D>
    +
    1094 template <class S, layout_type L>
    +
    + +
    1096 {
    +
    1097 return const_broadcast_iterator<S, L>(m_e.template cend<S, L>(shape), &m_functor);
    +
    1098 }
    +
    +
    1099
    +
    1101
    +
    1110 template <class D>
    +
    1111 template <layout_type L>
    +
    + +
    1113 {
    +
    1114 return xfunctor_iterator<functor_type, decltype(m_e.template rbegin<L>())>(
    +
    1115 m_e.template rbegin<L>(),
    +
    1116 &m_functor
    +
    1117 );
    +
    1118 }
    +
    +
    1119
    +
    1125 template <class D>
    +
    1126 template <layout_type L>
    +
    +
    1127 inline auto xfunctor_applier_base<D>::rend() noexcept
    +
    1128 {
    +
    1129 return xfunctor_iterator<functor_type, decltype(m_e.template rend<L>())>(
    +
    1130 m_e.template rend<L>(),
    +
    1131 &m_functor
    +
    1132 );
    +
    1133 }
    +
    +
    1134
    +
    1139 template <class D>
    +
    1140 template <layout_type L>
    +
    +
    1141 inline auto xfunctor_applier_base<D>::rbegin() const noexcept
    +
    1142 {
    +
    1143 return this->template crbegin<L>();
    +
    1144 }
    +
    +
    1145
    +
    1151 template <class D>
    +
    1152 template <layout_type L>
    +
    +
    1153 inline auto xfunctor_applier_base<D>::rend() const noexcept
    +
    1154 {
    +
    1155 return this->template crend<L>();
    +
    1156 }
    +
    +
    1157
    +
    1162 template <class D>
    +
    1163 template <layout_type L>
    +
    +
    1164 inline auto xfunctor_applier_base<D>::crbegin() const noexcept
    +
    1165 {
    +
    1166 return xfunctor_iterator<const functor_type, decltype(m_e.template crbegin<L>())>(
    +
    1167 m_e.template crbegin<L>(),
    +
    1168 &m_functor
    +
    1169 );
    +
    1170 }
    +
    +
    1171
    +
    1177 template <class D>
    +
    1178 template <layout_type L>
    +
    +
    1179 inline auto xfunctor_applier_base<D>::crend() const noexcept
    +
    1180 {
    +
    1181 return xfunctor_iterator<const functor_type, decltype(m_e.template crend<L>())>(
    +
    1182 m_e.template crend<L>(),
    +
    1183 &m_functor
    +
    1184 );
    +
    1185 }
    +
    +
    +
    1186
    +
    1188
    +
    1200 template <class D>
    +
    1201 template <class S, layout_type L>
    +
    + +
    1203 {
    +
    1204 return reverse_broadcast_iterator<S, L>(m_e.template rbegin<S, L>(shape), &m_functor);
    +
    1205 }
    +
    +
    1206
    +
    1214 template <class D>
    +
    1215 template <class S, layout_type L>
    +
    + +
    1217 {
    +
    1218 return reverse_broadcast_iterator<S, L>(m_e.template rend<S, L>(shape), &m_functor);
    +
    1219 }
    +
    +
    1220
    +
    1228 template <class D>
    +
    1229 template <class S, layout_type L>
    +
    +
    1230 inline auto xfunctor_applier_base<D>::rbegin(const S& shape) const noexcept
    + +
    1232 {
    +
    1233 return crbegin<S, L>(shape);
    +
    1234 }
    +
    +
    1235
    +
    1243 template <class D>
    +
    1244 template <class S, layout_type L>
    +
    +
    1245 inline auto xfunctor_applier_base<D>::rend(const S& /*shape*/) const noexcept
    + +
    1247 {
    +
    1248 return crend<S, L>();
    +
    1249 }
    +
    +
    1250
    +
    1258 template <class D>
    +
    1259 template <class S, layout_type L>
    +
    +
    1260 inline auto xfunctor_applier_base<D>::crbegin(const S& /*shape*/) const noexcept
    + +
    1262 {
    +
    1263 return const_reverse_broadcast_iterator<S, L>(m_e.template crbegin<S, L>(), &m_functor);
    +
    1264 }
    +
    +
    1265
    +
    1273 template <class D>
    +
    1274 template <class S, layout_type L>
    +
    +
    1275 inline auto xfunctor_applier_base<D>::crend(const S& shape) const noexcept
    + +
    1277 {
    +
    1278 return const_reverse_broadcast_iterator<S, L>(m_e.template crend<S, L>(shape), &m_functor);
    +
    1279 }
    +
    +
    1280
    +
    1282
    +
    1283 template <class D>
    +
    1284 inline auto xfunctor_applier_base<D>::linear_begin() noexcept -> linear_iterator
    +
    1285 {
    +
    1286 return linear_iterator(m_e.linear_begin(), &m_functor);
    +
    1287 }
    +
    1288
    +
    1289 template <class D>
    +
    1290 inline auto xfunctor_applier_base<D>::linear_end() noexcept -> linear_iterator
    +
    1291 {
    +
    1292 return linear_iterator(m_e.linear_end(), &m_functor);
    +
    1293 }
    +
    1294
    +
    1295 template <class D>
    +
    1296 inline auto xfunctor_applier_base<D>::linear_begin() const noexcept -> const_linear_iterator
    +
    1297 {
    +
    1298 return const_linear_iterator(m_e.linear_begin(), &m_functor);
    +
    1299 }
    +
    1300
    +
    1301 template <class D>
    +
    1302 inline auto xfunctor_applier_base<D>::linear_end() const noexcept -> const_linear_iterator
    +
    1303 {
    +
    1304 return const_linear_iterator(m_e.linear_end(), &m_functor);
    +
    1305 }
    +
    1306
    +
    1307 template <class D>
    +
    1308 inline auto xfunctor_applier_base<D>::linear_cbegin() const noexcept -> const_linear_iterator
    +
    1309 {
    +
    1310 return const_linear_iterator(m_e.linear_cbegin(), &m_functor);
    +
    1311 }
    +
    1312
    +
    1313 template <class D>
    +
    1314 inline auto xfunctor_applier_base<D>::linear_cend() const noexcept -> const_linear_iterator
    +
    1315 {
    +
    1316 return const_linear_iterator(m_e.linear_cend(), &m_functor);
    +
    1317 }
    +
    1318
    +
    1319 template <class D>
    +
    1320 inline auto xfunctor_applier_base<D>::linear_rbegin() noexcept -> reverse_linear_iterator
    +
    1321 {
    +
    1322 return reverse_linear_iterator(m_e.linear_rbegin(), &m_functor);
    +
    1323 }
    +
    1324
    +
    1325 template <class D>
    +
    1326 inline auto xfunctor_applier_base<D>::linear_rend() noexcept -> reverse_linear_iterator
    +
    1327 {
    +
    1328 return reverse_linear_iterator(m_e.linear_rend(), &m_functor);
    +
    1329 }
    +
    1330
    +
    1331 template <class D>
    +
    1332 inline auto xfunctor_applier_base<D>::linear_rbegin() const noexcept -> const_reverse_linear_iterator
    +
    1333 {
    +
    1334 return const_reverse_linear_iterator(m_e.linear_rbegin(), &m_functor);
    +
    1335 }
    +
    1336
    +
    1337 template <class D>
    +
    1338 inline auto xfunctor_applier_base<D>::linear_rend() const noexcept -> const_reverse_linear_iterator
    +
    1339 {
    +
    1340 return const_reverse_linear_iterator(m_e.linear_rend(), &m_functor);
    +
    1341 }
    +
    1342
    +
    1343 template <class D>
    +
    1344 inline auto xfunctor_applier_base<D>::linear_crbegin() const noexcept -> const_reverse_linear_iterator
    +
    1345 {
    +
    1346 return const_reverse_linear_iterator(m_e.linear_crbegin(), &m_functor);
    +
    1347 }
    +
    1348
    +
    1349 template <class D>
    +
    1350 inline auto xfunctor_applier_base<D>::linear_crend() const noexcept -> const_reverse_linear_iterator
    +
    1351 {
    +
    1352 return const_reverse_linear_iterator(m_e.linear_crend(), &m_functor);
    +
    1353 }
    +
    1354
    +
    1355 /***************
    +
    1356 * stepper api *
    +
    1357 ***************/
    +
    1358
    +
    1359 template <class D>
    +
    1360 template <class S>
    +
    1361 inline auto xfunctor_applier_base<D>::stepper_begin(const S& shape) noexcept -> stepper
    +
    1362 {
    +
    1363 return stepper(m_e.stepper_begin(shape), &m_functor);
    +
    1364 }
    +
    1365
    +
    1366 template <class D>
    +
    1367 template <class S>
    +
    1368 inline auto xfunctor_applier_base<D>::stepper_end(const S& shape, layout_type l) noexcept -> stepper
    +
    1369 {
    +
    1370 return stepper(m_e.stepper_end(shape, l), &m_functor);
    +
    1371 }
    +
    1372
    +
    1373 template <class D>
    +
    1374 template <class S>
    +
    1375 inline auto xfunctor_applier_base<D>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    1376 {
    +
    1377 const xexpression_type& const_m_e = m_e;
    +
    1378 return const_stepper(const_m_e.stepper_begin(shape), &m_functor);
    +
    1379 }
    +
    1380
    +
    1381 template <class D>
    +
    1382 template <class S>
    +
    1383 inline auto xfunctor_applier_base<D>::stepper_end(const S& shape, layout_type l) const noexcept
    +
    1384 -> const_stepper
    +
    1385 {
    +
    1386 const xexpression_type& const_m_e = m_e;
    +
    1387 return const_stepper(const_m_e.stepper_end(shape, l), &m_functor);
    +
    1388 }
    +
    1389
    +
    1390 /********************************
    +
    1391 * xfunctor_view implementation *
    +
    1392 ********************************/
    +
    1393
    +
    1401 template <class F, class CT>
    +
    1402 template <class E>
    +
    + +
    1404 {
    +
    1405 bool cond = (e.derived_cast().shape().size() == this->dimension())
    +
    1406 && std::equal(this->shape().begin(), this->shape().end(), e.derived_cast().shape().begin());
    +
    1407 if (!cond)
    +
    1408 {
    +
    1409 semantic_base::operator=(broadcast(e.derived_cast(), this->shape()));
    +
    1410 }
    +
    1411 else
    +
    1412 {
    +
    1413 semantic_base::operator=(e);
    +
    1414 }
    +
    1415 return *this;
    +
    1416 }
    +
    +
    1417
    +
    1419
    +
    1420 template <class F, class CT>
    +
    1421 template <class E>
    +
    1422 inline auto xfunctor_view<F, CT>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    1423 {
    +
    1424 std::fill(this->begin(), this->end(), e);
    +
    1425 return *this;
    +
    1426 }
    +
    1427
    +
    1428 template <class F, class CT>
    +
    1429 inline void xfunctor_view<F, CT>::assign_temporary_impl(temporary_type&& tmp)
    +
    1430 {
    +
    1431 std::copy(tmp.cbegin(), tmp.cend(), this->begin());
    +
    1432 }
    +
    1433
    +
    1434 template <class F, class CT>
    +
    1435 template <class E>
    +
    1436 inline auto xfunctor_view<F, CT>::build_functor_view(E&& e) const -> rebind_t<E>
    +
    1437 {
    +
    1438 return rebind_t<E>((this->m_functor), std::forward<E>(e));
    +
    1439 }
    +
    1440
    +
    1441 /***********************************
    +
    1442 * xfunctor_adaptor implementation *
    +
    1443 ***********************************/
    +
    1444
    +
    1452 template <class F, class CT>
    +
    1453 template <class E>
    +
    + +
    1455 {
    +
    1456 const auto& de = e.derived_cast();
    +
    1457 this->m_e.resize(de.shape());
    +
    1458
    +
    1459 if (this->layout() == de.layout())
    +
    1460 {
    +
    1461 std::copy(de.linear_begin(), de.linear_end(), this->linear_begin());
    +
    1462 }
    +
    1463 else
    +
    1464 {
    +
    1465 // note: does this even select the current layout of *this* for iteration?
    +
    1466 std::copy(de.begin(), de.end(), this->begin());
    +
    1467 }
    +
    1468
    +
    1469 return *this;
    +
    1470 }
    +
    +
    1471
    +
    1473
    +
    1474 template <class F, class CT>
    +
    1475 template <class S>
    +
    1476 auto xfunctor_adaptor<F, CT>::resize(S&& shape, bool force)
    +
    1477 {
    +
    1478 this->m_e.resize(std::forward<S>(shape), force);
    +
    1479 }
    +
    1480
    +
    1481 template <class F, class CT>
    +
    1482 template <class S>
    +
    1483 auto xfunctor_adaptor<F, CT>::resize(S&& shape, layout_type l)
    +
    1484 {
    +
    1485 this->m_e.resize(std::forward<S>(shape), l);
    +
    1486 }
    +
    1487
    +
    1488 template <class F, class CT>
    +
    1489 template <class S>
    +
    1490 auto xfunctor_adaptor<F, CT>::resize(S&& shape, const strides_type& strides)
    +
    1491 {
    +
    1492 this->m_e.resize(std::forward<S>(shape), strides);
    +
    1493 }
    +
    1494
    +
    1495 template <class F, class CT>
    +
    1496 template <class S>
    +
    1497 auto& xfunctor_adaptor<F, CT>::reshape(S&& shape, layout_type layout) &
    +
    1498 {
    +
    1499 this->m_e.reshape(std::forward<S>(shape), layout);
    +
    1500 return *this;
    +
    1501 }
    +
    1502
    +
    1503 /************************************
    +
    1504 * xfunctor_iterator implementation *
    +
    1505 ************************************/
    +
    1506
    +
    1507 template <class F, class IT>
    +
    1508 xfunctor_iterator<F, IT>::xfunctor_iterator(const IT& it, functor_type* pf)
    +
    1509 : m_it(it)
    +
    1510 , p_functor(pf)
    +
    1511 {
    +
    1512 }
    +
    1513
    +
    1514 template <class F, class IT>
    +
    1515 inline auto xfunctor_iterator<F, IT>::operator++() -> self_type&
    +
    1516 {
    +
    1517 ++m_it;
    +
    1518 return *this;
    +
    1519 }
    +
    1520
    +
    1521 template <class F, class IT>
    +
    1522 inline auto xfunctor_iterator<F, IT>::operator--() -> self_type&
    +
    1523 {
    +
    1524 --m_it;
    +
    1525 return *this;
    +
    1526 }
    +
    1527
    +
    1528 template <class F, class IT>
    +
    1529 inline auto xfunctor_iterator<F, IT>::operator+=(difference_type n) -> self_type&
    +
    1530 {
    +
    1531 m_it += n;
    +
    1532 return *this;
    +
    1533 }
    +
    1534
    +
    1535 template <class F, class IT>
    +
    1536 inline auto xfunctor_iterator<F, IT>::operator-=(difference_type n) -> self_type&
    +
    1537 {
    +
    1538 m_it -= n;
    +
    1539 return *this;
    +
    1540 }
    +
    1541
    +
    1542 template <class F, class IT>
    +
    1543 inline auto xfunctor_iterator<F, IT>::operator-(xfunctor_iterator rhs) const -> difference_type
    +
    1544 {
    +
    1545 return m_it - rhs.m_it;
    +
    1546 }
    +
    1547
    +
    1548 template <class F, class IT>
    +
    1549 auto xfunctor_iterator<F, IT>::operator*() const -> reference
    +
    1550 {
    +
    1551 return (*p_functor)(*m_it);
    +
    1552 }
    +
    1553
    +
    1554 template <class F, class IT>
    +
    1555 auto xfunctor_iterator<F, IT>::operator->() const -> pointer
    +
    1556 {
    +
    1557 return &(operator*());
    +
    1558 }
    +
    1559
    +
    1560 template <class F, class IT>
    +
    1561 auto xfunctor_iterator<F, IT>::equal(const xfunctor_iterator& rhs) const -> bool
    +
    1562 {
    +
    1563 return m_it == rhs.m_it;
    +
    1564 }
    +
    1565
    +
    1566 template <class F, class IT>
    +
    1567 auto xfunctor_iterator<F, IT>::less_than(const xfunctor_iterator& rhs) const -> bool
    +
    1568 {
    +
    1569 return m_it < rhs.m_it;
    +
    1570 }
    +
    1571
    +
    1572 template <class F, class IT>
    +
    1573 bool operator==(const xfunctor_iterator<F, IT>& lhs, const xfunctor_iterator<F, IT>& rhs)
    +
    1574 {
    +
    1575 return lhs.equal(rhs);
    +
    1576 }
    +
    1577
    +
    1578 template <class F, class IT>
    +
    1579 bool operator<(const xfunctor_iterator<F, IT>& lhs, const xfunctor_iterator<F, IT>& rhs)
    +
    1580 {
    +
    1581 return !lhs.less_than(rhs);
    +
    1582 }
    +
    1583
    +
    1584 /***********************************
    +
    1585 * xfunctor_stepper implementation *
    +
    1586 ***********************************/
    +
    1587
    +
    1588 template <class F, class ST>
    +
    1589 xfunctor_stepper<F, ST>::xfunctor_stepper(const ST& stepper, functor_type* pf)
    +
    1590 : m_stepper(stepper)
    +
    1591 , p_functor(pf)
    +
    1592 {
    +
    1593 }
    +
    1594
    +
    1595 template <class F, class ST>
    +
    1596 auto xfunctor_stepper<F, ST>::operator*() const -> reference
    +
    1597 {
    +
    1598 return (*p_functor)(*m_stepper);
    +
    1599 }
    +
    1600
    +
    1601 template <class F, class ST>
    +
    1602 void xfunctor_stepper<F, ST>::step(size_type dim)
    +
    1603 {
    +
    1604 m_stepper.step(dim);
    +
    1605 }
    +
    1606
    +
    1607 template <class F, class ST>
    +
    1608 void xfunctor_stepper<F, ST>::step_back(size_type dim)
    +
    1609 {
    +
    1610 m_stepper.step_back(dim);
    +
    1611 }
    +
    1612
    +
    1613 template <class F, class ST>
    +
    1614 void xfunctor_stepper<F, ST>::step(size_type dim, size_type n)
    +
    1615 {
    +
    1616 m_stepper.step(dim, n);
    +
    1617 }
    +
    1618
    +
    1619 template <class F, class ST>
    +
    1620 void xfunctor_stepper<F, ST>::step_back(size_type dim, size_type n)
    +
    1621 {
    +
    1622 m_stepper.step_back(dim, n);
    +
    1623 }
    +
    1624
    +
    1625 template <class F, class ST>
    +
    1626 void xfunctor_stepper<F, ST>::reset(size_type dim)
    +
    1627 {
    +
    1628 m_stepper.reset(dim);
    +
    1629 }
    +
    1630
    +
    1631 template <class F, class ST>
    +
    1632 void xfunctor_stepper<F, ST>::reset_back(size_type dim)
    +
    1633 {
    +
    1634 m_stepper.reset_back(dim);
    +
    1635 }
    +
    1636
    +
    1637 template <class F, class ST>
    +
    1638 void xfunctor_stepper<F, ST>::to_begin()
    +
    1639 {
    +
    1640 m_stepper.to_begin();
    +
    1641 }
    +
    1642
    +
    1643 template <class F, class ST>
    +
    1644 void xfunctor_stepper<F, ST>::to_end(layout_type l)
    +
    1645 {
    +
    1646 m_stepper.to_end(l);
    +
    1647 }
    +
    1648}
    +
    1649#endif
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Base class for implementation of common expression access methods.
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    Implementation of the xsemantic_base interface for dense multidimensional containers.
    +
    Base class for xexpressions.
    +
    Adapt a container with a functor, forwarding methods such as resize / reshape.
    + +
    auto end() noexcept
    Returns an iterator to the element following the last element of the expression.
    +
    const inner_backstrides_type & backstrides() const noexcept
    Returns the backstrides of the expression.
    +
    layout_type layout() const noexcept
    Returns the layout_type of the expression.
    +
    xfunctor_applier_base(undecay_expression) noexcept
    Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
    +
    xexpression_type & expression() noexcept
    Returns a reference to the underlying expression of the view.
    +
    auto rend() noexcept
    Returns an iterator to the element following the last element of the reversed expression.
    +
    auto cend() const noexcept
    Returns a constant iterator to the element following the last element of the expression.
    +
    auto cbegin() const noexcept
    Returns a constant iterator to the first element of the expression.
    +
    reference back()
    Returns a reference to the last element of the expression.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the expression.
    +
    bool has_linear_assign(const S &strides) const
    Checks whether the xfunctor_applier_base can be linearly assigned to an expression with the specified...
    +
    auto rbegin() noexcept
    Returns an iterator to the first element of the reversed expression.
    +
    xfunctor_applier_base(Func &&, E &&) noexcept
    Constructs an xfunctor_applier_base expression wrappering the specified xt::xexpression.
    +
    auto begin() noexcept
    Returns an iterator to the first element of the expression.
    +
    reference front()
    Returns a reference to the first element of the expression.
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the function to the specified parameter.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    auto crend() const noexcept
    Returns a constant iterator to the element following the last element of the reversed expression.
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the expression.
    +
    auto crbegin() const noexcept
    Returns a constant iterator to the first element of the reversed expression.
    + + +
    View of an xexpression .
    + +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    auto operator*(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::multiplies, E1, E2 >
    Multiplication.
    +
    auto equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::equal_to, E1, E2 >
    Element-wise equality.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto broadcast(E &&e, const S &s)
    Returns an xexpression broadcasting the given expression to a specified shape.
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + + + + + + +
    +
    + + + + diff --git a/xgenerator_8hpp_source.html b/xgenerator_8hpp_source.html new file mode 100644 index 000000000..03563553e --- /dev/null +++ b/xgenerator_8hpp_source.html @@ -0,0 +1,580 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xgenerator.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xgenerator.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_GENERATOR_HPP
    +
    11#define XTENSOR_GENERATOR_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <numeric>
    +
    16#include <tuple>
    +
    17#include <type_traits>
    +
    18#include <utility>
    +
    19
    +
    20#include <xtl/xsequence.hpp>
    +
    21
    +
    22#include "xaccessible.hpp"
    +
    23#include "xexpression.hpp"
    +
    24#include "xiterable.hpp"
    +
    25#include "xstrided_view.hpp"
    +
    26#include "xstrides.hpp"
    +
    27#include "xutils.hpp"
    +
    28
    +
    29namespace xt
    +
    30{
    +
    31
    +
    32 /************************
    +
    33 * xgenerator extension *
    +
    34 ************************/
    +
    35
    +
    36 namespace extension
    +
    37 {
    +
    38 template <class Tag, class F, class R, class S>
    + +
    40
    +
    41 template <class F, class R, class S>
    +
    + +
    43 {
    + +
    45 };
    +
    +
    46
    +
    47 template <class F, class R, class S>
    +
    +
    48 struct xgenerator_base : xgenerator_base_impl<xexpression_tag_t<R>, F, R, S>
    +
    49 {
    +
    50 };
    +
    +
    51
    +
    52 template <class F, class R, class S>
    +
    53 using xgenerator_base_t = typename xgenerator_base<F, R, S>::type;
    +
    54 }
    +
    55
    +
    56 /**************
    +
    57 * xgenerator *
    +
    58 **************/
    +
    59
    +
    60 template <class F, class R, class S>
    +
    61 class xgenerator;
    +
    62
    +
    63 template <class C, class R, class S>
    +
    + +
    65 {
    +
    66 using inner_shape_type = S;
    + +
    68 using stepper = const_stepper;
    +
    69 };
    +
    +
    70
    +
    71 template <class C, class R, class S>
    +
    + +
    73 {
    +
    74 using reference = R;
    +
    75 using const_reference = R;
    +
    76 using size_type = std::size_t;
    +
    77 };
    +
    +
    78
    +
    90 template <class F, class R, class S>
    +
    +
    91 class xgenerator : public xsharable_expression<xgenerator<F, R, S>>,
    +
    92 public xconst_iterable<xgenerator<F, R, S>>,
    +
    93 public xconst_accessible<xgenerator<F, R, S>>,
    +
    94 public extension::xgenerator_base_t<F, R, S>
    +
    95 {
    +
    96 public:
    +
    97
    + +
    99 using functor_type = typename std::remove_reference<F>::type;
    +
    100
    + +
    102 using extension_base = extension::xgenerator_base_t<F, R, S>;
    +
    103 using expression_tag = typename extension_base::expression_tag;
    +
    104
    + +
    106 using value_type = R;
    +
    107 using reference = typename inner_types::reference;
    +
    108 using const_reference = typename inner_types::const_reference;
    +
    109 using pointer = value_type*;
    +
    110 using const_pointer = const value_type*;
    +
    111 using size_type = typename inner_types::size_type;
    +
    112 using difference_type = std::ptrdiff_t;
    +
    113
    + +
    115 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    116 using shape_type = inner_shape_type;
    +
    117
    +
    118 using stepper = typename iterable_base::stepper;
    +
    119 using const_stepper = typename iterable_base::const_stepper;
    +
    120
    +
    121 using bool_load_type = xt::bool_load_type<R>;
    +
    122
    +
    123 static constexpr layout_type static_layout = layout_type::dynamic;
    +
    124 static constexpr bool contiguous_layout = false;
    +
    125
    +
    126 template <class Func>
    +
    127 xgenerator(Func&& f, const S& shape) noexcept;
    +
    128
    +
    129 const inner_shape_type& shape() const noexcept;
    +
    130 layout_type layout() const noexcept;
    +
    131 bool is_contiguous() const noexcept;
    + +
    133
    +
    134 template <class... Args>
    +
    135 const_reference operator()(Args... args) const;
    +
    136 template <class... Args>
    +
    137 const_reference unchecked(Args... args) const;
    +
    138
    +
    139 template <class It>
    +
    140 const_reference element(It first, It last) const;
    +
    141
    +
    142 template <class O>
    +
    143 bool broadcast_shape(O& shape, bool reuse_cache = false) const;
    +
    144
    +
    145 template <class O>
    +
    146 bool has_linear_assign(const O& /*strides*/) const noexcept;
    +
    147
    +
    148 template <class O>
    +
    149 const_stepper stepper_begin(const O& shape) const noexcept;
    +
    150 template <class O>
    +
    151 const_stepper stepper_end(const O& shape, layout_type) const noexcept;
    +
    152
    +
    153 template <class E, class FE = F, class = std::enable_if_t<has_assign_to<E, FE>::value>>
    +
    154 void assign_to(xexpression<E>& e) const noexcept;
    +
    155
    +
    156 const functor_type& functor() const noexcept;
    +
    157
    +
    158 template <class OR, class OF>
    + +
    160
    +
    161 template <class OR, class OF>
    +
    162 rebind_t<OR, OF> build_generator(OF&& func) const;
    +
    163
    +
    164 template <class O = xt::dynamic_shape<typename shape_type::value_type>>
    +
    165 auto reshape(O&& shape) const&;
    +
    166
    +
    167 template <class O = xt::dynamic_shape<typename shape_type::value_type>>
    +
    168 auto reshape(O&& shape) &&;
    +
    169
    +
    170 template <class T>
    +
    171 auto reshape(std::initializer_list<T> shape) const&;
    +
    172
    +
    173 template <class T>
    +
    174 auto reshape(std::initializer_list<T> shape) &&;
    +
    175
    +
    176 private:
    +
    177
    +
    178 template <class O>
    +
    179 decltype(auto) compute_shape(O&& shape, std::false_type /*signed*/) const;
    +
    180
    +
    181 template <class O>
    +
    182 auto compute_shape(O&& shape, std::true_type /*signed*/) const;
    +
    183
    +
    184 template <class T>
    +
    185 auto compute_shape(std::initializer_list<T> shape) const;
    +
    186
    +
    187 template <std::size_t dim>
    +
    188 void adapt_index() const;
    +
    189
    +
    190 template <std::size_t dim, class I, class... Args>
    +
    191 void adapt_index(I& arg, Args&... args) const;
    +
    192
    +
    193 functor_type m_f;
    +
    194 inner_shape_type m_shape;
    +
    195 };
    +
    +
    196
    +
    197 /*****************************
    +
    198 * xgenerator implementation *
    +
    199 *****************************/
    +
    200
    +
    211 template <class F, class R, class S>
    +
    212 template <class Func>
    +
    +
    213 inline xgenerator<F, R, S>::xgenerator(Func&& f, const S& shape) noexcept
    +
    214 : m_f(std::forward<Func>(f))
    +
    215 , m_shape(shape)
    +
    216 {
    +
    217 }
    +
    +
    218
    +
    220
    +
    228 template <class F, class R, class S>
    +
    +
    229 inline auto xgenerator<F, R, S>::shape() const noexcept -> const inner_shape_type&
    +
    230 {
    +
    231 return m_shape;
    +
    232 }
    +
    +
    233
    +
    234 template <class F, class R, class S>
    +
    235 inline layout_type xgenerator<F, R, S>::layout() const noexcept
    +
    236 {
    +
    237 return static_layout;
    +
    238 }
    +
    239
    +
    240 template <class F, class R, class S>
    +
    241 inline bool xgenerator<F, R, S>::is_contiguous() const noexcept
    +
    242 {
    +
    243 return false;
    +
    244 }
    +
    245
    +
    247
    +
    258 template <class F, class R, class S>
    +
    259 template <class... Args>
    +
    +
    260 inline auto xgenerator<F, R, S>::operator()(Args... args) const -> const_reference
    +
    261 {
    +
    262 XTENSOR_TRY(check_index(shape(), args...));
    +
    263 adapt_index<0>(args...);
    +
    264 return m_f(args...);
    +
    265 }
    +
    +
    266
    +
    286 template <class F, class R, class S>
    +
    287 template <class... Args>
    +
    +
    288 inline auto xgenerator<F, R, S>::unchecked(Args... args) const -> const_reference
    +
    289 {
    +
    290 return m_f(args...);
    +
    291 }
    +
    +
    292
    +
    300 template <class F, class R, class S>
    +
    301 template <class It>
    +
    +
    302 inline auto xgenerator<F, R, S>::element(It first, It last) const -> const_reference
    +
    303 {
    + +
    305 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    306 return m_f.element(bounded_iterator(first, shape().cbegin()), bounded_iterator(last, shape().cend()));
    +
    307 }
    +
    +
    308
    +
    310
    +
    321 template <class F, class R, class S>
    +
    322 template <class O>
    +
    +
    323 inline bool xgenerator<F, R, S>::broadcast_shape(O& shape, bool) const
    +
    324 {
    +
    325 return xt::broadcast_shape(m_shape, shape);
    +
    326 }
    +
    +
    327
    +
    333 template <class F, class R, class S>
    +
    334 template <class O>
    +
    +
    335 inline bool xgenerator<F, R, S>::has_linear_assign(const O& /*strides*/) const noexcept
    +
    336 {
    +
    337 return false;
    +
    338 }
    +
    +
    339
    +
    341
    +
    342 template <class F, class R, class S>
    +
    343 template <class O>
    +
    344 inline auto xgenerator<F, R, S>::stepper_begin(const O& shape) const noexcept -> const_stepper
    +
    345 {
    +
    346 size_type offset = shape.size() - this->dimension();
    +
    347 return const_stepper(this, offset);
    +
    348 }
    +
    349
    +
    350 template <class F, class R, class S>
    +
    351 template <class O>
    +
    352 inline auto xgenerator<F, R, S>::stepper_end(const O& shape, layout_type) const noexcept -> const_stepper
    +
    353 {
    +
    354 size_type offset = shape.size() - this->dimension();
    +
    355 return const_stepper(this, offset, true);
    +
    356 }
    +
    357
    +
    358 template <class F, class R, class S>
    +
    359 template <class E, class, class>
    +
    360 inline void xgenerator<F, R, S>::assign_to(xexpression<E>& e) const noexcept
    +
    361 {
    +
    362 e.derived_cast().resize(m_shape);
    +
    363 m_f.assign_to(e);
    +
    364 }
    +
    365
    +
    366 template <class F, class R, class S>
    +
    367 inline auto xgenerator<F, R, S>::functor() const noexcept -> const functor_type&
    +
    368 {
    +
    369 return m_f;
    +
    370 }
    +
    371
    +
    372 template <class F, class R, class S>
    +
    373 template <class OR, class OF>
    +
    374 inline auto xgenerator<F, R, S>::build_generator(OF&& func) const -> rebind_t<OR, OF>
    +
    375 {
    +
    376 return rebind_t<OR, OF>(std::move(func), shape_type(m_shape));
    +
    377 }
    +
    378
    +
    389 template <class F, class R, class S>
    +
    390 template <class O>
    +
    +
    391 inline auto xgenerator<F, R, S>::reshape(O&& shape) const&
    +
    392 {
    +
    393 return reshape_view(*this, compute_shape(shape, xtl::is_signed<typename std::decay_t<O>::value_type>()));
    +
    394 }
    +
    +
    395
    +
    396 template <class F, class R, class S>
    +
    397 template <class O>
    +
    398 inline auto xgenerator<F, R, S>::reshape(O&& shape) &&
    +
    399 {
    +
    400 return reshape_view(
    +
    401 std::move(*this),
    +
    402 compute_shape(shape, xtl::is_signed<typename std::decay_t<O>::value_type>())
    +
    403 );
    +
    404 }
    +
    405
    +
    406 template <class F, class R, class S>
    +
    407 template <class T>
    +
    408 inline auto xgenerator<F, R, S>::reshape(std::initializer_list<T> shape) const&
    +
    409 {
    +
    410 return reshape_view(*this, compute_shape(shape));
    +
    411 }
    +
    412
    +
    413 template <class F, class R, class S>
    +
    414 template <class T>
    +
    415 inline auto xgenerator<F, R, S>::reshape(std::initializer_list<T> shape) &&
    +
    416 {
    +
    417 return reshape_view(std::move(*this), compute_shape(shape));
    +
    418 }
    +
    419
    +
    420 template <class F, class R, class S>
    +
    421 template <class O>
    +
    422 inline decltype(auto) xgenerator<F, R, S>::compute_shape(O&& shape, std::false_type) const
    +
    423 {
    +
    424 return xtl::forward_sequence<xt::dynamic_shape<typename shape_type::value_type>, O>(shape);
    +
    425 }
    +
    426
    +
    427 template <class F, class R, class S>
    +
    428 template <class O>
    +
    429 inline auto xgenerator<F, R, S>::compute_shape(O&& shape, std::true_type) const
    +
    430 {
    +
    431 using vtype = typename shape_type::value_type;
    +
    432 xt::dynamic_shape<vtype> sh(shape.size());
    +
    433 using int_type = typename std::decay_t<O>::value_type;
    +
    434 int_type accumulator(1);
    +
    435 std::size_t neg_idx = 0;
    +
    436 std::size_t i = 0;
    +
    437 for (std::size_t j = 0; j != shape.size(); ++j, ++i)
    +
    438 {
    +
    439 auto dim = shape[j];
    +
    440 if (dim < 0)
    +
    441 {
    +
    442 XTENSOR_ASSERT(dim == -1 && !neg_idx);
    +
    443 neg_idx = i;
    +
    444 }
    +
    445 else
    +
    446 {
    +
    447 sh[j] = static_cast<vtype>(dim);
    +
    448 }
    +
    449 accumulator *= dim;
    +
    450 }
    +
    451 if (accumulator < 0)
    +
    452 {
    +
    453 sh[neg_idx] = this->size()
    +
    454 / static_cast<size_type>(std::make_unsigned_t<int_type>(std::abs(accumulator)));
    +
    455 }
    +
    456 return sh;
    +
    457 }
    +
    458
    +
    459 template <class F, class R, class S>
    +
    460 template <class T>
    +
    461 inline auto xgenerator<F, R, S>::compute_shape(std::initializer_list<T> shape) const
    +
    462 {
    +
    463 using sh_type = xt::dynamic_shape<T>;
    +
    464 sh_type sh = xtl::make_sequence<sh_type>(shape.size());
    +
    465 std::copy(shape.begin(), shape.end(), sh.begin());
    +
    466 return compute_shape(std::move(sh), xtl::is_signed<T>());
    +
    467 }
    +
    468
    +
    469 template <class F, class R, class S>
    +
    470 template <std::size_t dim>
    +
    471 inline void xgenerator<F, R, S>::adapt_index() const
    +
    472 {
    +
    473 }
    +
    474
    +
    475 template <class F, class R, class S>
    +
    476 template <std::size_t dim, class I, class... Args>
    +
    477 inline void xgenerator<F, R, S>::adapt_index(I& arg, Args&... args) const
    +
    478 {
    +
    479 using tmp_value_type = typename decltype(m_shape)::value_type;
    +
    480 if (sizeof...(Args) + 1 > m_shape.size())
    +
    481 {
    +
    482 adapt_index<dim>(args...);
    +
    483 }
    +
    484 else
    +
    485 {
    +
    486 if (static_cast<tmp_value_type>(arg) >= m_shape[dim] && m_shape[dim] == 1)
    +
    487 {
    +
    488 arg = 0;
    +
    489 }
    +
    490 adapt_index<dim + 1>(args...);
    +
    491 }
    +
    492 }
    +
    493
    +
    494 namespace detail
    +
    495 {
    +
    496 template <class Functor, class I, std::size_t L>
    +
    497 inline auto make_xgenerator(Functor&& f, const I (&shape)[L]) noexcept
    +
    498 {
    +
    499 using shape_type = std::array<std::size_t, L>;
    +
    500 using type = xgenerator<Functor, typename Functor::value_type, shape_type>;
    +
    501 return type(std::forward<Functor>(f), xtl::forward_sequence<shape_type, decltype(shape)>(shape));
    +
    502 }
    +
    503
    +
    504 template <class Functor, class S>
    +
    505 inline auto make_xgenerator(Functor&& f, S&& shape) noexcept
    +
    506 {
    +
    507 using type = xgenerator<Functor, typename Functor::value_type, std::decay_t<S>>;
    +
    508 return type(std::forward<Functor>(f), std::forward<S>(shape));
    +
    509 }
    +
    510 }
    +
    511}
    +
    512
    +
    513#endif
    + + +
    Base class for implementation of common expression constant access methods.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for xexpressions.
    +
    Multidimensional function operating on indices.
    +
    xgenerator(Func &&f, const S &shape) noexcept
    Constructs an xgenerator applying the specified function over the given shape.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xgenerator.
    +
    auto reshape(O &&shape) const &
    Reshapes the generator and keeps old elements.
    +
    bool has_linear_assign(const O &) const noexcept
    Checks whether the xgenerator can be linearly assigned to an expression with the specified strides.
    +
    bool broadcast_shape(O &shape, bool reuse_cache=false) const
    Broadcast the shape of the function to the specified parameter.
    + + +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + +
    +
    + + + + diff --git a/xhistogram_8hpp_source.html b/xhistogram_8hpp_source.html new file mode 100644 index 000000000..cca7bdd1d --- /dev/null +++ b/xhistogram_8hpp_source.html @@ -0,0 +1,624 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xhistogram.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xhistogram.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    14#ifndef XTENSOR_HISTOGRAM_HPP
    +
    15#define XTENSOR_HISTOGRAM_HPP
    +
    16
    +
    17#include "xset_operation.hpp"
    +
    18#include "xsort.hpp"
    +
    19#include "xtensor.hpp"
    +
    20#include "xview.hpp"
    +
    21
    +
    22using namespace xt::placeholders;
    +
    23
    +
    24namespace xt
    +
    25{
    +
    35 template <class E1, class E2>
    +
    +
    36 inline auto digitize(E1&& data, E2&& bin_edges, bool right = false)
    +
    37 {
    +
    38 XTENSOR_ASSERT(bin_edges.dimension() == 1);
    +
    39 XTENSOR_ASSERT(bin_edges.size() >= 2);
    +
    40 XTENSOR_ASSERT(std::is_sorted(bin_edges.cbegin(), bin_edges.cend()));
    +
    41 XTENSOR_ASSERT(xt::amin(data)[0] >= bin_edges[0]);
    +
    42 XTENSOR_ASSERT(xt::amax(data)[0] <= bin_edges[bin_edges.size() - 1]);
    +
    43
    +
    44 return xt::searchsorted(std::forward<E2>(bin_edges), std::forward<E1>(data), right);
    +
    45 }
    +
    +
    46
    +
    47 namespace detail
    +
    48 {
    +
    49 template <class R = double, class E1, class E2, class E3>
    +
    50 inline auto histogram_imp(E1&& data, E2&& bin_edges, E3&& weights, bool density, bool equal_bins)
    +
    51 {
    +
    52 using size_type = common_size_type_t<std::decay_t<E1>, std::decay_t<E2>, std::decay_t<E3>>;
    +
    53 using value_type = typename std::decay_t<E3>::value_type;
    +
    54
    +
    55 XTENSOR_ASSERT(data.dimension() == 1);
    +
    56 XTENSOR_ASSERT(weights.dimension() == 1);
    +
    57 XTENSOR_ASSERT(bin_edges.dimension() == 1);
    +
    58 XTENSOR_ASSERT(weights.size() == data.size());
    +
    59 XTENSOR_ASSERT(bin_edges.size() >= 2);
    +
    60 XTENSOR_ASSERT(std::is_sorted(bin_edges.cbegin(), bin_edges.cend()));
    +
    61
    +
    62 size_t n_bins = bin_edges.size() - 1;
    +
    63 xt::xtensor<value_type, 1> count = xt::zeros<value_type>({n_bins});
    +
    64
    +
    65 if (equal_bins)
    +
    66 {
    +
    67 std::array<typename std::decay_t<E2>::value_type, 2> bounds = xt::minmax(bin_edges)();
    +
    68 auto left = static_cast<double>(bounds[0]);
    +
    69 auto right = static_cast<double>(bounds[1]);
    +
    70 double norm = 1. / (right - left);
    +
    71 for (size_t i = 0; i < data.size(); ++i)
    +
    72 {
    +
    73 auto v = static_cast<double>(data(i));
    +
    74 // left and right are not bounds of data
    +
    75 if (v >= left && v < right)
    +
    76 {
    +
    77 auto i_bin = static_cast<size_t>(static_cast<double>(n_bins) * (v - left) * norm);
    +
    78 count(i_bin) += weights(i);
    +
    79 }
    +
    80 else if (v == right)
    +
    81 {
    +
    82 count(n_bins - 1) += weights(i);
    +
    83 }
    +
    84 }
    +
    85 }
    +
    86 else
    +
    87 {
    +
    88 auto sorter = xt::argsort(data);
    +
    89
    +
    90 size_type ibin = 0;
    +
    91
    +
    92 for (auto& idx : sorter)
    +
    93 {
    +
    94 auto item = data[idx];
    +
    95
    +
    96 if (item < bin_edges[0])
    +
    97 {
    +
    98 continue;
    +
    99 }
    +
    100
    +
    101 if (item > bin_edges[n_bins])
    +
    102 {
    +
    103 break;
    +
    104 }
    +
    105
    +
    106 while (item >= bin_edges[ibin + 1] && ibin < n_bins - 1)
    +
    107 {
    +
    108 ++ibin;
    +
    109 }
    +
    110
    +
    111 count[ibin] += weights[idx];
    +
    112 }
    +
    113 }
    +
    114
    +
    115 xt::xtensor<R, 1> prob = xt::cast<R>(count);
    +
    116
    +
    117 if (density)
    +
    118 {
    +
    119 R n = static_cast<R>(data.size());
    +
    120 for (size_type i = 0; i < bin_edges.size() - 1; ++i)
    +
    121 {
    +
    122 prob[i] /= (static_cast<R>(bin_edges[i + 1] - bin_edges[i]) * n);
    +
    123 }
    +
    124 }
    +
    125
    +
    126 return prob;
    +
    127 }
    +
    128
    +
    129 } // detail
    +
    130
    +
    141 template <class R = double, class E1, class E2, class E3>
    +
    +
    142 inline auto histogram(E1&& data, E2&& bin_edges, E3&& weights, bool density = false)
    +
    143 {
    +
    144 return detail::histogram_imp<R>(
    +
    145 std::forward<E1>(data),
    +
    146 std::forward<E2>(bin_edges),
    +
    147 std::forward<E3>(weights),
    +
    148 density,
    +
    149 false
    +
    150 );
    +
    151 }
    +
    +
    152
    +
    162 template <class R = double, class E1, class E2>
    +
    +
    163 inline auto histogram(E1&& data, E2&& bin_edges, bool density = false)
    +
    164 {
    +
    165 using value_type = typename std::decay_t<E1>::value_type;
    +
    166
    +
    167 auto n = data.size();
    +
    168
    +
    169 return detail::histogram_imp<R>(
    +
    170 std::forward<E1>(data),
    +
    171 std::forward<E2>(bin_edges),
    +
    172 xt::ones<value_type>({n}),
    +
    173 density,
    +
    174 false
    +
    175 );
    +
    176 }
    +
    +
    177
    +
    187 template <class R = double, class E1>
    +
    +
    188 inline auto histogram(E1&& data, std::size_t bins = 10, bool density = false)
    +
    189 {
    +
    190 using value_type = typename std::decay_t<E1>::value_type;
    +
    191
    +
    192 auto n = data.size();
    +
    193
    +
    194 return detail::histogram_imp<R>(
    +
    195 std::forward<E1>(data),
    +
    196 histogram_bin_edges(data, xt::ones<value_type>({n}), bins),
    +
    197 xt::ones<value_type>({n}),
    +
    198 density,
    +
    199 true
    +
    200 );
    +
    201 }
    +
    +
    202
    +
    214 template <class R = double, class E1, class E2>
    +
    +
    215 inline auto histogram(E1&& data, std::size_t bins, E2 left, E2 right, bool density = false)
    +
    216 {
    +
    217 using value_type = typename std::decay_t<E1>::value_type;
    +
    218
    +
    219 auto n = data.size();
    +
    220
    +
    221 return detail::histogram_imp<R>(
    +
    222 std::forward<E1>(data),
    +
    223 histogram_bin_edges(data, left, right, bins),
    +
    224 xt::ones<value_type>({n}),
    +
    225 density,
    +
    226 true
    +
    227 );
    +
    228 }
    +
    +
    229
    +
    240 template <class R = double, class E1, class E2>
    +
    +
    241 inline auto histogram(E1&& data, std::size_t bins, E2&& weights, bool density = false)
    +
    242 {
    +
    243 return detail::histogram_imp<R>(
    +
    244 std::forward<E1>(data),
    +
    245 histogram_bin_edges(data, weights, bins),
    +
    246 std::forward<E2>(weights),
    +
    247 density,
    +
    248 true
    +
    249 );
    +
    250 }
    +
    +
    251
    +
    264 template <class R = double, class E1, class E2, class E3>
    +
    +
    265 inline auto histogram(E1&& data, std::size_t bins, E2&& weights, E3 left, E3 right, bool density = false)
    +
    266 {
    +
    267 return detail::histogram_imp<R>(
    +
    268 std::forward<E1>(data),
    +
    269 histogram_bin_edges(data, weights, left, right, bins),
    +
    270 std::forward<E2>(weights),
    +
    271 density,
    +
    272 true
    +
    273 );
    +
    274 }
    +
    +
    275
    +
    + +
    281 {
    +
    282 automatic,
    +
    283 linspace,
    +
    284 logspace,
    +
    285 uniform
    +
    286 };
    +
    +
    287
    +
    300 template <class E1, class E2, class E3>
    +
    + +
    302 E1&& data,
    +
    303 E2&& weights,
    +
    304 E3 left,
    +
    305 E3 right,
    +
    306 std::size_t bins = 10,
    +
    307 histogram_algorithm mode = histogram_algorithm::automatic
    +
    308 )
    +
    309 {
    +
    310 // counter and return type
    +
    311 using size_type = common_size_type_t<std::decay_t<E1>, std::decay_t<E2>>;
    +
    312 using value_type = typename std::decay_t<E1>::value_type;
    +
    313 using weights_type = typename std::decay_t<E2>::value_type;
    +
    314
    +
    315 // basic checks
    +
    316 // - rank
    +
    317 XTENSOR_ASSERT(data.dimension() == 1);
    +
    318 XTENSOR_ASSERT(weights.dimension() == 1);
    +
    319 // - size
    +
    320 XTENSOR_ASSERT(weights.size() == data.size());
    +
    321 // - bounds
    +
    322 XTENSOR_ASSERT(left <= right);
    +
    323 // - non-empty
    +
    324 XTENSOR_ASSERT(bins > std::size_t(0));
    +
    325
    +
    326 // act on different modes
    +
    327 switch (mode)
    +
    328 {
    +
    329 // bins of equal width
    +
    330 case histogram_algorithm::automatic:
    +
    331 {
    +
    332 xt::xtensor<value_type, 1> bin_edges = xt::linspace<value_type>(left, right, bins + 1);
    +
    333 return bin_edges;
    +
    334 }
    +
    335
    +
    336 // bins of equal width
    +
    337 case histogram_algorithm::linspace:
    +
    338 {
    +
    339 xt::xtensor<value_type, 1> bin_edges = xt::linspace<value_type>(left, right, bins + 1);
    +
    340 return bin_edges;
    +
    341 }
    +
    342
    +
    343 // bins of logarithmically increasing size
    +
    344 case histogram_algorithm::logspace:
    +
    345 {
    +
    346 using rhs_value_type = std::conditional_t<xtl::is_integral<value_type>::value, double, value_type>;
    +
    347
    +
    348 xtensor<value_type, 1> bin_edges = xt::cast<value_type>(
    +
    349 xt::logspace<rhs_value_type>(std::log10(left), std::log10(right), bins + 1)
    +
    350 );
    +
    351
    +
    352 // TODO: replace above with below after 'xsimd' fix
    +
    353 // xt::xtensor<value_type,1> bin_edges = xt::logspace<value_type>(
    +
    354 // std::log10(left), std::log10(right), bins+1);
    +
    355
    +
    356 return bin_edges;
    +
    357 }
    +
    358
    +
    359 // same amount of data in each bin
    +
    360 case histogram_algorithm::uniform:
    +
    361 {
    +
    362 // indices that sort "data"
    +
    363 auto sorter = xt::argsort(data);
    +
    364
    +
    365 // histogram: all of equal 'height'
    +
    366 // - height
    +
    367 weights_type w = xt::sum<weights_type>(weights)[0] / static_cast<weights_type>(bins);
    +
    368 // - apply to all bins
    +
    369 xt::xtensor<weights_type, 1> count = w * xt::ones<weights_type>({bins});
    +
    370
    +
    371 // take cumulative sum, to act as easy look-up
    +
    372 count = xt::cumsum(count);
    +
    373
    +
    374 // edges
    +
    375 // - allocate
    +
    376 std::vector<size_t> shape = {bins + 1};
    + +
    378 // - first/last edge
    +
    379 bin_edges[0] = left;
    +
    380 bin_edges[bins] = right;
    +
    381 // - cumulative weight
    +
    382 weights_type cum_weight = static_cast<weights_type>(0);
    +
    383 // - current bin
    +
    384 size_type ibin = 0;
    +
    385 // - loop to find interior bin-edges
    +
    386 for (size_type i = 0; i < weights.size(); ++i)
    +
    387 {
    +
    388 if (cum_weight >= count[ibin])
    +
    389 {
    +
    390 bin_edges[ibin + 1] = data[sorter[i]];
    +
    391 ++ibin;
    +
    392 }
    +
    393 cum_weight += weights[sorter[i]];
    +
    394 }
    +
    395 return bin_edges;
    +
    396 }
    +
    397
    +
    398 // bins of equal width
    +
    399 default:
    +
    400 {
    +
    401 xt::xtensor<value_type, 1> bin_edges = xt::linspace<value_type>(left, right, bins + 1);
    +
    402 return bin_edges;
    +
    403 }
    +
    404 }
    +
    405 }
    +
    +
    406
    +
    417 template <class E1, class E2>
    +
    + +
    419 E1&& data,
    +
    420 E2&& weights,
    +
    421 std::size_t bins = 10,
    +
    422 histogram_algorithm mode = histogram_algorithm::automatic
    +
    423 )
    +
    424 {
    +
    425 using value_type = typename std::decay_t<E1>::value_type;
    +
    426 std::array<value_type, 2> left_right;
    +
    427 left_right = xt::minmax(data)();
    +
    428
    +
    429 return histogram_bin_edges(
    +
    430 std::forward<E1>(data),
    +
    431 std::forward<E2>(weights),
    +
    432 left_right[0],
    +
    433 left_right[1],
    +
    434 bins,
    +
    435 mode
    +
    436 );
    +
    437 }
    +
    +
    438
    +
    448 template <class E1>
    +
    449 inline auto
    +
    +
    450 histogram_bin_edges(E1&& data, std::size_t bins = 10, histogram_algorithm mode = histogram_algorithm::automatic)
    +
    451 {
    +
    452 using value_type = typename std::decay_t<E1>::value_type;
    +
    453
    +
    454 auto n = data.size();
    +
    455 std::array<value_type, 2> left_right;
    +
    456 left_right = xt::minmax(data)();
    +
    457
    +
    458 return histogram_bin_edges(
    +
    459 std::forward<E1>(data),
    +
    460 xt::ones<value_type>({n}),
    +
    461 left_right[0],
    +
    462 left_right[1],
    +
    463 bins,
    +
    464 mode
    +
    465 );
    +
    466 }
    +
    +
    467
    +
    479 template <class E1, class E2>
    +
    + +
    481 E1&& data,
    +
    482 E2 left,
    +
    483 E2 right,
    +
    484 std::size_t bins = 10,
    +
    485 histogram_algorithm mode = histogram_algorithm::automatic
    +
    486 )
    +
    487 {
    +
    488 using value_type = typename std::decay_t<E1>::value_type;
    +
    489
    +
    490 auto n = data.size();
    +
    491
    +
    492 return histogram_bin_edges(std::forward<E1>(data), xt::ones<value_type>({n}), left, right, bins, mode);
    +
    493 }
    +
    +
    494
    +
    512 template <class E1, class E2, XTL_REQUIRES(is_xexpression<std::decay_t<E2>>)>
    +
    +
    513 inline auto bincount(E1&& data, E2&& weights, std::size_t minlength = 0)
    +
    514 {
    +
    515 using result_value_type = typename std::decay_t<E2>::value_type;
    +
    516 using input_value_type = typename std::decay_t<E1>::value_type;
    +
    517 using size_type = typename std::decay_t<E1>::size_type;
    +
    518
    +
    519 static_assert(
    +
    520 xtl::is_integral<typename std::decay_t<E1>::value_type>::value,
    +
    521 "Bincount data has to be integral type."
    +
    522 );
    +
    523 XTENSOR_ASSERT(data.dimension() == 1);
    +
    524 XTENSOR_ASSERT(weights.dimension() == 1);
    +
    525
    +
    526 std::array<input_value_type, 2> left_right;
    +
    527 left_right = xt::minmax(data)();
    +
    528
    +
    529 if (left_right[0] < input_value_type(0))
    +
    530 {
    +
    531 XTENSOR_THROW(std::runtime_error, "Data argument for bincount can only contain positive integers!");
    +
    532 }
    +
    533
    +
    534 xt::xtensor<result_value_type, 1> res = xt::zeros<result_value_type>(
    +
    535 {(std::max)(minlength, std::size_t(left_right[1] + 1))}
    +
    536 );
    +
    537
    +
    538 for (size_type i = 0; i < data.size(); ++i)
    +
    539 {
    +
    540 res(data(i)) += weights(i);
    +
    541 }
    +
    542
    +
    543 return res;
    +
    544 }
    +
    +
    545
    +
    546 template <class E1>
    +
    547 inline auto bincount(E1&& data, std::size_t minlength = 0)
    +
    548 {
    +
    549 return bincount(
    +
    550 std::forward<E1>(data),
    +
    551 xt::ones<typename std::decay_t<E1>::value_type>(data.shape()),
    +
    552 minlength
    +
    553 );
    +
    554 }
    +
    555
    +
    565 template <class E>
    +
    +
    566 inline xt::xtensor<size_t, 1> bin_items(size_t N, E&& weights)
    +
    567 {
    +
    568 if (weights.size() <= std::size_t(1))
    +
    569 {
    +
    570 xt::xtensor<size_t, 1> n = N * xt::ones<size_t>({1});
    +
    571 return n;
    +
    572 }
    +
    573
    +
    574#ifdef XTENSOR_ENABLE_ASSERT
    +
    575 using value_type = typename std::decay_t<E>::value_type;
    +
    576
    +
    577 XTENSOR_ASSERT(xt::all(weights >= static_cast<value_type>(0)));
    +
    578 XTENSOR_ASSERT(xt::sum(weights)() > static_cast<value_type>(0));
    +
    579#endif
    +
    580
    +
    581 xt::xtensor<double, 1> P = xt::cast<double>(weights) / static_cast<double>(xt::sum(weights)());
    +
    582 xt::xtensor<size_t, 1> n = xt::ceil(static_cast<double>(N) * P);
    +
    583
    +
    584 if (xt::sum(n)() == N)
    +
    585 {
    +
    586 return n;
    +
    587 }
    +
    588
    +
    589 xt::xtensor<size_t, 1> d = xt::zeros<size_t>(P.shape());
    +
    590 xt::xtensor<size_t, 1> sorter = xt::argsort(P);
    +
    591 sorter = xt::view(sorter, xt::range(P.size(), _, -1));
    +
    592 sorter = xt::view(sorter, xt::range(0, xt::sum(n)(0) - N));
    +
    593 xt::view(d, xt::keep(sorter)) = 1;
    +
    594 n -= d;
    +
    595
    +
    596 return n;
    +
    597 }
    +
    +
    598
    +
    +
    608 inline xt::xtensor<size_t, 1> bin_items(size_t N, size_t bins)
    +
    609 {
    +
    610 return bin_items(N, xt::ones<double>({bins}));
    +
    611 }
    +
    +
    612}
    +
    613
    +
    614#endif
    +
    size_type size() const noexcept
    Returns the number of element in the container.
    +
    constexpr const inner_shape_type & shape() const noexcept
    Returns the shape of the container.
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    auto cumsum(E &&e, std::ptrdiff_t axis)
    Cumulative sum.
    Definition xmath.hpp:2285
    +
    auto amax(E &&e, X &&axes, EVS es=EVS())
    Maximum element along given axis.
    Definition xmath.hpp:781
    +
    auto amin(E &&e, X &&axes, EVS es=EVS())
    Minimum element along given axis.
    Definition xmath.hpp:799
    +
    auto ceil(E &&e) noexcept -> detail::xfunction_type_t< math::ceil_fun, E >
    ceil function.
    Definition xmath.hpp:1576
    +
    auto sum(E &&e, X &&axes, EVS es=EVS())
    Sum of elements over given axes.
    Definition xmath.hpp:1840
    +
    auto minmax(E &&e, EVS es=EVS())
    Minimum and maximum among the elements of an array or expression.
    Definition xmath.hpp:2233
    +
    auto norm(E &&e) noexcept
    Calculates the squared magnitude elementwise for the complex numbers in e.
    Definition xcomplex.hpp:257
    +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto ones(S shape) noexcept
    Returns an xexpression containing ones of the specified shape.
    Definition xbuilder.hpp:46
    +
    auto histogram_bin_edges(E1 &&data, E2 &&weights, E3 left, E3 right, std::size_t bins=10, histogram_algorithm mode=histogram_algorithm::automatic)
    Compute the bin-edges of a histogram of a set of data using different algorithms.
    +
    xt::xtensor< size_t, 1 > bin_items(size_t N, E &&weights)
    Get the number of items in each bin, given the fraction of items per bin.
    +
    auto searchsorted(E1 &&a, E2 &&v, bool right=true)
    Find indices where elements should be inserted to maintain order.
    +
    auto digitize(E1 &&data, E2 &&bin_edges, bool right=false)
    Return the indices of the bins to which each value in input array belongs.
    +
    auto linspace(T start, T stop, std::size_t num_samples=50, bool endpoint=true) noexcept
    Generates num_samples evenly spaced numbers over given interval.
    Definition xbuilder.hpp:460
    +
    auto histogram(E1 &&data, E2 &&bin_edges, E3 &&weights, bool density=false)
    Compute the histogram of a set of data.
    +
    detail::disable_integral_keep< T > keep(T &&indices)
    Create a non-contigous slice from a container of indices to keep.
    Definition xslice.hpp:405
    +
    histogram_algorithm
    Defines different algorithms to be used in "histogram_bin_edges".
    +
    auto logspace(T start, T stop, std::size_t num_samples, T base=10, bool endpoint=true) noexcept
    Generates num_samples numbers evenly spaced on a log scale over given interval.
    Definition xbuilder.hpp:481
    +
    auto bincount(E1 &&data, E2 &&weights, std::size_t minlength=0)
    Count number of occurrences of each value in array of non-negative ints.
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    +
    +
    + + + + diff --git a/xindex__view_8hpp_source.html b/xindex__view_8hpp_source.html new file mode 100644 index 000000000..76adbb8cf --- /dev/null +++ b/xindex__view_8hpp_source.html @@ -0,0 +1,816 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xindex_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xindex_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_INDEX_VIEW_HPP
    +
    11#define XTENSOR_INDEX_VIEW_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <tuple>
    +
    16#include <type_traits>
    +
    17#include <utility>
    +
    18
    +
    19#include "xexpression.hpp"
    +
    20#include "xiterable.hpp"
    +
    21#include "xoperation.hpp"
    +
    22#include "xsemantic.hpp"
    +
    23#include "xstrides.hpp"
    +
    24#include "xutils.hpp"
    +
    25
    +
    26namespace xt
    +
    27{
    +
    28
    +
    29 /*************************
    +
    30 * xindex_view extension *
    +
    31 *************************/
    +
    32
    +
    33 namespace extension
    +
    34 {
    +
    35 template <class Tag, class CT, class I>
    + +
    37
    +
    38 template <class CT, class I>
    +
    + +
    40 {
    + +
    42 };
    +
    +
    43
    +
    44 template <class CT, class I>
    +
    +
    45 struct xindex_view_base : xindex_view_base_impl<xexpression_tag_t<CT>, CT, I>
    +
    46 {
    +
    47 };
    +
    +
    48
    +
    49 template <class CT, class I>
    +
    50 using xindex_view_base_t = typename xindex_view_base<CT, I>::type;
    +
    51 }
    +
    52
    +
    53 /***************
    +
    54 * xindex_view *
    +
    55 ***************/
    +
    56
    +
    57 template <class CT, class I>
    +
    58 class xindex_view;
    +
    59
    +
    60 template <class CT, class I>
    +
    + +
    62 {
    +
    63 using xexpression_type = std::decay_t<CT>;
    + +
    65 };
    +
    +
    66
    +
    67 template <class CT, class I>
    +
    + +
    69 {
    +
    70 using inner_shape_type = std::array<std::size_t, 1>;
    + + +
    73 };
    +
    +
    74
    +
    89 template <class CT, class I>
    +
    +
    90 class xindex_view : public xview_semantic<xindex_view<CT, I>>,
    +
    91 public xiterable<xindex_view<CT, I>>,
    +
    92 public extension::xindex_view_base_t<CT, I>
    +
    93 {
    +
    94 public:
    +
    95
    + +
    97 using xexpression_type = std::decay_t<CT>;
    + +
    99
    +
    100 using extension_base = extension::xindex_view_base_t<CT, I>;
    +
    101 using expression_tag = typename extension_base::expression_tag;
    +
    102
    +
    103 using value_type = typename xexpression_type::value_type;
    +
    104 using reference = inner_reference_t<CT>;
    +
    105 using const_reference = typename xexpression_type::const_reference;
    +
    106 using pointer = typename xexpression_type::pointer;
    +
    107 using const_pointer = typename xexpression_type::const_pointer;
    +
    108 using size_type = typename xexpression_type::size_type;
    +
    109 using difference_type = typename xexpression_type::difference_type;
    +
    110
    + +
    112 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    113 using shape_type = inner_shape_type;
    +
    114
    +
    115 using indices_type = I;
    +
    116
    +
    117 using stepper = typename iterable_base::stepper;
    +
    118 using const_stepper = typename iterable_base::const_stepper;
    +
    119
    +
    120 using temporary_type = typename xcontainer_inner_types<self_type>::temporary_type;
    +
    121 using base_index_type = xindex_type_t<shape_type>;
    +
    122
    +
    123 using bool_load_type = typename xexpression_type::bool_load_type;
    +
    124
    +
    125 static constexpr layout_type static_layout = layout_type::dynamic;
    +
    126 static constexpr bool contiguous_layout = false;
    +
    127
    +
    128 template <class CTA, class I2>
    +
    129 xindex_view(CTA&& e, I2&& indices) noexcept;
    +
    130
    +
    131 template <class E>
    +
    132 self_type& operator=(const xexpression<E>& e);
    +
    133
    +
    134 template <class E>
    +
    135 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    136
    +
    137 size_type size() const noexcept;
    +
    138 size_type dimension() const noexcept;
    +
    139 const inner_shape_type& shape() const noexcept;
    +
    140 size_type shape(size_type index) const;
    +
    141 layout_type layout() const noexcept;
    +
    142 bool is_contiguous() const noexcept;
    +
    143
    +
    144 template <class T>
    +
    145 void fill(const T& value);
    +
    146
    +
    147 reference operator()(size_type idx = size_type(0));
    +
    148 template <class... Args>
    +
    149 reference operator()(size_type idx0, size_type idx1, Args... args);
    +
    150 reference unchecked(size_type idx);
    +
    151 template <class S>
    +
    152 disable_integral_t<S, reference> operator[](const S& index);
    +
    153 template <class OI>
    +
    154 reference operator[](std::initializer_list<OI> index);
    +
    155 reference operator[](size_type i);
    +
    156
    +
    157 template <class It>
    +
    158 reference element(It first, It last);
    +
    159
    +
    160 const_reference operator()(size_type idx = size_type(0)) const;
    +
    161 template <class... Args>
    +
    162 const_reference operator()(size_type idx0, size_type idx1, Args... args) const;
    +
    163 const_reference unchecked(size_type idx) const;
    +
    164 template <class S>
    +
    165 disable_integral_t<S, const_reference> operator[](const S& index) const;
    +
    166 template <class OI>
    +
    167 const_reference operator[](std::initializer_list<OI> index) const;
    +
    168 const_reference operator[](size_type i) const;
    +
    169
    +
    170 template <class It>
    +
    171 const_reference element(It first, It last) const;
    +
    172
    +
    173 xexpression_type& expression() noexcept;
    +
    174 const xexpression_type& expression() const noexcept;
    +
    175
    +
    176 template <class O>
    +
    177 bool broadcast_shape(O& shape, bool reuse_cache = false) const;
    +
    178
    +
    179 template <class O>
    +
    180 bool has_linear_assign(const O& /*strides*/) const noexcept;
    +
    181
    +
    182 template <class ST>
    +
    183 stepper stepper_begin(const ST& shape);
    +
    184 template <class ST>
    +
    185 stepper stepper_end(const ST& shape, layout_type);
    +
    186
    +
    187 template <class ST>
    +
    188 const_stepper stepper_begin(const ST& shape) const;
    +
    189 template <class ST>
    +
    190 const_stepper stepper_end(const ST& shape, layout_type) const;
    +
    191
    +
    192 template <class E>
    + +
    194
    +
    195 template <class E>
    +
    196 rebind_t<E> build_index_view(E&& e) const;
    +
    197
    +
    198 private:
    +
    199
    +
    200 CT m_e;
    +
    201 const indices_type m_indices;
    +
    202 const inner_shape_type m_shape;
    +
    203
    +
    204 void assign_temporary_impl(temporary_type&& tmp);
    +
    205
    +
    206 friend class xview_semantic<xindex_view<CT, I>>;
    +
    207 };
    +
    +
    208
    +
    209 /***************
    +
    210 * xfiltration *
    +
    211 ***************/
    +
    212
    +
    231 template <class ECT, class CCT>
    +
    + +
    233 {
    +
    234 public:
    +
    235
    + +
    237 using xexpression_type = std::decay_t<ECT>;
    +
    238 using const_reference = typename xexpression_type::const_reference;
    +
    239
    +
    240 template <class ECTA, class CCTA>
    +
    241 xfiltration(ECTA&& e, CCTA&& condition);
    +
    242
    +
    243 template <class E>
    +
    244 disable_xexpression<E, self_type&> operator=(const E&);
    +
    245
    +
    246 template <class E>
    +
    247 disable_xexpression<E, self_type&> operator+=(const E&);
    +
    248
    +
    249 template <class E>
    +
    250 disable_xexpression<E, self_type&> operator-=(const E&);
    +
    251
    +
    252 template <class E>
    +
    253 disable_xexpression<E, self_type&> operator*=(const E&);
    +
    254
    +
    255 template <class E>
    +
    256 disable_xexpression<E, self_type&> operator/=(const E&);
    +
    257
    +
    258 template <class E>
    +
    259 disable_xexpression<E, self_type&> operator%=(const E&);
    +
    260
    +
    261 private:
    +
    262
    +
    263 template <class F>
    +
    264 self_type& apply(F&& func);
    +
    265
    +
    266 ECT m_e;
    +
    267 CCT m_condition;
    +
    268 };
    +
    +
    269
    +
    270 /******************************
    +
    271 * xindex_view implementation *
    +
    272 ******************************/
    +
    273
    +
    285 template <class CT, class I>
    +
    286 template <class CTA, class I2>
    +
    +
    287 inline xindex_view<CT, I>::xindex_view(CTA&& e, I2&& indices) noexcept
    +
    288 : m_e(std::forward<CTA>(e))
    +
    289 , m_indices(std::forward<I2>(indices))
    +
    290 , m_shape({m_indices.size()})
    +
    291 {
    +
    292 }
    +
    +
    293
    +
    295
    +
    303 template <class CT, class I>
    +
    304 template <class E>
    +
    + +
    306 {
    +
    307 return semantic_base::operator=(e);
    +
    308 }
    +
    +
    309
    +
    311
    +
    312 template <class CT, class I>
    +
    313 template <class E>
    +
    314 inline auto xindex_view<CT, I>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    315 {
    +
    316 std::fill(this->begin(), this->end(), e);
    +
    317 return *this;
    +
    318 }
    +
    319
    +
    320 template <class CT, class I>
    +
    321 inline void xindex_view<CT, I>::assign_temporary_impl(temporary_type&& tmp)
    +
    322 {
    +
    323 std::copy(tmp.cbegin(), tmp.cend(), this->begin());
    +
    324 }
    +
    325
    +
    333 template <class CT, class I>
    +
    +
    334 inline auto xindex_view<CT, I>::size() const noexcept -> size_type
    +
    335 {
    +
    336 return compute_size(shape());
    +
    337 }
    +
    +
    338
    +
    342 template <class CT, class I>
    +
    +
    343 inline auto xindex_view<CT, I>::dimension() const noexcept -> size_type
    +
    344 {
    +
    345 return 1;
    +
    346 }
    +
    +
    347
    +
    351 template <class CT, class I>
    +
    +
    352 inline auto xindex_view<CT, I>::shape() const noexcept -> const inner_shape_type&
    +
    353 {
    +
    354 return m_shape;
    +
    355 }
    +
    +
    356
    +
    360 template <class CT, class I>
    +
    +
    361 inline auto xindex_view<CT, I>::shape(size_type i) const -> size_type
    +
    362 {
    +
    363 return m_shape[i];
    +
    364 }
    +
    +
    365
    +
    366 template <class CT, class I>
    +
    367 inline layout_type xindex_view<CT, I>::layout() const noexcept
    +
    368 {
    +
    369 return static_layout;
    +
    370 }
    +
    371
    +
    372 template <class CT, class I>
    +
    373 inline bool xindex_view<CT, I>::is_contiguous() const noexcept
    +
    374 {
    +
    375 return false;
    +
    376 }
    +
    377
    +
    379
    +
    384
    +
    389 template <class CT, class I>
    +
    390 template <class T>
    +
    +
    391 inline void xindex_view<CT, I>::fill(const T& value)
    +
    392 {
    +
    393 std::fill(this->begin(), this->end(), value);
    +
    394 }
    +
    +
    395
    +
    401 template <class CT, class I>
    +
    +
    402 inline auto xindex_view<CT, I>::operator()(size_type idx) -> reference
    +
    403 {
    +
    404 return m_e[m_indices[idx]];
    +
    405 }
    +
    +
    406
    +
    407 template <class CT, class I>
    +
    408 template <class... Args>
    +
    409 inline auto xindex_view<CT, I>::operator()(size_type, size_type idx1, Args... args) -> reference
    +
    410 {
    +
    411 return this->operator()(idx1, static_cast<size_type>(args)...);
    +
    412 }
    +
    413
    +
    418 template <class CT, class I>
    +
    +
    419 inline auto xindex_view<CT, I>::unchecked(size_type idx) -> reference
    +
    420 {
    +
    421 return this->operator()(idx);
    +
    422 }
    +
    +
    423
    +
    429 template <class CT, class I>
    +
    +
    430 inline auto xindex_view<CT, I>::operator()(size_type idx) const -> const_reference
    +
    431 {
    +
    432 return m_e[m_indices[idx]];
    +
    433 }
    +
    +
    434
    +
    435 template <class CT, class I>
    +
    436 template <class... Args>
    +
    437 inline auto xindex_view<CT, I>::operator()(size_type, size_type idx1, Args... args) const -> const_reference
    +
    438 {
    +
    439 return this->operator()(idx1, args...);
    +
    440 }
    +
    441
    +
    446 template <class CT, class I>
    +
    +
    447 inline auto xindex_view<CT, I>::unchecked(size_type idx) const -> const_reference
    +
    448 {
    +
    449 return this->operator()(idx);
    +
    450 }
    +
    +
    451
    +
    458 template <class CT, class I>
    +
    459 template <class S>
    +
    +
    460 inline auto xindex_view<CT, I>::operator[](const S& index) -> disable_integral_t<S, reference>
    +
    461 {
    +
    462 return m_e[m_indices[index[0]]];
    +
    463 }
    +
    +
    464
    +
    465 template <class CT, class I>
    +
    466 template <class OI>
    +
    467 inline auto xindex_view<CT, I>::operator[](std::initializer_list<OI> index) -> reference
    +
    468 {
    +
    469 return m_e[m_indices[*(index.begin())]];
    +
    470 }
    +
    471
    +
    472 template <class CT, class I>
    +
    473 inline auto xindex_view<CT, I>::operator[](size_type i) -> reference
    +
    474 {
    +
    475 return operator()(i);
    +
    476 }
    +
    477
    +
    484 template <class CT, class I>
    +
    485 template <class S>
    +
    +
    486 inline auto xindex_view<CT, I>::operator[](const S& index) const -> disable_integral_t<S, const_reference>
    +
    487 {
    +
    488 return m_e[m_indices[index[0]]];
    +
    489 }
    +
    +
    490
    +
    491 template <class CT, class I>
    +
    492 template <class OI>
    +
    493 inline auto xindex_view<CT, I>::operator[](std::initializer_list<OI> index) const -> const_reference
    +
    494 {
    +
    495 return m_e[m_indices[*(index.begin())]];
    +
    496 }
    +
    497
    +
    498 template <class CT, class I>
    +
    499 inline auto xindex_view<CT, I>::operator[](size_type i) const -> const_reference
    +
    500 {
    +
    501 return operator()(i);
    +
    502 }
    +
    503
    +
    509 template <class CT, class I>
    +
    510 template <class It>
    +
    +
    511 inline auto xindex_view<CT, I>::element(It first, It /*last*/) -> reference
    +
    512 {
    +
    513 return m_e[m_indices[(*first)]];
    +
    514 }
    +
    +
    515
    +
    521 template <class CT, class I>
    +
    522 template <class It>
    +
    +
    523 inline auto xindex_view<CT, I>::element(It first, It /*last*/) const -> const_reference
    +
    524 {
    +
    525 return m_e[m_indices[(*first)]];
    +
    526 }
    +
    +
    527
    +
    531 template <class CT, class I>
    +
    +
    532 inline auto xindex_view<CT, I>::expression() noexcept -> xexpression_type&
    +
    533 {
    +
    534 return m_e;
    +
    535 }
    +
    +
    536
    +
    540 template <class CT, class I>
    +
    +
    541 inline auto xindex_view<CT, I>::expression() const noexcept -> const xexpression_type&
    +
    542 {
    +
    543 return m_e;
    +
    544 }
    +
    +
    545
    +
    547
    +
    558 template <class CT, class I>
    +
    559 template <class O>
    +
    +
    560 inline bool xindex_view<CT, I>::broadcast_shape(O& shape, bool) const
    +
    561 {
    +
    562 return xt::broadcast_shape(m_shape, shape);
    +
    563 }
    +
    +
    564
    +
    570 template <class CT, class I>
    +
    571 template <class O>
    +
    +
    572 inline bool xindex_view<CT, I>::has_linear_assign(const O& /*strides*/) const noexcept
    +
    573 {
    +
    574 return false;
    +
    575 }
    +
    +
    576
    +
    578
    +
    579 /***************
    +
    580 * stepper api *
    +
    581 ***************/
    +
    582
    +
    583 template <class CT, class I>
    +
    584 template <class ST>
    +
    585 inline auto xindex_view<CT, I>::stepper_begin(const ST& shape) -> stepper
    +
    586 {
    +
    587 size_type offset = shape.size() - dimension();
    +
    588 return stepper(this, offset);
    +
    589 }
    +
    590
    +
    591 template <class CT, class I>
    +
    592 template <class ST>
    +
    593 inline auto xindex_view<CT, I>::stepper_end(const ST& shape, layout_type) -> stepper
    +
    594 {
    +
    595 size_type offset = shape.size() - dimension();
    +
    596 return stepper(this, offset, true);
    +
    597 }
    +
    598
    +
    599 template <class CT, class I>
    +
    600 template <class ST>
    +
    601 inline auto xindex_view<CT, I>::stepper_begin(const ST& shape) const -> const_stepper
    +
    602 {
    +
    603 size_type offset = shape.size() - dimension();
    +
    604 return const_stepper(this, offset);
    +
    605 }
    +
    606
    +
    607 template <class CT, class I>
    +
    608 template <class ST>
    +
    609 inline auto xindex_view<CT, I>::stepper_end(const ST& shape, layout_type) const -> const_stepper
    +
    610 {
    +
    611 size_type offset = shape.size() - dimension();
    +
    612 return const_stepper(this, offset, true);
    +
    613 }
    +
    614
    +
    615 template <class CT, class I>
    +
    616 template <class E>
    +
    617 inline auto xindex_view<CT, I>::build_index_view(E&& e) const -> rebind_t<E>
    +
    618 {
    +
    619 return rebind_t<E>(std::forward<E>(e), indices_type(m_indices));
    +
    620 }
    +
    621
    +
    622 /******************************
    +
    623 * xfiltration implementation *
    +
    624 ******************************/
    +
    625
    +
    637 template <class ECT, class CCT>
    +
    638 template <class ECTA, class CCTA>
    +
    +
    639 inline xfiltration<ECT, CCT>::xfiltration(ECTA&& e, CCTA&& condition)
    +
    640 : m_e(std::forward<ECTA>(e))
    +
    641 , m_condition(std::forward<CCTA>(condition))
    +
    642 {
    +
    643 }
    +
    +
    644
    +
    646
    +
    656 template <class ECT, class CCT>
    +
    657 template <class E>
    +
    +
    658 inline auto xfiltration<ECT, CCT>::operator=(const E& e) -> disable_xexpression<E, self_type&>
    +
    659 {
    +
    660 return apply(
    +
    661 [this, &e](const_reference v, bool cond)
    +
    662 {
    +
    663 return cond ? e : v;
    +
    664 }
    +
    665 );
    +
    666 }
    +
    +
    667
    +
    669
    +
    679 template <class ECT, class CCT>
    +
    680 template <class E>
    +
    +
    681 inline auto xfiltration<ECT, CCT>::operator+=(const E& e) -> disable_xexpression<E, self_type&>
    +
    682 {
    +
    683 return apply(
    +
    684 [&e](const_reference v, bool cond)
    +
    685 {
    +
    686 return cond ? v + e : v;
    +
    687 }
    +
    688 );
    +
    689 }
    +
    +
    690
    +
    696 template <class ECT, class CCT>
    +
    697 template <class E>
    +
    +
    698 inline auto xfiltration<ECT, CCT>::operator-=(const E& e) -> disable_xexpression<E, self_type&>
    +
    699 {
    +
    700 return apply(
    +
    701 [&e](const_reference v, bool cond)
    +
    702 {
    +
    703 return cond ? v - e : v;
    +
    704 }
    +
    705 );
    +
    706 }
    +
    +
    707
    +
    713 template <class ECT, class CCT>
    +
    714 template <class E>
    +
    +
    715 inline auto xfiltration<ECT, CCT>::operator*=(const E& e) -> disable_xexpression<E, self_type&>
    +
    716 {
    +
    717 return apply(
    +
    718 [&e](const_reference v, bool cond)
    +
    719 {
    +
    720 return cond ? v * e : v;
    +
    721 }
    +
    722 );
    +
    723 }
    +
    +
    724
    +
    730 template <class ECT, class CCT>
    +
    731 template <class E>
    +
    +
    732 inline auto xfiltration<ECT, CCT>::operator/=(const E& e) -> disable_xexpression<E, self_type&>
    +
    733 {
    +
    734 return apply(
    +
    735 [&e](const_reference v, bool cond)
    +
    736 {
    +
    737 return cond ? v / e : v;
    +
    738 }
    +
    739 );
    +
    740 }
    +
    +
    741
    +
    747 template <class ECT, class CCT>
    +
    748 template <class E>
    +
    +
    749 inline auto xfiltration<ECT, CCT>::operator%=(const E& e) -> disable_xexpression<E, self_type&>
    +
    750 {
    +
    751 return apply(
    +
    752 [&e](const_reference v, bool cond)
    +
    753 {
    +
    754 return cond ? v % e : v;
    +
    755 }
    +
    756 );
    +
    757 }
    +
    +
    758
    +
    759 template <class ECT, class CCT>
    +
    760 template <class F>
    +
    761 inline auto xfiltration<ECT, CCT>::apply(F&& func) -> self_type&
    +
    762 {
    +
    763 std::transform(m_e.cbegin(), m_e.cend(), m_condition.cbegin(), m_e.begin(), func);
    +
    764 return *this;
    +
    765 }
    +
    766
    +
    783 template <class E, class I>
    +
    +
    784 inline auto index_view(E&& e, I&& indices) noexcept
    +
    785 {
    +
    786 using view_type = xindex_view<xclosure_t<E>, std::decay_t<I>>;
    +
    787 return view_type(std::forward<E>(e), std::forward<I>(indices));
    +
    788 }
    +
    +
    789
    +
    790 template <class E, std::size_t L>
    +
    791 inline auto index_view(E&& e, const xindex (&indices)[L]) noexcept
    +
    792 {
    +
    793 using view_type = xindex_view<xclosure_t<E>, std::array<xindex, L>>;
    +
    794 return view_type(std::forward<E>(e), to_array(indices));
    +
    795 }
    +
    796
    +
    818 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E, class O>
    +
    +
    819 inline auto filter(E&& e, O&& condition) noexcept
    +
    820 {
    +
    821 auto indices = argwhere<L>(std::forward<O>(condition));
    +
    822 using view_type = xindex_view<xclosure_t<E>, decltype(indices)>;
    +
    823 return view_type(std::forward<E>(e), std::move(indices));
    +
    824 }
    +
    +
    825
    +
    843 template <class E, class C>
    +
    +
    844 inline auto filtration(E&& e, C&& condition) noexcept
    +
    845 {
    +
    846 using filtration_type = xfiltration<xclosure_t<E>, xclosure_t<C>>;
    +
    847 return filtration_type(std::forward<E>(e), std::forward<C>(condition));
    +
    848 }
    +
    +
    849}
    +
    850
    +
    851#endif
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Base class for xexpressions.
    +
    Filter of a xexpression for fast scalar assign.
    +
    xfiltration(ECTA &&e, CCTA &&condition)
    Constructs a xfiltration on the given expression e, selecting the elements matching the specified con...
    +
    View of an xexpression from vector of indices.
    +
    xindex_view(CTA &&e, I2 &&indices) noexcept
    Constructs an xindex_view, selecting the indices specified by indices.
    +
    bool has_linear_assign(const O &) const noexcept
    Checks whether the xindex_view can be linearly assigned to an expression with the specified strides.
    +
    size_type size() const noexcept
    Returns the size of the xindex_view.
    +
    reference unchecked(size_type idx)
    Returns a reference to the element at the specified position in the xindex_view.
    +
    reference operator()(size_type idx=size_type(0))
    Returns a reference to the element at the specified position in the xindex_view.
    +
    xexpression_type & expression() noexcept
    Returns a reference to the underlying expression of the view.
    +
    bool broadcast_shape(O &shape, bool reuse_cache=false) const
    Broadcast the shape of the xindex_view to the specified parameter.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xindex_view.
    +
    void fill(const T &value)
    Fills the view with the given value.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the xindex_view.
    + +
    Base class for multidimensional iterable expressions.
    +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + +
    auto filtration(E &&e, C &&condition) noexcept
    creates a filtration of e filtered by condition.
    +
    auto index_view(E &&e, I &&indices) noexcept
    creates an indexview from a container of indices.
    +
    auto filter(E &&e, O &&condition) noexcept
    creates a view into e filtered by condition.
    + + + + + + +
    +
    + + + + diff --git a/xinfo_8hpp_source.html b/xinfo_8hpp_source.html new file mode 100644 index 000000000..398d8de04 --- /dev/null +++ b/xinfo_8hpp_source.html @@ -0,0 +1,260 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xinfo.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xinfo.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_INFO_HPP
    +
    11#define XTENSOR_INFO_HPP
    +
    12
    +
    13#include <string>
    +
    14
    +
    15#include "xlayout.hpp"
    +
    16
    +
    17#ifndef _MSC_VER
    +
    18#if __cplusplus < 201103
    +
    19#define CONSTEXPR11_TN
    +
    20#define CONSTEXPR14_TN
    +
    21#define NOEXCEPT_TN
    +
    22#elif __cplusplus < 201402
    +
    23#define CONSTEXPR11_TN constexpr
    +
    24#define CONSTEXPR14_TN
    +
    25#define NOEXCEPT_TN noexcept
    +
    26#else
    +
    27#define CONSTEXPR11_TN constexpr
    +
    28#define CONSTEXPR14_TN constexpr
    +
    29#define NOEXCEPT_TN noexcept
    +
    30#endif
    +
    31#else // _MSC_VER
    +
    32#if _MSC_VER < 1900
    +
    33#define CONSTEXPR11_TN
    +
    34#define CONSTEXPR14_TN
    +
    35#define NOEXCEPT_TN
    +
    36#elif _MSC_VER < 2000
    +
    37#define CONSTEXPR11_TN constexpr
    +
    38#define CONSTEXPR14_TN
    +
    39#define NOEXCEPT_TN noexcept
    +
    40#else
    +
    41#define CONSTEXPR11_TN constexpr
    +
    42#define CONSTEXPR14_TN constexpr
    +
    43#define NOEXCEPT_TN noexcept
    +
    44#endif
    +
    45#endif
    +
    46
    +
    47namespace xt
    +
    48{
    +
    49 // see http://stackoverflow.com/a/20170989
    +
    + +
    51 {
    +
    52 template <std::size_t N>
    +
    53 explicit CONSTEXPR11_TN static_string(const char (&a)[N]) NOEXCEPT_TN : data(a),
    +
    54 size(N - 1)
    +
    55 {
    +
    56 }
    +
    57
    +
    58 CONSTEXPR11_TN static_string(const char* a, const std::size_t sz) NOEXCEPT_TN : data(a),
    +
    59 size(sz)
    +
    60 {
    +
    61 }
    +
    62
    +
    63 const char* const data;
    +
    64 const std::size_t size;
    +
    65 };
    +
    +
    66
    +
    67 template <class T>
    +
    68 CONSTEXPR14_TN static_string type_name()
    +
    69 {
    +
    70#ifdef __clang__
    +
    71 static_string p(__PRETTY_FUNCTION__);
    +
    72 return static_string(p.data + 39, p.size - 39 - 1);
    +
    73#elif defined(__GNUC__)
    +
    74 static_string p(__PRETTY_FUNCTION__);
    +
    75#if __cplusplus < 201402
    +
    76 return static_string(p.data + 36, p.size - 36 - 1);
    +
    77#else
    +
    78 return static_string(p.data + 54, p.size - 54 - 1);
    +
    79#endif
    +
    80#elif defined(_MSC_VER)
    +
    81 static const static_string p(__FUNCSIG__);
    +
    82 return static_string(p.data + 47, p.size - 47 - 7);
    +
    83#endif
    +
    84 }
    +
    85
    +
    86 template <class T>
    +
    87 std::string type_to_string()
    +
    88 {
    +
    89 static_string static_name = type_name<T>();
    +
    90 return std::string(static_name.data, static_name.size);
    +
    91 }
    +
    92
    +
    93 template <class T>
    +
    94 std::string info(const T& t)
    +
    95 {
    +
    96 std::string s;
    +
    97 s += "\nValue type: " + type_to_string<typename T::value_type>();
    +
    98 s += "\nLayout: ";
    +
    99 if (t.layout() == layout_type::row_major)
    +
    100 {
    +
    101 s += "row_major";
    +
    102 }
    +
    103 else if (t.layout() == layout_type::column_major)
    +
    104 {
    +
    105 s += "column_major";
    +
    106 }
    +
    107 else if (t.layout() == layout_type::dynamic)
    +
    108 {
    +
    109 s += "dynamic";
    +
    110 }
    +
    111 else
    +
    112 {
    +
    113 s += "any";
    +
    114 }
    +
    115 s += "\nShape: (";
    +
    116 bool first = true;
    +
    117 for (const auto& el : t.shape())
    +
    118 {
    +
    119 if (!first)
    +
    120 {
    +
    121 s += ", ";
    +
    122 }
    +
    123 first = false;
    +
    124 s += std::to_string(el);
    +
    125 }
    +
    126 s += ")\nStrides: (";
    +
    127 first = true;
    +
    128 for (const auto& el : t.strides())
    +
    129 {
    +
    130 if (!first)
    +
    131 {
    +
    132 s += ", ";
    +
    133 }
    +
    134 first = false;
    +
    135 s += std::to_string(el);
    +
    136 }
    +
    137 s += ")\nSize: " + std::to_string(t.size()) + "\n";
    +
    138 return s;
    +
    139 }
    +
    140}
    +
    141
    +
    142#endif
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    + + + + +
    +
    + + + + diff --git a/xio_8hpp_source.html b/xio_8hpp_source.html new file mode 100644 index 000000000..6c3d530c2 --- /dev/null +++ b/xio_8hpp_source.html @@ -0,0 +1,882 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xio.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xio.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_IO_HPP
    +
    11#define XTENSOR_IO_HPP
    +
    12
    +
    13#include <complex>
    +
    14#include <cstddef>
    +
    15#include <iomanip>
    +
    16#include <iostream>
    +
    17#include <numeric>
    +
    18#include <sstream>
    +
    19#include <string>
    +
    20
    +
    21#include "xexpression.hpp"
    +
    22#include "xmath.hpp"
    +
    23#include "xstrided_view.hpp"
    +
    24
    +
    25namespace xt
    +
    26{
    +
    27
    +
    28 template <class E>
    +
    29 inline std::ostream& operator<<(std::ostream& out, const xexpression<E>& e);
    +
    30
    +
    31 /*****************
    +
    32 * print options *
    +
    33 *****************/
    +
    34
    +
    35 namespace print_options
    +
    36 {
    +
    + +
    38 {
    +
    39 int edge_items = 3;
    +
    40 int line_width = 75;
    +
    41 int threshold = 1000;
    +
    42 int precision = -1; // default precision
    +
    43 };
    +
    +
    44
    +
    45 inline print_options_impl& print_options()
    +
    46 {
    +
    47 static print_options_impl po;
    +
    48 return po;
    +
    49 }
    +
    50
    +
    57 inline void set_line_width(int line_width)
    +
    58 {
    +
    59 print_options().line_width = line_width;
    +
    60 }
    +
    61
    +
    68 inline void set_threshold(int threshold)
    +
    69 {
    +
    70 print_options().threshold = threshold;
    +
    71 }
    +
    72
    +
    80 inline void set_edge_items(int edge_items)
    +
    81 {
    +
    82 print_options().edge_items = edge_items;
    +
    83 }
    +
    84
    +
    90 inline void set_precision(int precision)
    +
    91 {
    +
    92 print_options().precision = precision;
    +
    93 }
    +
    94
    +
    95#define DEFINE_LOCAL_PRINT_OPTION(NAME) \
    +
    96 class NAME \
    +
    97 { \
    +
    98 public: \
    +
    99 \
    +
    100 NAME(int value) \
    +
    101 : m_value(value) \
    +
    102 { \
    +
    103 id(); \
    +
    104 } \
    +
    105 static int id() \
    +
    106 { \
    +
    107 static int id = std::ios_base::xalloc(); \
    +
    108 return id; \
    +
    109 } \
    +
    110 int value() const \
    +
    111 { \
    +
    112 return m_value; \
    +
    113 } \
    +
    114 \
    +
    115 private: \
    +
    116 \
    +
    117 int m_value; \
    +
    118 }; \
    +
    119 \
    +
    120 inline std::ostream& operator<<(std::ostream& out, const NAME& n) \
    +
    121 { \
    +
    122 out.iword(NAME::id()) = n.value(); \
    +
    123 return out; \
    +
    124 }
    +
    125
    +
    138 DEFINE_LOCAL_PRINT_OPTION(line_width)
    +
    139
    +
    140
    +
    152 DEFINE_LOCAL_PRINT_OPTION(threshold)
    +
    153
    +
    166 DEFINE_LOCAL_PRINT_OPTION(edge_items)
    +
    167
    +
    180 DEFINE_LOCAL_PRINT_OPTION(precision)
    +
    181 }
    +
    182
    +
    183 /**************************************
    +
    184 * xexpression ostream implementation *
    +
    185 **************************************/
    +
    186
    +
    187 namespace detail
    +
    188 {
    +
    189 template <class E, class F>
    +
    190 std::ostream& xoutput(
    +
    191 std::ostream& out,
    +
    192 const E& e,
    +
    193 xstrided_slice_vector& slices,
    +
    194 F& printer,
    +
    195 std::size_t blanks,
    +
    196 std::streamsize element_width,
    +
    197 std::size_t edgeitems,
    +
    198 std::size_t line_width
    +
    199 )
    +
    200 {
    +
    201 using size_type = typename E::size_type;
    +
    202
    +
    203 const auto view = xt::strided_view(e, slices);
    +
    204 if (view.dimension() == 0)
    +
    205 {
    +
    206 printer.print_next(out);
    +
    207 }
    +
    208 else
    +
    209 {
    +
    210 std::string indents(blanks, ' ');
    +
    211
    +
    212 size_type i = 0;
    +
    213 size_type elems_on_line = 0;
    +
    214 const size_type ewp2 = static_cast<size_type>(element_width) + size_type(2);
    +
    215 const size_type line_lim = static_cast<size_type>(std::floor(line_width / ewp2));
    +
    216
    +
    217 out << '{';
    +
    218 for (; i != size_type(view.shape()[0] - 1); ++i)
    +
    219 {
    +
    220 if (edgeitems && size_type(view.shape()[0]) > (edgeitems * 2) && i == edgeitems)
    +
    221 {
    +
    222 if (view.dimension() == 1 && line_lim != 0 && elems_on_line >= line_lim)
    +
    223 {
    +
    224 out << " ...,";
    +
    225 }
    +
    226 else if (view.dimension() > 1)
    +
    227 {
    +
    228 elems_on_line = 0;
    +
    229 out << "...," << std::endl << indents;
    +
    230 }
    +
    231 else
    +
    232 {
    +
    233 out << "..., ";
    +
    234 }
    +
    235 i = size_type(view.shape()[0]) - edgeitems;
    +
    236 }
    +
    237 if (view.dimension() == 1 && line_lim != 0 && elems_on_line >= line_lim)
    +
    238 {
    +
    239 out << std::endl << indents;
    +
    240 elems_on_line = 0;
    +
    241 }
    +
    242 slices.push_back(static_cast<int>(i));
    +
    243 xoutput(out, e, slices, printer, blanks + 1, element_width, edgeitems, line_width) << ',';
    +
    244 slices.pop_back();
    +
    245 elems_on_line++;
    +
    246
    +
    247 if ((view.dimension() == 1) && !(line_lim != 0 && elems_on_line >= line_lim))
    +
    248 {
    +
    249 out << ' ';
    +
    250 }
    +
    251 else if (view.dimension() > 1)
    +
    252 {
    +
    253 out << std::endl << indents;
    +
    254 }
    +
    255 }
    +
    256 if (view.dimension() == 1 && line_lim != 0 && elems_on_line >= line_lim)
    +
    257 {
    +
    258 out << std::endl << indents;
    +
    259 }
    +
    260 slices.push_back(static_cast<int>(i));
    +
    261 xoutput(out, e, slices, printer, blanks + 1, element_width, edgeitems, line_width) << '}';
    +
    262 slices.pop_back();
    +
    263 }
    +
    264 return out;
    +
    265 }
    +
    266
    +
    267 template <class F, class E>
    +
    268 void recurser_run(F& fn, const E& e, xstrided_slice_vector& slices, std::size_t lim = 0)
    +
    269 {
    +
    270 using size_type = typename E::size_type;
    +
    271 const auto view = strided_view(e, slices);
    +
    272 if (view.dimension() == 0)
    +
    273 {
    +
    274 fn.update(view());
    +
    275 }
    +
    276 else
    +
    277 {
    +
    278 size_type i = 0;
    +
    279 for (; i != static_cast<size_type>(view.shape()[0] - 1); ++i)
    +
    280 {
    +
    281 if (lim && size_type(view.shape()[0]) > (lim * 2) && i == lim)
    +
    282 {
    +
    283 i = static_cast<size_type>(view.shape()[0]) - lim;
    +
    284 }
    +
    285 slices.push_back(static_cast<int>(i));
    +
    286 recurser_run(fn, e, slices, lim);
    +
    287 slices.pop_back();
    +
    288 }
    +
    289 slices.push_back(static_cast<int>(i));
    +
    290 recurser_run(fn, e, slices, lim);
    +
    291 slices.pop_back();
    +
    292 }
    +
    293 }
    +
    294
    +
    295 template <class T, class E = void>
    +
    296 struct printer;
    +
    297
    +
    298 template <class T>
    +
    299 struct printer<T, std::enable_if_t<std::is_floating_point<typename T::value_type>::value>>
    +
    300 {
    +
    301 using value_type = std::decay_t<typename T::value_type>;
    +
    302 using cache_type = std::vector<value_type>;
    +
    303 using cache_iterator = typename cache_type::const_iterator;
    +
    304
    +
    305 explicit printer(std::streamsize precision)
    +
    306 : m_precision(precision)
    +
    307 {
    +
    308 }
    +
    309
    +
    310 void init()
    +
    311 {
    +
    312 m_precision = m_required_precision < m_precision ? m_required_precision : m_precision;
    +
    313 m_it = m_cache.cbegin();
    +
    314 if (m_scientific)
    +
    315 {
    +
    316 // 3 = sign, number and dot and 4 = "e+00"
    +
    317 m_width = m_precision + 7;
    +
    318 if (m_large_exponent)
    +
    319 {
    +
    320 // = e+000 (additional number)
    +
    321 m_width += 1;
    +
    322 }
    +
    323 }
    +
    324 else
    +
    325 {
    +
    326 std::streamsize decimals = 1; // print a leading 0
    +
    327 if (std::floor(m_max) != 0)
    +
    328 {
    +
    329 decimals += std::streamsize(std::log10(std::floor(m_max)));
    +
    330 }
    +
    331 // 2 => sign and dot
    +
    332 m_width = 2 + decimals + m_precision;
    +
    333 }
    +
    334 if (!m_required_precision)
    +
    335 {
    +
    336 --m_width;
    +
    337 }
    +
    338 }
    +
    339
    +
    340 std::ostream& print_next(std::ostream& out)
    +
    341 {
    +
    342 if (!m_scientific)
    +
    343 {
    +
    344 std::stringstream buf;
    +
    345 buf.width(m_width);
    +
    346 buf << std::fixed;
    +
    347 buf.precision(m_precision);
    +
    348 buf << (*m_it);
    +
    349 if (!m_required_precision && !std::isinf(*m_it) && !std::isnan(*m_it))
    +
    350 {
    +
    351 buf << '.';
    +
    352 }
    +
    353 std::string res = buf.str();
    +
    354 auto sit = res.rbegin();
    +
    355 while (*sit == '0')
    +
    356 {
    +
    357 *sit = ' ';
    +
    358 ++sit;
    +
    359 }
    +
    360 out << res;
    +
    361 }
    +
    362 else
    +
    363 {
    +
    364 if (!m_large_exponent)
    +
    365 {
    +
    366 out << std::scientific;
    +
    367 out.width(m_width);
    +
    368 out << (*m_it);
    +
    369 }
    +
    370 else
    +
    371 {
    +
    372 std::stringstream buf;
    +
    373 buf.width(m_width);
    +
    374 buf << std::scientific;
    +
    375 buf.precision(m_precision);
    +
    376 buf << (*m_it);
    +
    377 std::string res = buf.str();
    +
    378
    +
    379 if (res[res.size() - 4] == 'e')
    +
    380 {
    +
    381 res.erase(0, 1);
    +
    382 res.insert(res.size() - 2, "0");
    +
    383 }
    +
    384 out << res;
    +
    385 }
    +
    386 }
    +
    387 ++m_it;
    +
    388 return out;
    +
    389 }
    +
    390
    +
    391 void update(const value_type& val)
    +
    392 {
    +
    393 if (val != 0 && !std::isinf(val) && !std::isnan(val))
    +
    394 {
    +
    395 if (!m_scientific || !m_large_exponent)
    +
    396 {
    +
    397 int exponent = 1 + int(std::log10(math::abs(val)));
    +
    398 if (exponent <= -5 || exponent > 7)
    +
    399 {
    +
    400 m_scientific = true;
    +
    401 m_required_precision = m_precision;
    +
    402 if (exponent <= -100 || exponent >= 100)
    +
    403 {
    +
    404 m_large_exponent = true;
    +
    405 }
    +
    406 }
    +
    407 }
    +
    408 if (math::abs(val) > m_max)
    +
    409 {
    +
    410 m_max = math::abs(val);
    +
    411 }
    +
    412 if (m_required_precision < m_precision)
    +
    413 {
    +
    414 while (std::floor(val * std::pow(10, m_required_precision))
    +
    415 != val * std::pow(10, m_required_precision))
    +
    416 {
    +
    417 m_required_precision++;
    +
    418 }
    +
    419 }
    +
    420 }
    +
    421 m_cache.push_back(val);
    +
    422 }
    +
    423
    +
    424 std::streamsize width()
    +
    425 {
    +
    426 return m_width;
    +
    427 }
    +
    428
    +
    429 private:
    +
    430
    +
    431 bool m_large_exponent = false;
    +
    432 bool m_scientific = false;
    +
    433 std::streamsize m_width = 9;
    +
    434 std::streamsize m_precision;
    +
    435 std::streamsize m_required_precision = 0;
    +
    436 value_type m_max = 0;
    +
    437
    +
    438 cache_type m_cache;
    +
    439 cache_iterator m_it;
    +
    440 };
    +
    441
    +
    442 template <class T>
    +
    443 struct printer<
    +
    444 T,
    +
    445 std::enable_if_t<
    +
    446 xtl::is_integral<typename T::value_type>::value && !std::is_same<typename T::value_type, bool>::value>>
    +
    447 {
    +
    448 using value_type = std::decay_t<typename T::value_type>;
    +
    449 using cache_type = std::vector<value_type>;
    +
    450 using cache_iterator = typename cache_type::const_iterator;
    +
    451
    +
    452 explicit printer(std::streamsize)
    +
    453 {
    +
    454 }
    +
    455
    +
    456 void init()
    +
    457 {
    +
    458 m_it = m_cache.cbegin();
    +
    459 m_width = 1 + std::streamsize((m_max > 0) ? std::log10(m_max) : 0) + m_sign;
    +
    460 }
    +
    461
    +
    462 std::ostream& print_next(std::ostream& out)
    +
    463 {
    +
    464 // + enables printing of chars etc. as numbers
    +
    465 // TODO should chars be printed as numbers?
    +
    466 out.width(m_width);
    +
    467 out << +(*m_it);
    +
    468 ++m_it;
    +
    469 return out;
    +
    470 }
    +
    471
    +
    472 void update(const value_type& val)
    +
    473 {
    +
    474 if (math::abs(val) > m_max)
    +
    475 {
    +
    476 m_max = math::abs(val);
    +
    477 }
    +
    478 if (xtl::is_signed<value_type>::value && val < 0)
    +
    479 {
    +
    480 m_sign = true;
    +
    481 }
    +
    482 m_cache.push_back(val);
    +
    483 }
    +
    484
    +
    485 std::streamsize width()
    +
    486 {
    +
    487 return m_width;
    +
    488 }
    +
    489
    +
    490 private:
    +
    491
    +
    492 std::streamsize m_width;
    +
    493 bool m_sign = false;
    +
    494 value_type m_max = 0;
    +
    495
    +
    496 cache_type m_cache;
    +
    497 cache_iterator m_it;
    +
    498 };
    +
    499
    +
    500 template <class T>
    +
    501 struct printer<T, std::enable_if_t<std::is_same<typename T::value_type, bool>::value>>
    +
    502 {
    +
    503 using value_type = bool;
    +
    504 using cache_type = std::vector<bool>;
    +
    505 using cache_iterator = typename cache_type::const_iterator;
    +
    506
    +
    507 explicit printer(std::streamsize)
    +
    508 {
    +
    509 }
    +
    510
    +
    511 void init()
    +
    512 {
    +
    513 m_it = m_cache.cbegin();
    +
    514 }
    +
    515
    +
    516 std::ostream& print_next(std::ostream& out)
    +
    517 {
    +
    518 if (*m_it)
    +
    519 {
    +
    520 out << " true";
    +
    521 }
    +
    522 else
    +
    523 {
    +
    524 out << "false";
    +
    525 }
    +
    526 // TODO: the following std::setw(5) isn't working correctly on OSX.
    +
    527 // out << std::boolalpha << std::setw(m_width) << (*m_it);
    +
    528 ++m_it;
    +
    529 return out;
    +
    530 }
    +
    531
    +
    532 void update(const value_type& val)
    +
    533 {
    +
    534 m_cache.push_back(val);
    +
    535 }
    +
    536
    +
    537 std::streamsize width()
    +
    538 {
    +
    539 return m_width;
    +
    540 }
    +
    541
    +
    542 private:
    +
    543
    +
    544 std::streamsize m_width = 5;
    +
    545
    +
    546 cache_type m_cache;
    +
    547 cache_iterator m_it;
    +
    548 };
    +
    549
    +
    550 template <class T>
    +
    551 struct printer<T, std::enable_if_t<xtl::is_complex<typename T::value_type>::value>>
    +
    552 {
    +
    553 using value_type = std::decay_t<typename T::value_type>;
    +
    554 using cache_type = std::vector<bool>;
    +
    555 using cache_iterator = typename cache_type::const_iterator;
    +
    556
    +
    557 explicit printer(std::streamsize precision)
    +
    558 : real_printer(precision)
    +
    559 , imag_printer(precision)
    +
    560 {
    +
    561 }
    +
    562
    +
    563 void init()
    +
    564 {
    +
    565 real_printer.init();
    +
    566 imag_printer.init();
    +
    567 m_it = m_signs.cbegin();
    +
    568 }
    +
    569
    +
    570 std::ostream& print_next(std::ostream& out)
    +
    571 {
    +
    572 real_printer.print_next(out);
    +
    573 if (*m_it)
    +
    574 {
    +
    575 out << "-";
    +
    576 }
    +
    577 else
    +
    578 {
    +
    579 out << "+";
    +
    580 }
    +
    581 std::stringstream buf;
    +
    582 imag_printer.print_next(buf);
    +
    583 std::string s = buf.str();
    +
    584 if (s[0] == ' ')
    +
    585 {
    +
    586 s.erase(0, 1); // erase space for +/-
    +
    587 }
    +
    588 // insert j at end of number
    +
    589 std::size_t idx = s.find_last_not_of(" ");
    +
    590 s.insert(idx + 1, "i");
    +
    591 out << s;
    +
    592 ++m_it;
    +
    593 return out;
    +
    594 }
    +
    595
    +
    596 void update(const value_type& val)
    +
    597 {
    +
    598 real_printer.update(val.real());
    +
    599 imag_printer.update(std::abs(val.imag()));
    +
    600 m_signs.push_back(std::signbit(val.imag()));
    +
    601 }
    +
    602
    +
    603 std::streamsize width()
    +
    604 {
    +
    605 return real_printer.width() + imag_printer.width() + 2;
    +
    606 }
    +
    607
    +
    608 private:
    +
    609
    +
    610 printer<value_type> real_printer, imag_printer;
    +
    611 cache_type m_signs;
    +
    612 cache_iterator m_it;
    +
    613 };
    +
    614
    +
    615 template <class T>
    +
    616 struct printer<
    +
    617 T,
    +
    618 std::enable_if_t<
    +
    619 !xtl::is_fundamental<typename T::value_type>::value && !xtl::is_complex<typename T::value_type>::value>>
    +
    620 {
    +
    621 using const_reference = typename T::const_reference;
    +
    622 using value_type = std::decay_t<typename T::value_type>;
    +
    623 using cache_type = std::vector<std::string>;
    +
    624 using cache_iterator = typename cache_type::const_iterator;
    +
    625
    +
    626 explicit printer(std::streamsize)
    +
    627 {
    +
    628 }
    +
    629
    +
    630 void init()
    +
    631 {
    +
    632 m_it = m_cache.cbegin();
    +
    633 if (m_width > 20)
    +
    634 {
    +
    635 m_width = 0;
    +
    636 }
    +
    637 }
    +
    638
    +
    639 std::ostream& print_next(std::ostream& out)
    +
    640 {
    +
    641 out.width(m_width);
    +
    642 out << *m_it;
    +
    643 ++m_it;
    +
    644 return out;
    +
    645 }
    +
    646
    +
    647 void update(const_reference val)
    +
    648 {
    +
    649 std::stringstream buf;
    +
    650 buf << val;
    +
    651 std::string s = buf.str();
    +
    652 if (int(s.size()) > m_width)
    +
    653 {
    +
    654 m_width = std::streamsize(s.size());
    +
    655 }
    +
    656 m_cache.push_back(s);
    +
    657 }
    +
    658
    +
    659 std::streamsize width()
    +
    660 {
    +
    661 return m_width;
    +
    662 }
    +
    663
    +
    664 private:
    +
    665
    +
    666 std::streamsize m_width = 0;
    +
    667 cache_type m_cache;
    +
    668 cache_iterator m_it;
    +
    669 };
    +
    670
    +
    671 template <class E>
    +
    672 struct custom_formatter
    +
    673 {
    +
    674 using value_type = std::decay_t<typename E::value_type>;
    +
    675
    +
    676 template <class F>
    +
    677 custom_formatter(F&& func)
    +
    678 : m_func(func)
    +
    679 {
    +
    680 }
    +
    681
    +
    682 std::string operator()(const value_type& val) const
    +
    683 {
    +
    684 return m_func(val);
    +
    685 }
    +
    686
    +
    687 private:
    +
    688
    +
    689 std::function<std::string(const value_type&)> m_func;
    +
    690 };
    +
    691 }
    +
    692
    +
    693 inline print_options::print_options_impl get_print_options(std::ostream& out)
    +
    694 {
    + + + + + +
    700
    +
    701 res.edge_items = static_cast<int>(out.iword(edge_items::id()));
    +
    702 res.line_width = static_cast<int>(out.iword(line_width::id()));
    +
    703 res.threshold = static_cast<int>(out.iword(threshold::id()));
    +
    704 res.precision = static_cast<int>(out.iword(precision::id()));
    +
    705
    +
    706 if (!res.edge_items)
    +
    707 {
    +
    708 res.edge_items = print_options::print_options().edge_items;
    +
    709 }
    +
    710 else
    +
    711 {
    +
    712 out.iword(edge_items::id()) = long(0);
    +
    713 }
    +
    714 if (!res.line_width)
    +
    715 {
    +
    716 res.line_width = print_options::print_options().line_width;
    +
    717 }
    +
    718 else
    +
    719 {
    +
    720 out.iword(line_width::id()) = long(0);
    +
    721 }
    +
    722 if (!res.threshold)
    +
    723 {
    +
    724 res.threshold = print_options::print_options().threshold;
    +
    725 }
    +
    726 else
    +
    727 {
    +
    728 out.iword(threshold::id()) = long(0);
    +
    729 }
    +
    730 if (!res.precision)
    +
    731 {
    +
    732 res.precision = print_options::print_options().precision;
    +
    733 }
    +
    734 else
    +
    735 {
    +
    736 out.iword(precision::id()) = long(0);
    +
    737 }
    +
    738
    +
    739 return res;
    +
    740 }
    +
    741
    +
    742 template <class E, class F>
    +
    743 std::ostream& pretty_print(const xexpression<E>& e, F&& func, std::ostream& out = std::cout)
    +
    744 {
    +
    745 xfunction<detail::custom_formatter<E>, const_xclosure_t<E>> print_fun(
    +
    746 detail::custom_formatter<E>(std::forward<F>(func)),
    +
    747 e
    +
    748 );
    +
    749 return pretty_print(print_fun, out);
    +
    750 }
    +
    751
    +
    752 namespace detail
    +
    753 {
    +
    754 template <class S>
    +
    755 class fmtflags_guard
    +
    756 {
    +
    757 public:
    +
    758
    +
    759 explicit fmtflags_guard(S& stream)
    +
    760 : m_stream(stream)
    +
    761 , m_flags(stream.flags())
    +
    762 {
    +
    763 }
    +
    764
    +
    765 ~fmtflags_guard()
    +
    766 {
    +
    767 m_stream.flags(m_flags);
    +
    768 }
    +
    769
    +
    770 private:
    +
    771
    +
    772 S& m_stream;
    +
    773 std::ios_base::fmtflags m_flags;
    +
    774 };
    +
    775 }
    +
    776
    +
    777 template <class E>
    +
    778 std::ostream& pretty_print(const xexpression<E>& e, std::ostream& out = std::cout)
    +
    779 {
    +
    780 detail::fmtflags_guard<std::ostream> guard(out);
    +
    781
    +
    782 const E& d = e.derived_cast();
    +
    783
    +
    784 std::size_t lim = 0;
    +
    785 std::size_t sz = compute_size(d.shape());
    +
    786
    +
    787 auto po = get_print_options(out);
    +
    788
    +
    789 if (sz > static_cast<std::size_t>(po.threshold))
    +
    790 {
    +
    791 lim = static_cast<std::size_t>(po.edge_items);
    +
    792 }
    +
    793 if (sz == 0)
    +
    794 {
    +
    795 out << "{}";
    +
    796 return out;
    +
    797 }
    +
    798
    +
    799 auto temp_precision = out.precision();
    +
    800 auto precision = temp_precision;
    +
    801 if (po.precision != -1)
    +
    802 {
    +
    803 out.precision(static_cast<std::streamsize>(po.precision));
    +
    804 precision = static_cast<std::streamsize>(po.precision);
    +
    805 }
    +
    806
    +
    807 detail::printer<E> p(precision);
    +
    808
    + +
    810 detail::recurser_run(p, d, sv, lim);
    +
    811 p.init();
    +
    812 sv.clear();
    +
    813 xoutput(out, d, sv, p, 1, p.width(), lim, static_cast<std::size_t>(po.line_width));
    +
    814
    +
    815 out.precision(temp_precision); // restore precision
    +
    816
    +
    817 return out;
    +
    818 }
    +
    819
    +
    820 template <class E>
    +
    821 inline std::ostream& operator<<(std::ostream& out, const xexpression<E>& e)
    +
    822 {
    +
    823 return pretty_print(e, out);
    +
    824 }
    +
    825}
    +
    826#endif
    +
    827
    +
    828// Backward compatibility: include xmime.hpp in xio.hpp by default.
    +
    829
    +
    830#ifdef __CLING__
    +
    831#include "xmime.hpp"
    +
    832#endif
    +
    io manipulator used to set the number of egde items if the summarization is triggered.
    Definition xio.hpp:166
    +
    io manipulator used to set the width of the lines when printing an expression.
    Definition xio.hpp:138
    +
    io manipulator used to set the precision of the floating point values when printing an expression.
    Definition xio.hpp:180
    +
    io manipulator used to set the threshold after which summarization is triggered.
    Definition xio.hpp:152
    +
    standard mathematical functions for xexpressions
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    + +
    +
    + + + + diff --git a/xiterable_8hpp_source.html b/xiterable_8hpp_source.html new file mode 100644 index 000000000..172cb27ee --- /dev/null +++ b/xiterable_8hpp_source.html @@ -0,0 +1,1238 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xiterable.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xiterable.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ITERABLE_HPP
    +
    11#define XTENSOR_ITERABLE_HPP
    +
    12
    +
    13#include "xiterator.hpp"
    +
    14
    +
    15namespace xt
    +
    16{
    +
    17
    +
    18 /*******************
    +
    19 * xconst_iterable *
    +
    20 *******************/
    +
    21
    +
    22 template <class D>
    + +
    24
    +
    35 template <class D>
    +
    + +
    37 {
    +
    38 public:
    +
    39
    +
    40 using derived_type = D;
    +
    41
    + +
    43 using inner_shape_type = typename iterable_types::inner_shape_type;
    +
    44
    +
    45 using stepper = typename iterable_types::stepper;
    +
    46 using const_stepper = typename iterable_types::const_stepper;
    +
    47
    +
    48 template <layout_type L>
    + +
    50 template <layout_type L>
    + +
    52 template <layout_type L>
    +
    53 using reverse_layout_iterator = std::reverse_iterator<layout_iterator<L>>;
    +
    54 template <layout_type L>
    +
    55 using const_reverse_layout_iterator = std::reverse_iterator<const_layout_iterator<L>>;
    +
    56
    + + +
    59 using reverse_linear_iterator = reverse_layout_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    60 using const_reverse_linear_iterator = const_reverse_layout_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    61
    +
    62 template <class S, layout_type L>
    + +
    64 template <class S, layout_type L>
    + +
    66 template <class S, layout_type L>
    +
    67 using reverse_broadcast_iterator = std::reverse_iterator<broadcast_iterator<S, L>>;
    +
    68 template <class S, layout_type L>
    +
    69 using const_reverse_broadcast_iterator = std::reverse_iterator<const_broadcast_iterator<S, L>>;
    +
    70
    + + +
    73 using reverse_iterator = reverse_layout_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    74 using const_reverse_iterator = const_reverse_layout_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    75
    +
    76 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    77 const_layout_iterator<L> begin() const noexcept;
    +
    78 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    79 const_layout_iterator<L> end() const noexcept;
    +
    80 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    81 const_layout_iterator<L> cbegin() const noexcept;
    +
    82 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    83 const_layout_iterator<L> cend() const noexcept;
    +
    84
    +
    85 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    86 const_reverse_layout_iterator<L> rbegin() const noexcept;
    +
    87 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    88 const_reverse_layout_iterator<L> rend() const noexcept;
    +
    89 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    90 const_reverse_layout_iterator<L> crbegin() const noexcept;
    +
    91 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    92 const_reverse_layout_iterator<L> crend() const noexcept;
    +
    93
    +
    94 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    95 const_broadcast_iterator<S, L> begin(const S& shape) const noexcept;
    +
    96 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    97 const_broadcast_iterator<S, L> end(const S& shape) const noexcept;
    +
    98 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    99 const_broadcast_iterator<S, L> cbegin(const S& shape) const noexcept;
    +
    100 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    101 const_broadcast_iterator<S, L> cend(const S& shape) const noexcept;
    +
    102
    +
    103 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    104 const_reverse_broadcast_iterator<S, L> rbegin(const S& shape) const noexcept;
    +
    105 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    106 const_reverse_broadcast_iterator<S, L> rend(const S& shape) const noexcept;
    +
    107 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    108 const_reverse_broadcast_iterator<S, L> crbegin(const S& shape) const noexcept;
    +
    109 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    110 const_reverse_broadcast_iterator<S, L> crend(const S& shape) const noexcept;
    +
    111
    +
    112 protected:
    +
    113
    +
    114 const inner_shape_type& get_shape() const;
    +
    115
    +
    116 private:
    +
    117
    +
    118 template <layout_type L>
    +
    119 const_layout_iterator<L> get_cbegin(bool end_index) const noexcept;
    +
    120 template <layout_type L>
    +
    121 const_layout_iterator<L> get_cend(bool end_index) const noexcept;
    +
    122
    +
    123 template <layout_type L, class S>
    +
    124 const_broadcast_iterator<S, L> get_cbegin(const S& shape, bool end_index) const noexcept;
    +
    125 template <layout_type L, class S>
    +
    126 const_broadcast_iterator<S, L> get_cend(const S& shape, bool end_index) const noexcept;
    +
    127
    +
    128 template <class S>
    +
    129 const_stepper get_stepper_begin(const S& shape) const noexcept;
    +
    130 template <class S>
    +
    131 const_stepper get_stepper_end(const S& shape, layout_type l) const noexcept;
    +
    132
    +
    133 const derived_type& derived_cast() const;
    +
    134 };
    +
    +
    135
    +
    136 /*************
    +
    137 * xiterable *
    +
    138 *************/
    +
    139
    +
    150 template <class D>
    +
    +
    151 class xiterable : public xconst_iterable<D>
    +
    152 {
    +
    153 public:
    +
    154
    +
    155 using derived_type = D;
    +
    156
    + +
    158 using inner_shape_type = typename base_type::inner_shape_type;
    +
    159
    +
    160 using stepper = typename base_type::stepper;
    +
    161 using const_stepper = typename base_type::const_stepper;
    +
    162
    +
    163 using linear_iterator = typename base_type::linear_iterator;
    +
    164 using reverse_linear_iterator = typename base_type::reverse_linear_iterator;
    +
    165
    +
    166 template <layout_type L>
    +
    167 using layout_iterator = typename base_type::template layout_iterator<L>;
    +
    168 template <layout_type L>
    +
    169 using const_layout_iterator = typename base_type::template const_layout_iterator<L>;
    +
    170 template <layout_type L>
    +
    171 using reverse_layout_iterator = typename base_type::template reverse_layout_iterator<L>;
    +
    172 template <layout_type L>
    +
    173 using const_reverse_layout_iterator = typename base_type::template const_reverse_layout_iterator<L>;
    +
    174
    +
    175 template <class S, layout_type L>
    +
    176 using broadcast_iterator = typename base_type::template broadcast_iterator<S, L>;
    +
    177 template <class S, layout_type L>
    +
    178 using const_broadcast_iterator = typename base_type::template const_broadcast_iterator<S, L>;
    +
    179 template <class S, layout_type L>
    +
    180 using reverse_broadcast_iterator = typename base_type::template reverse_broadcast_iterator<S, L>;
    +
    181 template <class S, layout_type L>
    +
    182 using const_reverse_broadcast_iterator = typename base_type::template const_reverse_broadcast_iterator<S, L>;
    +
    183
    +
    184 using iterator = typename base_type::iterator;
    +
    185 using const_iterator = typename base_type::const_iterator;
    +
    186 using reverse_iterator = typename base_type::reverse_iterator;
    +
    187 using const_reverse_iterator = typename base_type::const_reverse_iterator;
    +
    188
    +
    +
    189 using base_type::begin;
    +
    +
    190 using base_type::end;
    +
    +
    191 using base_type::rbegin;
    +
    +
    192 using base_type::rend;
    +
    193
    +
    194 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    195 layout_iterator<L> begin() noexcept;
    +
    196 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    197 layout_iterator<L> end() noexcept;
    +
    198
    +
    199 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    200 reverse_layout_iterator<L> rbegin() noexcept;
    +
    201 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    202 reverse_layout_iterator<L> rend() noexcept;
    +
    203
    +
    204 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    205 broadcast_iterator<S, L> begin(const S& shape) noexcept;
    +
    206 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    207 broadcast_iterator<S, L> end(const S& shape) noexcept;
    +
    208
    +
    209 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    +
    210 reverse_broadcast_iterator<S, L> rbegin(const S& shape) noexcept;
    +
    211 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    212 reverse_broadcast_iterator<S, L> rend(const S& shape) noexcept;
    +
    213
    +
    214 private:
    +
    + +
    +
    216 template <layout_type L>
    +
    +
    217 layout_iterator<L> get_begin(bool end_index) noexcept;
    +
    218 template <layout_type L>
    +
    219 layout_iterator<L> get_end(bool end_index) noexcept;
    +
    220
    +
    221 template <layout_type L, class S>
    +
    222 broadcast_iterator<S, L> get_begin(const S& shape, bool end_index) noexcept;
    +
    223 template <layout_type L, class S>
    +
    224 broadcast_iterator<S, L> get_end(const S& shape, bool end_index) noexcept;
    +
    225
    +
    226 template <class S>
    +
    227 stepper get_stepper_begin(const S& shape) noexcept;
    +
    228 template <class S>
    +
    229 stepper get_stepper_end(const S& shape, layout_type l) noexcept;
    +
    230
    +
    231 template <class S>
    +
    232 const_stepper get_stepper_begin(const S& shape) const noexcept;
    +
    233 template <class S>
    +
    234 const_stepper get_stepper_end(const S& shape, layout_type l) const noexcept;
    +
    235
    +
    236 derived_type& derived_cast();
    +
    237 };
    +
    238
    +
    239 /************************
    +
    240 * xcontiguous_iterable *
    +
    241 ************************/
    +
    242
    +
    243 template <class D>
    + +
    245
    +
    246 namespace detail
    +
    247 {
    +
    248 template <class T, bool is_const>
    +
    249 struct get_storage_iterator;
    +
    250
    +
    251 template <class T>
    +
    252 struct get_storage_iterator<T, true>
    +
    253 {
    +
    254 using iterator = typename T::const_iterator;
    +
    255 using const_iterator = typename T::const_iterator;
    +
    256 using reverse_iterator = typename T::const_reverse_iterator;
    +
    257 using const_reverse_iterator = typename T::const_reverse_iterator;
    +
    258 };
    +
    259
    +
    260 template <class T>
    +
    261 struct get_storage_iterator<T, false>
    +
    262 {
    +
    263 using iterator = typename T::iterator;
    +
    264 using const_iterator = typename T::const_iterator;
    +
    265 using reverse_iterator = typename T::reverse_iterator;
    +
    266 using const_reverse_iterator = typename T::const_reverse_iterator;
    +
    267 };
    +
    268
    +
    269 template <class D, bool has_storage_type>
    +
    270 struct linear_iterator_traits_impl;
    +
    271
    +
    272 template <class D>
    +
    273 struct linear_iterator_traits_impl<D, true>
    +
    274 {
    +
    275 using inner_types = xcontainer_inner_types<D>;
    +
    276 using storage_type = typename inner_types::storage_type;
    +
    277 using iterator_type = get_storage_iterator<storage_type, std::is_const<storage_type>::value>;
    +
    278 using linear_iterator = typename iterator_type::iterator;
    +
    279 using const_linear_iterator = typename iterator_type::const_iterator;
    +
    280 using reverse_linear_iterator = typename iterator_type::reverse_iterator;
    +
    281 using const_reverse_linear_iterator = typename iterator_type::const_reverse_iterator;
    +
    282 };
    +
    283
    +
    284 template <class D>
    +
    285 struct linear_iterator_traits_impl<D, false>
    +
    286 {
    +
    287 using inner_types = xcontainer_inner_types<D>;
    +
    288 using xexpression_type = typename inner_types::xexpression_type;
    +
    289 using linear_iterator = typename xexpression_type::linear_iterator;
    +
    290 using const_linear_iterator = typename xexpression_type::const_linear_iterator;
    +
    291 using reverse_linear_iterator = typename xexpression_type::reverse_linear_iterator;
    +
    292 using const_reverse_linear_iterator = typename xexpression_type::const_reverse_linear_iterator;
    +
    293 };
    +
    294
    +
    295 template <class D>
    +
    296 using linear_iterator_traits = linear_iterator_traits_impl<D, has_storage_type<D>::value>;
    +
    297 }
    +
    298
    +
    310 template <class D>
    +
    + +
    312 {
    +
    313 public:
    +
    314
    +
    315 using derived_type = D;
    +
    316
    + +
    318
    + +
    320 using stepper = typename iterable_base::stepper;
    +
    321 using const_stepper = typename iterable_base::const_stepper;
    +
    322
    +
    323 static constexpr layout_type static_layout = inner_types::layout;
    +
    324
    +
    325#if defined(_MSC_VER) && _MSC_VER >= 1910
    +
    326 // Workaround for compiler bug in Visual Studio 2017 with respect to alias templates with non-type
    +
    327 // parameters.
    +
    328 template <layout_type L>
    + +
    330 template <layout_type L>
    +
    331 using const_layout_iterator = xiterator<
    +
    332 typename iterable_base::const_stepper,
    +
    333 typename iterable_base::inner_shape_type*,
    +
    334 L>;
    +
    335 template <layout_type L>
    +
    336 using reverse_layout_iterator = std::reverse_iterator<layout_iterator<L>>;
    +
    337 template <layout_type L>
    +
    338 using const_reverse_layout_iterator = std::reverse_iterator<const_layout_iterator<L>>;
    +
    339#else
    +
    340 template <layout_type L>
    +
    341 using layout_iterator = typename iterable_base::template layout_iterator<L>;
    +
    342 template <layout_type L>
    +
    343 using const_layout_iterator = typename iterable_base::template const_layout_iterator<L>;
    +
    344 template <layout_type L>
    +
    345 using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>;
    +
    346 template <layout_type L>
    +
    347 using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>;
    +
    348#endif
    +
    349
    +
    350 template <class S, layout_type L>
    +
    351 using broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>;
    +
    352 template <class S, layout_type L>
    +
    353 using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>;
    +
    354 template <class S, layout_type L>
    +
    355 using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>;
    +
    356 template <class S, layout_type L>
    +
    357 using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>;
    +
    358
    +
    359 using linear_traits = detail::linear_iterator_traits<D>;
    +
    360 using linear_iterator = typename linear_traits::linear_iterator;
    +
    361 using const_linear_iterator = typename linear_traits::const_linear_iterator;
    +
    362 using reverse_linear_iterator = typename linear_traits::reverse_linear_iterator;
    +
    363 using const_reverse_linear_iterator = typename linear_traits::const_reverse_linear_iterator;
    +
    364
    +
    365 template <layout_type L, class It1, class It2>
    +
    366 using select_iterator_impl = std::conditional_t<L == static_layout, It1, It2>;
    +
    367
    +
    368 template <layout_type L>
    +
    369 using select_iterator = select_iterator_impl<L, linear_iterator, layout_iterator<L>>;
    +
    370 template <layout_type L>
    +
    371 using select_const_iterator = select_iterator_impl<L, const_linear_iterator, const_layout_iterator<L>>;
    +
    372 template <layout_type L>
    +
    373 using select_reverse_iterator = select_iterator_impl<L, reverse_linear_iterator, reverse_layout_iterator<L>>;
    +
    374 template <layout_type L>
    +
    375 using select_const_reverse_iterator = select_iterator_impl<
    +
    376 L,
    +
    377 const_reverse_linear_iterator,
    +
    378 const_reverse_layout_iterator<L>>;
    +
    379
    +
    380 using iterator = select_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    381 using const_iterator = select_const_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    382 using reverse_iterator = select_reverse_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    383 using const_reverse_iterator = select_const_reverse_iterator<XTENSOR_DEFAULT_TRAVERSAL>;
    +
    384
    +
    385 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    386 select_iterator<L> begin() noexcept;
    +
    387 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    388 select_iterator<L> end() noexcept;
    +
    389
    +
    390 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    391 select_const_iterator<L> begin() const noexcept;
    +
    392 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    393 select_const_iterator<L> end() const noexcept;
    +
    394 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    395 select_const_iterator<L> cbegin() const noexcept;
    +
    396 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    397 select_const_iterator<L> cend() const noexcept;
    +
    398
    +
    399 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    400 select_reverse_iterator<L> rbegin() noexcept;
    +
    401 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    402 select_reverse_iterator<L> rend() noexcept;
    +
    403
    +
    404 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    405 select_const_reverse_iterator<L> rbegin() const noexcept;
    +
    406 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    407 select_const_reverse_iterator<L> rend() const noexcept;
    +
    408 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    409 select_const_reverse_iterator<L> crbegin() const noexcept;
    +
    410 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    411 select_const_reverse_iterator<L> crend() const noexcept;
    +
    412
    +
    413 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    414 broadcast_iterator<S, L> begin(const S& shape) noexcept;
    +
    415 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    416 broadcast_iterator<S, L> end(const S& shape) noexcept;
    +
    417
    +
    418 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    419 const_broadcast_iterator<S, L> begin(const S& shape) const noexcept;
    +
    420 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    421 const_broadcast_iterator<S, L> end(const S& shape) const noexcept;
    +
    422 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    423 const_broadcast_iterator<S, L> cbegin(const S& shape) const noexcept;
    +
    424 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    425 const_broadcast_iterator<S, L> cend(const S& shape) const noexcept;
    +
    426
    +
    427 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    428 reverse_broadcast_iterator<S, L> rbegin(const S& shape) noexcept;
    +
    429 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    430 reverse_broadcast_iterator<S, L> rend(const S& shape) noexcept;
    +
    431
    +
    432 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    433 const_reverse_broadcast_iterator<S, L> rbegin(const S& shape) const noexcept;
    +
    434 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    435 const_reverse_broadcast_iterator<S, L> rend(const S& shape) const noexcept;
    +
    436 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    437 const_reverse_broadcast_iterator<S, L> crbegin(const S& shape) const noexcept;
    +
    438 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S>
    +
    439 const_reverse_broadcast_iterator<S, L> crend(const S& shape) const noexcept;
    +
    440
    +
    441 private:
    +
    442
    +
    443 derived_type& derived_cast();
    +
    444 const derived_type& derived_cast() const;
    +
    445
    +
    446 friend class xiterable<D>;
    +
    447 friend class xconst_iterable<D>;
    +
    448 };
    +
    +
    449
    +
    450 /**********************************
    +
    451 * xconst_iterable implementation *
    +
    452 **********************************/
    +
    453
    +
    462 template <class D>
    +
    463 template <layout_type L>
    +
    +
    464 inline auto xconst_iterable<D>::begin() const noexcept -> const_layout_iterator<L>
    +
    465 {
    +
    466 return this->template cbegin<L>();
    +
    467 }
    +
    +
    468
    +
    474 template <class D>
    +
    475 template <layout_type L>
    +
    +
    476 inline auto xconst_iterable<D>::end() const noexcept -> const_layout_iterator<L>
    +
    477 {
    +
    478 return this->template cend<L>();
    +
    479 }
    +
    +
    480
    +
    485 template <class D>
    +
    486 template <layout_type L>
    +
    +
    487 inline auto xconst_iterable<D>::cbegin() const noexcept -> const_layout_iterator<L>
    +
    488 {
    +
    489 return this->template get_cbegin<L>(false);
    +
    490 }
    +
    +
    491
    +
    497 template <class D>
    +
    498 template <layout_type L>
    +
    +
    499 inline auto xconst_iterable<D>::cend() const noexcept -> const_layout_iterator<L>
    +
    500 {
    +
    501 return this->template get_cend<L>(true);
    +
    502 }
    +
    +
    503
    +
    505
    +
    514 template <class D>
    +
    515 template <layout_type L>
    +
    +
    516 inline auto xconst_iterable<D>::rbegin() const noexcept -> const_reverse_layout_iterator<L>
    +
    517 {
    +
    518 return this->template crbegin<L>();
    +
    519 }
    +
    +
    520
    +
    526 template <class D>
    +
    527 template <layout_type L>
    +
    +
    528 inline auto xconst_iterable<D>::rend() const noexcept -> const_reverse_layout_iterator<L>
    +
    529 {
    +
    530 return this->template crend<L>();
    +
    531 }
    +
    +
    532
    +
    537 template <class D>
    +
    538 template <layout_type L>
    +
    +
    539 inline auto xconst_iterable<D>::crbegin() const noexcept -> const_reverse_layout_iterator<L>
    +
    540 {
    +
    541 return const_reverse_layout_iterator<L>(get_cend<L>(true));
    +
    542 }
    +
    +
    543
    +
    549 template <class D>
    +
    550 template <layout_type L>
    +
    +
    551 inline auto xconst_iterable<D>::crend() const noexcept -> const_reverse_layout_iterator<L>
    +
    552 {
    +
    553 return const_reverse_layout_iterator<L>(get_cbegin<L>(false));
    +
    554 }
    +
    +
    555
    +
    557
    +
    569 template <class D>
    +
    570 template <layout_type L, class S>
    +
    +
    571 inline auto xconst_iterable<D>::begin(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    572 {
    +
    573 return cbegin<L>(shape);
    +
    574 }
    +
    +
    575
    +
    583 template <class D>
    +
    584 template <layout_type L, class S>
    +
    +
    585 inline auto xconst_iterable<D>::end(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    586 {
    +
    587 return cend<L>(shape);
    +
    588 }
    +
    +
    589
    +
    597 template <class D>
    +
    598 template <layout_type L, class S>
    +
    +
    599 inline auto xconst_iterable<D>::cbegin(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    600 {
    +
    601 return get_cbegin<L, S>(shape, false);
    +
    602 }
    +
    +
    603
    +
    611 template <class D>
    +
    612 template <layout_type L, class S>
    +
    +
    613 inline auto xconst_iterable<D>::cend(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    614 {
    +
    615 return get_cend<L, S>(shape, true);
    +
    616 }
    +
    +
    617
    +
    619
    +
    631 template <class D>
    +
    632 template <layout_type L, class S>
    +
    +
    633 inline auto xconst_iterable<D>::rbegin(const S& shape) const noexcept
    +
    634 -> const_reverse_broadcast_iterator<S, L>
    +
    635 {
    +
    636 return crbegin<L, S>(shape);
    +
    637 }
    +
    +
    638
    +
    646 template <class D>
    +
    647 template <layout_type L, class S>
    +
    +
    648 inline auto xconst_iterable<D>::rend(const S& shape) const noexcept
    +
    649 -> const_reverse_broadcast_iterator<S, L>
    +
    650 {
    +
    651 return crend<L, S>(shape);
    +
    652 }
    +
    +
    653
    +
    661 template <class D>
    +
    662 template <layout_type L, class S>
    +
    +
    663 inline auto xconst_iterable<D>::crbegin(const S& shape) const noexcept
    +
    664 -> const_reverse_broadcast_iterator<S, L>
    +
    665 {
    +
    666 return const_reverse_broadcast_iterator<S, L>(get_cend<L, S>(shape, true));
    +
    667 }
    +
    +
    668
    +
    676 template <class D>
    +
    677 template <layout_type L, class S>
    +
    +
    678 inline auto xconst_iterable<D>::crend(const S& shape) const noexcept
    +
    679 -> const_reverse_broadcast_iterator<S, L>
    +
    680 {
    +
    681 return const_reverse_broadcast_iterator<S, L>(get_cbegin<L, S>(shape, false));
    +
    682 }
    +
    +
    683
    +
    685
    +
    686 template <class D>
    +
    687 template <layout_type L>
    +
    688 inline auto xconst_iterable<D>::get_cbegin(bool end_index) const noexcept -> const_layout_iterator<L>
    +
    689 {
    +
    690 return const_layout_iterator<L>(get_stepper_begin(get_shape()), &get_shape(), end_index);
    +
    691 }
    +
    692
    +
    693 template <class D>
    +
    694 template <layout_type L>
    +
    695 inline auto xconst_iterable<D>::get_cend(bool end_index) const noexcept -> const_layout_iterator<L>
    +
    696 {
    +
    697 return const_layout_iterator<L>(get_stepper_end(get_shape(), L), &get_shape(), end_index);
    +
    698 }
    +
    699
    +
    700 template <class D>
    +
    701 template <layout_type L, class S>
    +
    702 inline auto xconst_iterable<D>::get_cbegin(const S& shape, bool end_index) const noexcept
    +
    703 -> const_broadcast_iterator<S, L>
    +
    704 {
    +
    705 return const_broadcast_iterator<S, L>(get_stepper_begin(shape), shape, end_index);
    +
    706 }
    +
    707
    +
    708 template <class D>
    +
    709 template <layout_type L, class S>
    +
    710 inline auto xconst_iterable<D>::get_cend(const S& shape, bool end_index) const noexcept
    +
    711 -> const_broadcast_iterator<S, L>
    +
    712 {
    +
    713 return const_broadcast_iterator<S, L>(get_stepper_end(shape, L), shape, end_index);
    +
    714 }
    +
    715
    +
    716 template <class D>
    +
    717 template <class S>
    +
    718 inline auto xconst_iterable<D>::get_stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    719 {
    +
    720 return derived_cast().stepper_begin(shape);
    +
    721 }
    +
    722
    +
    723 template <class D>
    +
    724 template <class S>
    +
    725 inline auto xconst_iterable<D>::get_stepper_end(const S& shape, layout_type l) const noexcept
    +
    726 -> const_stepper
    +
    727 {
    +
    728 return derived_cast().stepper_end(shape, l);
    +
    729 }
    +
    730
    +
    731 template <class D>
    +
    732 inline auto xconst_iterable<D>::get_shape() const -> const inner_shape_type&
    +
    733 {
    +
    734 return derived_cast().shape();
    +
    735 }
    +
    736
    +
    737 template <class D>
    +
    738 inline auto xconst_iterable<D>::derived_cast() const -> const derived_type&
    +
    739 {
    +
    740 return *static_cast<const derived_type*>(this);
    +
    741 }
    +
    742
    +
    743 /****************************
    +
    744 * xiterable implementation *
    +
    745 ****************************/
    +
    746
    +
    755 template <class D>
    +
    756 template <layout_type L>
    +
    +
    757 inline auto xiterable<D>::begin() noexcept -> layout_iterator<L>
    +
    758 {
    +
    759 return get_begin<L>(false);
    +
    760 }
    +
    +
    761
    +
    767 template <class D>
    +
    768 template <layout_type L>
    +
    +
    769 inline auto xiterable<D>::end() noexcept -> layout_iterator<L>
    +
    770 {
    +
    771 return get_end<L>(true);
    +
    772 }
    +
    +
    773
    +
    775
    +
    784 template <class D>
    +
    785 template <layout_type L>
    +
    +
    786 inline auto xiterable<D>::rbegin() noexcept -> reverse_layout_iterator<L>
    +
    787 {
    +
    788 return reverse_layout_iterator<L>(get_end<L>(true));
    +
    789 }
    +
    +
    790
    +
    796 template <class D>
    +
    797 template <layout_type L>
    +
    +
    798 inline auto xiterable<D>::rend() noexcept -> reverse_layout_iterator<L>
    +
    799 {
    +
    800 return reverse_layout_iterator<L>(get_begin<L>(false));
    +
    801 }
    +
    +
    +
    802
    +
    804
    +
    816 template <class D>
    +
    817 template <layout_type L, class S>
    +
    +
    818 inline auto xiterable<D>::begin(const S& shape) noexcept -> broadcast_iterator<S, L>
    +
    819 {
    +
    820 return get_begin<L, S>(shape, false);
    +
    821 }
    +
    +
    822
    +
    830 template <class D>
    +
    831 template <layout_type L, class S>
    +
    +
    832 inline auto xiterable<D>::end(const S& shape) noexcept -> broadcast_iterator<S, L>
    +
    833 {
    +
    834 return get_end<L, S>(shape, true);
    +
    835 }
    +
    +
    836
    +
    838
    +
    850 template <class D>
    +
    851 template <layout_type L, class S>
    +
    +
    852 inline auto xiterable<D>::rbegin(const S& shape) noexcept -> reverse_broadcast_iterator<S, L>
    +
    853 {
    +
    854 return reverse_broadcast_iterator<S, L>(get_end<L, S>(shape, true));
    +
    855 }
    +
    +
    856
    +
    864 template <class D>
    +
    865 template <layout_type L, class S>
    +
    +
    866 inline auto xiterable<D>::rend(const S& shape) noexcept -> reverse_broadcast_iterator<S, L>
    +
    867 {
    +
    868 return reverse_broadcast_iterator<S, L>(get_begin<L, S>(shape, false));
    +
    869 }
    +
    +
    870
    +
    872
    +
    873 template <class D>
    +
    874 template <layout_type L>
    +
    875 inline auto xiterable<D>::get_begin(bool end_index) noexcept -> layout_iterator<L>
    +
    876 {
    +
    877 return layout_iterator<L>(get_stepper_begin(this->get_shape()), &(this->get_shape()), end_index);
    +
    878 }
    +
    879
    +
    880 template <class D>
    +
    881 template <layout_type L>
    +
    882 inline auto xiterable<D>::get_end(bool end_index) noexcept -> layout_iterator<L>
    +
    883 {
    +
    884 return layout_iterator<L>(get_stepper_end(this->get_shape(), L), &(this->get_shape()), end_index);
    +
    885 }
    +
    886
    +
    887 template <class D>
    +
    888 template <layout_type L, class S>
    +
    889 inline auto xiterable<D>::get_begin(const S& shape, bool end_index) noexcept -> broadcast_iterator<S, L>
    +
    890 {
    +
    891 return broadcast_iterator<S, L>(get_stepper_begin(shape), shape, end_index);
    +
    892 }
    +
    893
    +
    894 template <class D>
    +
    895 template <layout_type L, class S>
    +
    896 inline auto xiterable<D>::get_end(const S& shape, bool end_index) noexcept -> broadcast_iterator<S, L>
    +
    897 {
    +
    898 return broadcast_iterator<S, L>(get_stepper_end(shape, L), shape, end_index);
    +
    899 }
    +
    900
    +
    901 template <class D>
    +
    902 template <class S>
    +
    903 inline auto xiterable<D>::get_stepper_begin(const S& shape) noexcept -> stepper
    +
    904 {
    +
    905 return derived_cast().stepper_begin(shape);
    +
    906 }
    +
    907
    +
    908 template <class D>
    +
    909 template <class S>
    +
    910 inline auto xiterable<D>::get_stepper_end(const S& shape, layout_type l) noexcept -> stepper
    +
    911 {
    +
    912 return derived_cast().stepper_end(shape, l);
    +
    913 }
    +
    914
    +
    915 template <class D>
    +
    916 template <class S>
    +
    917 inline auto xiterable<D>::get_stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    918 {
    +
    919 return derived_cast().stepper_begin(shape);
    +
    920 }
    +
    921
    +
    922 template <class D>
    +
    923 template <class S>
    +
    924 inline auto xiterable<D>::get_stepper_end(const S& shape, layout_type l) const noexcept -> const_stepper
    +
    925 {
    +
    926 return derived_cast().stepper_end(shape, l);
    +
    927 }
    +
    928
    +
    929 template <class D>
    +
    930 inline auto xiterable<D>::derived_cast() -> derived_type&
    +
    931 {
    +
    932 return *static_cast<derived_type*>(this);
    +
    933 }
    +
    934
    +
    935 /***************************************
    +
    936 * xcontiguous_iterable implementation *
    +
    937 ***************************************/
    +
    938
    +
    947 template <class D>
    +
    948 template <layout_type L>
    +
    +
    949 inline auto xcontiguous_iterable<D>::begin() noexcept -> select_iterator<L>
    +
    950 {
    +
    951 return xtl::mpl::static_if<L == static_layout>(
    +
    952 [&](auto self)
    +
    953 {
    +
    954 return self(*this).derived_cast().linear_begin();
    +
    955 },
    +
    956 /*else*/
    +
    957 [&](auto self)
    +
    958 {
    +
    959 return self(*this).iterable_base::template begin<L>();
    +
    960 }
    +
    961 );
    +
    962 }
    +
    +
    963
    +
    969 template <class D>
    +
    970 template <layout_type L>
    +
    +
    971 inline auto xcontiguous_iterable<D>::end() noexcept -> select_iterator<L>
    +
    972 {
    +
    973 return xtl::mpl::static_if<L == static_layout>(
    +
    974 [&](auto self)
    +
    975 {
    +
    976 return self(*this).derived_cast().linear_end();
    +
    977 },
    +
    978 /*else*/
    +
    979 [&](auto self)
    +
    980 {
    +
    981 return self(*this).iterable_base::template end<L>();
    +
    982 }
    +
    983 );
    +
    984 }
    +
    +
    985
    +
    990 template <class D>
    +
    991 template <layout_type L>
    +
    +
    992 inline auto xcontiguous_iterable<D>::begin() const noexcept -> select_const_iterator<L>
    +
    993 {
    +
    994 return this->template cbegin<L>();
    +
    995 }
    +
    +
    996
    +
    1002 template <class D>
    +
    1003 template <layout_type L>
    +
    +
    1004 inline auto xcontiguous_iterable<D>::end() const noexcept -> select_const_iterator<L>
    +
    1005 {
    +
    1006 return this->template cend<L>();
    +
    1007 }
    +
    +
    1008
    +
    1013 template <class D>
    +
    1014 template <layout_type L>
    +
    +
    1015 inline auto xcontiguous_iterable<D>::cbegin() const noexcept -> select_const_iterator<L>
    +
    1016 {
    +
    1017 return xtl::mpl::static_if<L == static_layout>(
    +
    1018 [&](auto self)
    +
    1019 {
    +
    1020 return self(*this).derived_cast().linear_cbegin();
    +
    1021 },
    +
    1022 /*else*/
    +
    1023 [&](auto self)
    +
    1024 {
    +
    1025 return self(*this).iterable_base::template cbegin<L>();
    +
    1026 }
    +
    1027 );
    +
    1028 }
    +
    +
    1029
    +
    1035 template <class D>
    +
    1036 template <layout_type L>
    +
    +
    1037 inline auto xcontiguous_iterable<D>::cend() const noexcept -> select_const_iterator<L>
    +
    1038 {
    +
    1039 return xtl::mpl::static_if<L == static_layout>(
    +
    1040 [&](auto self)
    +
    1041 {
    +
    1042 return self(*this).derived_cast().linear_cend();
    +
    1043 },
    +
    1044 /*else*/
    +
    1045 [&](auto self)
    +
    1046 {
    +
    1047 return self(*this).iterable_base::template cend<L>();
    +
    1048 }
    +
    1049 );
    +
    1050 }
    +
    +
    1051
    +
    1053
    +
    1062 template <class D>
    +
    1063 template <layout_type L>
    +
    +
    1064 inline auto xcontiguous_iterable<D>::rbegin() noexcept -> select_reverse_iterator<L>
    +
    1065 {
    +
    1066 return xtl::mpl::static_if<L == static_layout>(
    +
    1067 [&](auto self)
    +
    1068 {
    +
    1069 return self(*this).derived_cast().linear_rbegin();
    +
    1070 },
    +
    1071 /*else*/
    +
    1072 [&](auto self)
    +
    1073 {
    +
    1074 return self(*this).iterable_base::template rbegin<L>();
    +
    1075 }
    +
    1076 );
    +
    1077 }
    +
    +
    1078
    +
    1084 template <class D>
    +
    1085 template <layout_type L>
    +
    +
    1086 inline auto xcontiguous_iterable<D>::rend() noexcept -> select_reverse_iterator<L>
    +
    1087 {
    +
    1088 return xtl::mpl::static_if<L == static_layout>(
    +
    1089 [&](auto self)
    +
    1090 {
    +
    1091 return self(*this).derived_cast().linear_rend();
    +
    1092 },
    +
    1093 /*else*/
    +
    1094 [&](auto self)
    +
    1095 {
    +
    1096 return self(*this).iterable_base::template rend<L>();
    +
    1097 }
    +
    1098 );
    +
    1099 }
    +
    +
    1100
    +
    1105 template <class D>
    +
    1106 template <layout_type L>
    +
    +
    1107 inline auto xcontiguous_iterable<D>::rbegin() const noexcept -> select_const_reverse_iterator<L>
    +
    1108 {
    +
    1109 return this->template crbegin<L>();
    +
    1110 }
    +
    +
    1111
    +
    1117 template <class D>
    +
    1118 template <layout_type L>
    +
    +
    1119 inline auto xcontiguous_iterable<D>::rend() const noexcept -> select_const_reverse_iterator<L>
    +
    1120 {
    +
    1121 return this->template crend<L>();
    +
    1122 }
    +
    +
    1123
    +
    1128 template <class D>
    +
    1129 template <layout_type L>
    +
    +
    1130 inline auto xcontiguous_iterable<D>::crbegin() const noexcept -> select_const_reverse_iterator<L>
    +
    1131 {
    +
    1132 return xtl::mpl::static_if<L == static_layout>(
    +
    1133 [&](auto self)
    +
    1134 {
    +
    1135 return self(*this).derived_cast().linear_crbegin();
    +
    1136 },
    +
    1137 /*else*/
    +
    1138 [&](auto self)
    +
    1139 {
    +
    1140 return self(*this).iterable_base::template crbegin<L>();
    +
    1141 }
    +
    1142 );
    +
    1143 }
    +
    +
    1144
    +
    1150 template <class D>
    +
    1151 template <layout_type L>
    +
    +
    1152 inline auto xcontiguous_iterable<D>::crend() const noexcept -> select_const_reverse_iterator<L>
    +
    1153 {
    +
    1154 return xtl::mpl::static_if<L == static_layout>(
    +
    1155 [&](auto self)
    +
    1156 {
    +
    1157 return self(*this).derived_cast().linear_crend();
    +
    1158 },
    +
    1159 /*else*/
    +
    1160 [&](auto self)
    +
    1161 {
    +
    1162 return self(*this).iterable_base::template crend<L>();
    +
    1163 }
    +
    1164 );
    +
    1165 }
    +
    +
    1166
    +
    1168
    +
    1181 template <class D>
    +
    1182 template <layout_type L, class S>
    +
    +
    1183 inline auto xcontiguous_iterable<D>::begin(const S& shape) noexcept -> broadcast_iterator<S, L>
    +
    1184 {
    +
    1185 return iterable_base::template begin<L, S>(shape);
    +
    1186 }
    +
    +
    1187
    +
    1195 template <class D>
    +
    1196 template <layout_type L, class S>
    +
    +
    1197 inline auto xcontiguous_iterable<D>::end(const S& shape) noexcept -> broadcast_iterator<S, L>
    +
    1198 {
    +
    1199 return iterable_base::template end<L, S>(shape);
    +
    1200 }
    +
    +
    1201
    +
    1209 template <class D>
    +
    1210 template <layout_type L, class S>
    +
    +
    1211 inline auto xcontiguous_iterable<D>::begin(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    1212 {
    +
    1213 return iterable_base::template begin<L, S>(shape);
    +
    1214 }
    +
    +
    1215
    +
    1223 template <class D>
    +
    1224 template <layout_type L, class S>
    +
    +
    1225 inline auto xcontiguous_iterable<D>::end(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    1226 {
    +
    1227 return iterable_base::template end<L, S>(shape);
    +
    1228 }
    +
    +
    1229
    +
    1237 template <class D>
    +
    1238 template <layout_type L, class S>
    +
    +
    1239 inline auto xcontiguous_iterable<D>::cbegin(const S& shape) const noexcept
    +
    1240 -> const_broadcast_iterator<S, L>
    +
    1241 {
    +
    1242 return iterable_base::template cbegin<L, S>(shape);
    +
    1243 }
    +
    +
    1244
    +
    1252 template <class D>
    +
    1253 template <layout_type L, class S>
    +
    +
    1254 inline auto xcontiguous_iterable<D>::cend(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    1255 {
    +
    1256 return iterable_base::template cend<L, S>(shape);
    +
    1257 }
    +
    +
    1258
    +
    1260
    +
    1272 template <class D>
    +
    1273 template <layout_type L, class S>
    +
    +
    1274 inline auto xcontiguous_iterable<D>::rbegin(const S& shape) noexcept -> reverse_broadcast_iterator<S, L>
    +
    1275 {
    +
    1276 return iterable_base::template rbegin<L, S>(shape);
    +
    1277 }
    +
    +
    1278
    +
    1286 template <class D>
    +
    1287 template <layout_type L, class S>
    +
    +
    1288 inline auto xcontiguous_iterable<D>::rend(const S& shape) noexcept -> reverse_broadcast_iterator<S, L>
    +
    1289 {
    +
    1290 return iterable_base::template rend<L, S>(shape);
    +
    1291 }
    +
    +
    1292
    +
    1300 template <class D>
    +
    1301 template <layout_type L, class S>
    +
    +
    1302 inline auto xcontiguous_iterable<D>::rbegin(const S& shape) const noexcept
    +
    1303 -> const_reverse_broadcast_iterator<S, L>
    +
    1304 {
    +
    1305 return iterable_base::template rbegin<L, S>(shape);
    +
    1306 }
    +
    +
    1307
    +
    1315 template <class D>
    +
    1316 template <layout_type L, class S>
    +
    +
    1317 inline auto xcontiguous_iterable<D>::rend(const S& shape) const noexcept
    +
    1318 -> const_reverse_broadcast_iterator<S, L>
    +
    1319 {
    +
    1320 return iterable_base::template rend<L, S>(shape);
    +
    1321 }
    +
    +
    1322
    +
    1330 template <class D>
    +
    1331 template <layout_type L, class S>
    +
    +
    1332 inline auto xcontiguous_iterable<D>::crbegin(const S& shape) const noexcept
    +
    1333 -> const_reverse_broadcast_iterator<S, L>
    +
    1334 {
    +
    1335 return iterable_base::template crbegin<L, S>(shape);
    +
    1336 }
    +
    +
    1337
    +
    1345 template <class D>
    +
    1346 template <layout_type L, class S>
    +
    +
    1347 inline auto xcontiguous_iterable<D>::crend(const S& shape) const noexcept
    +
    1348 -> const_reverse_broadcast_iterator<S, L>
    +
    1349 {
    +
    1350 return iterable_base::template crend<L, S>(shape);
    +
    1351 }
    +
    +
    1352
    +
    1354
    +
    1355 template <class D>
    +
    1356 inline auto xcontiguous_iterable<D>::derived_cast() -> derived_type&
    +
    1357 {
    +
    1358 return *static_cast<derived_type*>(this);
    +
    1359 }
    +
    1360
    +
    1361 template <class D>
    +
    1362 inline auto xcontiguous_iterable<D>::derived_cast() const -> const derived_type&
    +
    1363 {
    +
    1364 return *static_cast<const derived_type*>(this);
    +
    1365 }
    +
    1366
    +
    1367}
    +
    1368
    +
    1369#endif
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for multidimensional iterable expressions with contiguous storage.
    +
    Base class for multidimensional iterable expressions.
    + +
    Dense multidimensional container holding optional values, optimized for tensor operations.
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    +
    + + + + diff --git a/xiterator_8hpp_source.html b/xiterator_8hpp_source.html new file mode 100644 index 000000000..0c8dcd538 --- /dev/null +++ b/xiterator_8hpp_source.html @@ -0,0 +1,1448 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xiterator.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xiterator.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_ITERATOR_HPP
    +
    11#define XTENSOR_ITERATOR_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cstddef>
    +
    16#include <iterator>
    +
    17#include <numeric>
    +
    18#include <vector>
    +
    19
    +
    20#include <xtl/xcompare.hpp>
    +
    21#include <xtl/xiterator_base.hpp>
    +
    22#include <xtl/xmeta_utils.hpp>
    +
    23#include <xtl/xsequence.hpp>
    +
    24
    +
    25#include "xexception.hpp"
    +
    26#include "xlayout.hpp"
    +
    27#include "xshape.hpp"
    +
    28#include "xutils.hpp"
    +
    29
    +
    30namespace xt
    +
    31{
    +
    32
    +
    33 /***********************
    +
    34 * iterator meta utils *
    +
    35 ***********************/
    +
    36
    +
    37 template <class CT>
    +
    38 class xscalar;
    +
    39
    +
    40 template <bool is_const, class CT>
    +
    41 class xscalar_stepper;
    +
    42
    +
    43 namespace detail
    +
    44 {
    +
    45 template <class C>
    +
    46 struct get_stepper_iterator_impl
    +
    47 {
    +
    48 using type = typename C::container_iterator;
    +
    49 };
    +
    50
    +
    51 template <class C>
    +
    52 struct get_stepper_iterator_impl<const C>
    +
    53 {
    +
    54 using type = typename C::const_container_iterator;
    +
    55 };
    +
    56
    +
    57 template <class CT>
    +
    58 struct get_stepper_iterator_impl<xscalar<CT>>
    +
    59 {
    +
    60 using type = typename xscalar<CT>::dummy_iterator;
    +
    61 };
    +
    62
    +
    63 template <class CT>
    +
    64 struct get_stepper_iterator_impl<const xscalar<CT>>
    +
    65 {
    +
    66 using type = typename xscalar<CT>::const_dummy_iterator;
    +
    67 };
    +
    68 }
    +
    69
    +
    70 template <class C>
    +
    71 using get_stepper_iterator = typename detail::get_stepper_iterator_impl<C>::type;
    +
    72
    +
    73 /********************************
    +
    74 * xindex_type_t implementation *
    +
    75 ********************************/
    +
    76
    +
    77 namespace detail
    +
    78 {
    +
    79 template <class ST>
    +
    80 struct index_type_impl
    +
    81 {
    +
    82 using type = dynamic_shape<typename ST::value_type>;
    +
    83 };
    +
    84
    +
    85 template <class V, std::size_t L>
    +
    86 struct index_type_impl<std::array<V, L>>
    +
    87 {
    +
    88 using type = std::array<V, L>;
    +
    89 };
    +
    90
    +
    91 template <std::size_t... I>
    +
    92 struct index_type_impl<fixed_shape<I...>>
    +
    93 {
    +
    94 using type = std::array<std::size_t, sizeof...(I)>;
    +
    95 };
    +
    96 }
    +
    97
    +
    98 template <class C>
    +
    99 using xindex_type_t = typename detail::index_type_impl<C>::type;
    +
    100
    +
    101 /************
    +
    102 * xstepper *
    +
    103 ************/
    +
    104
    +
    105 template <class C>
    +
    + +
    107 {
    +
    108 public:
    +
    109
    +
    110 using storage_type = C;
    +
    111 using subiterator_type = get_stepper_iterator<C>;
    +
    112 using subiterator_traits = std::iterator_traits<subiterator_type>;
    +
    113 using value_type = typename subiterator_traits::value_type;
    +
    114 using reference = typename subiterator_traits::reference;
    +
    115 using pointer = typename subiterator_traits::pointer;
    +
    116 using difference_type = typename subiterator_traits::difference_type;
    +
    117 using size_type = typename storage_type::size_type;
    +
    118 using shape_type = typename storage_type::shape_type;
    +
    119 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    120
    +
    121 template <class requested_type>
    +
    122 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    123
    +
    124 xstepper() = default;
    +
    125 xstepper(storage_type* c, subiterator_type it, size_type offset) noexcept;
    +
    126
    +
    127 reference operator*() const;
    +
    128
    +
    129 void step(size_type dim, size_type n = 1);
    +
    130 void step_back(size_type dim, size_type n = 1);
    +
    131 void reset(size_type dim);
    +
    132 void reset_back(size_type dim);
    +
    133
    +
    134 void to_begin();
    +
    135 void to_end(layout_type l);
    +
    136
    +
    137 template <class T>
    +
    138 simd_return_type<T> step_simd();
    +
    139
    +
    140 void step_leading();
    +
    141
    +
    142 template <class R>
    +
    143 void store_simd(const R& vec);
    +
    144
    +
    145 private:
    +
    146
    +
    147 storage_type* p_c;
    +
    148 subiterator_type m_it;
    +
    149 size_type m_offset;
    +
    150 };
    +
    +
    151
    +
    152 template <layout_type L>
    +
    + +
    154 {
    +
    155 // For performance reasons, increment_stepper and decrement_stepper are
    +
    156 // specialized for the case where n=1, which underlies operator++ and
    +
    157 // operator-- on xiterators.
    +
    158
    +
    159 template <class S, class IT, class ST>
    +
    160 static void increment_stepper(S& stepper, IT& index, const ST& shape);
    +
    161
    +
    162 template <class S, class IT, class ST>
    +
    163 static void decrement_stepper(S& stepper, IT& index, const ST& shape);
    +
    164
    +
    165 template <class S, class IT, class ST>
    +
    166 static void increment_stepper(S& stepper, IT& index, const ST& shape, typename S::size_type n);
    +
    167
    +
    168 template <class S, class IT, class ST>
    +
    169 static void decrement_stepper(S& stepper, IT& index, const ST& shape, typename S::size_type n);
    +
    170 };
    +
    +
    171
    +
    172 /********************
    +
    173 * xindexed_stepper *
    +
    174 ********************/
    +
    175
    +
    176 template <class E, bool is_const>
    +
    + +
    178 {
    +
    179 public:
    +
    180
    + +
    182 using xexpression_type = std::conditional_t<is_const, const E, E>;
    +
    183
    +
    184 using value_type = typename xexpression_type::value_type;
    +
    185 using reference = std::
    +
    186 conditional_t<is_const, typename xexpression_type::const_reference, typename xexpression_type::reference>;
    +
    187 using pointer = std::
    +
    188 conditional_t<is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer>;
    +
    189 using size_type = typename xexpression_type::size_type;
    +
    190 using difference_type = typename xexpression_type::difference_type;
    +
    191
    +
    192 using shape_type = typename xexpression_type::shape_type;
    +
    193 using index_type = xindex_type_t<shape_type>;
    +
    194
    +
    195 xindexed_stepper() = default;
    +
    196 xindexed_stepper(xexpression_type* e, size_type offset, bool end = false) noexcept;
    +
    197
    +
    198 reference operator*() const;
    +
    199
    +
    200 void step(size_type dim, size_type n = 1);
    +
    201 void step_back(size_type dim, size_type n = 1);
    +
    202 void reset(size_type dim);
    +
    203 void reset_back(size_type dim);
    +
    204
    +
    205 void to_begin();
    +
    206 void to_end(layout_type l);
    +
    207
    +
    208 private:
    +
    209
    +
    210 xexpression_type* p_e;
    +
    211 index_type m_index;
    +
    212 size_type m_offset;
    +
    213 };
    +
    +
    214
    +
    215 template <class T>
    +
    + +
    217 {
    +
    218 static const bool value = false;
    +
    219 };
    +
    +
    220
    +
    221 template <class T, bool B>
    +
    + +
    223 {
    +
    224 static const bool value = true;
    +
    225 };
    +
    +
    226
    +
    227 template <class T, class R = T>
    +
    +
    228 struct enable_indexed_stepper : std::enable_if<is_indexed_stepper<T>::value, R>
    +
    229 {
    +
    230 };
    +
    +
    231
    +
    232 template <class T, class R = T>
    +
    233 using enable_indexed_stepper_t = typename enable_indexed_stepper<T, R>::type;
    +
    234
    +
    235 template <class T, class R = T>
    +
    +
    236 struct disable_indexed_stepper : std::enable_if<!is_indexed_stepper<T>::value, R>
    +
    237 {
    +
    238 };
    +
    +
    239
    +
    240 template <class T, class R = T>
    +
    241 using disable_indexed_stepper_t = typename disable_indexed_stepper<T, R>::type;
    +
    242
    +
    243 /*************
    +
    244 * xiterator *
    +
    245 *************/
    +
    246
    +
    247 namespace detail
    +
    248 {
    +
    249 template <class S>
    +
    250 class shape_storage
    +
    251 {
    +
    252 public:
    +
    253
    +
    254 using shape_type = S;
    +
    255 using param_type = const S&;
    +
    256
    +
    257 shape_storage() = default;
    +
    258 shape_storage(param_type shape);
    +
    259 const S& shape() const;
    +
    260
    +
    261 private:
    +
    262
    +
    263 S m_shape;
    +
    264 };
    +
    265
    +
    266 template <class S>
    +
    267 class shape_storage<S*>
    +
    268 {
    +
    269 public:
    +
    270
    +
    271 using shape_type = S;
    +
    272 using param_type = const S*;
    +
    273
    +
    274 shape_storage(param_type shape = 0);
    +
    275 const S& shape() const;
    +
    276
    +
    277 private:
    +
    278
    +
    279 const S* p_shape;
    +
    280 };
    +
    281
    +
    282 template <layout_type L>
    +
    283 struct LAYOUT_FORBIDEN_FOR_XITERATOR;
    +
    284 }
    +
    285
    +
    286 template <class St, class S, layout_type L>
    +
    +
    287 class xiterator : public xtl::xrandom_access_iterator_base<
    +
    288 xiterator<St, S, L>,
    +
    289 typename St::value_type,
    +
    290 typename St::difference_type,
    +
    291 typename St::pointer,
    +
    292 typename St::reference>,
    +
    293 private detail::shape_storage<S>
    +
    294 {
    +
    295 public:
    +
    296
    + +
    298
    +
    299 using stepper_type = St;
    +
    300 using value_type = typename stepper_type::value_type;
    +
    301 using reference = typename stepper_type::reference;
    +
    302 using pointer = typename stepper_type::pointer;
    +
    303 using difference_type = typename stepper_type::difference_type;
    +
    304 using size_type = typename stepper_type::size_type;
    +
    305 using iterator_category = std::random_access_iterator_tag;
    +
    306
    +
    307 using private_base = detail::shape_storage<S>;
    +
    308 using shape_type = typename private_base::shape_type;
    +
    309 using shape_param_type = typename private_base::param_type;
    +
    310 using index_type = xindex_type_t<shape_type>;
    +
    311
    +
    312 xiterator() = default;
    +
    313
    +
    314 // end_index means either reverse_iterator && !end or !reverse_iterator && end
    +
    315 xiterator(St st, shape_param_type shape, bool end_index);
    +
    316
    +
    317 self_type& operator++();
    +
    318 self_type& operator--();
    +
    319
    +
    320 self_type& operator+=(difference_type n);
    +
    321 self_type& operator-=(difference_type n);
    +
    322
    +
    323 difference_type operator-(const self_type& rhs) const;
    +
    324
    +
    325 reference operator*() const;
    +
    326 pointer operator->() const;
    +
    327
    +
    328 bool equal(const xiterator& rhs) const;
    +
    329 bool less_than(const xiterator& rhs) const;
    +
    330
    +
    331 private:
    +
    332
    +
    333 stepper_type m_st;
    +
    334 index_type m_index;
    +
    335 difference_type m_linear_index;
    +
    336
    +
    337 using checking_type = typename detail::LAYOUT_FORBIDEN_FOR_XITERATOR<L>::type;
    +
    338 };
    +
    +
    339
    +
    340 template <class St, class S, layout_type L>
    +
    341 bool operator==(const xiterator<St, S, L>& lhs, const xiterator<St, S, L>& rhs);
    +
    342
    +
    343 template <class St, class S, layout_type L>
    +
    344 bool operator<(const xiterator<St, S, L>& lhs, const xiterator<St, S, L>& rhs);
    +
    345
    +
    346 template <class St, class S, layout_type L>
    +
    +
    347 struct is_contiguous_container<xiterator<St, S, L>> : std::false_type
    +
    348 {
    +
    349 };
    +
    +
    350
    +
    351 /*********************
    +
    352 * xbounded_iterator *
    +
    353 *********************/
    +
    354
    +
    355 template <class It, class BIt>
    +
    +
    356 class xbounded_iterator : public xtl::xrandom_access_iterator_base<
    +
    357 xbounded_iterator<It, BIt>,
    +
    358 typename std::iterator_traits<It>::value_type,
    +
    359 typename std::iterator_traits<It>::difference_type,
    +
    360 typename std::iterator_traits<It>::pointer,
    +
    361 typename std::iterator_traits<It>::reference>
    +
    362 {
    +
    363 public:
    +
    364
    + +
    366
    +
    367 using subiterator_type = It;
    +
    368 using bound_iterator_type = BIt;
    +
    369 using value_type = typename std::iterator_traits<It>::value_type;
    +
    370 using reference = typename std::iterator_traits<It>::reference;
    +
    371 using pointer = typename std::iterator_traits<It>::pointer;
    +
    372 using difference_type = typename std::iterator_traits<It>::difference_type;
    +
    373 using iterator_category = std::random_access_iterator_tag;
    +
    374
    +
    375 xbounded_iterator() = default;
    +
    376 xbounded_iterator(It it, BIt bound_it);
    +
    377
    +
    378 self_type& operator++();
    +
    379 self_type& operator--();
    +
    380
    +
    381 self_type& operator+=(difference_type n);
    +
    382 self_type& operator-=(difference_type n);
    +
    383
    +
    384 difference_type operator-(const self_type& rhs) const;
    +
    385
    +
    386 value_type operator*() const;
    +
    387
    +
    388 bool equal(const self_type& rhs) const;
    +
    389 bool less_than(const self_type& rhs) const;
    +
    390
    +
    391 private:
    +
    392
    +
    393 subiterator_type m_it;
    +
    394 bound_iterator_type m_bound_it;
    +
    395 };
    +
    +
    396
    +
    397 template <class It, class BIt>
    + +
    399
    +
    400 template <class It, class BIt>
    +
    401 bool operator<(const xbounded_iterator<It, BIt>& lhs, const xbounded_iterator<It, BIt>& rhs);
    +
    402
    +
    403 /*****************************
    +
    404 * linear_begin / linear_end *
    +
    405 *****************************/
    +
    406
    +
    407 namespace detail
    +
    408 {
    +
    409 template <class C, class = void_t<>>
    +
    410 struct has_linear_iterator : std::false_type
    +
    411 {
    +
    412 };
    +
    413
    +
    414 template <class C>
    +
    415 struct has_linear_iterator<C, void_t<decltype(std::declval<C>().linear_cbegin())>> : std::true_type
    +
    416 {
    +
    417 };
    +
    418 }
    +
    419
    +
    420 template <class C>
    +
    421 XTENSOR_CONSTEXPR_RETURN auto linear_begin(C& c) noexcept
    +
    422 {
    +
    423 return xtl::mpl::static_if<detail::has_linear_iterator<C>::value>(
    +
    424 [&](auto self)
    +
    425 {
    +
    426 return self(c).linear_begin();
    +
    427 },
    +
    428 /*else*/
    +
    429 [&](auto self)
    +
    430 {
    +
    431 return self(c).begin();
    +
    432 }
    +
    433 );
    +
    434 }
    +
    435
    +
    436 template <class C>
    +
    437 XTENSOR_CONSTEXPR_RETURN auto linear_end(C& c) noexcept
    +
    438 {
    +
    439 return xtl::mpl::static_if<detail::has_linear_iterator<C>::value>(
    +
    440 [&](auto self)
    +
    441 {
    +
    442 return self(c).linear_end();
    +
    443 },
    +
    444 /*else*/
    +
    445 [&](auto self)
    +
    446 {
    +
    447 return self(c).end();
    +
    448 }
    +
    449 );
    +
    450 }
    +
    451
    +
    452 template <class C>
    +
    453 XTENSOR_CONSTEXPR_RETURN auto linear_begin(const C& c) noexcept
    +
    454 {
    +
    455 return xtl::mpl::static_if<detail::has_linear_iterator<C>::value>(
    +
    456 [&](auto self)
    +
    457 {
    +
    458 return self(c).linear_cbegin();
    +
    459 },
    +
    460 /*else*/
    +
    461 [&](auto self)
    +
    462 {
    +
    463 return self(c).cbegin();
    +
    464 }
    +
    465 );
    +
    466 }
    +
    467
    +
    468 template <class C>
    +
    469 XTENSOR_CONSTEXPR_RETURN auto linear_end(const C& c) noexcept
    +
    470 {
    +
    471 return xtl::mpl::static_if<detail::has_linear_iterator<C>::value>(
    +
    472 [&](auto self)
    +
    473 {
    +
    474 return self(c).linear_cend();
    +
    475 },
    +
    476 /*else*/
    +
    477 [&](auto self)
    +
    478 {
    +
    479 return self(c).cend();
    +
    480 }
    +
    481 );
    +
    482 }
    +
    483
    +
    484 /***************************
    +
    485 * xstepper implementation *
    +
    486 ***************************/
    +
    487
    +
    488 template <class C>
    +
    489 inline xstepper<C>::xstepper(storage_type* c, subiterator_type it, size_type offset) noexcept
    +
    490 : p_c(c)
    +
    491 , m_it(it)
    +
    492 , m_offset(offset)
    +
    493 {
    +
    494 }
    +
    495
    +
    496 template <class C>
    +
    497 inline auto xstepper<C>::operator*() const -> reference
    +
    498 {
    +
    499 return *m_it;
    +
    500 }
    +
    501
    +
    502 template <class C>
    +
    503 inline void xstepper<C>::step(size_type dim, size_type n)
    +
    504 {
    +
    505 if (dim >= m_offset)
    +
    506 {
    +
    507 using strides_value_type = typename std::decay_t<decltype(p_c->strides())>::value_type;
    +
    508 m_it += difference_type(static_cast<strides_value_type>(n) * p_c->strides()[dim - m_offset]);
    +
    509 }
    +
    510 }
    +
    511
    +
    512 template <class C>
    +
    513 inline void xstepper<C>::step_back(size_type dim, size_type n)
    +
    514 {
    +
    515 if (dim >= m_offset)
    +
    516 {
    +
    517 using strides_value_type = typename std::decay_t<decltype(p_c->strides())>::value_type;
    +
    518 m_it -= difference_type(static_cast<strides_value_type>(n) * p_c->strides()[dim - m_offset]);
    +
    519 }
    +
    520 }
    +
    521
    +
    522 template <class C>
    +
    523 inline void xstepper<C>::reset(size_type dim)
    +
    524 {
    +
    525 if (dim >= m_offset)
    +
    526 {
    +
    527 m_it -= difference_type(p_c->backstrides()[dim - m_offset]);
    +
    528 }
    +
    529 }
    +
    530
    +
    531 template <class C>
    +
    532 inline void xstepper<C>::reset_back(size_type dim)
    +
    533 {
    +
    534 if (dim >= m_offset)
    +
    535 {
    +
    536 m_it += difference_type(p_c->backstrides()[dim - m_offset]);
    +
    537 }
    +
    538 }
    +
    539
    +
    540 template <class C>
    +
    541 inline void xstepper<C>::to_begin()
    +
    542 {
    +
    543 m_it = p_c->data_xbegin();
    +
    544 }
    +
    545
    +
    546 template <class C>
    +
    547 inline void xstepper<C>::to_end(layout_type l)
    +
    548 {
    +
    549 m_it = p_c->data_xend(l, m_offset);
    +
    550 }
    +
    551
    +
    552 namespace detail
    +
    553 {
    +
    554 template <class It>
    +
    555 struct step_simd_invoker
    +
    556 {
    +
    557 template <class R>
    +
    558 static R apply(const It& it)
    +
    559 {
    +
    560 R reg;
    +
    561 return reg.load_unaligned(&(*it));
    +
    562 // return reg;
    +
    563 }
    +
    564 };
    +
    565
    +
    566 template <bool is_const, class T, class S, layout_type L>
    +
    567 struct step_simd_invoker<xiterator<xscalar_stepper<is_const, T>, S, L>>
    +
    568 {
    +
    569 template <class R>
    +
    570 static R apply(const xiterator<xscalar_stepper<is_const, T>, S, L>& it)
    +
    571 {
    +
    572 return R(*it);
    +
    573 }
    +
    574 };
    +
    575 }
    +
    576
    +
    577 template <class C>
    +
    578 template <class T>
    +
    579 inline auto xstepper<C>::step_simd() -> simd_return_type<T>
    +
    580 {
    +
    581 using simd_type = simd_return_type<T>;
    +
    582 simd_type reg = detail::step_simd_invoker<subiterator_type>::template apply<simd_type>(m_it);
    + +
    584 return reg;
    +
    585 }
    +
    586
    +
    587 template <class C>
    +
    588 template <class R>
    +
    589 inline void xstepper<C>::store_simd(const R& vec)
    +
    590 {
    +
    591 vec.store_unaligned(&(*m_it));
    + +
    593 ;
    +
    594 }
    +
    595
    +
    596 template <class C>
    +
    597 void xstepper<C>::step_leading()
    +
    598 {
    +
    599 ++m_it;
    +
    600 }
    +
    601
    +
    602 template <>
    +
    603 template <class S, class IT, class ST>
    +
    604 void stepper_tools<layout_type::row_major>::increment_stepper(S& stepper, IT& index, const ST& shape)
    +
    605 {
    +
    606 using size_type = typename S::size_type;
    +
    607 const size_type size = index.size();
    +
    608 size_type i = size;
    +
    609 while (i != 0)
    +
    610 {
    +
    611 --i;
    +
    612 if (index[i] != shape[i] - 1)
    +
    613 {
    +
    614 ++index[i];
    +
    615 stepper.step(i);
    +
    616 return;
    +
    617 }
    +
    618 else
    +
    619 {
    +
    620 index[i] = 0;
    +
    621 if (i != 0)
    +
    622 {
    +
    623 stepper.reset(i);
    +
    624 }
    +
    625 }
    +
    626 }
    +
    627 if (i == 0)
    +
    628 {
    +
    629 if (size != size_type(0))
    +
    630 {
    +
    631 std::transform(
    +
    632 shape.cbegin(),
    +
    633 shape.cend() - 1,
    +
    634 index.begin(),
    +
    635 [](const auto& v)
    +
    636 {
    +
    637 return v - 1;
    +
    638 }
    +
    639 );
    +
    640 index[size - 1] = shape[size - 1];
    +
    641 }
    +
    642 stepper.to_end(layout_type::row_major);
    +
    643 }
    +
    644 }
    +
    645
    +
    646 template <>
    +
    647 template <class S, class IT, class ST>
    +
    648 void stepper_tools<layout_type::row_major>::increment_stepper(
    +
    649 S& stepper,
    +
    650 IT& index,
    +
    651 const ST& shape,
    +
    652 typename S::size_type n
    +
    653 )
    +
    654 {
    +
    655 using size_type = typename S::size_type;
    +
    656 const size_type size = index.size();
    +
    657 const size_type leading_i = size - 1;
    +
    658 size_type i = size;
    +
    659 while (i != 0 && n != 0)
    +
    660 {
    +
    661 --i;
    +
    662 size_type inc = (i == leading_i) ? n : 1;
    +
    663 if (xtl::cmp_less(index[i] + inc, shape[i]))
    +
    664 {
    +
    665 index[i] += inc;
    +
    666 stepper.step(i, inc);
    +
    667 n -= inc;
    +
    668 if (i != leading_i || index.size() == 1)
    +
    669 {
    +
    670 i = index.size();
    +
    671 }
    +
    672 }
    +
    673 else
    +
    674 {
    +
    675 if (i == leading_i)
    +
    676 {
    +
    677 size_type off = shape[i] - index[i] - 1;
    +
    678 stepper.step(i, off);
    +
    679 n -= off;
    +
    680 }
    +
    681 index[i] = 0;
    +
    682 if (i != 0)
    +
    683 {
    +
    684 stepper.reset(i);
    +
    685 }
    +
    686 }
    +
    687 }
    +
    688 if (i == 0 && n != 0)
    +
    689 {
    +
    690 if (size != size_type(0))
    +
    691 {
    +
    692 std::transform(
    +
    693 shape.cbegin(),
    +
    694 shape.cend() - 1,
    +
    695 index.begin(),
    +
    696 [](const auto& v)
    +
    697 {
    +
    698 return v - 1;
    +
    699 }
    +
    700 );
    +
    701 index[leading_i] = shape[leading_i];
    +
    702 }
    +
    703 stepper.to_end(layout_type::row_major);
    +
    704 }
    +
    705 }
    +
    706
    +
    707 template <>
    +
    708 template <class S, class IT, class ST>
    +
    709 void stepper_tools<layout_type::row_major>::decrement_stepper(S& stepper, IT& index, const ST& shape)
    +
    710 {
    +
    711 using size_type = typename S::size_type;
    +
    712 size_type i = index.size();
    +
    713 while (i != 0)
    +
    714 {
    +
    715 --i;
    +
    716 if (index[i] != 0)
    +
    717 {
    +
    718 --index[i];
    +
    719 stepper.step_back(i);
    +
    720 return;
    +
    721 }
    +
    722 else
    +
    723 {
    +
    724 index[i] = shape[i] - 1;
    +
    725 if (i != 0)
    +
    726 {
    +
    727 stepper.reset_back(i);
    +
    728 }
    +
    729 }
    +
    730 }
    +
    731 if (i == 0)
    +
    732 {
    +
    733 stepper.to_begin();
    +
    734 }
    +
    735 }
    +
    736
    +
    737 template <>
    +
    738 template <class S, class IT, class ST>
    +
    739 void stepper_tools<layout_type::row_major>::decrement_stepper(
    +
    740 S& stepper,
    +
    741 IT& index,
    +
    742 const ST& shape,
    +
    743 typename S::size_type n
    +
    744 )
    +
    745 {
    +
    746 using size_type = typename S::size_type;
    +
    747 size_type i = index.size();
    +
    748 size_type leading_i = index.size() - 1;
    +
    749 while (i != 0 && n != 0)
    +
    750 {
    +
    751 --i;
    +
    752 size_type inc = (i == leading_i) ? n : 1;
    +
    753 if (xtl::cmp_greater_equal(index[i], inc))
    +
    754 {
    +
    755 index[i] -= inc;
    +
    756 stepper.step_back(i, inc);
    +
    757 n -= inc;
    +
    758 if (i != leading_i || index.size() == 1)
    +
    759 {
    +
    760 i = index.size();
    +
    761 }
    +
    762 }
    +
    763 else
    +
    764 {
    +
    765 if (i == leading_i)
    +
    766 {
    +
    767 size_type off = index[i];
    +
    768 stepper.step_back(i, off);
    +
    769 n -= off;
    +
    770 }
    +
    771 index[i] = shape[i] - 1;
    +
    772 if (i != 0)
    +
    773 {
    +
    774 stepper.reset_back(i);
    +
    775 }
    +
    776 }
    +
    777 }
    +
    778 if (i == 0 && n != 0)
    +
    779 {
    +
    780 stepper.to_begin();
    +
    781 }
    +
    782 }
    +
    783
    +
    784 template <>
    +
    785 template <class S, class IT, class ST>
    +
    786 void stepper_tools<layout_type::column_major>::increment_stepper(S& stepper, IT& index, const ST& shape)
    +
    787 {
    +
    788 using size_type = typename S::size_type;
    +
    789 const size_type size = index.size();
    +
    790 size_type i = 0;
    +
    791 while (i != size)
    +
    792 {
    +
    793 if (index[i] != shape[i] - 1)
    +
    794 {
    +
    795 ++index[i];
    +
    796 stepper.step(i);
    +
    797 return;
    +
    798 }
    +
    799 else
    +
    800 {
    +
    801 index[i] = 0;
    +
    802 if (i != size - 1)
    +
    803 {
    +
    804 stepper.reset(i);
    +
    805 }
    +
    806 }
    +
    807 ++i;
    +
    808 }
    +
    809 if (i == size)
    +
    810 {
    +
    811 if (size != size_type(0))
    +
    812 {
    +
    813 std::transform(
    +
    814 shape.cbegin() + 1,
    +
    815 shape.cend(),
    +
    816 index.begin() + 1,
    +
    817 [](const auto& v)
    +
    818 {
    +
    819 return v - 1;
    +
    820 }
    +
    821 );
    +
    822 index[0] = shape[0];
    +
    823 }
    +
    824 stepper.to_end(layout_type::column_major);
    +
    825 }
    +
    826 }
    +
    827
    +
    828 template <>
    +
    829 template <class S, class IT, class ST>
    +
    830 void stepper_tools<layout_type::column_major>::increment_stepper(
    +
    831 S& stepper,
    +
    832 IT& index,
    +
    833 const ST& shape,
    +
    834 typename S::size_type n
    +
    835 )
    +
    836 {
    +
    837 using size_type = typename S::size_type;
    +
    838 const size_type size = index.size();
    +
    839 const size_type leading_i = 0;
    +
    840 size_type i = 0;
    +
    841 while (i != size && n != 0)
    +
    842 {
    +
    843 size_type inc = (i == leading_i) ? n : 1;
    +
    844 if (index[i] + inc < shape[i])
    +
    845 {
    +
    846 index[i] += inc;
    +
    847 stepper.step(i, inc);
    +
    848 n -= inc;
    +
    849 if (i != leading_i || size == 1)
    +
    850 {
    +
    851 i = 0;
    +
    852 continue;
    +
    853 }
    +
    854 }
    +
    855 else
    +
    856 {
    +
    857 if (i == leading_i)
    +
    858 {
    +
    859 size_type off = shape[i] - index[i] - 1;
    +
    860 stepper.step(i, off);
    +
    861 n -= off;
    +
    862 }
    +
    863 index[i] = 0;
    +
    864 if (i != size - 1)
    +
    865 {
    +
    866 stepper.reset(i);
    +
    867 }
    +
    868 }
    +
    869 ++i;
    +
    870 }
    +
    871 if (i == size && n != 0)
    +
    872 {
    +
    873 if (size != size_type(0))
    +
    874 {
    +
    875 std::transform(
    +
    876 shape.cbegin() + 1,
    +
    877 shape.cend(),
    +
    878 index.begin() + 1,
    +
    879 [](const auto& v)
    +
    880 {
    +
    881 return v - 1;
    +
    882 }
    +
    883 );
    +
    884 index[leading_i] = shape[leading_i];
    +
    885 }
    +
    886 stepper.to_end(layout_type::column_major);
    +
    887 }
    +
    888 }
    +
    889
    +
    890 template <>
    +
    891 template <class S, class IT, class ST>
    +
    892 void stepper_tools<layout_type::column_major>::decrement_stepper(S& stepper, IT& index, const ST& shape)
    +
    893 {
    +
    894 using size_type = typename S::size_type;
    +
    895 size_type size = index.size();
    +
    896 size_type i = 0;
    +
    897 while (i != size)
    +
    898 {
    +
    899 if (index[i] != 0)
    +
    900 {
    +
    901 --index[i];
    +
    902 stepper.step_back(i);
    +
    903 return;
    +
    904 }
    +
    905 else
    +
    906 {
    +
    907 index[i] = shape[i] - 1;
    +
    908 if (i != size - 1)
    +
    909 {
    +
    910 stepper.reset_back(i);
    +
    911 }
    +
    912 }
    +
    913 ++i;
    +
    914 }
    +
    915 if (i == size)
    +
    916 {
    +
    917 stepper.to_begin();
    +
    918 }
    +
    919 }
    +
    920
    +
    921 template <>
    +
    922 template <class S, class IT, class ST>
    +
    923 void stepper_tools<layout_type::column_major>::decrement_stepper(
    +
    924 S& stepper,
    +
    925 IT& index,
    +
    926 const ST& shape,
    +
    927 typename S::size_type n
    +
    928 )
    +
    929 {
    +
    930 using size_type = typename S::size_type;
    +
    931 size_type size = index.size();
    +
    932 size_type i = 0;
    +
    933 size_type leading_i = 0;
    +
    934 while (i != size && n != 0)
    +
    935 {
    +
    936 size_type inc = (i == leading_i) ? n : 1;
    +
    937 if (index[i] >= inc)
    +
    938 {
    +
    939 index[i] -= inc;
    +
    940 stepper.step_back(i, inc);
    +
    941 n -= inc;
    +
    942 if (i != leading_i || index.size() == 1)
    +
    943 {
    +
    944 i = 0;
    +
    945 continue;
    +
    946 }
    +
    947 }
    +
    948 else
    +
    949 {
    +
    950 if (i == leading_i)
    +
    951 {
    +
    952 size_type off = index[i];
    +
    953 stepper.step_back(i, off);
    +
    954 n -= off;
    +
    955 }
    +
    956 index[i] = shape[i] - 1;
    +
    957 if (i != size - 1)
    +
    958 {
    +
    959 stepper.reset_back(i);
    +
    960 }
    +
    961 }
    +
    962 ++i;
    +
    963 }
    +
    964 if (i == size && n != 0)
    +
    965 {
    +
    966 stepper.to_begin();
    +
    967 }
    +
    968 }
    +
    969
    +
    970 /***********************************
    +
    971 * xindexed_stepper implementation *
    +
    972 ***********************************/
    +
    973
    +
    974 template <class C, bool is_const>
    +
    975 inline xindexed_stepper<C, is_const>::xindexed_stepper(xexpression_type* e, size_type offset, bool end) noexcept
    +
    976 : p_e(e)
    +
    977 , m_index(xtl::make_sequence<index_type>(e->shape().size(), size_type(0)))
    +
    978 , m_offset(offset)
    +
    979 {
    +
    980 if (end)
    +
    981 {
    +
    982 // Note: the layout here doesn't matter (unused) but using default traversal looks more "correct".
    +
    983 to_end(XTENSOR_DEFAULT_TRAVERSAL);
    +
    984 }
    +
    985 }
    +
    986
    +
    987 template <class C, bool is_const>
    +
    988 inline auto xindexed_stepper<C, is_const>::operator*() const -> reference
    +
    989 {
    +
    990 return p_e->element(m_index.cbegin(), m_index.cend());
    +
    991 }
    +
    992
    +
    993 template <class C, bool is_const>
    +
    994 inline void xindexed_stepper<C, is_const>::step(size_type dim, size_type n)
    +
    995 {
    +
    996 if (dim >= m_offset)
    +
    997 {
    +
    998 m_index[dim - m_offset] += static_cast<typename index_type::value_type>(n);
    +
    999 }
    +
    1000 }
    +
    1001
    +
    1002 template <class C, bool is_const>
    +
    1003 inline void xindexed_stepper<C, is_const>::step_back(size_type dim, size_type n)
    +
    1004 {
    +
    1005 if (dim >= m_offset)
    +
    1006 {
    +
    1007 m_index[dim - m_offset] -= static_cast<typename index_type::value_type>(n);
    +
    1008 }
    +
    1009 }
    +
    1010
    +
    1011 template <class C, bool is_const>
    +
    1012 inline void xindexed_stepper<C, is_const>::reset(size_type dim)
    +
    1013 {
    +
    1014 if (dim >= m_offset)
    +
    1015 {
    +
    1016 m_index[dim - m_offset] = 0;
    +
    1017 }
    +
    1018 }
    +
    1019
    +
    1020 template <class C, bool is_const>
    +
    1021 inline void xindexed_stepper<C, is_const>::reset_back(size_type dim)
    +
    1022 {
    +
    1023 if (dim >= m_offset)
    +
    1024 {
    +
    1025 m_index[dim - m_offset] = p_e->shape()[dim - m_offset] - 1;
    +
    1026 }
    +
    1027 }
    +
    1028
    +
    1029 template <class C, bool is_const>
    +
    1030 inline void xindexed_stepper<C, is_const>::to_begin()
    +
    1031 {
    +
    1032 std::fill(m_index.begin(), m_index.end(), size_type(0));
    +
    1033 }
    +
    1034
    +
    1035 template <class C, bool is_const>
    +
    1036 inline void xindexed_stepper<C, is_const>::to_end(layout_type l)
    +
    1037 {
    +
    1038 const auto& shape = p_e->shape();
    +
    1039 std::transform(
    +
    1040 shape.cbegin(),
    +
    1041 shape.cend(),
    +
    1042 m_index.begin(),
    +
    1043 [](const auto& v)
    +
    1044 {
    +
    1045 return v - 1;
    +
    1046 }
    +
    1047 );
    +
    1048
    +
    1049 size_type l_dim = (l == layout_type::row_major) ? shape.size() - 1 : 0;
    +
    1050 m_index[l_dim] = shape[l_dim];
    +
    1051 }
    +
    1052
    +
    1053 /****************************
    +
    1054 * xiterator implementation *
    +
    1055 ****************************/
    +
    1056
    +
    1057 namespace detail
    +
    1058 {
    +
    1059 template <class S>
    +
    1060 inline shape_storage<S>::shape_storage(param_type shape)
    +
    1061 : m_shape(shape)
    +
    1062 {
    +
    1063 }
    +
    1064
    +
    1065 template <class S>
    +
    1066 inline const S& shape_storage<S>::shape() const
    +
    1067 {
    +
    1068 return m_shape;
    +
    1069 }
    +
    1070
    +
    1071 template <class S>
    +
    1072 inline shape_storage<S*>::shape_storage(param_type shape)
    +
    1073 : p_shape(shape)
    +
    1074 {
    +
    1075 }
    +
    1076
    +
    1077 template <class S>
    +
    1078 inline const S& shape_storage<S*>::shape() const
    +
    1079 {
    +
    1080 return *p_shape;
    +
    1081 }
    +
    1082
    +
    1083 template <>
    +
    1084 struct LAYOUT_FORBIDEN_FOR_XITERATOR<layout_type::row_major>
    +
    1085 {
    +
    1086 using type = int;
    +
    1087 };
    +
    1088
    +
    1089 template <>
    +
    1090 struct LAYOUT_FORBIDEN_FOR_XITERATOR<layout_type::column_major>
    +
    1091 {
    +
    1092 using type = int;
    +
    1093 };
    +
    1094 }
    +
    1095
    +
    1096 template <class St, class S, layout_type L>
    +
    1097 inline xiterator<St, S, L>::xiterator(St st, shape_param_type shape, bool end_index)
    +
    1098 : private_base(shape)
    +
    1099 , m_st(st)
    +
    1100 , m_index(
    +
    1101 end_index ? xtl::forward_sequence<index_type, const shape_type&>(this->shape())
    +
    1102 : xtl::make_sequence<index_type>(this->shape().size(), size_type(0))
    +
    1103 )
    +
    1104 , m_linear_index(0)
    +
    1105 {
    +
    1106 // end_index means either reverse_iterator && !end or !reverse_iterator && end
    +
    1107 if (end_index)
    +
    1108 {
    +
    1109 if (m_index.size() != size_type(0))
    +
    1110 {
    +
    1111 auto iter_begin = (L == layout_type::row_major) ? m_index.begin() : m_index.begin() + 1;
    +
    1112 auto iter_end = (L == layout_type::row_major) ? m_index.end() - 1 : m_index.end();
    +
    1113 std::transform(
    +
    1114 iter_begin,
    +
    1115 iter_end,
    +
    1116 iter_begin,
    +
    1117 [](const auto& v)
    +
    1118 {
    +
    1119 return v - 1;
    +
    1120 }
    +
    1121 );
    +
    1122 }
    +
    1123 m_linear_index = difference_type(std::accumulate(
    +
    1124 this->shape().cbegin(),
    +
    1125 this->shape().cend(),
    +
    1126 size_type(1),
    +
    1127 std::multiplies<size_type>()
    +
    1128 ));
    +
    1129 }
    +
    1130 }
    +
    1131
    +
    1132 template <class St, class S, layout_type L>
    +
    1133 inline auto xiterator<St, S, L>::operator++() -> self_type&
    +
    1134 {
    +
    1135 stepper_tools<L>::increment_stepper(m_st, m_index, this->shape());
    +
    1136 ++m_linear_index;
    +
    1137 return *this;
    +
    1138 }
    +
    1139
    +
    1140 template <class St, class S, layout_type L>
    +
    1141 inline auto xiterator<St, S, L>::operator--() -> self_type&
    +
    1142 {
    +
    1143 stepper_tools<L>::decrement_stepper(m_st, m_index, this->shape());
    +
    1144 --m_linear_index;
    +
    1145 return *this;
    +
    1146 }
    +
    1147
    +
    1148 template <class St, class S, layout_type L>
    +
    1149 inline auto xiterator<St, S, L>::operator+=(difference_type n) -> self_type&
    +
    1150 {
    +
    1151 if (n >= 0)
    +
    1152 {
    +
    1153 stepper_tools<L>::increment_stepper(m_st, m_index, this->shape(), static_cast<size_type>(n));
    +
    1154 }
    +
    1155 else
    +
    1156 {
    +
    1157 stepper_tools<L>::decrement_stepper(m_st, m_index, this->shape(), static_cast<size_type>(-n));
    +
    1158 }
    +
    1159 m_linear_index += n;
    +
    1160 return *this;
    +
    1161 }
    +
    1162
    +
    1163 template <class St, class S, layout_type L>
    +
    1164 inline auto xiterator<St, S, L>::operator-=(difference_type n) -> self_type&
    +
    1165 {
    +
    1166 if (n >= 0)
    +
    1167 {
    +
    1168 stepper_tools<L>::decrement_stepper(m_st, m_index, this->shape(), static_cast<size_type>(n));
    +
    1169 }
    +
    1170 else
    +
    1171 {
    +
    1172 stepper_tools<L>::increment_stepper(m_st, m_index, this->shape(), static_cast<size_type>(-n));
    +
    1173 }
    +
    1174 m_linear_index -= n;
    +
    1175 return *this;
    +
    1176 }
    +
    1177
    +
    1178 template <class St, class S, layout_type L>
    +
    1179 inline auto xiterator<St, S, L>::operator-(const self_type& rhs) const -> difference_type
    +
    1180 {
    +
    1181 return m_linear_index - rhs.m_linear_index;
    +
    1182 }
    +
    1183
    +
    1184 template <class St, class S, layout_type L>
    +
    1185 inline auto xiterator<St, S, L>::operator*() const -> reference
    +
    1186 {
    +
    1187 return *m_st;
    +
    1188 }
    +
    1189
    +
    1190 template <class St, class S, layout_type L>
    +
    1191 inline auto xiterator<St, S, L>::operator->() const -> pointer
    +
    1192 {
    +
    1193 return &(*m_st);
    +
    1194 }
    +
    1195
    +
    1196 template <class St, class S, layout_type L>
    +
    1197 inline bool xiterator<St, S, L>::equal(const xiterator& rhs) const
    +
    1198 {
    +
    1199 XTENSOR_ASSERT(this->shape() == rhs.shape());
    +
    1200 return m_linear_index == rhs.m_linear_index;
    +
    1201 }
    +
    1202
    +
    1203 template <class St, class S, layout_type L>
    +
    1204 inline bool xiterator<St, S, L>::less_than(const xiterator& rhs) const
    +
    1205 {
    +
    1206 XTENSOR_ASSERT(this->shape() == rhs.shape());
    +
    1207 return m_linear_index < rhs.m_linear_index;
    +
    1208 }
    +
    1209
    +
    1210 template <class St, class S, layout_type L>
    +
    1211 inline bool operator==(const xiterator<St, S, L>& lhs, const xiterator<St, S, L>& rhs)
    +
    1212 {
    +
    1213 return lhs.equal(rhs);
    +
    1214 }
    +
    1215
    +
    1216 template <class St, class S, layout_type L>
    +
    1217 bool operator<(const xiterator<St, S, L>& lhs, const xiterator<St, S, L>& rhs)
    +
    1218 {
    +
    1219 return lhs.less_than(rhs);
    +
    1220 }
    +
    1221
    +
    1222 /************************************
    +
    1223 * xbounded_iterator implementation *
    +
    1224 ************************************/
    +
    1225
    +
    1226 template <class It, class BIt>
    +
    1227 xbounded_iterator<It, BIt>::xbounded_iterator(It it, BIt bound_it)
    +
    1228 : m_it(it)
    +
    1229 , m_bound_it(bound_it)
    +
    1230 {
    +
    1231 }
    +
    1232
    +
    1233 template <class It, class BIt>
    +
    1234 inline auto xbounded_iterator<It, BIt>::operator++() -> self_type&
    +
    1235 {
    +
    1236 ++m_it;
    +
    1237 ++m_bound_it;
    +
    1238 return *this;
    +
    1239 }
    +
    1240
    +
    1241 template <class It, class BIt>
    +
    1242 inline auto xbounded_iterator<It, BIt>::operator--() -> self_type&
    +
    1243 {
    +
    1244 --m_it;
    +
    1245 --m_bound_it;
    +
    1246 return *this;
    +
    1247 }
    +
    1248
    +
    1249 template <class It, class BIt>
    +
    1250 inline auto xbounded_iterator<It, BIt>::operator+=(difference_type n) -> self_type&
    +
    1251 {
    +
    1252 m_it += n;
    +
    1253 m_bound_it += n;
    +
    1254 return *this;
    +
    1255 }
    +
    1256
    +
    1257 template <class It, class BIt>
    +
    1258 inline auto xbounded_iterator<It, BIt>::operator-=(difference_type n) -> self_type&
    +
    1259 {
    +
    1260 m_it -= n;
    +
    1261 m_bound_it -= n;
    +
    1262 return *this;
    +
    1263 }
    +
    1264
    +
    1265 template <class It, class BIt>
    +
    1266 inline auto xbounded_iterator<It, BIt>::operator-(const self_type& rhs) const -> difference_type
    +
    1267 {
    +
    1268 return m_it - rhs.m_it;
    +
    1269 }
    +
    1270
    +
    1271 template <class It, class BIt>
    +
    1272 inline auto xbounded_iterator<It, BIt>::operator*() const -> value_type
    +
    1273 {
    +
    1274 using type = decltype(*m_bound_it);
    +
    1275 return (static_cast<type>(*m_it) < *m_bound_it) ? *m_it : static_cast<value_type>((*m_bound_it) - 1);
    +
    1276 }
    +
    1277
    +
    1278 template <class It, class BIt>
    +
    1279 inline bool xbounded_iterator<It, BIt>::equal(const self_type& rhs) const
    +
    1280 {
    +
    1281 return m_it == rhs.m_it && m_bound_it == rhs.m_bound_it;
    +
    1282 }
    +
    1283
    +
    1284 template <class It, class BIt>
    +
    1285 inline bool xbounded_iterator<It, BIt>::less_than(const self_type& rhs) const
    +
    1286 {
    +
    1287 return m_it < rhs.m_it;
    +
    1288 }
    +
    1289
    +
    1290 template <class It, class BIt>
    +
    1291 inline bool operator==(const xbounded_iterator<It, BIt>& lhs, const xbounded_iterator<It, BIt>& rhs)
    +
    1292 {
    +
    1293 return lhs.equal(rhs);
    +
    1294 }
    +
    1295
    +
    1296 template <class It, class BIt>
    +
    1297 inline bool operator<(const xbounded_iterator<It, BIt>& lhs, const xbounded_iterator<It, BIt>& rhs)
    +
    1298 {
    +
    1299 return lhs.less_than(rhs);
    +
    1300 }
    +
    1301}
    +
    1302
    +
    1303#endif
    + + + + +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + + +
    +
    + + + + diff --git a/xjson_8hpp_source.html b/xjson_8hpp_source.html new file mode 100644 index 000000000..418c9f630 --- /dev/null +++ b/xjson_8hpp_source.html @@ -0,0 +1,279 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xjson.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xjson.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_JSON_HPP
    +
    11#define XTENSOR_JSON_HPP
    +
    12
    +
    13#include <cstddef>
    +
    14#include <stdexcept>
    +
    15#include <utility>
    +
    16
    +
    17#include <nlohmann/json.hpp>
    +
    18
    +
    19#include "xstrided_view.hpp"
    +
    20#include "xtensor_config.hpp"
    +
    21
    +
    22namespace xt
    +
    23{
    +
    24 /*************************************
    +
    25 * to_json and from_json declaration *
    +
    26 *************************************/
    +
    27
    +
    28 template <template <typename U, typename V, typename... Args> class M, class E>
    +
    29 enable_xexpression<E> to_json(nlohmann::basic_json<M>&, const E&);
    +
    30
    +
    31 template <template <typename U, typename V, typename... Args> class M, class E>
    +
    32 enable_xcontainer_semantics<E> from_json(const nlohmann::basic_json<M>&, E&);
    +
    33
    +
    35 template <template <typename U, typename V, typename... Args> class M, class E>
    +
    36 enable_xview_semantics<E> from_json(const nlohmann::basic_json<M>&, E&);
    +
    37
    +
    39
    +
    40 /****************************************
    +
    41 * to_json and from_json implementation *
    +
    42 ****************************************/
    +
    43
    +
    44 namespace detail
    +
    45 {
    +
    46 template <template <typename U, typename V, typename... Args> class M, class D>
    +
    47 void to_json_impl(nlohmann::basic_json<M>& j, const xexpression<D>& e, xstrided_slice_vector& slices)
    +
    48 {
    +
    49 const auto view = strided_view(e.derived_cast(), slices);
    +
    50 if (view.dimension() == 0)
    +
    51 {
    +
    52 j = view();
    +
    53 }
    +
    54 else
    +
    55 {
    +
    56 j = nlohmann::basic_json<M>::array();
    +
    57 using size_type = typename D::size_type;
    +
    58 size_type nrows = view.shape()[0];
    +
    59 for (size_type i = 0; i != nrows; ++i)
    +
    60 {
    +
    61 slices.push_back(i);
    +
    62 nlohmann::basic_json<M> k;
    +
    63 to_json_impl(k, e, slices);
    +
    64 j.push_back(std::move(k));
    +
    65 slices.pop_back();
    +
    66 }
    +
    67 }
    +
    68 }
    +
    69
    +
    70 template <template <typename U, typename V, typename... Args> class M, class D>
    +
    71 inline void
    +
    72 from_json_impl(const nlohmann::basic_json<M>& j, xexpression<D>& e, xstrided_slice_vector& slices)
    +
    73 {
    +
    74 auto view = strided_view(e.derived_cast(), slices);
    +
    75
    +
    76 if (view.dimension() == 0)
    +
    77 {
    +
    78 view() = j.template get<std::remove_reference_t<decltype(view())>>();
    +
    79 }
    +
    80 else
    +
    81 {
    +
    82 using size_type = typename D::size_type;
    +
    83 size_type nrows = view.shape()[0];
    +
    84 for (size_type i = 0; i != nrows; ++i)
    +
    85 {
    +
    86 slices.push_back(i);
    +
    87 const nlohmann::basic_json<M>& k = j[i];
    +
    88 from_json_impl(k, e, slices);
    +
    89 slices.pop_back();
    +
    90 }
    +
    91 }
    +
    92 }
    +
    93
    +
    94 template <template <typename U, typename V, typename... Args> class M>
    +
    95 inline unsigned int json_dimension(const nlohmann::basic_json<M>& j)
    +
    96 {
    +
    97 if (j.is_array() && j.size())
    +
    98 {
    +
    99 return 1 + json_dimension(j[0]);
    +
    100 }
    +
    101 else
    +
    102 {
    +
    103 return 0;
    +
    104 }
    +
    105 }
    +
    106
    +
    107 template <template <typename U, typename V, typename... Args> class M, class S>
    +
    108 inline void json_shape(const nlohmann::basic_json<M>& j, S& s, std::size_t pos = 0)
    +
    109 {
    +
    110 if (j.is_array())
    +
    111 {
    +
    112 auto size = j.size();
    +
    113 s[pos] = size;
    +
    114 if (size)
    +
    115 {
    +
    116 json_shape(j[0], s, pos + 1);
    +
    117 }
    +
    118 }
    +
    119 }
    +
    120 }
    +
    121
    +
    132 template <template <typename U, typename V, typename... Args> class M, class E>
    +
    +
    133 inline enable_xexpression<E> to_json(nlohmann::basic_json<M>& j, const E& e)
    +
    134 {
    +
    135 auto sv = xstrided_slice_vector();
    +
    136 detail::to_json_impl(j, e, sv);
    +
    137 }
    +
    +
    138
    +
    155 template <template <typename U, typename V, typename... Args> class M, class E>
    +
    +
    156 inline enable_xcontainer_semantics<E> from_json(const nlohmann::basic_json<M>& j, E& e)
    +
    157 {
    +
    158 auto dimension = detail::json_dimension(j);
    +
    159 auto s = xtl::make_sequence<typename E::shape_type>(dimension);
    +
    160 detail::json_shape(j, s);
    +
    161
    +
    162 // In the case of a container, we resize the container.
    +
    163 e.resize(s);
    +
    164
    +
    165 auto sv = xstrided_slice_vector();
    +
    166 detail::from_json_impl(j, e, sv);
    +
    167 }
    +
    +
    168
    +
    170 template <template <typename U, typename V, typename... Args> class M, class E>
    +
    171 inline enable_xview_semantics<E> from_json(const nlohmann::basic_json<M>& j, E& e)
    +
    172 {
    +
    173 typename E::shape_type s;
    +
    174 detail::json_shape(j, s);
    +
    175
    +
    176 // In the case of a view, we check the size of the container.
    +
    177 if (!std::equal(s.cbegin(), s.cend(), e.shape().cbegin()))
    +
    178 {
    +
    179 XTENSOR_THROW(std::runtime_error, "Shape mismatch when deserializing JSON to view");
    +
    180 }
    +
    181
    +
    182 auto sv = xstrided_slice_vector();
    +
    183 detail::from_json_impl(j, e, sv);
    +
    184 }
    +
    185
    +
    187}
    +
    188
    +
    189#endif
    +
    standard mathematical functions for xexpressions
    +
    enable_xcontainer_semantics< E > from_json(const nlohmann::basic_json< M > &, E &)
    JSON deserialization of a xtensor expression with a container or a view semantics.
    Definition xjson.hpp:156
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    enable_xexpression< E > to_json(nlohmann::basic_json< M > &, const E &)
    JSON serialization of an xtensor expression.
    Definition xjson.hpp:133
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    +
    +
    + + + + diff --git a/xlayout_8hpp_source.html b/xlayout_8hpp_source.html new file mode 100644 index 000000000..71bc80596 --- /dev/null +++ b/xlayout_8hpp_source.html @@ -0,0 +1,204 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xlayout.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xlayout.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_LAYOUT_HPP
    +
    11#define XTENSOR_LAYOUT_HPP
    +
    12
    +
    13#include <type_traits>
    +
    14
    +
    15// Do not include anything else here.
    +
    16// xlayout.hpp is included in xtensor_forward.hpp
    +
    17// and we don't want to bring other headers to it.
    +
    18#include "xtensor_config.hpp"
    +
    19
    +
    20namespace xt
    +
    21{
    +
    +
    23 enum class layout_type
    +
    24 {
    +
    26 dynamic = 0x00,
    +
    28 any = 0xFF,
    +
    30 row_major = 0x01,
    +
    32 column_major = 0x02
    +
    33 };
    +
    +
    34
    +
    51 template <class... Args>
    +
    52 constexpr layout_type compute_layout(Args... args) noexcept;
    +
    53
    +
    54 constexpr layout_type default_assignable_layout(layout_type l) noexcept;
    +
    55
    +
    56 constexpr layout_type layout_remove_any(const layout_type layout) noexcept;
    +
    57
    +
    58 /******************
    +
    59 * Implementation *
    +
    60 ******************/
    +
    61
    +
    62 namespace detail
    +
    63 {
    +
    64 constexpr layout_type compute_layout_impl() noexcept
    +
    65 {
    +
    66 return layout_type::any;
    +
    67 }
    +
    68
    +
    69 constexpr layout_type compute_layout_impl(layout_type l) noexcept
    +
    70 {
    +
    71 return l;
    +
    72 }
    +
    73
    +
    74 constexpr layout_type compute_layout_impl(layout_type lhs, layout_type rhs) noexcept
    +
    75 {
    +
    76 using type = std::underlying_type_t<layout_type>;
    +
    77 return layout_type(static_cast<type>(lhs) & static_cast<type>(rhs));
    +
    78 }
    +
    79
    +
    80 template <class... Args>
    +
    81 constexpr layout_type compute_layout_impl(layout_type lhs, Args... args) noexcept
    +
    82 {
    +
    83 return compute_layout_impl(lhs, compute_layout_impl(args...));
    +
    84 }
    +
    85 }
    +
    86
    +
    87 template <class... Args>
    +
    +
    88 constexpr layout_type compute_layout(Args... args) noexcept
    +
    89 {
    +
    90 return detail::compute_layout_impl(args...);
    +
    91 }
    +
    +
    92
    +
    93 constexpr layout_type default_assignable_layout(layout_type l) noexcept
    +
    94 {
    +
    95 return (l == layout_type::row_major || l == layout_type::column_major) ? l : XTENSOR_DEFAULT_LAYOUT;
    +
    96 }
    +
    97
    +
    98 constexpr layout_type layout_remove_any(const layout_type layout) noexcept
    +
    99 {
    +
    100 return layout == layout_type::any ? XTENSOR_DEFAULT_LAYOUT : layout;
    +
    101 }
    +
    102}
    +
    103
    +
    104#endif
    +
    standard mathematical functions for xexpressions
    +
    constexpr layout_type compute_layout(Args... args) noexcept
    Implementation of the following logical table:
    Definition xlayout.hpp:88
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + +
    +
    + + + + diff --git a/xmanipulation_8hpp_source.html b/xmanipulation_8hpp_source.html new file mode 100644 index 000000000..bbe23d189 --- /dev/null +++ b/xmanipulation_8hpp_source.html @@ -0,0 +1,1088 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xmanipulation.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xmanipulation.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_MANIPULATION_HPP
    +
    11#define XTENSOR_MANIPULATION_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <utility>
    +
    15
    +
    16#include <xtl/xcompare.hpp>
    +
    17#include <xtl/xsequence.hpp>
    +
    18
    +
    19#include "xbuilder.hpp"
    +
    20#include "xexception.hpp"
    +
    21#include "xrepeat.hpp"
    +
    22#include "xstrided_view.hpp"
    +
    23#include "xtensor_config.hpp"
    +
    24#include "xutils.hpp"
    +
    25
    +
    26namespace xt
    +
    27{
    +
    32 namespace check_policy
    +
    33 {
    +
    +
    34 struct none
    +
    35 {
    +
    36 };
    +
    +
    37
    +
    +
    38 struct full
    +
    39 {
    +
    40 };
    +
    +
    41 }
    +
    42
    +
    43 template <class E>
    +
    44 auto transpose(E&& e) noexcept;
    +
    45
    +
    46 template <class E, class S, class Tag = check_policy::none>
    +
    47 auto transpose(E&& e, S&& permutation, Tag check_policy = Tag());
    +
    48
    +
    49 template <class E>
    +
    50 auto swapaxes(E&& e, std::ptrdiff_t axis1, std::ptrdiff_t axis2);
    +
    51
    +
    52 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E>
    +
    53 auto ravel(E&& e);
    +
    54
    +
    55 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E>
    +
    56 auto flatten(E&& e);
    +
    57
    +
    58 template <layout_type L, class T>
    +
    59 auto flatnonzero(const T& arr);
    +
    60
    +
    61 template <class E>
    +
    62 auto trim_zeros(E&& e, const std::string& direction = "fb");
    +
    63
    +
    64 template <class E>
    +
    65 auto squeeze(E&& e);
    +
    66
    +
    67 template <class E, class S, class Tag = check_policy::none, std::enable_if_t<!xtl::is_integral<S>::value, int> = 0>
    +
    68 auto squeeze(E&& e, S&& axis, Tag check_policy = Tag());
    +
    69
    +
    70 template <class E>
    +
    71 auto expand_dims(E&& e, std::size_t axis);
    +
    72
    +
    73 template <std::size_t N, class E>
    +
    74 auto atleast_Nd(E&& e);
    +
    75
    +
    76 template <class E>
    +
    77 auto atleast_1d(E&& e);
    +
    78
    +
    79 template <class E>
    +
    80 auto atleast_2d(E&& e);
    +
    81
    +
    82 template <class E>
    +
    83 auto atleast_3d(E&& e);
    +
    84
    +
    85 template <class E>
    +
    86 auto split(E& e, std::size_t n, std::size_t axis = 0);
    +
    87
    +
    88 template <class E>
    +
    89 auto hsplit(E& e, std::size_t n);
    +
    90
    +
    91 template <class E>
    +
    92 auto vsplit(E& e, std::size_t n);
    +
    93
    +
    94 template <class E>
    +
    95 auto flip(E&& e);
    +
    96
    +
    97 template <class E>
    +
    98 auto flip(E&& e, std::size_t axis);
    +
    99
    +
    100 template <std::ptrdiff_t N = 1, class E>
    +
    101 auto rot90(E&& e, const std::array<std::ptrdiff_t, 2>& axes = {0, 1});
    +
    102
    +
    103 template <class E>
    +
    104 auto roll(E&& e, std::ptrdiff_t shift);
    +
    105
    +
    106 template <class E>
    +
    107 auto roll(E&& e, std::ptrdiff_t shift, std::ptrdiff_t axis);
    +
    108
    +
    109 template <class E>
    +
    110 auto repeat(E&& e, std::size_t repeats, std::size_t axis);
    +
    111
    +
    112 template <class E>
    +
    113 auto repeat(E&& e, const std::vector<std::size_t>& repeats, std::size_t axis);
    +
    114
    +
    115 template <class E>
    +
    116 auto repeat(E&& e, std::vector<std::size_t>&& repeats, std::size_t axis);
    +
    117
    +
    118 /****************************
    +
    119 * transpose implementation *
    +
    120 ****************************/
    +
    121
    +
    122 namespace detail
    +
    123 {
    +
    124 inline layout_type transpose_layout_noexcept(layout_type l) noexcept
    +
    125 {
    +
    126 layout_type result = l;
    +
    127 if (l == layout_type::row_major)
    +
    128 {
    + +
    130 }
    +
    131 else if (l == layout_type::column_major)
    +
    132 {
    +
    133 result = layout_type::row_major;
    +
    134 }
    +
    135 return result;
    +
    136 }
    +
    137
    +
    138 inline layout_type transpose_layout(layout_type l)
    +
    139 {
    + +
    141 {
    +
    142 XTENSOR_THROW(transpose_error, "cannot compute transposed layout of dynamic layout");
    +
    143 }
    +
    144 return transpose_layout_noexcept(l);
    +
    145 }
    +
    146
    +
    147 template <class E, class S>
    +
    148 inline auto transpose_impl(E&& e, S&& permutation, check_policy::none)
    +
    149 {
    +
    150 if (sequence_size(permutation) != e.dimension())
    +
    151 {
    +
    152 XTENSOR_THROW(transpose_error, "Permutation does not have the same size as shape");
    +
    153 }
    +
    154
    +
    155 // permute stride and shape
    +
    156 using shape_type = xindex_type_t<typename std::decay_t<E>::shape_type>;
    +
    157 shape_type temp_shape;
    +
    158 resize_container(temp_shape, e.shape().size());
    +
    159
    +
    160 using strides_type = get_strides_t<shape_type>;
    +
    161 strides_type temp_strides;
    +
    162 resize_container(temp_strides, e.strides().size());
    +
    163
    +
    164 using size_type = typename std::decay_t<E>::size_type;
    +
    165 for (std::size_t i = 0; i < e.shape().size(); ++i)
    +
    166 {
    +
    167 if (std::size_t(permutation[i]) >= e.dimension())
    +
    168 {
    +
    169 XTENSOR_THROW(transpose_error, "Permutation contains wrong axis");
    +
    170 }
    +
    171 size_type perm = static_cast<size_type>(permutation[i]);
    +
    172 temp_shape[i] = e.shape()[perm];
    +
    173 temp_strides[i] = e.strides()[perm];
    +
    174 }
    +
    175
    + +
    177 if (std::is_sorted(std::begin(permutation), std::end(permutation)))
    +
    178 {
    +
    179 // keep old layout
    +
    180 new_layout = e.layout();
    +
    181 }
    +
    182 else if (std::is_sorted(std::begin(permutation), std::end(permutation), std::greater<>()))
    +
    183 {
    +
    184 new_layout = transpose_layout_noexcept(e.layout());
    +
    185 }
    +
    186
    +
    187 return strided_view(
    +
    188 std::forward<E>(e),
    +
    189 std::move(temp_shape),
    +
    190 std::move(temp_strides),
    +
    191 get_offset<XTENSOR_DEFAULT_LAYOUT>(e),
    +
    192 new_layout
    +
    193 );
    +
    194 }
    +
    195
    +
    196 template <class E, class S>
    +
    197 inline auto transpose_impl(E&& e, S&& permutation, check_policy::full)
    +
    198 {
    +
    199 // check if axis appears twice in permutation
    +
    200 for (std::size_t i = 0; i < sequence_size(permutation); ++i)
    +
    201 {
    +
    202 for (std::size_t j = i + 1; j < sequence_size(permutation); ++j)
    +
    203 {
    +
    204 if (permutation[i] == permutation[j])
    +
    205 {
    +
    206 XTENSOR_THROW(transpose_error, "Permutation contains axis more than once");
    +
    207 }
    +
    208 }
    +
    209 }
    +
    210 return transpose_impl(std::forward<E>(e), std::forward<S>(permutation), check_policy::none());
    +
    211 }
    +
    212
    +
    213 template <class E, class S, class X, std::enable_if_t<has_data_interface<std::decay_t<E>>::value>* = nullptr>
    +
    214 inline void compute_transposed_strides(E&& e, const S&, X& strides)
    +
    215 {
    +
    216 std::copy(e.strides().crbegin(), e.strides().crend(), strides.begin());
    +
    217 }
    +
    218
    +
    219 template <class E, class S, class X, std::enable_if_t<!has_data_interface<std::decay_t<E>>::value>* = nullptr>
    +
    220 inline void compute_transposed_strides(E&&, const S& shape, X& strides)
    +
    221 {
    +
    222 // In the case where E does not have a data interface, the transposition
    +
    223 // makes use of a flat storage adaptor that has layout XTENSOR_DEFAULT_TRAVERSAL
    +
    224 // which should be the one inverted.
    +
    225 layout_type l = transpose_layout(XTENSOR_DEFAULT_TRAVERSAL);
    +
    226 compute_strides(shape, l, strides);
    +
    227 }
    +
    228 }
    +
    229
    +
    236 template <class E>
    +
    +
    237 inline auto transpose(E&& e) noexcept
    +
    238 {
    +
    239 using shape_type = xindex_type_t<typename std::decay_t<E>::shape_type>;
    +
    240 shape_type shape;
    +
    241 resize_container(shape, e.shape().size());
    +
    242 std::copy(e.shape().crbegin(), e.shape().crend(), shape.begin());
    +
    243
    +
    244 get_strides_t<shape_type> strides;
    +
    245 resize_container(strides, e.shape().size());
    +
    246 detail::compute_transposed_strides(e, shape, strides);
    +
    247
    +
    248 layout_type new_layout = detail::transpose_layout_noexcept(e.layout());
    +
    249
    +
    250 return strided_view(
    +
    251 std::forward<E>(e),
    +
    252 std::move(shape),
    +
    253 std::move(strides),
    +
    254 detail::get_offset<XTENSOR_DEFAULT_TRAVERSAL>(e),
    +
    255 new_layout
    +
    256 );
    +
    257 }
    +
    +
    258
    +
    268 template <class E, class S, class Tag>
    +
    +
    269 inline auto transpose(E&& e, S&& permutation, Tag check_policy)
    +
    270 {
    +
    271 return detail::transpose_impl(std::forward<E>(e), std::forward<S>(permutation), check_policy);
    +
    272 }
    +
    +
    273
    +
    275 template <class E, class I, std::size_t N, class Tag = check_policy::none>
    +
    276 inline auto transpose(E&& e, const I (&permutation)[N], Tag check_policy = Tag())
    +
    277 {
    +
    278 return detail::transpose_impl(std::forward<E>(e), permutation, check_policy);
    +
    279 }
    +
    280
    +
    282
    +
    283 /*****************************
    +
    284 * swapaxes implementation *
    +
    285 *****************************/
    +
    286
    +
    287 namespace detail
    +
    288 {
    +
    289 template <class S>
    +
    290 inline S swapaxes_perm(std::size_t dim, std::ptrdiff_t axis1, std::ptrdiff_t axis2)
    +
    291 {
    +
    292 const std::size_t ax1 = normalize_axis(dim, axis1);
    +
    293 const std::size_t ax2 = normalize_axis(dim, axis2);
    +
    294 auto perm = xtl::make_sequence<S>(dim, 0);
    +
    295 using id_t = typename S::value_type;
    +
    296 std::iota(perm.begin(), perm.end(), id_t(0));
    +
    297 perm[ax1] = ax2;
    +
    298 perm[ax2] = ax1;
    +
    299 return perm;
    +
    300 }
    +
    301 }
    +
    302
    +
    313 template <class E>
    +
    +
    314 inline auto swapaxes(E&& e, std::ptrdiff_t axis1, std::ptrdiff_t axis2)
    +
    315 {
    +
    316 const auto dim = e.dimension();
    +
    317 check_axis_in_dim(axis1, dim, "Parameter axis1");
    +
    318 check_axis_in_dim(axis2, dim, "Parameter axis2");
    +
    319
    +
    320 using strides_t = get_strides_t<typename std::decay_t<E>::shape_type>;
    +
    321 return transpose(std::forward<E>(e), detail::swapaxes_perm<strides_t>(dim, axis1, axis2));
    +
    322 }
    +
    +
    323
    +
    324 /*****************************
    +
    325 * moveaxis implementation *
    +
    326 *****************************/
    +
    327
    +
    328 namespace detail
    +
    329 {
    +
    330 template <class S>
    +
    331 inline S moveaxis_perm(std::size_t dim, std::ptrdiff_t src, std::ptrdiff_t dest)
    +
    332 {
    +
    333 using id_t = typename S::value_type;
    +
    334
    +
    335 const std::size_t src_norm = normalize_axis(dim, src);
    +
    336 const std::size_t dest_norm = normalize_axis(dim, dest);
    +
    337
    +
    338 // Initializing to src_norm handles case where `dest == -1` and the loop
    +
    339 // does not go check `perm_idx == dest_norm` a `dim+1`th time.
    +
    340 auto perm = xtl::make_sequence<S>(dim, src_norm);
    +
    341 id_t perm_idx = 0;
    +
    342 for (id_t i = 0; xtl::cmp_less(i, dim); ++i)
    +
    343 {
    +
    344 if (xtl::cmp_equal(perm_idx, dest_norm))
    +
    345 {
    +
    346 perm[perm_idx] = src_norm;
    +
    347 ++perm_idx;
    +
    348 }
    +
    349 if (xtl::cmp_not_equal(i, src_norm))
    +
    350 {
    +
    351 perm[perm_idx] = i;
    +
    352 ++perm_idx;
    +
    353 }
    +
    354 }
    +
    355 return perm;
    +
    356 }
    +
    357 }
    +
    358
    +
    367 template <class E>
    +
    +
    368 inline auto moveaxis(E&& e, std::ptrdiff_t src, std::ptrdiff_t dest)
    +
    369 {
    +
    370 const auto dim = e.dimension();
    +
    371 check_axis_in_dim(src, dim, "Parameter src");
    +
    372 check_axis_in_dim(dest, dim, "Parameter dest");
    +
    373
    +
    374 using strides_t = get_strides_t<typename std::decay_t<E>::shape_type>;
    +
    375 return xt::transpose(std::forward<E>(e), detail::moveaxis_perm<strides_t>(e.dimension(), src, dest));
    +
    376 }
    +
    +
    377
    +
    378 /************************************
    +
    379 * ravel and flatten implementation *
    +
    380 ************************************/
    +
    381
    +
    382 namespace detail
    +
    383 {
    +
    384 template <class E, layout_type L>
    +
    385 struct expression_iterator_getter
    +
    386 {
    +
    387 using iterator = decltype(std::declval<E>().template begin<L>());
    +
    388 using const_iterator = decltype(std::declval<E>().template cbegin<L>());
    +
    389
    +
    390 inline static iterator begin(E& e)
    +
    391 {
    +
    392 return e.template begin<L>();
    +
    393 }
    +
    394
    +
    395 inline static const_iterator cbegin(E& e)
    +
    396 {
    +
    397 return e.template cbegin<L>();
    +
    398 }
    +
    399
    +
    400 inline static auto size(E& e)
    +
    401 {
    +
    402 return e.size();
    +
    403 }
    +
    404 };
    +
    405 }
    +
    406
    +
    416 template <layout_type L, class E>
    +
    +
    417 inline auto ravel(E&& e)
    +
    418 {
    +
    419 using iterator = decltype(e.template begin<L>());
    +
    420 using iterator_getter = detail::expression_iterator_getter<std::remove_reference_t<E>, L>;
    +
    421 auto size = e.size();
    +
    422 auto adaptor = make_xiterator_adaptor(std::forward<E>(e), iterator_getter());
    +
    423 constexpr layout_type layout = std::is_pointer<iterator>::value ? L : layout_type::dynamic;
    +
    424 using type = xtensor_view<decltype(adaptor), 1, layout, extension::get_expression_tag_t<E>>;
    +
    425 return type(std::move(adaptor), {size});
    +
    426 }
    +
    +
    427
    +
    441 template <layout_type L, class E>
    +
    +
    442 inline auto flatten(E&& e)
    +
    443 {
    +
    444 return ravel<L>(std::forward<E>(e));
    +
    445 }
    +
    +
    446
    +
    455 template <layout_type L, class T>
    +
    +
    456 inline auto flatnonzero(const T& arr)
    +
    457 {
    +
    458 return nonzero(ravel<L>(arr))[0];
    +
    459 }
    +
    +
    460
    +
    461 /*****************************
    +
    462 * trim_zeros implementation *
    +
    463 *****************************/
    +
    464
    +
    474 template <class E>
    +
    +
    475 inline auto trim_zeros(E&& e, const std::string& direction)
    +
    476 {
    +
    477 XTENSOR_ASSERT_MSG(e.dimension() == 1, "Dimension for trim_zeros has to be 1.");
    +
    478
    +
    479 std::ptrdiff_t begin = 0, end = static_cast<std::ptrdiff_t>(e.size());
    +
    480
    +
    481 auto find_fun = [](const auto& i)
    +
    482 {
    +
    483 return i != 0;
    +
    484 };
    +
    485
    +
    486 if (direction.find("f") != std::string::npos)
    +
    487 {
    +
    488 begin = std::find_if(e.cbegin(), e.cend(), find_fun) - e.cbegin();
    +
    489 }
    +
    490
    +
    491 if (direction.find("b") != std::string::npos && begin != end)
    +
    492 {
    +
    493 end -= std::find_if(e.crbegin(), e.crend(), find_fun) - e.crbegin();
    +
    494 }
    +
    495
    +
    496 return strided_view(std::forward<E>(e), {range(begin, end)});
    +
    497 }
    +
    +
    498
    +
    499 /**************************
    +
    500 * squeeze implementation *
    +
    501 **************************/
    +
    502
    +
    512 template <class E>
    +
    +
    513 inline auto squeeze(E&& e)
    +
    514 {
    + + +
    517 std::copy_if(
    +
    518 e.shape().cbegin(),
    +
    519 e.shape().cend(),
    +
    520 std::back_inserter(new_shape),
    +
    521 [](std::size_t i)
    +
    522 {
    +
    523 return i != 1;
    +
    524 }
    +
    525 );
    +
    526 decltype(auto) old_strides = detail::get_strides<XTENSOR_DEFAULT_LAYOUT>(e);
    +
    527 std::copy_if(
    +
    528 old_strides.cbegin(),
    +
    529 old_strides.cend(),
    +
    530 std::back_inserter(new_strides),
    +
    531 [](std::ptrdiff_t i)
    +
    532 {
    +
    533 return i != 0;
    +
    534 }
    +
    535 );
    +
    536
    +
    537 return strided_view(std::forward<E>(e), std::move(new_shape), std::move(new_strides), 0, e.layout());
    +
    538 }
    +
    +
    539
    +
    540 namespace detail
    +
    541 {
    +
    542 template <class E, class S>
    +
    543 inline auto squeeze_impl(E&& e, S&& axis, check_policy::none)
    +
    544 {
    +
    545 std::size_t new_dim = e.dimension() - axis.size();
    +
    546 dynamic_shape<std::size_t> new_shape(new_dim);
    +
    547 dynamic_shape<std::ptrdiff_t> new_strides(new_dim);
    +
    548
    +
    549 decltype(auto) old_strides = detail::get_strides<XTENSOR_DEFAULT_LAYOUT>(e);
    +
    550
    +
    551 for (std::size_t i = 0, ix = 0; i < e.dimension(); ++i)
    +
    552 {
    +
    553 if (axis.cend() == std::find(axis.cbegin(), axis.cend(), i))
    +
    554 {
    +
    555 new_shape[ix] = e.shape()[i];
    +
    556 new_strides[ix++] = old_strides[i];
    +
    557 }
    +
    558 }
    +
    559
    +
    560 return strided_view(std::forward<E>(e), std::move(new_shape), std::move(new_strides), 0, e.layout());
    +
    561 }
    +
    562
    +
    563 template <class E, class S>
    +
    564 inline auto squeeze_impl(E&& e, S&& axis, check_policy::full)
    +
    565 {
    +
    566 for (auto ix : axis)
    +
    567 {
    +
    568 if (static_cast<std::size_t>(ix) > e.dimension())
    +
    569 {
    +
    570 XTENSOR_THROW(std::runtime_error, "Axis argument to squeeze > dimension of expression");
    +
    571 }
    +
    572 if (e.shape()[static_cast<std::size_t>(ix)] != 1)
    +
    573 {
    +
    574 XTENSOR_THROW(std::runtime_error, "Trying to squeeze axis != 1");
    +
    575 }
    +
    576 }
    +
    577 return squeeze_impl(std::forward<E>(e), std::forward<S>(axis), check_policy::none());
    +
    578 }
    +
    579 }
    +
    580
    +
    591 template <class E, class S, class Tag, std::enable_if_t<!xtl::is_integral<S>::value, int>>
    +
    +
    592 inline auto squeeze(E&& e, S&& axis, Tag check_policy)
    +
    593 {
    +
    594 return detail::squeeze_impl(std::forward<E>(e), std::forward<S>(axis), check_policy);
    +
    595 }
    +
    +
    596
    +
    598 template <class E, class I, std::size_t N, class Tag = check_policy::none>
    +
    599 inline auto squeeze(E&& e, const I (&axis)[N], Tag check_policy = Tag())
    +
    600 {
    +
    601 using arr_t = std::array<I, N>;
    +
    602 return detail::squeeze_impl(
    +
    603 std::forward<E>(e),
    +
    604 xtl::forward_sequence<arr_t, decltype(axis)>(axis),
    +
    605 check_policy
    +
    606 );
    +
    607 }
    +
    608
    +
    609 template <class E, class Tag = check_policy::none>
    +
    610 inline auto squeeze(E&& e, std::size_t axis, Tag check_policy = Tag())
    +
    611 {
    +
    612 return squeeze(std::forward<E>(e), std::array<std::size_t, 1>{axis}, check_policy);
    +
    613 }
    +
    614
    +
    616
    +
    617 /******************************
    +
    618 * expand_dims implementation *
    +
    619 ******************************/
    +
    620
    +
    632 template <class E>
    +
    +
    633 inline auto expand_dims(E&& e, std::size_t axis)
    +
    634 {
    +
    635 xstrided_slice_vector sv(e.dimension() + 1, all());
    +
    636 sv[axis] = newaxis();
    +
    637 return strided_view(std::forward<E>(e), std::move(sv));
    +
    638 }
    +
    +
    639
    +
    640 /*****************************
    +
    641 * atleast_Nd implementation *
    +
    642 *****************************/
    +
    643
    +
    657 template <std::size_t N, class E>
    +
    +
    658 inline auto atleast_Nd(E&& e)
    +
    659 {
    +
    660 xstrided_slice_vector sv((std::max)(e.dimension(), N), all());
    +
    661 if (e.dimension() < N)
    +
    662 {
    +
    663 std::size_t i = 0;
    +
    664 std::size_t end = static_cast<std::size_t>(std::round(double(N - e.dimension()) / double(N)));
    +
    665 for (; i < end; ++i)
    +
    666 {
    +
    667 sv[i] = newaxis();
    +
    668 }
    +
    669 i += e.dimension();
    +
    670 for (; i < N; ++i)
    +
    671 {
    +
    672 sv[i] = newaxis();
    +
    673 }
    +
    674 }
    +
    675 return strided_view(std::forward<E>(e), std::move(sv));
    +
    676 }
    +
    +
    677
    +
    684 template <class E>
    +
    +
    685 inline auto atleast_1d(E&& e)
    +
    686 {
    +
    687 return atleast_Nd<1>(std::forward<E>(e));
    +
    688 }
    +
    +
    689
    +
    696 template <class E>
    +
    +
    697 inline auto atleast_2d(E&& e)
    +
    698 {
    +
    699 return atleast_Nd<2>(std::forward<E>(e));
    +
    700 }
    +
    +
    701
    +
    708 template <class E>
    +
    +
    709 inline auto atleast_3d(E&& e)
    +
    710 {
    +
    711 return atleast_Nd<3>(std::forward<E>(e));
    +
    712 }
    +
    +
    713
    +
    714 /************************
    +
    715 * split implementation *
    +
    716 ************************/
    +
    717
    +
    731 template <class E>
    +
    +
    732 inline auto split(E& e, std::size_t n, std::size_t axis)
    +
    733 {
    +
    734 if (axis >= e.dimension())
    +
    735 {
    +
    736 XTENSOR_THROW(std::runtime_error, "Split along axis > dimension.");
    +
    737 }
    +
    738
    +
    739 std::size_t ax_sz = e.shape()[axis];
    +
    740 xstrided_slice_vector sv(e.dimension(), all());
    +
    741 std::size_t step = ax_sz / n;
    +
    742 std::size_t rest = ax_sz % n;
    +
    743
    +
    744 if (rest)
    +
    745 {
    +
    746 XTENSOR_THROW(std::runtime_error, "Split does not result in equal division.");
    +
    747 }
    +
    748
    +
    749 std::vector<decltype(strided_view(e, sv))> result;
    +
    750 for (std::size_t i = 0; i < n; ++i)
    +
    751 {
    +
    752 sv[axis] = range(i * step, (i + 1) * step);
    +
    753 result.emplace_back(strided_view(e, sv));
    +
    754 }
    +
    755 return result;
    +
    756 }
    +
    +
    757
    +
    767 template <class E>
    +
    +
    768 inline auto hsplit(E& e, std::size_t n)
    +
    769 {
    +
    770 return split(e, n, std::size_t(1));
    +
    771 }
    +
    +
    772
    +
    782 template <class E>
    +
    +
    783 inline auto vsplit(E& e, std::size_t n)
    +
    784 {
    +
    785 return split(e, n, std::size_t(0));
    +
    786 }
    +
    +
    787
    +
    788 /***********************
    +
    789 * flip implementation *
    +
    790 ***********************/
    +
    791
    +
    799 template <class E>
    +
    +
    800 inline auto flip(E&& e)
    +
    801 {
    +
    802 using size_type = typename std::decay_t<E>::size_type;
    +
    803 auto r = flip(e, 0);
    +
    804 for (size_type d = 1; d < e.dimension(); ++d)
    +
    805 {
    +
    806 r = flip(r, d);
    +
    807 }
    +
    808 return r;
    +
    809 }
    +
    +
    810
    +
    822 template <class E>
    +
    +
    823 inline auto flip(E&& e, std::size_t axis)
    +
    824 {
    +
    825 using shape_type = xindex_type_t<typename std::decay_t<E>::shape_type>;
    +
    826
    +
    827 shape_type shape;
    +
    828 resize_container(shape, e.shape().size());
    +
    829 std::copy(e.shape().cbegin(), e.shape().cend(), shape.begin());
    +
    830
    +
    831 get_strides_t<shape_type> strides;
    +
    832 decltype(auto) old_strides = detail::get_strides<XTENSOR_DEFAULT_LAYOUT>(e);
    +
    833 resize_container(strides, old_strides.size());
    +
    834 std::copy(old_strides.cbegin(), old_strides.cend(), strides.begin());
    +
    835
    +
    836 strides[axis] *= -1;
    +
    837 std::size_t offset = static_cast<std::size_t>(
    +
    838 static_cast<std::ptrdiff_t>(e.data_offset())
    +
    839 + old_strides[axis] * (static_cast<std::ptrdiff_t>(e.shape()[axis]) - 1)
    +
    840 );
    +
    841
    +
    842 return strided_view(std::forward<E>(e), std::move(shape), std::move(strides), offset);
    +
    843 }
    +
    +
    844
    +
    845 /************************
    +
    846 * rot90 implementation *
    +
    847 ************************/
    +
    848
    +
    849 namespace detail
    +
    850 {
    +
    851 template <std::ptrdiff_t N>
    +
    852 struct rot90_impl;
    +
    853
    +
    854 template <>
    +
    855 struct rot90_impl<0>
    +
    856 {
    +
    857 template <class E>
    +
    858 inline auto operator()(E&& e, const std::array<std::size_t, 2>& /*axes*/)
    +
    859 {
    +
    860 return std::forward<E>(e);
    +
    861 }
    +
    862 };
    +
    863
    +
    864 template <>
    +
    865 struct rot90_impl<1>
    +
    866 {
    +
    867 template <class E>
    +
    868 inline auto operator()(E&& e, const std::array<std::size_t, 2>& axes)
    +
    869 {
    +
    870 using std::swap;
    +
    871
    +
    872 dynamic_shape<std::ptrdiff_t> axes_list(e.shape().size());
    +
    873 std::iota(axes_list.begin(), axes_list.end(), 0);
    +
    874 swap(axes_list[axes[0]], axes_list[axes[1]]);
    +
    875
    +
    876 return transpose(flip(std::forward<E>(e), axes[1]), std::move(axes_list));
    +
    877 }
    +
    878 };
    +
    879
    +
    880 template <>
    +
    881 struct rot90_impl<2>
    +
    882 {
    +
    883 template <class E>
    +
    884 inline auto operator()(E&& e, const std::array<std::size_t, 2>& axes)
    +
    885 {
    +
    886 return flip(flip(std::forward<E>(e), axes[0]), axes[1]);
    +
    887 }
    +
    888 };
    +
    889
    +
    890 template <>
    +
    891 struct rot90_impl<3>
    +
    892 {
    +
    893 template <class E>
    +
    894 inline auto operator()(E&& e, const std::array<std::size_t, 2>& axes)
    +
    895 {
    +
    896 using std::swap;
    +
    897
    +
    898 dynamic_shape<std::ptrdiff_t> axes_list(e.shape().size());
    +
    899 std::iota(axes_list.begin(), axes_list.end(), 0);
    +
    900 swap(axes_list[axes[0]], axes_list[axes[1]]);
    +
    901
    +
    902 return flip(transpose(std::forward<E>(e), std::move(axes_list)), axes[1]);
    +
    903 }
    +
    904 };
    +
    905 }
    +
    906
    +
    918 template <std::ptrdiff_t N, class E>
    +
    +
    919 inline auto rot90(E&& e, const std::array<std::ptrdiff_t, 2>& axes)
    +
    920 {
    +
    921 auto ndim = static_cast<std::ptrdiff_t>(e.shape().size());
    +
    922
    +
    923 if (axes[0] == axes[1] || std::abs(axes[0] - axes[1]) == ndim)
    +
    924 {
    +
    925 XTENSOR_THROW(std::runtime_error, "Axes must be different");
    +
    926 }
    +
    927
    +
    928 auto norm_axes = forward_normalize<std::array<std::size_t, 2>>(e, axes);
    +
    929 constexpr std::ptrdiff_t n = (4 + (N % 4)) % 4;
    +
    930
    +
    931 return detail::rot90_impl<n>()(std::forward<E>(e), norm_axes);
    +
    932 }
    +
    +
    933
    +
    934 /***********************
    +
    935 * roll implementation *
    +
    936 ***********************/
    +
    937
    +
    951 template <class E>
    +
    +
    952 inline auto roll(E&& e, std::ptrdiff_t shift)
    +
    953 {
    +
    954 auto cpy = empty_like(e);
    +
    955 auto flat_size = std::accumulate(
    +
    956 cpy.shape().begin(),
    +
    957 cpy.shape().end(),
    +
    958 1L,
    +
    959 std::multiplies<std::size_t>()
    +
    960 );
    +
    961 while (shift < 0)
    +
    962 {
    +
    963 shift += flat_size;
    +
    964 }
    +
    965
    +
    966 shift %= flat_size;
    +
    967 std::copy(e.begin(), e.end() - shift, std::copy(e.end() - shift, e.end(), cpy.begin()));
    +
    968
    +
    969 return cpy;
    +
    970 }
    +
    +
    971
    +
    972 namespace detail
    +
    973 {
    +
    978 template <class To, class From, class S>
    +
    979 To roll(To to, From from, std::ptrdiff_t shift, std::size_t axis, const S& shape, std::size_t M)
    +
    980 {
    +
    981 std::ptrdiff_t dim = std::ptrdiff_t(shape[M]);
    +
    982 std::ptrdiff_t offset = std::accumulate(
    +
    983 shape.begin() + M + 1,
    +
    984 shape.end(),
    +
    985 std::ptrdiff_t(1),
    +
    986 std::multiplies<std::ptrdiff_t>()
    +
    987 );
    +
    988 if (shape.size() == M + 1)
    +
    989 {
    +
    990 if (axis == M)
    +
    991 {
    +
    992 const auto split = from + (dim - shift) * offset;
    +
    993 for (auto iter = split, end = from + dim * offset; iter != end; iter += offset, ++to)
    +
    994 {
    +
    995 *to = *iter;
    +
    996 }
    +
    997 for (auto iter = from, end = split; iter != end; iter += offset, ++to)
    +
    998 {
    +
    999 *to = *iter;
    +
    1000 }
    +
    1001 }
    +
    1002 else
    +
    1003 {
    +
    1004 for (auto iter = from, end = from + dim * offset; iter != end; iter += offset, ++to)
    +
    1005 {
    +
    1006 *to = *iter;
    +
    1007 }
    +
    1008 }
    +
    1009 }
    +
    1010 else
    +
    1011 {
    +
    1012 if (axis == M)
    +
    1013 {
    +
    1014 const auto split = from + (dim - shift) * offset;
    +
    1015 for (auto iter = split, end = from + dim * offset; iter != end; iter += offset)
    +
    1016 {
    +
    1017 to = roll(to, iter, shift, axis, shape, M + 1);
    +
    1018 }
    +
    1019 for (auto iter = from, end = split; iter != end; iter += offset)
    +
    1020 {
    +
    1021 to = roll(to, iter, shift, axis, shape, M + 1);
    +
    1022 }
    +
    1023 }
    +
    1024 else
    +
    1025 {
    +
    1026 for (auto iter = from, end = from + dim * offset; iter != end; iter += offset)
    +
    1027 {
    +
    1028 to = roll(to, iter, shift, axis, shape, M + 1);
    +
    1029 }
    +
    1030 }
    +
    1031 }
    +
    1032 return to;
    +
    1033 }
    +
    1034 }
    +
    1035
    +
    1048 template <class E>
    +
    +
    1049 inline auto roll(E&& e, std::ptrdiff_t shift, std::ptrdiff_t axis)
    +
    1050 {
    +
    1051 auto cpy = empty_like(e);
    +
    1052 const auto& shape = cpy.shape();
    +
    1053 std::size_t saxis = static_cast<std::size_t>(axis);
    +
    1054 if (axis < 0)
    +
    1055 {
    +
    1056 axis += std::ptrdiff_t(cpy.dimension());
    +
    1057 }
    +
    1058
    +
    1059 if (saxis >= cpy.dimension() || axis < 0)
    +
    1060 {
    +
    1061 XTENSOR_THROW(std::runtime_error, "axis is no within shape dimension.");
    +
    1062 }
    +
    1063
    +
    1064 const auto axis_dim = static_cast<std::ptrdiff_t>(shape[saxis]);
    +
    1065 while (shift < 0)
    +
    1066 {
    +
    1067 shift += axis_dim;
    +
    1068 }
    +
    1069
    +
    1070 detail::roll(cpy.begin(), e.begin(), shift, saxis, shape, 0);
    +
    1071 return cpy;
    +
    1072 }
    +
    +
    1073
    +
    1074 /****************************
    +
    1075 * repeat implementation *
    +
    1076 ****************************/
    +
    1077
    +
    1078 namespace detail
    +
    1079 {
    +
    1080 template <class E, class R>
    +
    1081 inline auto make_xrepeat(E&& e, R&& r, typename std::decay_t<E>::size_type axis)
    +
    1082 {
    +
    1083 const auto casted_axis = static_cast<typename std::decay_t<E>::size_type>(axis);
    +
    1084 if (r.size() != e.shape(casted_axis))
    +
    1085 {
    +
    1086 XTENSOR_THROW(std::invalid_argument, "repeats must have the same size as the specified axis");
    +
    1087 }
    +
    1088 return xrepeat<const_xclosure_t<E>, R>(std::forward<E>(e), std::forward<R>(r), axis);
    +
    1089 }
    +
    1090 }
    +
    1091
    +
    1102 template <class E>
    +
    +
    1103 inline auto repeat(E&& e, std::size_t repeats, std::size_t axis)
    +
    1104 {
    +
    1105 const auto casted_axis = static_cast<typename std::decay_t<E>::size_type>(axis);
    +
    1106 std::vector<std::size_t> broadcasted_repeats(e.shape(casted_axis));
    +
    1107 std::fill(broadcasted_repeats.begin(), broadcasted_repeats.end(), repeats);
    +
    1108 return repeat(std::forward<E>(e), std::move(broadcasted_repeats), axis);
    +
    1109 }
    +
    +
    1110
    +
    1122 template <class E>
    +
    +
    1123 inline auto repeat(E&& e, const std::vector<std::size_t>& repeats, std::size_t axis)
    +
    1124 {
    +
    1125 return detail::make_xrepeat(std::forward<E>(e), repeats, axis);
    +
    1126 }
    +
    +
    1127
    +
    1138 template <class E>
    +
    +
    1139 inline auto repeat(E&& e, std::vector<std::size_t>&& repeats, std::size_t axis)
    +
    1140 {
    +
    1141 return detail::make_xrepeat(std::forward<E>(e), std::move(repeats), axis);
    +
    1142 }
    +
    +
    1143}
    +
    1144
    +
    1145#endif
    + +
    Dense multidimensional container adaptor with view semantics and fixed dimension.
    Definition xtensor.hpp:329
    +
    auto nonzero(const T &arr)
    return vector of indices where T is not zero
    +
    auto flatten(E &&e)
    Return a flatten view of the given expression.
    +
    auto atleast_1d(E &&e)
    Expand to at least 1D.
    +
    auto roll(E &&e, std::ptrdiff_t shift)
    Roll an expression.
    +
    auto squeeze(E &&e)
    Returns a squeeze view of the given expression.
    +
    auto moveaxis(E &&e, std::ptrdiff_t src, std::ptrdiff_t dest)
    Return a new expression with an axis move to a new position.
    +
    auto ravel(E &&e)
    Return a flatten view of the given expression.
    +
    auto transpose(E &&e) noexcept
    Returns a transpose view by reversing the dimensions of xexpression e.
    +
    auto atleast_Nd(E &&e)
    Expand dimensions of xexpression to at least N
    +
    auto repeat(E &&e, std::size_t repeats, std::size_t axis)
    Repeat elements of an expression along a given axis.
    +
    auto trim_zeros(E &&e, const std::string &direction="fb")
    Trim zeros at beginning, end or both of 1D sequence.
    +
    auto split(E &e, std::size_t n, std::size_t axis=0)
    Split xexpression along axis into subexpressions.
    +
    auto rot90(E &&e, const std::array< std::ptrdiff_t, 2 > &axes={0, 1})
    Rotate an array by 90 degrees in the plane specified by axes.
    +
    auto expand_dims(E &&e, std::size_t axis)
    Expand the shape of an xexpression.
    +
    auto vsplit(E &e, std::size_t n)
    Split an xexpression into subexpressions vertically (row-wise)
    +
    auto flip(E &&e)
    Reverse the order of elements in an xexpression along every axis.
    +
    auto atleast_2d(E &&e)
    Expand to at least 2D.
    +
    auto swapaxes(E &&e, std::ptrdiff_t axis1, std::ptrdiff_t axis2)
    Return a new expression with two axes interchanged.
    +
    auto hsplit(E &e, std::size_t n)
    Split an xexpression into subexpressions horizontally (column-wise)
    +
    auto atleast_3d(E &&e)
    Expand to at least 3D.
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto newaxis() noexcept
    Returns a slice representing a new axis of length one, to be used as an argument of view function.
    Definition xslice.hpp:300
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    auto empty_like(const xexpression< E > &e)
    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of the same shape,...
    Definition xbuilder.hpp:121
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto flatnonzero(const T &arr)
    Return indices that are non-zero in the flattened version of arr.
    + + +
    +
    + + + + diff --git a/xmasked__view_8hpp_source.html b/xmasked__view_8hpp_source.html new file mode 100644 index 000000000..9bbccee71 --- /dev/null +++ b/xmasked__view_8hpp_source.html @@ -0,0 +1,725 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xmasked_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xmasked_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_XMASKED_VIEW_HPP
    +
    11#define XTENSOR_XMASKED_VIEW_HPP
    +
    12
    +
    13#include "xaccessible.hpp"
    +
    14#include "xexpression.hpp"
    +
    15#include "xiterable.hpp"
    +
    16#include "xsemantic.hpp"
    +
    17#include "xshape.hpp"
    +
    18#include "xtensor_forward.hpp"
    +
    19#include "xtl/xmasked_value.hpp"
    +
    20#include "xutils.hpp"
    +
    21
    +
    22namespace xt
    +
    23{
    +
    24 /****************************
    +
    25 * xmasked_view declaration *
    +
    26 *****************************/
    +
    27
    +
    28 template <class CTD, class CTM>
    +
    29 class xmasked_view;
    +
    30
    +
    31 template <class D, bool is_const>
    +
    32 class xmasked_view_stepper;
    +
    33
    +
    34 template <class T>
    +
    35 struct xcontainer_inner_types;
    +
    36
    +
    37 template <class CTD, class CTM>
    +
    + +
    39 {
    +
    40 using data_type = std::decay_t<CTD>;
    +
    41 using mask_type = std::decay_t<CTM>;
    +
    42 using base_value_type = typename data_type::value_type;
    +
    43 using flag_type = typename mask_type::value_type;
    +
    44 using val_reference = inner_reference_t<CTD>;
    +
    45 using mask_reference = inner_reference_t<CTM>;
    +
    46 using value_type = xtl::xmasked_value<base_value_type, flag_type>;
    +
    47 using reference = xtl::xmasked_value<val_reference, mask_reference>;
    +
    48 using const_reference = xtl::xmasked_value<typename data_type::const_reference, typename mask_type::const_reference>;
    +
    49 using size_type = typename data_type::size_type;
    + +
    51 };
    +
    +
    52
    +
    53 template <class CTD, class CTM>
    +
    + +
    55 {
    + +
    57 using inner_shape_type = typename std::decay_t<CTD>::inner_shape_type;
    + + +
    60 };
    +
    +
    61
    +
    77 template <class CTD, class CTM>
    +
    +
    78 class xmasked_view : public xview_semantic<xmasked_view<CTD, CTM>>,
    +
    79 private xaccessible<xmasked_view<CTD, CTM>>,
    +
    80 private xiterable<xmasked_view<CTD, CTM>>
    +
    81 {
    +
    82 public:
    +
    83
    + + + + +
    88 using temporary_type = typename inner_types::temporary_type;
    +
    89
    +
    90 using data_type = typename inner_types::data_type;
    +
    91 using mask_type = typename inner_types::mask_type;
    +
    92 using value_expression = CTD;
    +
    93 using mask_expression = CTM;
    +
    94
    +
    95 static constexpr bool is_data_const = std::is_const<std::remove_reference_t<value_expression>>::value;
    +
    96
    +
    97 using base_value_type = typename inner_types::base_value_type;
    +
    98 using base_reference = typename data_type::reference;
    +
    99 using base_const_reference = typename data_type::const_reference;
    +
    100
    +
    101 using flag_type = typename inner_types::flag_type;
    +
    102 using flag_reference = typename mask_type::reference;
    +
    103 using flag_const_reference = typename mask_type::const_reference;
    +
    104
    +
    105 using val_reference = typename inner_types::val_reference;
    +
    106 using mask_reference = typename inner_types::mask_reference;
    +
    107
    +
    108 using value_type = typename inner_types::value_type;
    +
    109 using reference = typename inner_types::reference;
    +
    110 using const_reference = typename inner_types::const_reference;
    +
    111
    +
    112 using pointer = xtl::xclosure_pointer<reference>;
    +
    113 using const_pointer = xtl::xclosure_pointer<const_reference>;
    +
    114
    +
    115 using size_type = typename inner_types::size_type;
    +
    116 using difference_type = typename data_type::difference_type;
    +
    117
    +
    118 using bool_load_type = xtl::xmasked_value<typename data_type::bool_load_type, mask_type>;
    +
    119
    +
    120 using shape_type = typename data_type::shape_type;
    +
    121 using strides_type = typename data_type::strides_type;
    +
    122
    +
    123 static constexpr layout_type static_layout = data_type::static_layout;
    +
    124 static constexpr bool contiguous_layout = false;
    +
    125
    +
    126 using inner_shape_type = typename data_type::inner_shape_type;
    +
    127 using inner_strides_type = typename data_type::inner_strides_type;
    +
    128 using inner_backstrides_type = typename data_type::inner_backstrides_type;
    +
    129
    + +
    131
    + +
    133 using stepper = typename iterable_base::stepper;
    +
    134 using const_stepper = typename iterable_base::const_stepper;
    +
    135
    +
    136 template <layout_type L>
    +
    137 using layout_iterator = typename iterable_base::template layout_iterator<L>;
    +
    138 template <layout_type L>
    +
    139 using const_layout_iterator = typename iterable_base::template const_layout_iterator<L>;
    +
    140 template <layout_type L>
    +
    141 using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>;
    +
    142 template <layout_type L>
    +
    143 using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>;
    +
    144
    +
    145 template <class S, layout_type L>
    +
    146 using broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>;
    +
    147 template <class S, layout_type L>
    +
    148 using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>;
    +
    149 template <class S, layout_type L>
    +
    150 using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>;
    +
    151 template <class S, layout_type L>
    +
    152 using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>;
    +
    153
    +
    154 using iterator = typename iterable_base::iterator;
    +
    155 using const_iterator = typename iterable_base::const_iterator;
    +
    156 using reverse_iterator = typename iterable_base::reverse_iterator;
    +
    157 using const_reverse_iterator = typename iterable_base::const_reverse_iterator;
    +
    158
    +
    159 template <class D, class M>
    +
    160 xmasked_view(D&& data, M&& mask);
    +
    161
    +
    162 xmasked_view(const xmasked_view&) = default;
    +
    163
    +
    164 size_type size() const noexcept;
    +
    165 const inner_shape_type& shape() const noexcept;
    +
    166 const inner_strides_type& strides() const noexcept;
    +
    167 const inner_backstrides_type& backstrides() const noexcept;
    + + +
    170
    +
    171 layout_type layout() const noexcept;
    +
    172 bool is_contiguous() const noexcept;
    +
    173
    +
    174 template <class T>
    +
    175 void fill(const T& value);
    +
    176
    +
    177 template <class... Args>
    +
    178 reference operator()(Args... args);
    +
    179
    +
    180 template <class... Args>
    +
    181 const_reference operator()(Args... args) const;
    +
    182
    +
    183 template <class... Args>
    +
    184 reference unchecked(Args... args);
    +
    185
    +
    186 template <class... Args>
    +
    187 const_reference unchecked(Args... args) const;
    +
    188
    +
    189 using accessible_base::at;
    +
    190 using accessible_base::operator[];
    + + + +
    194 using accessible_base::periodic;
    +
    195
    +
    196 template <class It>
    +
    197 reference element(It first, It last);
    +
    198
    +
    199 template <class It>
    +
    200 const_reference element(It first, It last) const;
    +
    201
    +
    202 template <class S>
    +
    203 bool has_linear_assign(const S& strides) const noexcept;
    +
    204
    +
    205 data_type& value() noexcept;
    +
    206 const data_type& value() const noexcept;
    +
    207
    +
    208 mask_type& visible() noexcept;
    +
    209 const mask_type& visible() const noexcept;
    +
    210
    +
    211 using iterable_base::begin;
    +
    212 using iterable_base::cbegin;
    +
    213 using iterable_base::cend;
    +
    214 using iterable_base::crbegin;
    +
    215 using iterable_base::crend;
    +
    216 using iterable_base::end;
    +
    217 using iterable_base::rbegin;
    +
    218 using iterable_base::rend;
    +
    219
    +
    220 template <class S>
    +
    221 stepper stepper_begin(const S& shape) noexcept;
    +
    222 template <class S>
    +
    223 stepper stepper_end(const S& shape, layout_type l) noexcept;
    +
    224
    +
    225 template <class S>
    +
    226 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    227 template <class S>
    +
    228 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    229
    +
    230 self_type& operator=(const self_type& rhs);
    +
    231
    +
    232 template <class E>
    +
    233 self_type& operator=(const xexpression<E>& e);
    +
    234
    +
    235 template <class E>
    +
    236 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    237
    +
    238 private:
    +
    239
    +
    240 CTD m_data;
    +
    241 CTM m_mask;
    +
    242
    +
    243 void assign_temporary_impl(temporary_type&& tmp);
    +
    244
    +
    245 friend class xiterable<self_type>;
    +
    246 friend class xconst_iterable<self_type>;
    +
    247 friend class xview_semantic<self_type>;
    +
    248 friend class xaccessible<self_type>;
    +
    249 friend class xconst_accessible<self_type>;
    +
    250 };
    +
    +
    251
    +
    252 template <class D, bool is_const>
    +
    + +
    254 {
    +
    255 public:
    +
    256
    + +
    258 using masked_view_type = std::decay_t<D>;
    +
    259 using value_type = typename masked_view_type::value_type;
    +
    260 using reference = std::
    +
    261 conditional_t<is_const, typename masked_view_type::const_reference, typename masked_view_type::reference>;
    +
    262 using pointer = std::
    +
    263 conditional_t<is_const, typename masked_view_type::const_pointer, typename masked_view_type::pointer>;
    +
    264 using size_type = typename masked_view_type::size_type;
    +
    265 using difference_type = typename masked_view_type::difference_type;
    +
    266 using data_type = typename masked_view_type::data_type;
    +
    267 using mask_type = typename masked_view_type::mask_type;
    +
    268 using value_stepper = std::conditional_t<is_const, typename data_type::const_stepper, typename data_type::stepper>;
    +
    269 using mask_stepper = std::conditional_t<is_const, typename mask_type::const_stepper, typename mask_type::stepper>;
    +
    270
    +
    271 xmasked_view_stepper(value_stepper vs, mask_stepper fs) noexcept;
    +
    272
    +
    273
    +
    274 void step(size_type dim);
    +
    275 void step_back(size_type dim);
    +
    276 void step(size_type dim, size_type n);
    +
    277 void step_back(size_type dim, size_type n);
    +
    278 void reset(size_type dim);
    +
    279 void reset_back(size_type dim);
    +
    280
    +
    281 void to_begin();
    +
    282 void to_end(layout_type l);
    +
    283
    +
    284 reference operator*() const;
    +
    285
    +
    286 private:
    +
    287
    +
    288 value_stepper m_vs;
    +
    289 mask_stepper m_ms;
    +
    290 };
    +
    +
    291
    +
    292 /*******************************
    +
    293 * xmasked_view implementation *
    +
    294 *******************************/
    +
    295
    +
    307 template <class CTD, class CTM>
    +
    308 template <class D, class M>
    +
    +
    309 inline xmasked_view<CTD, CTM>::xmasked_view(D&& data, M&& mask)
    +
    310 : m_data(std::forward<D>(data))
    +
    311 , m_mask(std::forward<M>(mask))
    +
    312 {
    +
    313 }
    +
    +
    314
    +
    322 template <class CTD, class CTM>
    +
    +
    323 inline auto xmasked_view<CTD, CTM>::size() const noexcept -> size_type
    +
    324 {
    +
    325 return m_data.size();
    +
    326 }
    +
    +
    327
    +
    331 template <class CTD, class CTM>
    +
    +
    332 inline auto xmasked_view<CTD, CTM>::shape() const noexcept -> const inner_shape_type&
    +
    333 {
    +
    334 return m_data.shape();
    +
    335 }
    +
    +
    336
    +
    340 template <class CTD, class CTM>
    +
    +
    341 inline auto xmasked_view<CTD, CTM>::strides() const noexcept -> const inner_strides_type&
    +
    342 {
    +
    343 return m_data.strides();
    +
    344 }
    +
    +
    345
    +
    349 template <class CTD, class CTM>
    +
    +
    350 inline auto xmasked_view<CTD, CTM>::backstrides() const noexcept -> const inner_backstrides_type&
    +
    351 {
    +
    352 return m_data.backstrides();
    +
    353 }
    +
    +
    354
    +
    356
    +
    361 template <class CTD, class CTM>
    +
    + +
    363 {
    +
    364 return m_data.layout();
    +
    365 }
    +
    +
    366
    +
    367 template <class CTD, class CTM>
    +
    368 inline bool xmasked_view<CTD, CTM>::is_contiguous() const noexcept
    +
    369 {
    +
    370 return false;
    +
    371 }
    +
    372
    +
    377 template <class CTD, class CTM>
    +
    378 template <class T>
    +
    +
    379 inline void xmasked_view<CTD, CTM>::fill(const T& value)
    +
    380 {
    +
    381 std::fill(this->begin(), this->end(), value);
    +
    382 }
    +
    +
    383
    +
    394 template <class CTD, class CTM>
    +
    395 template <class... Args>
    +
    +
    396 inline auto xmasked_view<CTD, CTM>::operator()(Args... args) -> reference
    +
    397 {
    +
    398 return reference(m_data(args...), m_mask(args...));
    +
    399 }
    +
    +
    400
    +
    407 template <class CTD, class CTM>
    +
    408 template <class... Args>
    +
    +
    409 inline auto xmasked_view<CTD, CTM>::operator()(Args... args) const -> const_reference
    +
    410 {
    +
    411 return const_reference(m_data(args...), m_mask(args...));
    +
    412 }
    +
    +
    413
    +
    433 template <class CTD, class CTM>
    +
    434 template <class... Args>
    +
    +
    435 inline auto xmasked_view<CTD, CTM>::unchecked(Args... args) -> reference
    +
    436 {
    +
    437 return reference(m_data.unchecked(args...), m_mask.unchecked(args...));
    +
    438 }
    +
    +
    439
    +
    459 template <class CTD, class CTM>
    +
    460 template <class... Args>
    +
    +
    461 inline auto xmasked_view<CTD, CTM>::unchecked(Args... args) const -> const_reference
    +
    462 {
    +
    463 return const_reference(m_data.unchecked(args...), m_mask.unchecked(args...));
    +
    464 }
    +
    +
    465
    +
    473 template <class CTD, class CTM>
    +
    474 template <class It>
    +
    +
    475 inline auto xmasked_view<CTD, CTM>::element(It first, It last) -> reference
    +
    476 {
    +
    477 return reference(m_data.element(first, last), m_mask.element(first, last));
    +
    478 }
    +
    +
    479
    +
    487 template <class CTD, class CTM>
    +
    488 template <class It>
    +
    +
    489 inline auto xmasked_view<CTD, CTM>::element(It first, It last) const -> const_reference
    +
    490 {
    +
    491 return const_reference(m_data.element(first, last), m_mask.element(first, last));
    +
    492 }
    +
    +
    493
    +
    495
    +
    496 template <class CTD, class CTM>
    +
    497 template <class S>
    +
    498 inline bool xmasked_view<CTD, CTM>::has_linear_assign(const S& strides) const noexcept
    +
    499 {
    +
    500 return m_data.has_linear_assign(strides) && m_mask.has_linear_assign(strides);
    +
    501 }
    +
    502
    +
    506 template <class CTD, class CTM>
    +
    +
    507 inline auto xmasked_view<CTD, CTM>::value() noexcept -> data_type&
    +
    508 {
    +
    509 return m_data;
    +
    510 }
    +
    +
    511
    +
    515 template <class CTD, class CTM>
    +
    +
    516 inline auto xmasked_view<CTD, CTM>::value() const noexcept -> const data_type&
    +
    517 {
    +
    518 return m_data;
    +
    519 }
    +
    +
    520
    +
    524 template <class CTD, class CTM>
    +
    +
    525 inline auto xmasked_view<CTD, CTM>::visible() noexcept -> mask_type&
    +
    526 {
    +
    527 return m_mask;
    +
    528 }
    +
    +
    529
    +
    533 template <class CTD, class CTM>
    +
    +
    534 inline auto xmasked_view<CTD, CTM>::visible() const noexcept -> const mask_type&
    +
    535 {
    +
    536 return m_mask;
    +
    537 }
    +
    +
    538
    +
    539 template <class CTD, class CTM>
    +
    540 template <class S>
    +
    541 inline auto xmasked_view<CTD, CTM>::stepper_begin(const S& shape) noexcept -> stepper
    +
    542 {
    +
    543 return stepper(value().stepper_begin(shape), visible().stepper_begin(shape));
    +
    544 }
    +
    545
    +
    546 template <class CTD, class CTM>
    +
    547 template <class S>
    +
    548 inline auto xmasked_view<CTD, CTM>::stepper_end(const S& shape, layout_type l) noexcept -> stepper
    +
    549 {
    +
    550 return stepper(value().stepper_end(shape, l), visible().stepper_end(shape, l));
    +
    551 }
    +
    552
    +
    553 template <class CTD, class CTM>
    +
    554 template <class S>
    +
    555 inline auto xmasked_view<CTD, CTM>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    556 {
    +
    557 return const_stepper(value().stepper_begin(shape), visible().stepper_begin(shape));
    +
    558 }
    +
    559
    +
    560 template <class CTD, class CTM>
    +
    561 template <class S>
    +
    562 inline auto xmasked_view<CTD, CTM>::stepper_end(const S& shape, layout_type l) const noexcept
    +
    563 -> const_stepper
    +
    564 {
    +
    565 return const_stepper(value().stepper_end(shape, l), visible().stepper_end(shape, l));
    +
    566 }
    +
    567
    +
    568 template <class CTD, class CTM>
    +
    569 inline auto xmasked_view<CTD, CTM>::operator=(const self_type& rhs) -> self_type&
    +
    570 {
    +
    571 temporary_type tmp(rhs);
    +
    572 return this->assign_temporary(std::move(tmp));
    +
    573 }
    +
    574
    +
    575 template <class CTD, class CTM>
    +
    576 template <class E>
    +
    577 inline auto xmasked_view<CTD, CTM>::operator=(const xexpression<E>& e) -> self_type&
    +
    578 {
    +
    579 return semantic_base::operator=(e);
    +
    580 }
    +
    581
    +
    582 template <class CTD, class CTM>
    +
    583 template <class E>
    +
    584 inline auto xmasked_view<CTD, CTM>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    585 {
    +
    586 std::fill(this->begin(), this->end(), e);
    +
    587 return *this;
    +
    588 }
    +
    589
    +
    590 template <class CTD, class CTM>
    +
    591 inline void xmasked_view<CTD, CTM>::assign_temporary_impl(temporary_type&& tmp)
    +
    592 {
    +
    593 std::copy(tmp.cbegin(), tmp.cend(), this->begin());
    +
    594 }
    +
    595
    +
    596 template <class CTD, class CTM>
    +
    597 inline xmasked_view<CTD, CTM> masked_view(CTD&& data, CTM&& mask)
    +
    598 {
    +
    599 return xmasked_view<CTD, CTM>(std::forward<CTD>(data), std::forward<CTM>(mask));
    +
    600 }
    +
    601
    +
    602 /***************************************
    +
    603 * xmasked_view_stepper implementation *
    +
    604 ***************************************/
    +
    605
    +
    606 template <class D, bool C>
    +
    607 inline xmasked_view_stepper<D, C>::xmasked_view_stepper(value_stepper vs, mask_stepper ms) noexcept
    +
    608 : m_vs(vs)
    +
    609 , m_ms(ms)
    +
    610 {
    +
    611 }
    +
    612
    +
    613 template <class D, bool C>
    +
    614 inline void xmasked_view_stepper<D, C>::step(size_type dim)
    +
    615 {
    +
    616 m_vs.step(dim);
    +
    617 m_ms.step(dim);
    +
    618 }
    +
    619
    +
    620 template <class D, bool C>
    +
    621 inline void xmasked_view_stepper<D, C>::step_back(size_type dim)
    +
    622 {
    +
    623 m_vs.step_back(dim);
    +
    624 m_ms.step_back(dim);
    +
    625 }
    +
    626
    +
    627 template <class D, bool C>
    +
    628 inline void xmasked_view_stepper<D, C>::step(size_type dim, size_type n)
    +
    629 {
    +
    630 m_vs.step(dim, n);
    +
    631 m_ms.step(dim, n);
    +
    632 }
    +
    633
    +
    634 template <class D, bool C>
    +
    635 inline void xmasked_view_stepper<D, C>::step_back(size_type dim, size_type n)
    +
    636 {
    +
    637 m_vs.step_back(dim, n);
    +
    638 m_ms.step_back(dim, n);
    +
    639 }
    +
    640
    +
    641 template <class D, bool C>
    +
    642 inline void xmasked_view_stepper<D, C>::reset(size_type dim)
    +
    643 {
    +
    644 m_vs.reset(dim);
    +
    645 m_ms.reset(dim);
    +
    646 }
    +
    647
    +
    648 template <class D, bool C>
    +
    649 inline void xmasked_view_stepper<D, C>::reset_back(size_type dim)
    +
    650 {
    +
    651 m_vs.reset_back(dim);
    +
    652 m_ms.reset_back(dim);
    +
    653 }
    +
    654
    +
    655 template <class D, bool C>
    +
    656 inline void xmasked_view_stepper<D, C>::to_begin()
    +
    657 {
    +
    658 m_vs.to_begin();
    +
    659 m_ms.to_begin();
    +
    660 }
    +
    661
    +
    662 template <class D, bool C>
    +
    663 inline void xmasked_view_stepper<D, C>::to_end(layout_type l)
    +
    664 {
    +
    665 m_vs.to_end(l);
    +
    666 m_ms.to_end(l);
    +
    667 }
    +
    668
    +
    669 template <class D, bool C>
    +
    670 inline auto xmasked_view_stepper<D, C>::operator*() const -> reference
    +
    671 {
    +
    672 return reference(*m_vs, *m_ms);
    +
    673 }
    +
    674}
    +
    675
    +
    676#endif
    +
    Base class for implementation of common expression access methods.
    +
    reference back()
    Returns a reference to the last element of the expression.
    +
    reference front()
    Returns a reference to the first element of the expression.
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for xexpressions.
    +
    Base class for multidimensional iterable expressions.
    + +
    View on an xoptional_assembly or xoptional_assembly_adaptor hiding values depending on a given mask.
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the xmasked_view.
    +
    const inner_backstrides_type & backstrides() const noexcept
    Returns the backstrides of the xmasked_view.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xmasked_view.
    +
    mask_type & visible() noexcept
    Return an expression for the mask of the xmasked_view.
    +
    void fill(const T &value)
    Fills the data with the given value.
    +
    layout_type layout() const noexcept
    Return the layout_type of the xmasked_view.
    +
    data_type & value() noexcept
    Return an expression for the values of the xmasked_view.
    +
    size_type size() const noexcept
    Returns the number of elements in the xmasked_view.
    +
    xmasked_view(D &&data, M &&mask)
    Creates an xmasked_view, given the xoptional_assembly or xoptional_assembly_adaptor and the mask.
    +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    +
    + + + + diff --git a/xmath_8hpp_source.html b/xmath_8hpp_source.html new file mode 100644 index 000000000..821d95793 --- /dev/null +++ b/xmath_8hpp_source.html @@ -0,0 +1,2699 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xmath.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xmath.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    14#ifndef XTENSOR_MATH_HPP
    +
    15#define XTENSOR_MATH_HPP
    +
    16
    +
    17#include <algorithm>
    +
    18#include <array>
    +
    19#include <cmath>
    +
    20#include <complex>
    +
    21#include <type_traits>
    +
    22
    +
    23#include <xtl/xcomplex.hpp>
    +
    24#include <xtl/xsequence.hpp>
    +
    25#include <xtl/xtype_traits.hpp>
    +
    26
    +
    27#include "xaccumulator.hpp"
    +
    28#include "xeval.hpp"
    +
    29#include "xmanipulation.hpp"
    +
    30#include "xoperation.hpp"
    +
    31#include "xreducer.hpp"
    +
    32#include "xslice.hpp"
    +
    33#include "xstrided_view.hpp"
    +
    34#include "xtensor_config.hpp"
    +
    35
    +
    36namespace xt
    +
    37{
    +
    38 template <class T = double>
    +
    + +
    40 {
    +
    41 static constexpr T PI = 3.141592653589793238463;
    +
    42 static constexpr T PI_2 = 1.57079632679489661923;
    +
    43 static constexpr T PI_4 = 0.785398163397448309616;
    +
    44 static constexpr T D_1_PI = 0.318309886183790671538;
    +
    45 static constexpr T D_2_PI = 0.636619772367581343076;
    +
    46 static constexpr T D_2_SQRTPI = 1.12837916709551257390;
    +
    47 static constexpr T SQRT2 = 1.41421356237309504880;
    +
    48 static constexpr T SQRT1_2 = 0.707106781186547524401;
    +
    49 static constexpr T E = 2.71828182845904523536;
    +
    50 static constexpr T LOG2E = 1.44269504088896340736;
    +
    51 static constexpr T LOG10E = 0.434294481903251827651;
    +
    52 static constexpr T LN2 = 0.693147180559945309417;
    +
    53 };
    +
    +
    54
    +
    55 /***********
    +
    56 * Helpers *
    +
    57 ***********/
    +
    58
    +
    59#define XTENSOR_UNSIGNED_ABS_FUNC(T) \
    +
    60 constexpr inline T abs(const T& x) \
    +
    61 { \
    +
    62 return x; \
    +
    63 }
    +
    64
    +
    65#define XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, T) \
    +
    66 constexpr inline bool FUNC_NAME(const T& /*x*/) noexcept \
    +
    67 { \
    +
    68 return RETURN_VAL; \
    +
    69 }
    +
    70
    +
    71#define XTENSOR_INT_SPECIALIZATION(FUNC_NAME, RETURN_VAL) \
    +
    72 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, char); \
    +
    73 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, short); \
    +
    74 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, int); \
    +
    75 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, long); \
    +
    76 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, long long); \
    +
    77 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, unsigned char); \
    +
    78 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, unsigned short); \
    +
    79 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, unsigned int); \
    +
    80 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, unsigned long); \
    +
    81 XTENSOR_INT_SPECIALIZATION_IMPL(FUNC_NAME, RETURN_VAL, unsigned long long);
    +
    82
    +
    83
    +
    84#define XTENSOR_UNARY_MATH_FUNCTOR(NAME) \
    +
    85 struct NAME##_fun \
    +
    86 { \
    +
    87 template <class T> \
    +
    88 constexpr auto operator()(const T& arg) const \
    +
    89 { \
    +
    90 using math::NAME; \
    +
    91 return NAME(arg); \
    +
    92 } \
    +
    93 template <class B> \
    +
    94 constexpr auto simd_apply(const B& arg) const \
    +
    95 { \
    +
    96 using math::NAME; \
    +
    97 return NAME(arg); \
    +
    98 } \
    +
    99 }
    +
    100
    +
    101#define XTENSOR_UNARY_MATH_FUNCTOR_COMPLEX_REDUCING(NAME) \
    +
    102 struct NAME##_fun \
    +
    103 { \
    +
    104 template <class T> \
    +
    105 constexpr auto operator()(const T& arg) const \
    +
    106 { \
    +
    107 using math::NAME; \
    +
    108 return NAME(arg); \
    +
    109 } \
    +
    110 template <class B> \
    +
    111 constexpr auto simd_apply(const B& arg) const \
    +
    112 { \
    +
    113 using math::NAME; \
    +
    114 return NAME(arg); \
    +
    115 } \
    +
    116 }
    +
    117
    +
    118#define XTENSOR_BINARY_MATH_FUNCTOR(NAME) \
    +
    119 struct NAME##_fun \
    +
    120 { \
    +
    121 template <class T1, class T2> \
    +
    122 constexpr auto operator()(const T1& arg1, const T2& arg2) const \
    +
    123 { \
    +
    124 using math::NAME; \
    +
    125 return NAME(arg1, arg2); \
    +
    126 } \
    +
    127 template <class B> \
    +
    128 constexpr auto simd_apply(const B& arg1, const B& arg2) const \
    +
    129 { \
    +
    130 using math::NAME; \
    +
    131 return NAME(arg1, arg2); \
    +
    132 } \
    +
    133 }
    +
    134
    +
    135#define XTENSOR_TERNARY_MATH_FUNCTOR(NAME) \
    +
    136 struct NAME##_fun \
    +
    137 { \
    +
    138 template <class T1, class T2, class T3> \
    +
    139 constexpr auto operator()(const T1& arg1, const T2& arg2, const T3& arg3) const \
    +
    140 { \
    +
    141 using math::NAME; \
    +
    142 return NAME(arg1, arg2, arg3); \
    +
    143 } \
    +
    144 template <class B> \
    +
    145 auto simd_apply(const B& arg1, const B& arg2, const B& arg3) const \
    +
    146 { \
    +
    147 using math::NAME; \
    +
    148 return NAME(arg1, arg2, arg3); \
    +
    149 } \
    +
    150 }
    +
    151
    +
    152 namespace math
    +
    153 {
    +
    154 using std::abs;
    +
    155 using std::fabs;
    +
    156
    +
    157 using std::acos;
    +
    158 using std::asin;
    +
    159 using std::atan;
    +
    160 using std::cos;
    +
    161 using std::sin;
    +
    162 using std::tan;
    +
    163
    +
    164 using std::acosh;
    +
    165 using std::asinh;
    +
    166 using std::atanh;
    +
    167 using std::cosh;
    +
    168 using std::sinh;
    +
    169 using std::tanh;
    +
    170
    +
    171 using std::cbrt;
    +
    172 using std::sqrt;
    +
    173
    +
    174 using std::exp;
    +
    175 using std::exp2;
    +
    176 using std::expm1;
    +
    177 using std::ilogb;
    +
    178 using std::log;
    +
    179 using std::log10;
    +
    180 using std::log1p;
    +
    181 using std::log2;
    +
    182 using std::logb;
    +
    183
    +
    184 using std::ceil;
    +
    185 using std::floor;
    +
    186 using std::llround;
    +
    187 using std::lround;
    +
    188 using std::nearbyint;
    +
    189 using std::remainder;
    +
    190 using std::rint;
    +
    191 using std::round;
    +
    192 using std::trunc;
    +
    193
    +
    194 using std::erf;
    +
    195 using std::erfc;
    +
    196 using std::lgamma;
    +
    197 using std::tgamma;
    +
    198
    +
    199 using std::arg;
    +
    200 using std::conj;
    +
    201 using std::imag;
    +
    202 using std::real;
    +
    203
    +
    204 using std::atan2;
    +
    205
    +
    206// copysign is not in the std namespace for MSVC
    +
    207#if !defined(_MSC_VER)
    +
    208 using std::copysign;
    +
    209#endif
    +
    210 using std::fdim;
    +
    211 using std::fmax;
    +
    212 using std::fmin;
    +
    213 using std::fmod;
    +
    214 using std::hypot;
    +
    215 using std::pow;
    +
    216
    +
    217 using std::fma;
    +
    218 using std::fpclassify;
    +
    219
    +
    220 // Overload isinf, isnan and isfinite because glibc implementation
    +
    221 // might return int instead of bool and the SIMD detection requires
    +
    222 // bool return type.
    +
    223 template <class T>
    +
    224 inline std::enable_if_t<xtl::is_arithmetic<T>::value, bool> isinf(const T& t)
    +
    225 {
    +
    226 return bool(std::isinf(t));
    +
    227 }
    +
    228
    +
    229 template <class T>
    +
    230 inline std::enable_if_t<xtl::is_arithmetic<T>::value, bool> isnan(const T& t)
    +
    231 {
    +
    232 return bool(std::isnan(t));
    +
    233 }
    +
    234
    +
    235 template <class T>
    +
    236 inline std::enable_if_t<xtl::is_arithmetic<T>::value, bool> isfinite(const T& t)
    +
    237 {
    +
    238 return bool(std::isfinite(t));
    +
    239 }
    +
    240
    +
    241 // Overload isinf, isnan and isfinite for complex datatypes,
    +
    242 // following the Python specification:
    +
    243 template <class T>
    +
    244 inline bool isinf(const std::complex<T>& c)
    +
    245 {
    +
    246 return std::isinf(std::real(c)) || std::isinf(std::imag(c));
    +
    247 }
    +
    248
    +
    249 template <class T>
    +
    250 inline bool isnan(const std::complex<T>& c)
    +
    251 {
    +
    252 return std::isnan(std::real(c)) || std::isnan(std::imag(c));
    +
    253 }
    +
    254
    +
    255 template <class T>
    +
    256 inline bool isfinite(const std::complex<T>& c)
    +
    257 {
    +
    258 return !isinf(c) && !isnan(c);
    +
    259 }
    +
    260
    +
    261 // VS2015 STL defines isnan, isinf and isfinite as template
    +
    262 // functions, breaking ADL.
    +
    263#if defined(_WIN32) && defined(XTENSOR_USE_XSIMD)
    +
    264 /*template <class T, class A>
    +
    265 inline xsimd::batch_bool<T, A> isinf(const xsimd::batch<T, A>& b)
    +
    266 {
    +
    267 return xsimd::isinf(b);
    +
    268 }
    +
    269 template <class T, class A>
    +
    270 inline xsimd::batch_bool<T, A> isnan(const xsimd::batch<T, A>& b)
    +
    271 {
    +
    272 return xsimd::isnan(b);
    +
    273 }
    +
    274 template <class T, class A>
    +
    275 inline xsimd::batch_bool<T, A> isfinite(const xsimd::batch<T, A>& b)
    +
    276 {
    +
    277 return xsimd::isfinite(b);
    +
    278 }*/
    +
    279#endif
    +
    280 // The following specializations are needed to avoid 'ambiguous overload' errors,
    +
    281 // whereas 'unsigned char' and 'unsigned short' are automatically converted to 'int'.
    +
    282 // we're still adding those functions to silence warnings
    +
    283 XTENSOR_UNSIGNED_ABS_FUNC(unsigned char)
    +
    284 XTENSOR_UNSIGNED_ABS_FUNC(unsigned short)
    +
    285 XTENSOR_UNSIGNED_ABS_FUNC(unsigned int)
    +
    286 XTENSOR_UNSIGNED_ABS_FUNC(unsigned long)
    +
    287 XTENSOR_UNSIGNED_ABS_FUNC(unsigned long long)
    +
    288
    +
    289#ifdef _WIN32
    +
    290 XTENSOR_INT_SPECIALIZATION(isinf, false);
    +
    291 XTENSOR_INT_SPECIALIZATION(isnan, false);
    +
    292 XTENSOR_INT_SPECIALIZATION(isfinite, true);
    +
    293#endif
    +
    294
    +
    295 XTENSOR_UNARY_MATH_FUNCTOR_COMPLEX_REDUCING(abs);
    +
    296
    +
    297 XTENSOR_UNARY_MATH_FUNCTOR(fabs);
    +
    298 XTENSOR_BINARY_MATH_FUNCTOR(fmod);
    +
    299 XTENSOR_BINARY_MATH_FUNCTOR(remainder);
    +
    300 XTENSOR_TERNARY_MATH_FUNCTOR(fma);
    +
    301 XTENSOR_BINARY_MATH_FUNCTOR(fmax);
    +
    302 XTENSOR_BINARY_MATH_FUNCTOR(fmin);
    +
    303 XTENSOR_BINARY_MATH_FUNCTOR(fdim);
    +
    304 XTENSOR_UNARY_MATH_FUNCTOR(exp);
    +
    305 XTENSOR_UNARY_MATH_FUNCTOR(exp2);
    +
    306 XTENSOR_UNARY_MATH_FUNCTOR(expm1);
    +
    307 XTENSOR_UNARY_MATH_FUNCTOR(log);
    +
    308 XTENSOR_UNARY_MATH_FUNCTOR(log10);
    +
    309 XTENSOR_UNARY_MATH_FUNCTOR(log2);
    +
    310 XTENSOR_UNARY_MATH_FUNCTOR(log1p);
    +
    311 XTENSOR_BINARY_MATH_FUNCTOR(pow);
    +
    312 XTENSOR_UNARY_MATH_FUNCTOR(sqrt);
    +
    313 XTENSOR_UNARY_MATH_FUNCTOR(cbrt);
    +
    314 XTENSOR_BINARY_MATH_FUNCTOR(hypot);
    +
    315 XTENSOR_UNARY_MATH_FUNCTOR(sin);
    +
    316 XTENSOR_UNARY_MATH_FUNCTOR(cos);
    +
    317 XTENSOR_UNARY_MATH_FUNCTOR(tan);
    +
    318 XTENSOR_UNARY_MATH_FUNCTOR(asin);
    +
    319 XTENSOR_UNARY_MATH_FUNCTOR(acos);
    +
    320 XTENSOR_UNARY_MATH_FUNCTOR(atan);
    +
    321 XTENSOR_BINARY_MATH_FUNCTOR(atan2);
    +
    322 XTENSOR_UNARY_MATH_FUNCTOR(sinh);
    +
    323 XTENSOR_UNARY_MATH_FUNCTOR(cosh);
    +
    324 XTENSOR_UNARY_MATH_FUNCTOR(tanh);
    +
    325 XTENSOR_UNARY_MATH_FUNCTOR(asinh);
    +
    326 XTENSOR_UNARY_MATH_FUNCTOR(acosh);
    +
    327 XTENSOR_UNARY_MATH_FUNCTOR(atanh);
    +
    328 XTENSOR_UNARY_MATH_FUNCTOR(erf);
    +
    329 XTENSOR_UNARY_MATH_FUNCTOR(erfc);
    +
    330 XTENSOR_UNARY_MATH_FUNCTOR(tgamma);
    +
    331 XTENSOR_UNARY_MATH_FUNCTOR(lgamma);
    +
    332 XTENSOR_UNARY_MATH_FUNCTOR(ceil);
    +
    333 XTENSOR_UNARY_MATH_FUNCTOR(floor);
    +
    334 XTENSOR_UNARY_MATH_FUNCTOR(trunc);
    +
    335 XTENSOR_UNARY_MATH_FUNCTOR(round);
    +
    336 XTENSOR_UNARY_MATH_FUNCTOR(nearbyint);
    +
    337 XTENSOR_UNARY_MATH_FUNCTOR(rint);
    +
    338 XTENSOR_UNARY_MATH_FUNCTOR(isfinite);
    +
    339 XTENSOR_UNARY_MATH_FUNCTOR(isinf);
    +
    340 XTENSOR_UNARY_MATH_FUNCTOR(isnan);
    +
    341 }
    +
    342
    +
    343#undef XTENSOR_UNARY_MATH_FUNCTOR
    +
    344#undef XTENSOR_BINARY_MATH_FUNCTOR
    +
    345#undef XTENSOR_TERNARY_MATH_FUNCTOR
    +
    346#undef XTENSOR_UNARY_MATH_FUNCTOR_COMPLEX_REDUCING
    +
    347#undef XTENSOR_UNSIGNED_ABS_FUNC
    +
    348
    +
    349 namespace detail
    +
    350 {
    +
    351 template <class R, class T>
    +
    352 std::enable_if_t<!has_iterator_interface<R>::value, R> fill_init(T init)
    +
    353 {
    +
    354 return R(init);
    +
    355 }
    +
    356
    +
    357 template <class R, class T>
    +
    358 std::enable_if_t<has_iterator_interface<R>::value, R> fill_init(T init)
    +
    359 {
    +
    360 R result;
    +
    361 std::fill(std::begin(result), std::end(result), init);
    +
    362 return result;
    +
    363 }
    +
    364 }
    +
    365
    +
    366#define XTENSOR_REDUCER_FUNCTION(NAME, FUNCTOR, INIT_VALUE_TYPE, INIT) \
    +
    367 template < \
    +
    368 class T = void, \
    +
    369 class E, \
    +
    370 class X, \
    +
    371 class EVS = DEFAULT_STRATEGY_REDUCERS, \
    +
    372 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<std::decay_t<X>>>)> \
    +
    373 inline auto NAME(E&& e, X&& axes, EVS es = EVS()) \
    +
    374 { \
    +
    375 using init_value_type = std::conditional_t<std::is_same<T, void>::value, INIT_VALUE_TYPE, T>; \
    +
    376 using functor_type = FUNCTOR; \
    +
    377 using init_value_fct = xt::const_value<init_value_type>; \
    +
    378 return xt::reduce( \
    +
    379 make_xreducer_functor(functor_type(), init_value_fct(detail::fill_init<init_value_type>(INIT))), \
    +
    380 std::forward<E>(e), \
    +
    381 std::forward<X>(axes), \
    +
    382 es \
    +
    383 ); \
    +
    384 } \
    +
    385 \
    +
    386 template < \
    +
    387 class T = void, \
    +
    388 class E, \
    +
    389 class X, \
    +
    390 class EVS = DEFAULT_STRATEGY_REDUCERS, \
    +
    391 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::is_integral<std::decay_t<X>>)> \
    +
    392 inline auto NAME(E&& e, X axis, EVS es = EVS()) \
    +
    393 { \
    +
    394 return NAME(std::forward<E>(e), {axis}, es); \
    +
    395 } \
    +
    396 \
    +
    397 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)> \
    +
    398 inline auto NAME(E&& e, EVS es = EVS()) \
    +
    399 { \
    +
    400 using init_value_type = std::conditional_t<std::is_same<T, void>::value, INIT_VALUE_TYPE, T>; \
    +
    401 using functor_type = FUNCTOR; \
    +
    402 using init_value_fct = xt::const_value<init_value_type>; \
    +
    403 return xt::reduce( \
    +
    404 make_xreducer_functor(functor_type(), init_value_fct(detail::fill_init<init_value_type>(INIT))), \
    +
    405 std::forward<E>(e), \
    +
    406 es \
    +
    407 ); \
    +
    408 } \
    +
    409 \
    +
    410 template <class T = void, class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS> \
    +
    411 inline auto NAME(E&& e, const I(&axes)[N], EVS es = EVS()) \
    +
    412 { \
    +
    413 using init_value_type = std::conditional_t<std::is_same<T, void>::value, INIT_VALUE_TYPE, T>; \
    +
    414 using functor_type = FUNCTOR; \
    +
    415 using init_value_fct = xt::const_value<init_value_type>; \
    +
    416 return xt::reduce( \
    +
    417 make_xreducer_functor(functor_type(), init_value_fct(detail::fill_init<init_value_type>(INIT))), \
    +
    418 std::forward<E>(e), \
    +
    419 axes, \
    +
    420 es \
    +
    421 ); \
    +
    422 }
    +
    423
    +
    424 /*******************
    +
    425 * basic functions *
    +
    426 *******************/
    +
    427
    +
    441 template <class E>
    +
    +
    442 inline auto abs(E&& e) noexcept -> detail::xfunction_type_t<math::abs_fun, E>
    +
    443 {
    +
    444 return detail::make_xfunction<math::abs_fun>(std::forward<E>(e));
    +
    445 }
    +
    +
    446
    +
    456 template <class E>
    +
    +
    457 inline auto fabs(E&& e) noexcept -> detail::xfunction_type_t<math::fabs_fun, E>
    +
    458 {
    +
    459 return detail::make_xfunction<math::fabs_fun>(std::forward<E>(e));
    +
    460 }
    +
    +
    461
    +
    473 template <class E1, class E2>
    +
    +
    474 inline auto fmod(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::fmod_fun, E1, E2>
    +
    475 {
    +
    476 return detail::make_xfunction<math::fmod_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    477 }
    +
    +
    478
    +
    490 template <class E1, class E2>
    +
    +
    491 inline auto remainder(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::remainder_fun, E1, E2>
    +
    492 {
    +
    493 return detail::make_xfunction<math::remainder_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    494 }
    +
    +
    495
    +
    508 template <class E1, class E2, class E3>
    +
    +
    509 inline auto fma(E1&& e1, E2&& e2, E3&& e3) noexcept -> detail::xfunction_type_t<math::fma_fun, E1, E2, E3>
    +
    510 {
    +
    511 return detail::make_xfunction<math::fma_fun>(
    +
    512 std::forward<E1>(e1),
    +
    513 std::forward<E2>(e2),
    +
    514 std::forward<E3>(e3)
    +
    515 );
    +
    516 }
    +
    +
    517
    +
    529 template <class E1, class E2>
    +
    +
    530 inline auto fmax(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::fmax_fun, E1, E2>
    +
    531 {
    +
    532 return detail::make_xfunction<math::fmax_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    533 }
    +
    +
    534
    +
    546 template <class E1, class E2>
    +
    +
    547 inline auto fmin(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::fmin_fun, E1, E2>
    +
    548 {
    +
    549 return detail::make_xfunction<math::fmin_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    550 }
    +
    +
    551
    +
    563 template <class E1, class E2>
    +
    +
    564 inline auto fdim(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::fdim_fun, E1, E2>
    +
    565 {
    +
    566 return detail::make_xfunction<math::fdim_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    567 }
    +
    +
    568
    +
    569 namespace math
    +
    570 {
    +
    571 template <class T = void>
    +
    +
    572 struct minimum
    +
    573 {
    +
    574 template <class A1, class A2>
    +
    575 constexpr auto operator()(const A1& t1, const A2& t2) const noexcept
    +
    576 {
    +
    577 return xtl::select(t1 < t2, t1, t2);
    +
    578 }
    +
    579
    +
    580 template <class A1, class A2>
    +
    581 constexpr auto simd_apply(const A1& t1, const A2& t2) const noexcept
    +
    582 {
    +
    583 return xt_simd::select(t1 < t2, t1, t2);
    +
    584 }
    +
    585 };
    +
    +
    586
    +
    587 template <class T = void>
    +
    +
    588 struct maximum
    +
    589 {
    +
    590 template <class A1, class A2>
    +
    591 constexpr auto operator()(const A1& t1, const A2& t2) const noexcept
    +
    592 {
    +
    593 return xtl::select(t1 > t2, t1, t2);
    +
    594 }
    +
    595
    +
    596 template <class A1, class A2>
    +
    597 constexpr auto simd_apply(const A1& t1, const A2& t2) const noexcept
    +
    598 {
    +
    599 return xt_simd::select(t1 > t2, t1, t2);
    +
    600 }
    +
    601 };
    +
    +
    602
    +
    + +
    604 {
    +
    605 template <class A1, class A2, class A3>
    +
    606 constexpr auto operator()(const A1& v, const A2& lo, const A3& hi) const
    +
    607 {
    +
    608 return xtl::select(v < lo, lo, xtl::select(hi < v, hi, v));
    +
    609 }
    +
    610
    +
    611 template <class A1, class A2, class A3>
    +
    612 constexpr auto simd_apply(const A1& v, const A2& lo, const A3& hi) const
    +
    613 {
    +
    614 return xt_simd::select(v < lo, lo, xt_simd::select(hi < v, hi, v));
    +
    615 }
    +
    616 };
    +
    +
    617
    +
    +
    618 struct deg2rad
    +
    619 {
    +
    620 template <class A, std::enable_if_t<xtl::is_integral<A>::value, int> = 0>
    +
    621 constexpr double operator()(const A& a) const noexcept
    +
    622 {
    +
    623 return a * xt::numeric_constants<double>::PI / 180.0;
    +
    624 }
    +
    625
    +
    626 template <class A, std::enable_if_t<std::is_floating_point<A>::value, int> = 0>
    +
    627 constexpr auto operator()(const A& a) const noexcept
    +
    628 {
    +
    629 return a * xt::numeric_constants<A>::PI / A(180.0);
    +
    630 }
    +
    631
    +
    632 template <class A, std::enable_if_t<xtl::is_integral<A>::value, int> = 0>
    +
    633 constexpr double simd_apply(const A& a) const noexcept
    +
    634 {
    +
    635 return a * xt::numeric_constants<double>::PI / 180.0;
    +
    636 }
    +
    637
    +
    638 template <class A, std::enable_if_t<std::is_floating_point<A>::value, int> = 0>
    +
    639 constexpr auto simd_apply(const A& a) const noexcept
    +
    640 {
    +
    641 return a * xt::numeric_constants<A>::PI / A(180.0);
    +
    642 }
    +
    643 };
    +
    +
    644
    +
    +
    645 struct rad2deg
    +
    646 {
    +
    647 template <class A, std::enable_if_t<xtl::is_integral<A>::value, int> = 0>
    +
    648 constexpr double operator()(const A& a) const noexcept
    +
    649 {
    +
    650 return a * 180.0 / xt::numeric_constants<double>::PI;
    +
    651 }
    +
    652
    +
    653 template <class A, std::enable_if_t<std::is_floating_point<A>::value, int> = 0>
    +
    654 constexpr auto operator()(const A& a) const noexcept
    +
    655 {
    +
    656 return a * A(180.0) / xt::numeric_constants<A>::PI;
    +
    657 }
    +
    658
    +
    659 template <class A, std::enable_if_t<xtl::is_integral<A>::value, int> = 0>
    +
    660 constexpr double simd_apply(const A& a) const noexcept
    +
    661 {
    +
    662 return a * 180.0 / xt::numeric_constants<double>::PI;
    +
    663 }
    +
    664
    +
    665 template <class A, std::enable_if_t<std::is_floating_point<A>::value, int> = 0>
    +
    666 constexpr auto simd_apply(const A& a) const noexcept
    +
    667 {
    +
    668 return a * A(180.0) / xt::numeric_constants<A>::PI;
    +
    669 }
    +
    670 };
    +
    +
    671 }
    +
    672
    +
    682 template <class E>
    +
    +
    683 inline auto deg2rad(E&& e) noexcept -> detail::xfunction_type_t<math::deg2rad, E>
    +
    684 {
    +
    685 return detail::make_xfunction<math::deg2rad>(std::forward<E>(e));
    +
    686 }
    +
    +
    687
    +
    697 template <class E>
    +
    +
    698 inline auto radians(E&& e) noexcept -> detail::xfunction_type_t<math::deg2rad, E>
    +
    699 {
    +
    700 return detail::make_xfunction<math::deg2rad>(std::forward<E>(e));
    +
    701 }
    +
    +
    702
    +
    712 template <class E>
    +
    +
    713 inline auto rad2deg(E&& e) noexcept -> detail::xfunction_type_t<math::rad2deg, E>
    +
    714 {
    +
    715 return detail::make_xfunction<math::rad2deg>(std::forward<E>(e));
    +
    716 }
    +
    +
    717
    +
    727 template <class E>
    +
    +
    728 inline auto degrees(E&& e) noexcept -> detail::xfunction_type_t<math::rad2deg, E>
    +
    729 {
    +
    730 return detail::make_xfunction<math::rad2deg>(std::forward<E>(e));
    +
    731 }
    +
    +
    732
    +
    743 template <class E1, class E2>
    +
    +
    744 inline auto maximum(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::maximum<void>, E1, E2>
    +
    745 {
    +
    746 return detail::make_xfunction<math::maximum<void>>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    747 }
    +
    +
    748
    +
    759 template <class E1, class E2>
    +
    +
    760 inline auto minimum(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::minimum<void>, E1, E2>
    +
    761 {
    +
    762 return detail::make_xfunction<math::minimum<void>>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    763 }
    +
    +
    764
    +
    776 XTENSOR_REDUCER_FUNCTION(
    +
    777 amax,
    +
    778 math::maximum<void>,
    +
    779 typename std::decay_t<E>::value_type,
    +
    780 std::numeric_limits<xvalue_type_t<std::decay_t<E>>>::lowest()
    + +
    782
    +
    783
    +
    794 XTENSOR_REDUCER_FUNCTION(
    +
    795 amin,
    +
    796 math::minimum<void>,
    +
    797 typename std::decay_t<E>::value_type,
    +
    798 std::numeric_limits<xvalue_type_t<std::decay_t<E>>>::max()
    + +
    800
    +
    813 template <class E1, class E2, class E3>
    +
    +
    814 inline auto clip(E1&& e1, E2&& lo, E3&& hi) noexcept
    +
    815 -> detail::xfunction_type_t<math::clamp_fun, E1, E2, E3>
    +
    816 {
    +
    817 return detail::make_xfunction<math::clamp_fun>(
    +
    818 std::forward<E1>(e1),
    +
    819 std::forward<E2>(lo),
    +
    820 std::forward<E3>(hi)
    +
    821 );
    +
    822 }
    +
    +
    823
    +
    824 namespace math
    +
    825 {
    +
    826 template <class T>
    +
    + +
    828 {
    +
    829 template <class XT = T>
    +
    830 static constexpr std::enable_if_t<xtl::is_signed<XT>::value, T> run(T x)
    +
    831 {
    +
    832 return std::isnan(x) ? std::numeric_limits<T>::quiet_NaN()
    +
    833 : x == 0 ? T(copysign(T(0), x))
    +
    834 : T(copysign(T(1), x));
    +
    835 }
    +
    836
    +
    837 template <class XT = T>
    +
    838 static constexpr std::enable_if_t<xtl::is_complex<XT>::value, T> run(T x)
    +
    839 {
    +
    840 return T(
    + +
    842 (x.real() != typename T::value_type(0)) ? x.real() : x.imag()
    +
    843 ),
    +
    844 0
    +
    845 );
    +
    846 }
    +
    847
    +
    848 template <class XT = T>
    +
    849 static constexpr std::enable_if_t<std::is_unsigned<XT>::value, T> run(T x)
    +
    850 {
    +
    851 return T(x > T(0));
    +
    852 }
    +
    853 };
    +
    +
    854
    +
    +
    855 struct sign_fun
    +
    856 {
    +
    857 template <class T>
    +
    858 constexpr auto operator()(const T& x) const
    +
    859 {
    +
    860 return sign_impl<T>::run(x);
    +
    861 }
    +
    862 };
    +
    +
    863 }
    +
    864
    +
    875 template <class E>
    +
    +
    876 inline auto sign(E&& e) noexcept -> detail::xfunction_type_t<math::sign_fun, E>
    +
    877 {
    +
    878 return detail::make_xfunction<math::sign_fun>(std::forward<E>(e));
    +
    879 }
    +
    +
    880
    +
    881 /*************************
    +
    882 * exponential functions *
    +
    883 *************************/
    +
    884
    +
    898 template <class E>
    +
    +
    899 inline auto exp(E&& e) noexcept -> detail::xfunction_type_t<math::exp_fun, E>
    +
    900 {
    +
    901 return detail::make_xfunction<math::exp_fun>(std::forward<E>(e));
    +
    902 }
    +
    +
    903
    +
    913 template <class E>
    +
    +
    914 inline auto exp2(E&& e) noexcept -> detail::xfunction_type_t<math::exp2_fun, E>
    +
    915 {
    +
    916 return detail::make_xfunction<math::exp2_fun>(std::forward<E>(e));
    +
    917 }
    +
    +
    918
    +
    928 template <class E>
    +
    +
    929 inline auto expm1(E&& e) noexcept -> detail::xfunction_type_t<math::expm1_fun, E>
    +
    930 {
    +
    931 return detail::make_xfunction<math::expm1_fun>(std::forward<E>(e));
    +
    932 }
    +
    +
    933
    +
    943 template <class E>
    +
    +
    944 inline auto log(E&& e) noexcept -> detail::xfunction_type_t<math::log_fun, E>
    +
    945 {
    +
    946 return detail::make_xfunction<math::log_fun>(std::forward<E>(e));
    +
    947 }
    +
    +
    948
    +
    958 template <class E>
    +
    +
    959 inline auto log10(E&& e) noexcept -> detail::xfunction_type_t<math::log10_fun, E>
    +
    960 {
    +
    961 return detail::make_xfunction<math::log10_fun>(std::forward<E>(e));
    +
    962 }
    +
    +
    963
    +
    973 template <class E>
    +
    +
    974 inline auto log2(E&& e) noexcept -> detail::xfunction_type_t<math::log2_fun, E>
    +
    975 {
    +
    976 return detail::make_xfunction<math::log2_fun>(std::forward<E>(e));
    +
    977 }
    +
    +
    978
    +
    988 template <class E>
    +
    +
    989 inline auto log1p(E&& e) noexcept -> detail::xfunction_type_t<math::log1p_fun, E>
    +
    990 {
    +
    991 return detail::make_xfunction<math::log1p_fun>(std::forward<E>(e));
    +
    992 }
    +
    +
    993
    +
    994 /*******************
    +
    995 * power functions *
    +
    996 *******************/
    +
    997
    +
    1013 template <class E1, class E2>
    +
    +
    1014 inline auto pow(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::pow_fun, E1, E2>
    +
    1015 {
    +
    1016 return detail::make_xfunction<math::pow_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    1017 }
    +
    +
    1018
    +
    1019 namespace detail
    +
    1020 {
    +
    1021 template <class F, class... T, typename = decltype(std::declval<F>()(std::declval<T>()...))>
    +
    1022 std::true_type supports_test(const F&, const T&...);
    +
    1023 std::false_type supports_test(...);
    +
    1024
    +
    1025 template <class... T>
    +
    1026 struct supports;
    +
    1027
    +
    1028 template <class F, class... T>
    +
    1029 struct supports<F(T...)> : decltype(supports_test(std::declval<F>(), std::declval<T>()...))
    +
    1030 {
    +
    1031 };
    +
    1032
    +
    1033 template <class F>
    +
    1034 struct lambda_adapt
    +
    1035 {
    +
    1036 explicit lambda_adapt(F&& lmbd)
    +
    1037 : m_lambda(std::move(lmbd))
    +
    1038 {
    +
    1039 }
    +
    1040
    +
    1041 template <class... T>
    +
    1042 auto operator()(T... args) const
    +
    1043 {
    +
    1044 return m_lambda(args...);
    +
    1045 }
    +
    1046
    +
    1047 template <class... T, XTL_REQUIRES(detail::supports<F(T...)>)>
    +
    1048 auto simd_apply(T... args) const
    +
    1049 {
    +
    1050 return m_lambda(args...);
    +
    1051 }
    +
    1052
    +
    1053 F m_lambda;
    +
    1054 };
    +
    1055 }
    +
    1056
    +
    1083 template <class F, class... E>
    +
    +
    1084 inline auto make_lambda_xfunction(F&& lambda, E&&... args)
    +
    1085 {
    +
    1086 using xfunction_type = typename detail::xfunction_type<detail::lambda_adapt<F>, E...>::type;
    +
    1087 return xfunction_type(detail::lambda_adapt<F>(std::forward<F>(lambda)), std::forward<E>(args)...);
    +
    1088 }
    +
    +
    1089
    +
    1090#define XTENSOR_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
    +
    1091
    +
    1092// Workaround for MSVC 2015 & GCC 4.9
    +
    1093#if (defined(_MSC_VER) && _MSC_VER < 1910) || (defined(__GNUC__) && GCC_VERSION < 49999)
    +
    1094#define XTENSOR_DISABLE_LAMBDA_FCT
    +
    1095#endif
    +
    1096
    +
    1097#ifdef XTENSOR_DISABLE_LAMBDA_FCT
    +
    1098 struct square_fct
    +
    1099 {
    +
    1100 template <class T>
    +
    1101 auto operator()(T x) const -> decltype(x * x)
    +
    1102 {
    +
    1103 return x * x;
    +
    1104 }
    +
    1105 };
    +
    1106
    +
    1107 struct cube_fct
    +
    1108 {
    +
    1109 template <class T>
    +
    1110 auto operator()(T x) const -> decltype(x * x * x)
    +
    1111 {
    +
    1112 return x * x * x;
    +
    1113 }
    +
    1114 };
    +
    1115#endif
    +
    1116
    +
    1126 template <class E1>
    +
    +
    1127 inline auto square(E1&& e1) noexcept
    +
    1128 {
    +
    1129#ifdef XTENSOR_DISABLE_LAMBDA_FCT
    +
    1130 return make_lambda_xfunction(square_fct{}, std::forward<E1>(e1));
    +
    1131#else
    +
    1132 auto fnct = [](auto x) -> decltype(x * x)
    +
    1133 {
    +
    1134 return x * x;
    +
    1135 };
    +
    1136 return make_lambda_xfunction(std::move(fnct), std::forward<E1>(e1));
    +
    1137#endif
    +
    1138 }
    +
    +
    1139
    +
    1149 template <class E1>
    +
    +
    1150 inline auto cube(E1&& e1) noexcept
    +
    1151 {
    +
    1152#ifdef XTENSOR_DISABLE_LAMBDA_FCT
    +
    1153 return make_lambda_xfunction(cube_fct{}, std::forward<E1>(e1));
    +
    1154#else
    +
    1155 auto fnct = [](auto x) -> decltype(x * x * x)
    +
    1156 {
    +
    1157 return x * x * x;
    +
    1158 };
    +
    1159 return make_lambda_xfunction(std::move(fnct), std::forward<E1>(e1));
    +
    1160#endif
    +
    1161 }
    +
    +
    1162
    +
    1163#undef XTENSOR_GCC_VERSION
    +
    1164#undef XTENSOR_DISABLE_LAMBDA_FCT
    +
    1165
    +
    1166 namespace detail
    +
    1167 {
    +
    1168 // Thanks to Matt Pharr in http://pbrt.org/hair.pdf
    +
    1169 template <std::size_t N>
    +
    1170 struct pow_impl;
    +
    1171
    +
    1172 template <std::size_t N>
    +
    1173 struct pow_impl
    +
    1174 {
    +
    1175 template <class T>
    +
    1176 auto operator()(T v) const -> decltype(v * v)
    +
    1177 {
    +
    1178 T temp = pow_impl<N / 2>{}(v);
    +
    1179 return temp * temp * pow_impl<N & 1>{}(v);
    +
    1180 }
    +
    1181 };
    +
    1182
    +
    1183 template <>
    +
    1184 struct pow_impl<1>
    +
    1185 {
    +
    1186 template <class T>
    +
    1187 auto operator()(T v) const -> T
    +
    1188 {
    +
    1189 return v;
    +
    1190 }
    +
    1191 };
    +
    1192
    +
    1193 template <>
    +
    1194 struct pow_impl<0>
    +
    1195 {
    +
    1196 template <class T>
    +
    1197 auto operator()(T /*v*/) const -> T
    +
    1198 {
    +
    1199 return T(1);
    +
    1200 }
    +
    1201 };
    +
    1202 }
    +
    1203
    +
    1221 template <std::size_t N, class E>
    +
    +
    1222 inline auto pow(E&& e) noexcept
    +
    1223 {
    +
    1224 static_assert(N > 0, "integer power cannot be negative");
    +
    1225 return make_lambda_xfunction(detail::pow_impl<N>{}, std::forward<E>(e));
    +
    1226 }
    +
    +
    1227
    +
    1237 template <class E>
    +
    +
    1238 inline auto sqrt(E&& e) noexcept -> detail::xfunction_type_t<math::sqrt_fun, E>
    +
    1239 {
    +
    1240 return detail::make_xfunction<math::sqrt_fun>(std::forward<E>(e));
    +
    1241 }
    +
    +
    1242
    +
    1252 template <class E>
    +
    +
    1253 inline auto cbrt(E&& e) noexcept -> detail::xfunction_type_t<math::cbrt_fun, E>
    +
    1254 {
    +
    1255 return detail::make_xfunction<math::cbrt_fun>(std::forward<E>(e));
    +
    1256 }
    +
    +
    1257
    +
    1270 template <class E1, class E2>
    +
    +
    1271 inline auto hypot(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::hypot_fun, E1, E2>
    +
    1272 {
    +
    1273 return detail::make_xfunction<math::hypot_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    1274 }
    +
    +
    1275
    +
    1276 /***************************
    +
    1277 * trigonometric functions *
    +
    1278 ***************************/
    +
    1279
    +
    1293 template <class E>
    +
    +
    1294 inline auto sin(E&& e) noexcept -> detail::xfunction_type_t<math::sin_fun, E>
    +
    1295 {
    +
    1296 return detail::make_xfunction<math::sin_fun>(std::forward<E>(e));
    +
    1297 }
    +
    +
    1298
    +
    1308 template <class E>
    +
    +
    1309 inline auto cos(E&& e) noexcept -> detail::xfunction_type_t<math::cos_fun, E>
    +
    1310 {
    +
    1311 return detail::make_xfunction<math::cos_fun>(std::forward<E>(e));
    +
    1312 }
    +
    +
    1313
    +
    1323 template <class E>
    +
    +
    1324 inline auto tan(E&& e) noexcept -> detail::xfunction_type_t<math::tan_fun, E>
    +
    1325 {
    +
    1326 return detail::make_xfunction<math::tan_fun>(std::forward<E>(e));
    +
    1327 }
    +
    +
    1328
    +
    1338 template <class E>
    +
    +
    1339 inline auto asin(E&& e) noexcept -> detail::xfunction_type_t<math::asin_fun, E>
    +
    1340 {
    +
    1341 return detail::make_xfunction<math::asin_fun>(std::forward<E>(e));
    +
    1342 }
    +
    +
    1343
    +
    1353 template <class E>
    +
    +
    1354 inline auto acos(E&& e) noexcept -> detail::xfunction_type_t<math::acos_fun, E>
    +
    1355 {
    +
    1356 return detail::make_xfunction<math::acos_fun>(std::forward<E>(e));
    +
    1357 }
    +
    +
    1358
    +
    1368 template <class E>
    +
    +
    1369 inline auto atan(E&& e) noexcept -> detail::xfunction_type_t<math::atan_fun, E>
    +
    1370 {
    +
    1371 return detail::make_xfunction<math::atan_fun>(std::forward<E>(e));
    +
    1372 }
    +
    +
    1373
    +
    1386 template <class E1, class E2>
    +
    +
    1387 inline auto atan2(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<math::atan2_fun, E1, E2>
    +
    1388 {
    +
    1389 return detail::make_xfunction<math::atan2_fun>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    1390 }
    +
    +
    1391
    +
    1392 /************************
    +
    1393 * hyperbolic functions *
    +
    1394 ************************/
    +
    1395
    +
    1409 template <class E>
    +
    +
    1410 inline auto sinh(E&& e) noexcept -> detail::xfunction_type_t<math::sinh_fun, E>
    +
    1411 {
    +
    1412 return detail::make_xfunction<math::sinh_fun>(std::forward<E>(e));
    +
    1413 }
    +
    +
    1414
    +
    1424 template <class E>
    +
    +
    1425 inline auto cosh(E&& e) noexcept -> detail::xfunction_type_t<math::cosh_fun, E>
    +
    1426 {
    +
    1427 return detail::make_xfunction<math::cosh_fun>(std::forward<E>(e));
    +
    1428 }
    +
    +
    1429
    +
    1439 template <class E>
    +
    +
    1440 inline auto tanh(E&& e) noexcept -> detail::xfunction_type_t<math::tanh_fun, E>
    +
    1441 {
    +
    1442 return detail::make_xfunction<math::tanh_fun>(std::forward<E>(e));
    +
    1443 }
    +
    +
    1444
    +
    1454 template <class E>
    +
    +
    1455 inline auto asinh(E&& e) noexcept -> detail::xfunction_type_t<math::asinh_fun, E>
    +
    1456 {
    +
    1457 return detail::make_xfunction<math::asinh_fun>(std::forward<E>(e));
    +
    1458 }
    +
    +
    1459
    +
    1469 template <class E>
    +
    +
    1470 inline auto acosh(E&& e) noexcept -> detail::xfunction_type_t<math::acosh_fun, E>
    +
    1471 {
    +
    1472 return detail::make_xfunction<math::acosh_fun>(std::forward<E>(e));
    +
    1473 }
    +
    +
    1474
    +
    1484 template <class E>
    +
    +
    1485 inline auto atanh(E&& e) noexcept -> detail::xfunction_type_t<math::atanh_fun, E>
    +
    1486 {
    +
    1487 return detail::make_xfunction<math::atanh_fun>(std::forward<E>(e));
    +
    1488 }
    +
    +
    1489
    +
    1490 /*****************************
    +
    1491 * error and gamma functions *
    +
    1492 *****************************/
    +
    1493
    +
    1507 template <class E>
    +
    +
    1508 inline auto erf(E&& e) noexcept -> detail::xfunction_type_t<math::erf_fun, E>
    +
    1509 {
    +
    1510 return detail::make_xfunction<math::erf_fun>(std::forward<E>(e));
    +
    1511 }
    +
    +
    1512
    +
    1522 template <class E>
    +
    +
    1523 inline auto erfc(E&& e) noexcept -> detail::xfunction_type_t<math::erfc_fun, E>
    +
    1524 {
    +
    1525 return detail::make_xfunction<math::erfc_fun>(std::forward<E>(e));
    +
    1526 }
    +
    +
    1527
    +
    1537 template <class E>
    +
    +
    1538 inline auto tgamma(E&& e) noexcept -> detail::xfunction_type_t<math::tgamma_fun, E>
    +
    1539 {
    +
    1540 return detail::make_xfunction<math::tgamma_fun>(std::forward<E>(e));
    +
    1541 }
    +
    +
    1542
    +
    1552 template <class E>
    +
    +
    1553 inline auto lgamma(E&& e) noexcept -> detail::xfunction_type_t<math::lgamma_fun, E>
    +
    1554 {
    +
    1555 return detail::make_xfunction<math::lgamma_fun>(std::forward<E>(e));
    +
    1556 }
    +
    +
    1557
    +
    1558 /*********************************************
    +
    1559 * nearest integer floating point operations *
    +
    1560 *********************************************/
    +
    1561
    +
    1575 template <class E>
    +
    +
    1576 inline auto ceil(E&& e) noexcept -> detail::xfunction_type_t<math::ceil_fun, E>
    +
    1577 {
    +
    1578 return detail::make_xfunction<math::ceil_fun>(std::forward<E>(e));
    +
    1579 }
    +
    +
    1580
    +
    1590 template <class E>
    +
    +
    1591 inline auto floor(E&& e) noexcept -> detail::xfunction_type_t<math::floor_fun, E>
    +
    1592 {
    +
    1593 return detail::make_xfunction<math::floor_fun>(std::forward<E>(e));
    +
    1594 }
    +
    +
    1595
    +
    1605 template <class E>
    +
    +
    1606 inline auto trunc(E&& e) noexcept -> detail::xfunction_type_t<math::trunc_fun, E>
    +
    1607 {
    +
    1608 return detail::make_xfunction<math::trunc_fun>(std::forward<E>(e));
    +
    1609 }
    +
    +
    1610
    +
    1621 template <class E>
    +
    +
    1622 inline auto round(E&& e) noexcept -> detail::xfunction_type_t<math::round_fun, E>
    +
    1623 {
    +
    1624 return detail::make_xfunction<math::round_fun>(std::forward<E>(e));
    +
    1625 }
    +
    +
    1626
    +
    1637 template <class E>
    +
    +
    1638 inline auto nearbyint(E&& e) noexcept -> detail::xfunction_type_t<math::nearbyint_fun, E>
    +
    1639 {
    +
    1640 return detail::make_xfunction<math::nearbyint_fun>(std::forward<E>(e));
    +
    1641 }
    +
    +
    1642
    +
    1653 template <class E>
    +
    +
    1654 inline auto rint(E&& e) noexcept -> detail::xfunction_type_t<math::rint_fun, E>
    +
    1655 {
    +
    1656 return detail::make_xfunction<math::rint_fun>(std::forward<E>(e));
    +
    1657 }
    +
    +
    1658
    +
    1659 /****************************
    +
    1660 * classification functions *
    +
    1661 ****************************/
    +
    1662
    +
    1676 template <class E>
    +
    +
    1677 inline auto isfinite(E&& e) noexcept -> detail::xfunction_type_t<math::isfinite_fun, E>
    +
    1678 {
    +
    1679 return detail::make_xfunction<math::isfinite_fun>(std::forward<E>(e));
    +
    1680 }
    +
    +
    1681
    +
    1691 template <class E>
    +
    +
    1692 inline auto isinf(E&& e) noexcept -> detail::xfunction_type_t<math::isinf_fun, E>
    +
    1693 {
    +
    1694 return detail::make_xfunction<math::isinf_fun>(std::forward<E>(e));
    +
    1695 }
    +
    +
    1696
    +
    1706 template <class E>
    +
    +
    1707 inline auto isnan(E&& e) noexcept -> detail::xfunction_type_t<math::isnan_fun, E>
    +
    1708 {
    +
    1709 return detail::make_xfunction<math::isnan_fun>(std::forward<E>(e));
    +
    1710 }
    +
    +
    1711
    +
    1712 namespace detail
    +
    1713 {
    +
    1714 template <class FUNCTOR, class T, std::size_t... Is>
    +
    1715 inline auto get_functor(T&& args, std::index_sequence<Is...>)
    +
    1716 {
    +
    1717 return FUNCTOR(std::get<Is>(args)...);
    +
    1718 }
    +
    1719
    +
    1720 template <class F, class... A, class... E>
    +
    1721 inline auto make_xfunction(std::tuple<A...>&& f_args, E&&... e) noexcept
    +
    1722 {
    +
    1723 using functor_type = F;
    +
    1724 using expression_tag = xexpression_tag_t<E...>;
    +
    1725 using type = select_xfunction_expression_t<expression_tag, functor_type, const_xclosure_t<E>...>;
    +
    1726 auto functor = get_functor<functor_type>(
    +
    1727 std::forward<std::tuple<A...>>(f_args),
    +
    1728 std::make_index_sequence<sizeof...(A)>{}
    +
    1729 );
    +
    1730 return type(std::move(functor), std::forward<E>(e)...);
    +
    1731 }
    +
    1732
    +
    1733 struct isclose
    +
    1734 {
    +
    1735 using result_type = bool;
    +
    1736
    +
    1737 isclose(double rtol, double atol, bool equal_nan)
    +
    1738 : m_rtol(rtol)
    +
    1739 , m_atol(atol)
    +
    1740 , m_equal_nan(equal_nan)
    +
    1741 {
    +
    1742 }
    +
    1743
    +
    1744 template <class A1, class A2>
    +
    1745 bool operator()(const A1& a, const A2& b) const
    +
    1746 {
    +
    1747 using internal_type = xtl::promote_type_t<A1, A2, double>;
    +
    1748 if (math::isnan(a) && math::isnan(b))
    +
    1749 {
    +
    1750 return m_equal_nan;
    +
    1751 }
    +
    1752 if (math::isinf(a) && math::isinf(b))
    +
    1753 {
    +
    1754 // check for both infinity signs equal
    +
    1755 return a == b;
    +
    1756 }
    +
    1757 auto d = math::abs(internal_type(a) - internal_type(b));
    +
    1758 return d <= m_atol
    +
    1759 || d <= m_rtol
    +
    1760 * double((std::max)(math::abs(internal_type(a)), math::abs(internal_type(b)))
    +
    1761 );
    +
    1762 }
    +
    1763
    +
    1764 private:
    +
    1765
    +
    1766 double m_rtol;
    +
    1767 double m_atol;
    +
    1768 bool m_equal_nan;
    +
    1769 };
    +
    1770 }
    +
    1771
    +
    1787 template <class E1, class E2>
    +
    1788 inline auto
    +
    +
    1789 isclose(E1&& e1, E2&& e2, double rtol = 1e-05, double atol = 1e-08, bool equal_nan = false) noexcept
    +
    1790 {
    +
    1791 return detail::make_xfunction<detail::isclose>(
    +
    1792 std::make_tuple(rtol, atol, equal_nan),
    +
    1793 std::forward<E1>(e1),
    +
    1794 std::forward<E2>(e2)
    +
    1795 );
    +
    1796 }
    +
    +
    1797
    +
    1811 template <class E1, class E2>
    +
    +
    1812 inline auto allclose(E1&& e1, E2&& e2, double rtol = 1e-05, double atol = 1e-08) noexcept
    +
    1813 {
    +
    1814 return xt::all(isclose(std::forward<E1>(e1), std::forward<E2>(e2), rtol, atol));
    +
    1815 }
    +
    +
    1816
    +
    1817 /**********************
    +
    1818 * Reducing functions *
    +
    1819 **********************/
    +
    1820
    +
    1840 XTENSOR_REDUCER_FUNCTION(sum, detail::plus, typename std::decay_t<E>::value_type, 0)
    +
    1841
    +
    1842
    +
    1860 XTENSOR_REDUCER_FUNCTION(prod, detail::multiplies, typename std::decay_t<E>::value_type, 1)
    +
    1861
    +
    1862 namespace detail
    +
    1863 {
    +
    1864 template <class T, class S, class ST>
    +
    1865 inline auto mean_division(S&& s, ST e_size)
    +
    1866 {
    +
    1867 using value_type = typename std::conditional_t<std::is_same<T, void>::value, double, T>;
    +
    1868 // Avoids floating point exception when s.size is 0
    +
    1869 value_type div = s.size() != ST(0) ? static_cast<value_type>(e_size / s.size()) : value_type(0);
    +
    1870 return std::move(s) / std::move(div);
    +
    1871 }
    +
    1872
    +
    1873 template <
    +
    1874 class T,
    +
    1875 class E,
    +
    1876 class X,
    +
    1877 class D,
    +
    1878 class EVS,
    +
    1879 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::is_integral<D>)>
    +
    1880 inline auto mean(E&& e, X&& axes, const D& ddof, EVS es)
    +
    1881 {
    +
    1882 // sum cannot always be a double. It could be a complex number which cannot operate on
    +
    1883 // std::plus<double>.
    +
    1884 using size_type = typename std::decay_t<E>::size_type;
    +
    1885 const size_type size = e.size();
    +
    1886 XTENSOR_ASSERT(static_cast<size_type>(ddof) <= size);
    +
    1887 auto s = sum<T>(std::forward<E>(e), std::forward<X>(axes), es);
    +
    1888 return mean_division<T>(std::move(s), size - static_cast<size_type>(ddof));
    +
    1889 }
    +
    1890
    +
    1891 template <class T, class E, class I, std::size_t N, class D, class EVS>
    +
    1892 inline auto mean(E&& e, const I (&axes)[N], const D& ddof, EVS es)
    +
    1893 {
    +
    1894 using size_type = typename std::decay_t<E>::size_type;
    +
    1895 const size_type size = e.size();
    +
    1896 XTENSOR_ASSERT(static_cast<size_type>(ddof) <= size);
    +
    1897 auto s = sum<T>(std::forward<E>(e), axes, es);
    +
    1898 return mean_division<T>(std::move(s), size - static_cast<size_type>(ddof));
    +
    1899 }
    +
    1900
    +
    1901 template <class T, class E, class D, class EVS, XTL_REQUIRES(is_reducer_options<EVS>, xtl::is_integral<D>)>
    +
    1902 inline auto mean_noaxis(E&& e, const D& ddof, EVS es)
    +
    1903 {
    +
    1904 using value_type = typename std::conditional_t<std::is_same<T, void>::value, double, T>;
    +
    1905 using size_type = typename std::decay_t<E>::size_type;
    +
    1906 const size_type size = e.size();
    +
    1907 XTENSOR_ASSERT(static_cast<size_type>(ddof) <= size);
    +
    1908 auto s = sum<T>(std::forward<E>(e), es);
    +
    1909 return std::move(s) / static_cast<value_type>((size - static_cast<size_type>(ddof)));
    +
    1910 }
    +
    1911 }
    +
    1912
    +
    1928 template <
    +
    1929 class T = void,
    +
    1930 class E,
    +
    1931 class X,
    +
    1932 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1933 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    1934 inline auto mean(E&& e, X&& axes, EVS es = EVS())
    +
    1935 {
    +
    1936 return detail::mean<T>(std::forward<E>(e), std::forward<X>(axes), 0u, es);
    +
    1937 }
    +
    +
    1938
    +
    1939 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    1940 inline auto mean(E&& e, EVS es = EVS())
    +
    1941 {
    +
    1942 return detail::mean_noaxis<T>(std::forward<E>(e), 0u, es);
    +
    1943 }
    +
    1944
    +
    1945 template <class T = void, class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    1946 inline auto mean(E&& e, const I (&axes)[N], EVS es = EVS())
    +
    1947 {
    +
    1948 return detail::mean<T>(std::forward<E>(e), axes, 0u, es);
    +
    1949 }
    +
    1950
    +
    1968 template <
    +
    1969 class T = void,
    +
    1970 class E,
    +
    1971 class W,
    +
    1972 class X,
    +
    1973 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1974 XTL_REQUIRES(is_reducer_options<EVS>, xtl::negation<xtl::is_integral<X>>)>
    +
    +
    1975 inline auto average(E&& e, W&& weights, X&& axes, EVS ev = EVS())
    +
    1976 {
    +
    1977 xindex_type_t<typename std::decay_t<E>::shape_type> broadcast_shape;
    +
    1978 xt::resize_container(broadcast_shape, e.dimension());
    +
    1979 auto ax = normalize_axis(e, axes);
    +
    1980 if (weights.dimension() == 1)
    +
    1981 {
    +
    1982 if (weights.size() != e.shape()[ax[0]])
    +
    1983 {
    +
    1984 XTENSOR_THROW(std::runtime_error, "Weights need to have the same shape as expression at axes.");
    +
    1985 }
    +
    1986
    +
    1987 std::fill(broadcast_shape.begin(), broadcast_shape.end(), std::size_t(1));
    +
    1988 broadcast_shape[ax[0]] = weights.size();
    +
    1989 }
    +
    1990 else
    +
    1991 {
    +
    1992 if (!same_shape(e.shape(), weights.shape()))
    +
    1993 {
    +
    1994 XTENSOR_THROW(
    +
    1995 std::runtime_error,
    +
    1996 "Weights with dim > 1 need to have the same shape as expression."
    +
    1997 );
    +
    1998 }
    +
    1999
    +
    2000 std::copy(e.shape().begin(), e.shape().end(), broadcast_shape.begin());
    +
    2001 }
    +
    2002
    +
    2003 constexpr layout_type L = default_assignable_layout(std::decay_t<W>::static_layout);
    +
    2004 auto weights_view = reshape_view<L>(std::forward<W>(weights), std::move(broadcast_shape));
    +
    2005 auto scl = sum<T>(weights_view, ax, xt::evaluation_strategy::immediate);
    +
    2006 return sum<T>(std::forward<E>(e) * std::move(weights_view), std::move(ax), ev) / std::move(scl);
    +
    2007 }
    +
    +
    2008
    +
    2009 template <
    +
    2010 class T = void,
    +
    2011 class E,
    +
    2012 class W,
    +
    2013 class X,
    +
    2014 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2015 XTL_REQUIRES(is_reducer_options<EVS>, xtl::is_integral<X>)>
    +
    2016 inline auto average(E&& e, W&& weights, X axis, EVS ev = EVS())
    +
    2017 {
    +
    2018 return average(std::forward<E>(e), std::forward<W>(weights), {axis}, std::forward<EVS>(ev));
    +
    2019 }
    +
    2020
    +
    2021 template <class T = void, class E, class W, class X, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2022 inline auto average(E&& e, W&& weights, const X (&axes)[N], EVS ev = EVS())
    +
    2023 {
    +
    2024 // need to select the X&& overload and forward to different type
    +
    2025 using ax_t = std::array<std::size_t, N>;
    +
    2026 return average<T>(std::forward<E>(e), std::forward<W>(weights), xt::forward_normalize<ax_t>(e, axes), ev);
    +
    2027 }
    +
    2028
    +
    2029 template <class T = void, class E, class W, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2030 inline auto average(E&& e, W&& weights, EVS ev = EVS())
    +
    2031 {
    +
    2032 if (weights.dimension() != e.dimension()
    +
    2033 || !std::equal(weights.shape().begin(), weights.shape().end(), e.shape().begin()))
    +
    2034 {
    +
    2035 XTENSOR_THROW(std::runtime_error, "Weights need to have the same shape as expression.");
    +
    2036 }
    +
    2037
    +
    2038 auto div = sum<T>(weights, evaluation_strategy::immediate)();
    +
    2039 auto s = sum<T>(std::forward<E>(e) * std::forward<W>(weights), ev) / std::move(div);
    +
    2040 return s;
    +
    2041 }
    +
    2042
    +
    2043 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2044 inline auto average(E&& e, EVS ev = EVS())
    +
    2045 {
    +
    2046 return mean<T>(e, ev);
    +
    2047 }
    +
    2048
    +
    2049 namespace detail
    +
    2050 {
    +
    2051 template <typename E>
    +
    2052 std::enable_if_t<std::is_lvalue_reference<E>::value, E> shared_forward(E e) noexcept
    +
    2053 {
    +
    2054 return e;
    +
    2055 }
    +
    2056
    +
    2057 template <typename E>
    +
    2058 std::enable_if_t<!std::is_lvalue_reference<E>::value, xshared_expression<E>> shared_forward(E e) noexcept
    +
    2059 {
    +
    2060 return make_xshared(std::move(e));
    +
    2061 }
    +
    2062 }
    +
    2063
    +
    2064 template <
    +
    2065 class T = void,
    +
    2066 class E,
    +
    2067 class D,
    +
    2068 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2069 XTL_REQUIRES(is_reducer_options<EVS>, xtl::is_integral<D>)>
    +
    2070 inline auto variance(E&& e, const D& ddof, EVS es = EVS())
    +
    2071 {
    +
    2072 auto cached_mean = mean<T>(e, es)();
    +
    2073 return detail::mean_noaxis<T>(square(std::forward<E>(e) - std::move(cached_mean)), ddof, es);
    +
    2074 }
    +
    2075
    +
    2076 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2077 inline auto variance(E&& e, EVS es = EVS())
    +
    2078 {
    +
    2079 return variance<T>(std::forward<E>(e), 0u, es);
    +
    2080 }
    +
    2081
    +
    2082 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2083 inline auto stddev(E&& e, EVS es = EVS())
    +
    2084 {
    +
    2085 return sqrt(variance<T>(std::forward<E>(e), es));
    +
    2086 }
    +
    2087
    +
    2112 template <
    +
    2113 class T = void,
    +
    2114 class E,
    +
    2115 class X,
    +
    2116 class D,
    +
    2117 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2118 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::is_integral<D>)>
    +
    +
    2119 inline auto variance(E&& e, X&& axes, const D& ddof, EVS es = EVS())
    +
    2120 {
    +
    2121 decltype(auto) sc = detail::shared_forward<E>(e);
    +
    2122 // note: forcing copy of first axes argument -- is there a better solution?
    +
    2123 auto axes_copy = axes;
    +
    2124 // always eval to prevent repeated evaluations in the next calls
    +
    2125 auto inner_mean = eval(mean<T>(sc, std::move(axes_copy), evaluation_strategy::immediate));
    +
    2126
    +
    2127 // fake keep_dims = 1
    +
    2128 // Since the inner_shape might have a reference semantic (e.g. xbuffer_adaptor in bindings)
    +
    2129 // We need to map it to another type before modifying it.
    +
    2130 // We pragmatically abuse `get_strides_t`
    +
    2131 using tmp_shape_t = get_strides_t<typename std::decay_t<E>::shape_type>;
    +
    2132 tmp_shape_t keep_dim_shape = xtl::forward_sequence<tmp_shape_t, decltype(e.shape())>(e.shape());
    +
    2133 for (const auto& el : axes)
    +
    2134 {
    +
    2135 keep_dim_shape[el] = 1u;
    +
    2136 }
    +
    2137
    +
    2138 auto mrv = reshape_view<XTENSOR_DEFAULT_LAYOUT>(std::move(inner_mean), std::move(keep_dim_shape));
    +
    2139 return detail::mean<T>(square(sc - std::move(mrv)), std::forward<X>(axes), ddof, es);
    +
    2140 }
    +
    +
    2141
    +
    2142 template <
    +
    2143 class T = void,
    +
    2144 class E,
    +
    2145 class X,
    +
    2146 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2147 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<std::decay_t<X>>>, is_reducer_options<EVS>)>
    +
    2148 inline auto variance(E&& e, X&& axes, EVS es = EVS())
    +
    2149 {
    +
    2150 return variance<T>(std::forward<E>(e), std::forward<X>(axes), 0u, es);
    +
    2151 }
    +
    2152
    +
    2174 template <
    +
    2175 class T = void,
    +
    2176 class E,
    +
    2177 class X,
    +
    2178 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2179 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    2180 inline auto stddev(E&& e, X&& axes, EVS es = EVS())
    +
    2181 {
    +
    2182 return sqrt(variance<T>(std::forward<E>(e), std::forward<X>(axes), es));
    +
    2183 }
    +
    +
    2184
    +
    2185 template <class T = void, class E, class A, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2186 inline auto stddev(E&& e, const A (&axes)[N], EVS es = EVS())
    +
    2187 {
    +
    2188 return stddev<T>(
    +
    2189 std::forward<E>(e),
    +
    2190 xtl::forward_sequence<std::array<std::size_t, N>, decltype(axes)>(axes),
    +
    2191 es
    +
    2192 );
    +
    2193 }
    +
    2194
    +
    2195 template <
    +
    2196 class T = void,
    +
    2197 class E,
    +
    2198 class A,
    +
    2199 std::size_t N,
    +
    2200 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2201 XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2202 inline auto variance(E&& e, const A (&axes)[N], EVS es = EVS())
    +
    2203 {
    +
    2204 return variance<T>(
    +
    2205 std::forward<E>(e),
    +
    2206 xtl::forward_sequence<std::array<std::size_t, N>, decltype(axes)>(axes),
    +
    2207 es
    +
    2208 );
    +
    2209 }
    +
    2210
    +
    2211 template <class T = void, class E, class A, std::size_t N, class D, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2212 inline auto variance(E&& e, const A (&axes)[N], const D& ddof, EVS es = EVS())
    +
    2213 {
    +
    2214 return variance<T>(
    +
    2215 std::forward<E>(e),
    +
    2216 xtl::forward_sequence<std::array<std::size_t, N>, decltype(axes)>(axes),
    +
    2217 ddof,
    +
    2218 es
    +
    2219 );
    +
    2220 }
    +
    2221
    +
    2232 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    +
    2233 inline auto minmax(E&& e, EVS es = EVS())
    +
    2234 {
    +
    2235 using std::max;
    +
    2236 using std::min;
    +
    2237 using value_type = typename std::decay_t<E>::value_type;
    +
    2238 using result_type = std::array<value_type, 2>;
    +
    2239 using init_value_fct = xt::const_value<result_type>;
    +
    2240
    +
    2241 auto reduce_func = [](auto r, const auto& v)
    +
    2242 {
    +
    2243 r[0] = (min) (r[0], v);
    +
    2244 r[1] = (max) (r[1], v);
    +
    2245 return r;
    +
    2246 };
    +
    2247
    +
    2248 auto init_func = init_value_fct(
    +
    2249 result_type{std::numeric_limits<value_type>::max(), std::numeric_limits<value_type>::lowest()}
    +
    2250 );
    +
    2251
    +
    2252 auto merge_func = [](auto r, const auto& s)
    +
    2253 {
    +
    2254 r[0] = (min) (r[0], s[0]);
    +
    2255 r[1] = (max) (r[1], s[1]);
    +
    2256 return r;
    +
    2257 };
    +
    2258 return xt::reduce(
    +
    2259 make_xreducer_functor(std::move(reduce_func), std::move(init_func), std::move(merge_func)),
    +
    2260 std::forward<E>(e),
    +
    2261 arange(e.dimension()),
    +
    2262 es
    +
    2263 );
    +
    2264 }
    +
    +
    2265
    +
    2284 template <class T = void, class E>
    +
    +
    2285 inline auto cumsum(E&& e, std::ptrdiff_t axis)
    +
    2286 {
    +
    2287 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2288 return accumulate(
    +
    2289 make_xaccumulator_functor(detail::plus(), detail::accumulator_identity<init_value_type>()),
    +
    2290 std::forward<E>(e),
    +
    2291 axis
    +
    2292 );
    +
    2293 }
    +
    +
    2294
    +
    2295 template <class T = void, class E>
    +
    2296 inline auto cumsum(E&& e)
    +
    2297 {
    +
    2298 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2299 return accumulate(
    +
    2300 make_xaccumulator_functor(detail::plus(), detail::accumulator_identity<init_value_type>()),
    +
    2301 std::forward<E>(e)
    +
    2302 );
    +
    2303 }
    +
    2304
    +
    2319 template <class T = void, class E>
    +
    +
    2320 inline auto cumprod(E&& e, std::ptrdiff_t axis)
    +
    2321 {
    +
    2322 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2323 return accumulate(
    +
    2324 make_xaccumulator_functor(detail::multiplies(), detail::accumulator_identity<init_value_type>()),
    +
    2325 std::forward<E>(e),
    +
    2326 axis
    +
    2327 );
    +
    2328 }
    +
    +
    2329
    +
    2330 template <class T = void, class E>
    +
    2331 inline auto cumprod(E&& e)
    +
    2332 {
    +
    2333 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2334 return accumulate(
    +
    2335 make_xaccumulator_functor(detail::multiplies(), detail::accumulator_identity<init_value_type>()),
    +
    2336 std::forward<E>(e)
    +
    2337 );
    +
    2338 }
    +
    2339
    +
    2340 /*****************
    +
    2341 * nan functions *
    +
    2342 *****************/
    +
    2343
    +
    2344 namespace detail
    +
    2345 {
    +
    2346 struct nan_to_num_functor
    +
    2347 {
    +
    2348 template <class A>
    +
    2349 inline auto operator()(const A& a) const
    +
    2350 {
    +
    2351 if (math::isnan(a))
    +
    2352 {
    +
    2353 return A(0);
    +
    2354 }
    +
    2355 if (math::isinf(a))
    +
    2356 {
    +
    2357 if (a < 0)
    +
    2358 {
    +
    2359 return std::numeric_limits<A>::lowest();
    +
    2360 }
    +
    2361 else
    +
    2362 {
    +
    2363 return (std::numeric_limits<A>::max)();
    +
    2364 }
    +
    2365 }
    +
    2366 return a;
    +
    2367 }
    +
    2368 };
    +
    2369
    +
    2370 struct nan_min
    +
    2371 {
    +
    2372 template <class T, class U>
    +
    2373 constexpr auto operator()(const T lhs, const U rhs) const
    +
    2374 {
    +
    2375 // Clunky expression for working with GCC 4.9
    +
    2376 return math::isnan(lhs)
    +
    2377 ? rhs
    +
    2378 : (math::isnan(rhs) ? lhs
    +
    2379 : std::common_type_t<T, U>(
    +
    2380 detail::make_xfunction<math::minimum<void>>(lhs, rhs)
    +
    2381 ));
    +
    2382 }
    +
    2383 };
    +
    2384
    +
    2385 struct nan_max
    +
    2386 {
    +
    2387 template <class T, class U>
    +
    2388 constexpr auto operator()(const T lhs, const U rhs) const
    +
    2389 {
    +
    2390 // Clunky expression for working with GCC 4.9
    +
    2391 return math::isnan(lhs)
    +
    2392 ? rhs
    +
    2393 : (math::isnan(rhs) ? lhs
    +
    2394 : std::common_type_t<T, U>(
    +
    2395 detail::make_xfunction<math::maximum<void>>(lhs, rhs)
    +
    2396 ));
    +
    2397 }
    +
    2398 };
    +
    2399
    +
    2400 struct nan_plus
    +
    2401 {
    +
    2402 template <class T, class U>
    +
    2403 constexpr auto operator()(const T lhs, const U rhs) const
    +
    2404 {
    +
    2405 return !math::isnan(rhs) ? lhs + rhs : lhs;
    +
    2406 }
    +
    2407 };
    +
    2408
    +
    2409 struct nan_multiplies
    +
    2410 {
    +
    2411 template <class T, class U>
    +
    2412 constexpr auto operator()(const T lhs, const U rhs) const
    +
    2413 {
    +
    2414 return !math::isnan(rhs) ? lhs * rhs : lhs;
    +
    2415 }
    +
    2416 };
    +
    2417
    +
    2418 template <class T, int V>
    +
    2419 struct nan_init
    +
    2420 {
    +
    2421 using value_type = T;
    +
    2422 using result_type = T;
    +
    2423
    +
    2424 constexpr result_type operator()(const value_type lhs) const
    +
    2425 {
    +
    2426 return math::isnan(lhs) ? result_type(V) : lhs;
    +
    2427 }
    +
    2428 };
    +
    2429 }
    +
    2430
    +
    2445 template <class E>
    +
    +
    2446 inline auto nan_to_num(E&& e)
    +
    2447 {
    +
    2448 return detail::make_xfunction<detail::nan_to_num_functor>(std::forward<E>(e));
    +
    2449 }
    +
    +
    2450
    +
    2464 XTENSOR_REDUCER_FUNCTION(nanmin, detail::nan_min, typename std::decay_t<E>::value_type, std::nan("0"))
    +
    2465
    +
    2466
    +
    2479 XTENSOR_REDUCER_FUNCTION(nanmax, detail::nan_max, typename std::decay_t<E>::value_type, std::nan("0"))
    +
    2480
    +
    2496 XTENSOR_REDUCER_FUNCTION(nansum, detail::nan_plus, typename std::decay_t<E>::value_type, 0)
    +
    2497
    +
    2513 XTENSOR_REDUCER_FUNCTION(nanprod, detail::nan_multiplies, typename std::decay_t<E>::value_type, 1)
    +
    2514
    +
    2515#define COUNT_NON_ZEROS_CONTENT \
    +
    2516 using value_type = typename std::decay_t<E>::value_type; \
    +
    2517 using result_type = xt::detail::xreducer_size_type_t<value_type>; \
    +
    2518 using init_value_fct = xt::const_value<result_type>; \
    +
    2519 \
    +
    2520 auto init_fct = init_value_fct(0); \
    +
    2521 \
    +
    2522 auto reduce_fct = [](const auto& lhs, const auto& rhs) \
    +
    2523 { \
    +
    2524 using value_t = xt::detail::xreducer_temporary_type_t<std::decay_t<decltype(rhs)>>; \
    +
    2525 using result_t = std::decay_t<decltype(lhs)>; \
    +
    2526 \
    +
    2527 return (rhs != value_t(0)) ? lhs + result_t(1) : lhs; \
    +
    2528 }; \
    +
    2529 auto merge_func = detail::plus();
    +
    2530
    +
    2531 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2532 inline auto count_nonzero(E&& e, EVS es = EVS())
    +
    2533 {
    +
    2534 COUNT_NON_ZEROS_CONTENT;
    +
    2535 return xt::reduce(
    +
    2536 make_xreducer_functor(std::move(reduce_fct), std::move(init_fct), std::move(merge_func)),
    +
    2537 std::forward<E>(e),
    +
    2538 es
    +
    2539 );
    +
    2540 }
    +
    2541
    +
    2542 template <
    +
    2543 class E,
    +
    2544 class X,
    +
    2545 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2546 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<X>>)>
    +
    2547 inline auto count_nonzero(E&& e, X&& axes, EVS es = EVS())
    +
    2548 {
    +
    2549 COUNT_NON_ZEROS_CONTENT;
    +
    2550 return xt::reduce(
    +
    2551 make_xreducer_functor(std::move(reduce_fct), std::move(init_fct), std::move(merge_func)),
    +
    2552 std::forward<E>(e),
    +
    2553 std::forward<X>(axes),
    +
    2554 es
    +
    2555 );
    +
    2556 }
    +
    2557
    +
    2558 template <
    +
    2559 class E,
    +
    2560 class X,
    +
    2561 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2562 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::is_integral<X>)>
    +
    2563 inline auto count_nonzero(E&& e, X axis, EVS es = EVS())
    +
    2564 {
    +
    2565 return count_nonzero(std::forward<E>(e), {axis}, es);
    +
    2566 }
    +
    2567
    +
    2568 template <class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2569 inline auto count_nonzero(E&& e, const I (&axes)[N], EVS es = EVS())
    +
    2570 {
    +
    2571 COUNT_NON_ZEROS_CONTENT;
    +
    2572 return xt::reduce(
    +
    2573 make_xreducer_functor(std::move(reduce_fct), std::move(init_fct), std::move(merge_func)),
    +
    2574 std::forward<E>(e),
    +
    2575 axes,
    +
    2576 es
    +
    2577 );
    +
    2578 }
    +
    2579
    +
    2580#undef COUNT_NON_ZEROS_CONTENT
    +
    2581
    +
    2582 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2583 inline auto count_nonnan(E&& e, EVS es = EVS())
    +
    2584 {
    +
    2585 return xt::count_nonzero(!xt::isnan(std::forward<E>(e)), es);
    +
    2586 }
    +
    2587
    +
    2588 template <
    +
    2589 class E,
    +
    2590 class X,
    +
    2591 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2592 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<xtl::is_integral<X>>)>
    +
    2593 inline auto count_nonnan(E&& e, X&& axes, EVS es = EVS())
    +
    2594 {
    +
    2595 return xt::count_nonzero(!xt::isnan(std::forward<E>(e)), std::forward<X>(axes), es);
    +
    2596 }
    +
    2597
    +
    2598 template <
    +
    2599 class E,
    +
    2600 class X,
    +
    2601 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2602 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::is_integral<X>)>
    +
    2603 inline auto count_nonnan(E&& e, X&& axes, EVS es = EVS())
    +
    2604 {
    +
    2605 return xt::count_nonzero(!xt::isnan(std::forward<E>(e)), {axes}, es);
    +
    2606 }
    +
    2607
    +
    2608 template <class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2609 inline auto count_nonnan(E&& e, const I (&axes)[N], EVS es = EVS())
    +
    2610 {
    +
    2611 return xt::count_nonzero(!xt::isnan(std::forward<E>(e)), axes, es);
    +
    2612 }
    +
    2613
    +
    2628 template <class T = void, class E>
    +
    +
    2629 inline auto nancumsum(E&& e, std::ptrdiff_t axis)
    +
    2630 {
    +
    2631 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2632 return accumulate(
    +
    2633 make_xaccumulator_functor(detail::nan_plus(), detail::nan_init<init_value_type, 0>()),
    +
    2634 std::forward<E>(e),
    +
    2635 axis
    +
    2636 );
    +
    2637 }
    +
    +
    2638
    +
    2639 template <class T = void, class E>
    +
    2640 inline auto nancumsum(E&& e)
    +
    2641 {
    +
    2642 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2643 return accumulate(
    +
    2644 make_xaccumulator_functor(detail::nan_plus(), detail::nan_init<init_value_type, 0>()),
    +
    2645 std::forward<E>(e)
    +
    2646 );
    +
    2647 }
    +
    2648
    +
    2663 template <class T = void, class E>
    +
    +
    2664 inline auto nancumprod(E&& e, std::ptrdiff_t axis)
    +
    2665 {
    +
    2666 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2667 return accumulate(
    +
    2668 make_xaccumulator_functor(detail::nan_multiplies(), detail::nan_init<init_value_type, 1>()),
    +
    2669 std::forward<E>(e),
    +
    2670 axis
    +
    2671 );
    +
    2672 }
    +
    +
    2673
    +
    2674 template <class T = void, class E>
    +
    2675 inline auto nancumprod(E&& e)
    +
    2676 {
    +
    2677 using init_value_type = std::conditional_t<std::is_same<T, void>::value, typename std::decay_t<E>::value_type, T>;
    +
    2678 return accumulate(
    +
    2679 make_xaccumulator_functor(detail::nan_multiplies(), detail::nan_init<init_value_type, 1>()),
    +
    2680 std::forward<E>(e)
    +
    2681 );
    +
    2682 }
    +
    2683
    +
    2684 namespace detail
    +
    2685 {
    +
    2686 template <class T>
    +
    2687 struct diff_impl
    +
    2688 {
    +
    2689 template <class Arg>
    +
    2690 inline void operator()(
    +
    2691 Arg& ad,
    +
    2692 const std::size_t& n,
    +
    2693 xstrided_slice_vector& slice1,
    +
    2694 xstrided_slice_vector& slice2,
    +
    2695 std::size_t saxis
    +
    2696 )
    +
    2697 {
    +
    2698 for (std::size_t i = 0; i < n; ++i)
    +
    2699 {
    +
    2700 slice2[saxis] = range(xnone(), ad.shape()[saxis] - 1);
    +
    2701 ad = strided_view(ad, slice1) - strided_view(ad, slice2);
    +
    2702 }
    +
    2703 }
    +
    2704 };
    +
    2705
    +
    2706 template <>
    +
    2707 struct diff_impl<bool>
    +
    2708 {
    +
    2709 template <class Arg>
    +
    2710 inline void operator()(
    +
    2711 Arg& ad,
    +
    2712 const std::size_t& n,
    +
    2713 xstrided_slice_vector& slice1,
    +
    2714 xstrided_slice_vector& slice2,
    +
    2715 std::size_t saxis
    +
    2716 )
    +
    2717 {
    +
    2718 for (std::size_t i = 0; i < n; ++i)
    +
    2719 {
    +
    2720 slice2[saxis] = range(xnone(), ad.shape()[saxis] - 1);
    +
    2721 ad = not_equal(strided_view(ad, slice1), strided_view(ad, slice2));
    +
    2722 }
    +
    2723 }
    +
    2724 };
    +
    2725 }
    +
    2726
    +
    2742 template <
    +
    2743 class T = void,
    +
    2744 class E,
    +
    2745 class X,
    +
    2746 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2747 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    2748 inline auto nanmean(E&& e, X&& axes, EVS es = EVS())
    +
    2749 {
    +
    2750 decltype(auto) sc = detail::shared_forward<E>(e);
    +
    2751 // note: forcing copy of first axes argument -- is there a better solution?
    +
    2752 auto axes_copy = axes;
    +
    2753 using value_type = typename std::conditional_t<std::is_same<T, void>::value, double, T>;
    +
    2754 using sum_type = typename std::conditional_t<
    +
    2755 std::is_same<T, void>::value,
    +
    2756 typename std::common_type_t<typename std::decay_t<E>::value_type, value_type>,
    +
    2757 T>;
    +
    2758 // sum cannot always be a double. It could be a complex number which cannot operate on
    +
    2759 // std::plus<double>.
    +
    2760 return nansum<sum_type>(sc, std::forward<X>(axes), es)
    +
    2761 / xt::cast<value_type>(count_nonnan(sc, std::move(axes_copy), es));
    +
    2762 }
    +
    +
    2763
    +
    2764 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2765 inline auto nanmean(E&& e, EVS es = EVS())
    +
    2766 {
    +
    2767 decltype(auto) sc = detail::shared_forward<E>(e);
    +
    2768 using value_type = typename std::conditional_t<std::is_same<T, void>::value, double, T>;
    +
    2769 using sum_type = typename std::conditional_t<
    +
    2770 std::is_same<T, void>::value,
    +
    2771 typename std::common_type_t<typename std::decay_t<E>::value_type, value_type>,
    +
    2772 T>;
    +
    2773 return nansum<sum_type>(sc, es) / xt::cast<value_type>(count_nonnan(sc, es));
    +
    2774 }
    +
    2775
    +
    2776 template <class T = void, class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2777 inline auto nanmean(E&& e, const I (&axes)[N], EVS es = EVS())
    +
    2778 {
    +
    2779 return nanmean<T>(
    +
    2780 std::forward<E>(e),
    +
    2781 xtl::forward_sequence<std::array<std::size_t, N>, decltype(axes)>(axes),
    +
    2782 es
    +
    2783 );
    +
    2784 }
    +
    2785
    +
    2786 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2787 inline auto nanvar(E&& e, EVS es = EVS())
    +
    2788 {
    +
    2789 decltype(auto) sc = detail::shared_forward<E>(e);
    +
    2790 return nanmean<T>(square(sc - nanmean<T>(sc)), es);
    +
    2791 }
    +
    2792
    +
    2793 template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_reducer_options<EVS>)>
    +
    2794 inline auto nanstd(E&& e, EVS es = EVS())
    +
    2795 {
    +
    2796 return sqrt(nanvar<T>(std::forward<E>(e), es));
    +
    2797 }
    +
    2798
    +
    2819 template <
    +
    2820 class T = void,
    +
    2821 class E,
    +
    2822 class X,
    +
    2823 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2824 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    2825 inline auto nanvar(E&& e, X&& axes, EVS es = EVS())
    +
    2826 {
    +
    2827 decltype(auto) sc = detail::shared_forward<E>(e);
    +
    2828 // note: forcing copy of first axes argument -- is there a better solution?
    +
    2829 auto axes_copy = axes;
    +
    2830 using result_type = typename std::conditional_t<std::is_same<T, void>::value, double, T>;
    +
    2831 auto inner_mean = nanmean<result_type>(sc, std::move(axes_copy));
    +
    2832
    +
    2833 // fake keep_dims = 1
    +
    2834 // Since the inner_shape might have a reference semantic (e.g. xbuffer_adaptor in bindings)
    +
    2835 // We need to map it to another type before modifying it.
    +
    2836 // We pragmatically abuse `get_strides_t`
    +
    2837 using tmp_shape_t = get_strides_t<typename std::decay_t<E>::shape_type>;
    +
    2838 tmp_shape_t keep_dim_shape = xtl::forward_sequence<tmp_shape_t, decltype(e.shape())>(e.shape());
    +
    2839 for (const auto& el : axes)
    +
    2840 {
    +
    2841 keep_dim_shape[el] = 1;
    +
    2842 }
    +
    2843 auto mrv = reshape_view<XTENSOR_DEFAULT_LAYOUT>(std::move(inner_mean), std::move(keep_dim_shape));
    +
    2844 return nanmean<result_type>(square(cast<result_type>(sc) - std::move(mrv)), std::forward<X>(axes), es);
    +
    2845 }
    +
    +
    2846
    +
    2867 template <
    +
    2868 class T = void,
    +
    2869 class E,
    +
    2870 class X,
    +
    2871 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    2872 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    2873 inline auto nanstd(E&& e, X&& axes, EVS es = EVS())
    +
    2874 {
    +
    2875 return sqrt(nanvar<T>(std::forward<E>(e), std::forward<X>(axes), es));
    +
    2876 }
    +
    +
    2877
    +
    2878 template <class T = void, class E, class A, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2879 inline auto nanstd(E&& e, const A (&axes)[N], EVS es = EVS())
    +
    2880 {
    +
    2881 return nanstd<T>(
    +
    2882 std::forward<E>(e),
    +
    2883 xtl::forward_sequence<std::array<std::size_t, N>, decltype(axes)>(axes),
    +
    2884 es
    +
    2885 );
    +
    2886 }
    +
    2887
    +
    2888 template <class T = void, class E, class A, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    2889 inline auto nanvar(E&& e, const A (&axes)[N], EVS es = EVS())
    +
    2890 {
    +
    2891 return nanvar<T>(
    +
    2892 std::forward<E>(e),
    +
    2893 xtl::forward_sequence<std::array<std::size_t, N>, decltype(axes)>(axes),
    +
    2894 es
    +
    2895 );
    +
    2896 }
    +
    2897
    +
    2909 template <class T>
    +
    +
    2910 auto diff(const xexpression<T>& a, std::size_t n = 1, std::ptrdiff_t axis = -1)
    +
    2911 {
    +
    2912 typename std::decay_t<T>::temporary_type ad = a.derived_cast();
    +
    2913 std::size_t saxis = normalize_axis(ad.dimension(), axis);
    +
    2914 if (n <= ad.size())
    +
    2915 {
    +
    2916 if (n != std::size_t(0))
    +
    2917 {
    +
    2918 xstrided_slice_vector slice1(ad.dimension(), all());
    +
    2919 xstrided_slice_vector slice2(ad.dimension(), all());
    +
    2920 slice1[saxis] = range(1, xnone());
    +
    2921
    +
    2922 detail::diff_impl<typename T::value_type> impl;
    +
    2923 impl(ad, n, slice1, slice2, saxis);
    +
    2924 }
    +
    2925 }
    +
    2926 else
    +
    2927 {
    +
    2928 auto shape = ad.shape();
    +
    2929 shape[saxis] = std::size_t(0);
    +
    2930 ad.resize(shape);
    +
    2931 }
    +
    2932 return ad;
    +
    2933 }
    +
    +
    2934
    +
    2946 template <class T>
    +
    +
    2947 auto trapz(const xexpression<T>& y, double dx = 1.0, std::ptrdiff_t axis = -1)
    +
    2948 {
    +
    2949 auto& yd = y.derived_cast();
    +
    2950 std::size_t saxis = normalize_axis(yd.dimension(), axis);
    +
    2951
    +
    2952 xstrided_slice_vector slice1(yd.dimension(), all());
    +
    2953 xstrided_slice_vector slice2(yd.dimension(), all());
    +
    2954 slice1[saxis] = range(1, xnone());
    +
    2955 slice2[saxis] = range(xnone(), yd.shape()[saxis] - 1);
    +
    2956
    +
    2957 auto trap = dx * (strided_view(yd, slice1) + strided_view(yd, slice2)) * 0.5;
    +
    2958
    +
    2959 return eval(sum(trap, {saxis}));
    +
    2960 }
    +
    +
    2961
    +
    2973 template <class T, class E>
    +
    +
    2974 auto trapz(const xexpression<T>& y, const xexpression<E>& x, std::ptrdiff_t axis = -1)
    +
    2975 {
    +
    2976 auto& yd = y.derived_cast();
    +
    2977 auto& xd = x.derived_cast();
    +
    2978 decltype(diff(x)) dx;
    +
    2979
    +
    2980 std::size_t saxis = normalize_axis(yd.dimension(), axis);
    +
    2981
    +
    2982 if (xd.dimension() == 1)
    +
    2983 {
    +
    2984 dx = diff(x);
    +
    2985 typename std::decay_t<decltype(yd)>::shape_type shape;
    +
    2986 resize_container(shape, yd.dimension());
    +
    2987 std::fill(shape.begin(), shape.end(), 1);
    +
    2988 shape[saxis] = dx.shape()[0];
    +
    2989 dx.reshape(shape);
    +
    2990 }
    +
    2991 else
    +
    2992 {
    +
    2993 dx = diff(x, 1, axis);
    +
    2994 }
    +
    2995
    +
    2996 xstrided_slice_vector slice1(yd.dimension(), all());
    +
    2997 xstrided_slice_vector slice2(yd.dimension(), all());
    +
    2998 slice1[saxis] = range(1, xnone());
    +
    2999 slice2[saxis] = range(xnone(), yd.shape()[saxis] - 1);
    +
    3000
    +
    3001 auto trap = dx * (strided_view(yd, slice1) + strided_view(yd, slice2)) * 0.5;
    +
    3002
    +
    3003 return eval(sum(trap, {saxis}));
    +
    3004 }
    +
    +
    3005
    +
    3018 template <class E1, class E2, class E3, typename T>
    +
    +
    3019 inline auto interp(const E1& x, const E2& xp, const E3& fp, T left, T right)
    +
    3020 {
    +
    3021 using size_type = common_size_type_t<E1, E2, E3>;
    +
    3022 using value_type = typename E3::value_type;
    +
    3023
    +
    3024 // basic checks
    +
    3025 XTENSOR_ASSERT(xp.dimension() == 1);
    +
    3026 XTENSOR_ASSERT(std::is_sorted(x.cbegin(), x.cend()));
    +
    3027 XTENSOR_ASSERT(std::is_sorted(xp.cbegin(), xp.cend()));
    +
    3028
    +
    3029 // allocate output
    +
    3030 auto f = xtensor<value_type, 1>::from_shape(x.shape());
    +
    3031
    +
    3032 // counter in "x": from left
    +
    3033 size_type i = 0;
    +
    3034
    +
    3035 // fill f[i] for x[i] <= xp[0]
    +
    3036 for (; i < x.size(); ++i)
    +
    3037 {
    +
    3038 if (x[i] > xp[0])
    +
    3039 {
    +
    3040 break;
    +
    3041 }
    +
    3042 f[i] = static_cast<value_type>(left);
    +
    3043 }
    +
    3044
    +
    3045 // counter in "x": from right
    +
    3046 // (index counts one right, to terminate the reverse loop, without risking being negative)
    +
    3047 size_type imax = x.size();
    +
    3048
    +
    3049 // fill f[i] for x[-1] >= xp[-1]
    +
    3050 for (; imax > 0; --imax)
    +
    3051 {
    +
    3052 if (x[imax - 1] < xp[xp.size() - 1])
    +
    3053 {
    +
    3054 break;
    +
    3055 }
    +
    3056 f[imax - 1] = static_cast<value_type>(right);
    +
    3057 }
    +
    3058
    +
    3059 // catch edge case: all entries are "right"
    +
    3060 if (imax == 0)
    +
    3061 {
    +
    3062 return f;
    +
    3063 }
    +
    3064
    +
    3065 // set "imax" as actual index
    +
    3066 // (counted one right, see above)
    +
    3067 --imax;
    +
    3068
    +
    3069 // counter in "xp"
    +
    3070 size_type ip = 1;
    +
    3071
    +
    3072 // fill f[i] for the interior
    +
    3073 for (; i <= imax; ++i)
    +
    3074 {
    +
    3075 // - search next value in "xp"
    +
    3076 while (x[i] > xp[ip])
    +
    3077 {
    +
    3078 ++ip;
    +
    3079 }
    +
    3080 // - distances as doubles
    +
    3081 double dfp = static_cast<double>(fp[ip] - fp[ip - 1]);
    +
    3082 double dxp = static_cast<double>(xp[ip] - xp[ip - 1]);
    +
    3083 double dx = static_cast<double>(x[i] - xp[ip - 1]);
    +
    3084 // - interpolate
    +
    3085 f[i] = fp[ip - 1] + static_cast<value_type>(dfp / dxp * dx);
    +
    3086 }
    +
    3087
    +
    3088 return f;
    +
    3089 }
    +
    +
    3090
    +
    3091 namespace detail
    +
    3092 {
    +
    3093 template <class E1, class E2>
    +
    3094 auto calculate_discontinuity(E1&& discontinuity, E2&&)
    +
    3095 {
    +
    3096 return discontinuity;
    +
    3097 }
    +
    3098
    +
    3099 template <class E2>
    +
    3100 auto calculate_discontinuity(xt::placeholders::xtuph, E2&& period)
    +
    3101 {
    +
    3102 return 0.5 * period;
    +
    3103 }
    +
    3104
    +
    3105 template <class E1, class E2>
    +
    3106 auto
    +
    3107 calculate_interval(E2&& period, typename std::enable_if<std::is_integral<E1>::value, E1>::type* = 0)
    +
    3108 {
    +
    3109 auto interval_high = 0.5 * period;
    +
    3110 uint64_t remainder = static_cast<uint64_t>(period) % 2;
    +
    3111 auto boundary_ambiguous = (remainder == 0);
    +
    3112 return std::make_tuple(interval_high, boundary_ambiguous);
    +
    3113 }
    +
    3114
    +
    3115 template <class E1, class E2>
    +
    3116 auto
    +
    3117 calculate_interval(E2&& period, typename std::enable_if<std::is_floating_point<E1>::value, E1>::type* = 0)
    +
    3118 {
    +
    3119 auto interval_high = 0.5 * period;
    +
    3120 auto boundary_ambiguous = true;
    +
    3121 return std::make_tuple(interval_high, boundary_ambiguous);
    +
    3122 }
    +
    3123 }
    +
    3124
    +
    3138 template <class E1, class E2 = xt::placeholders::xtuph, class E3 = double>
    +
    +
    3139 inline auto unwrap(
    +
    3140 E1&& p,
    +
    3141 E2 discontinuity = xnone(),
    +
    3142 std::ptrdiff_t axis = -1,
    +
    3143 E3 period = 2.0 * xt::numeric_constants<double>::PI
    +
    3144 )
    +
    3145 {
    +
    3146 auto discont = detail::calculate_discontinuity(discontinuity, period);
    +
    3147 using value_type = typename std::decay_t<E1>::value_type;
    +
    3148 std::size_t saxis = normalize_axis(p.dimension(), axis);
    +
    3149 auto dd = diff(p, 1, axis);
    +
    3150 xstrided_slice_vector slice(p.dimension(), all());
    +
    3151 slice[saxis] = range(1, xnone());
    +
    3152 auto interval_tuple = detail::calculate_interval<value_type>(period);
    +
    3153 auto interval_high = std::get<0>(interval_tuple);
    +
    3154 auto boundary_ambiguous = std::get<1>(interval_tuple);
    +
    3155 auto interval_low = -interval_high;
    +
    3156 auto ddmod = xt::eval(xt::fmod(xt::fmod(dd - interval_low, period) + period, period) + interval_low);
    +
    3157 if (boundary_ambiguous)
    +
    3158 {
    +
    3159 // for `mask = (abs(dd) == period/2)`, the above line made
    +
    3160 //`ddmod[mask] == -period/2`. correct these such that
    +
    3161 //`ddmod[mask] == sign(dd[mask])*period/2`.
    +
    3162 auto boolmap = xt::equal(ddmod, interval_low) && (xt::greater(dd, 0.0));
    +
    3163 ddmod = xt::where(boolmap, interval_high, ddmod);
    +
    3164 }
    +
    3165 auto ph_correct = xt::eval(ddmod - dd);
    +
    3166 ph_correct = xt::where(xt::abs(dd) < discont, 0.0, ph_correct);
    +
    3167 E1 up(p);
    +
    3168 strided_view(up, slice) = strided_view(p, slice)
    +
    3169 + xt::cumsum(ph_correct, static_cast<std::ptrdiff_t>(saxis));
    +
    3170 return up;
    +
    3171 }
    +
    +
    3172
    +
    3183 template <class E1, class E2, class E3>
    +
    +
    3184 inline auto interp(const E1& x, const E2& xp, const E3& fp)
    +
    3185 {
    +
    3186 return interp(x, xp, fp, fp[0], fp[fp.size() - 1]);
    +
    3187 }
    +
    +
    3188
    +
    3195 template <class E1>
    +
    +
    3196 inline auto cov(const E1& x, const E1& y = E1())
    +
    3197 {
    +
    3198 using value_type = typename E1::value_type;
    +
    3199
    +
    3200 if (y.dimension() == 0)
    +
    3201 {
    +
    3202 auto s = x.shape();
    +
    3203 using size_type = std::decay_t<decltype(s[0])>;
    +
    3204 if (x.dimension() == 1)
    +
    3205 {
    +
    3206 auto covar = eval(zeros<value_type>({1, 1}));
    +
    3207 auto x_norm = x - eval(mean(x));
    +
    3208 covar(0, 0) = std::inner_product(x_norm.begin(), x_norm.end(), x_norm.begin(), 0.0)
    +
    3209 / value_type(s[0] - 1);
    +
    3210 return covar;
    +
    3211 }
    +
    3212
    +
    3213 XTENSOR_ASSERT(x.dimension() == 2);
    +
    3214
    +
    3215 auto covar = eval(zeros<value_type>({s[0], s[0]}));
    +
    3216 auto m = eval(mean(x, {1}));
    +
    3217 m.reshape({m.shape()[0], 1});
    +
    3218 auto x_norm = x - m;
    +
    3219 for (size_type i = 0; i < s[0]; i++)
    +
    3220 {
    +
    3221 auto xi = strided_view(x_norm, {range(i, i + 1), all()});
    +
    3222 for (size_type j = i; j < s[0]; j++)
    +
    3223 {
    +
    3224 auto xj = strided_view(x_norm, {range(j, j + 1), all()});
    +
    3225 covar(j, i) = std::inner_product(xi.begin(), xi.end(), xj.begin(), 0.0)
    +
    3226 / value_type(s[1] - 1);
    +
    3227 }
    +
    3228 }
    +
    3229 return eval(covar + transpose(covar) - diag(diagonal(covar)));
    +
    3230 }
    +
    3231 else
    +
    3232 {
    +
    3233 return cov(eval(stack(xtuple(x, y))));
    +
    3234 }
    +
    3235 }
    +
    +
    3236
    +
    3237 /*
    +
    3238 * convolution mode placeholders for selecting the algorithm
    +
    3239 * used in computing a 1D convolution.
    +
    3240 * Same as NumPy's mode parameter.
    +
    3241 */
    +
    3242 namespace convolve_mode
    +
    3243 {
    +
    +
    3244 struct valid
    +
    3245 {
    +
    3246 };
    +
    +
    3247
    +
    +
    3248 struct full
    +
    3249 {
    +
    3250 };
    +
    +
    3251 }
    +
    3252
    +
    3253 namespace detail
    +
    3254 {
    +
    3255 template <class E1, class E2>
    +
    3256 inline auto convolve_impl(E1&& e1, E2&& e2, convolve_mode::valid)
    +
    3257 {
    +
    3258 using value_type = typename std::decay<E1>::type::value_type;
    +
    3259
    +
    3260 std::size_t const na = e1.size();
    +
    3261 std::size_t const nv = e2.size();
    +
    3262 std::size_t const n = na - nv + 1;
    +
    3263 xt::xtensor<value_type, 1> out = xt::zeros<value_type>({n});
    +
    3264 for (std::size_t i = 0; i < n; i++)
    +
    3265 {
    +
    3266 for (std::size_t j = 0; j < nv; j++)
    +
    3267 {
    +
    3268 out(i) += e1(j) * e2(j + i);
    +
    3269 }
    +
    3270 }
    +
    3271 return out;
    +
    3272 }
    +
    3273
    +
    3274 template <class E1, class E2>
    +
    3275 inline auto convolve_impl(E1&& e1, E2&& e2, convolve_mode::full)
    +
    3276 {
    +
    3277 using value_type = typename std::decay<E1>::type::value_type;
    +
    3278
    +
    3279 std::size_t const na = e1.size();
    +
    3280 std::size_t const nv = e2.size();
    +
    3281 std::size_t const n = na + nv - 1;
    +
    3282 xt::xtensor<value_type, 1> out = xt::zeros<value_type>({n});
    +
    3283 for (std::size_t i = 0; i < n; i++)
    +
    3284 {
    +
    3285 std::size_t const jmn = (i >= nv - 1) ? i - (nv - 1) : 0;
    +
    3286 std::size_t const jmx = (i < na - 1) ? i : na - 1;
    +
    3287 for (std::size_t j = jmn; j <= jmx; ++j)
    +
    3288 {
    +
    3289 out(i) += e1(j) * e2(i - j);
    +
    3290 }
    +
    3291 }
    +
    3292 return out;
    +
    3293 }
    +
    3294 }
    +
    3295
    +
    3296 /*
    +
    3297 * @brief computes the 1D convolution between two 1D expressions
    +
    3298 *
    +
    3299 * @param a 1D expression
    +
    3300 * @param v 1D expression
    +
    3301 * @param mode placeholder Select algorithm #convolve_mode
    +
    3302 *
    +
    3303 * @detail the algorithm convolves a with v and will incur a copy overhead
    +
    3304 * should v be longer than a.
    +
    3305 */
    +
    3306 template <class E1, class E2, class E3>
    +
    3307 inline auto convolve(E1&& a, E2&& v, E3 mode)
    +
    3308 {
    +
    3309 if (a.dimension() != 1 || v.dimension() != 1)
    +
    3310 {
    +
    3311 XTENSOR_THROW(std::runtime_error, "Invalid dimentions convolution arguments must be 1D expressions");
    +
    3312 }
    +
    3313
    +
    3314 XTENSOR_ASSERT(a.size() > 0 && v.size() > 0);
    +
    3315
    +
    3316 // swap them so a is always the longest one
    +
    3317 if (a.size() < v.size())
    +
    3318 {
    +
    3319 return detail::convolve_impl(std::forward<E2>(v), std::forward<E1>(a), mode);
    +
    3320 }
    +
    3321 else
    +
    3322 {
    +
    3323 return detail::convolve_impl(std::forward<E1>(a), std::forward<E2>(v), mode);
    +
    3324 }
    +
    3325 }
    +
    3326}
    +
    3327
    +
    3328
    +
    3329#endif
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    auto cumprod(E &&e, std::ptrdiff_t axis)
    Cumulative product.
    Definition xmath.hpp:2320
    +
    auto cumsum(E &&e, std::ptrdiff_t axis)
    Cumulative sum.
    Definition xmath.hpp:2285
    +
    auto fma(E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< math::fma_fun, E1, E2, E3 >
    Fused multiply-add operation.
    Definition xmath.hpp:509
    +
    auto deg2rad(E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >
    Convert angles from degrees to radians.
    Definition xmath.hpp:683
    +
    auto amax(E &&e, X &&axes, EVS es=EVS())
    Maximum element along given axis.
    Definition xmath.hpp:781
    +
    auto remainder(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::remainder_fun, E1, E2 >
    Signed remainder of the division operation.
    Definition xmath.hpp:491
    +
    auto degrees(E &&e) noexcept -> detail::xfunction_type_t< math::rad2deg, E >
    Convert angles from radians to degrees.
    Definition xmath.hpp:728
    +
    auto interp(const E1 &x, const E2 &xp, const E3 &fp, T left, T right)
    Returns the one-dimensional piecewise linear interpolant to a function with given discrete data point...
    Definition xmath.hpp:3019
    +
    auto fmod(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmod_fun, E1, E2 >
    Remainder of the floating point division operation.
    Definition xmath.hpp:474
    +
    auto abs(E &&e) noexcept -> detail::xfunction_type_t< math::abs_fun, E >
    Absolute value function.
    Definition xmath.hpp:442
    +
    auto fabs(E &&e) noexcept -> detail::xfunction_type_t< math::fabs_fun, E >
    Absolute value function.
    Definition xmath.hpp:457
    +
    auto minimum(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::minimum< void >, E1, E2 >
    Elementwise minimum.
    Definition xmath.hpp:760
    +
    auto maximum(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::maximum< void >, E1, E2 >
    Elementwise maximum.
    Definition xmath.hpp:744
    +
    auto fmax(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmax_fun, E1, E2 >
    Maximum function.
    Definition xmath.hpp:530
    +
    auto clip(E1 &&e1, E2 &&lo, E3 &&hi) noexcept -> detail::xfunction_type_t< math::clamp_fun, E1, E2, E3 >
    Clip values between hi and lo.
    Definition xmath.hpp:814
    +
    auto radians(E &&e) noexcept -> detail::xfunction_type_t< math::deg2rad, E >
    Convert angles from degrees to radians.
    Definition xmath.hpp:698
    +
    auto fdim(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fdim_fun, E1, E2 >
    Positive difference function.
    Definition xmath.hpp:564
    +
    auto amin(E &&e, X &&axes, EVS es=EVS())
    Minimum element along given axis.
    Definition xmath.hpp:799
    +
    auto rad2deg(E &&e) noexcept -> detail::xfunction_type_t< math::rad2deg, E >
    Convert angles from radians to degrees.
    Definition xmath.hpp:713
    +
    auto fmin(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::fmin_fun, E1, E2 >
    Minimum function.
    Definition xmath.hpp:547
    +
    auto sign(E &&e) noexcept -> detail::xfunction_type_t< math::sign_fun, E >
    Returns an element-wise indication of the sign of a number.
    Definition xmath.hpp:876
    +
    auto unwrap(E1 &&p, E2 discontinuity=xnone(), std::ptrdiff_t axis=-1, E3 period=2.0 *xt::numeric_constants< double >::PI)
    Unwrap by taking the complement of large deltas with respect to the period.
    Definition xmath.hpp:3139
    +
    auto allclose(E1 &&e1, E2 &&e2, double rtol=1e-05, double atol=1e-08) noexcept
    Check if all elements in e1 are close to the corresponding elements in e2.
    Definition xmath.hpp:1812
    +
    auto isfinite(E &&e) noexcept -> detail::xfunction_type_t< math::isfinite_fun, E >
    finite value check
    Definition xmath.hpp:1677
    +
    auto isnan(E &&e) noexcept -> detail::xfunction_type_t< math::isnan_fun, E >
    NaN check.
    Definition xmath.hpp:1707
    +
    auto isclose(E1 &&e1, E2 &&e2, double rtol=1e-05, double atol=1e-08, bool equal_nan=false) noexcept
    Element-wise closeness detection.
    Definition xmath.hpp:1789
    +
    auto isinf(E &&e) noexcept -> detail::xfunction_type_t< math::isinf_fun, E >
    infinity check
    Definition xmath.hpp:1692
    +
    auto not_equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::not_equal_to, E1, E2 >
    Element-wise inequality.
    +
    auto equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::equal_to, E1, E2 >
    Element-wise equality.
    +
    auto greater(E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) > std::forward< E2 >(e2))
    Greater than.
    +
    auto lgamma(E &&e) noexcept -> detail::xfunction_type_t< math::lgamma_fun, E >
    Natural logarithm of the gamma function.
    Definition xmath.hpp:1553
    +
    auto erfc(E &&e) noexcept -> detail::xfunction_type_t< math::erfc_fun, E >
    Complementary error function.
    Definition xmath.hpp:1523
    +
    auto erf(E &&e) noexcept -> detail::xfunction_type_t< math::erf_fun, E >
    Error function.
    Definition xmath.hpp:1508
    +
    auto tgamma(E &&e) noexcept -> detail::xfunction_type_t< math::tgamma_fun, E >
    Gamma function.
    Definition xmath.hpp:1538
    +
    auto log1p(E &&e) noexcept -> detail::xfunction_type_t< math::log1p_fun, E >
    Natural logarithm of one plus function.
    Definition xmath.hpp:989
    +
    auto expm1(E &&e) noexcept -> detail::xfunction_type_t< math::expm1_fun, E >
    Natural exponential minus one function.
    Definition xmath.hpp:929
    +
    auto exp2(E &&e) noexcept -> detail::xfunction_type_t< math::exp2_fun, E >
    Base 2 exponential function.
    Definition xmath.hpp:914
    +
    auto log(E &&e) noexcept -> detail::xfunction_type_t< math::log_fun, E >
    Natural logarithm function.
    Definition xmath.hpp:944
    +
    auto log2(E &&e) noexcept -> detail::xfunction_type_t< math::log2_fun, E >
    Base 2 logarithm function.
    Definition xmath.hpp:974
    +
    auto exp(E &&e) noexcept -> detail::xfunction_type_t< math::exp_fun, E >
    Natural exponential function.
    Definition xmath.hpp:899
    +
    auto log10(E &&e) noexcept -> detail::xfunction_type_t< math::log10_fun, E >
    Base 10 logarithm function.
    Definition xmath.hpp:959
    +
    auto asinh(E &&e) noexcept -> detail::xfunction_type_t< math::asinh_fun, E >
    Inverse hyperbolic sine function.
    Definition xmath.hpp:1455
    +
    auto tanh(E &&e) noexcept -> detail::xfunction_type_t< math::tanh_fun, E >
    Hyperbolic tangent function.
    Definition xmath.hpp:1440
    +
    auto cosh(E &&e) noexcept -> detail::xfunction_type_t< math::cosh_fun, E >
    Hyperbolic cosine function.
    Definition xmath.hpp:1425
    +
    auto sinh(E &&e) noexcept -> detail::xfunction_type_t< math::sinh_fun, E >
    Hyperbolic sine function.
    Definition xmath.hpp:1410
    +
    auto acosh(E &&e) noexcept -> detail::xfunction_type_t< math::acosh_fun, E >
    Inverse hyperbolic cosine function.
    Definition xmath.hpp:1470
    +
    auto atanh(E &&e) noexcept -> detail::xfunction_type_t< math::atanh_fun, E >
    Inverse hyperbolic tangent function.
    Definition xmath.hpp:1485
    +
    auto where(E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< detail::conditional_ternary, E1, E2, E3 >
    Ternary selection.
    +
    auto nanmax(E &&e, X &&axes, EVS es=EVS())
    Maximum element along given axes, ignoring NaNs.
    Definition xmath.hpp:2479
    +
    auto nancumsum(E &&e, std::ptrdiff_t axis)
    Cumulative sum, replacing nan with 0.
    Definition xmath.hpp:2629
    +
    auto nancumprod(E &&e, std::ptrdiff_t axis)
    Cumulative product, replacing nan with 1.
    Definition xmath.hpp:2664
    +
    auto nanmean(E &&e, X &&axes, EVS es=EVS())
    Mean of elements over given axes, excluding NaNs.
    Definition xmath.hpp:2748
    +
    auto nanmin(E &&e, X &&axes, EVS es=EVS())
    Minimum element over given axes, ignoring NaNs.
    Definition xmath.hpp:2464
    +
    auto nanprod(E &&e, X &&axes, EVS es=EVS())
    Product of elements over given axes, replacing NaN with 1.
    Definition xmath.hpp:2513
    +
    auto nansum(E &&e, X &&axes, EVS es=EVS())
    Sum of elements over given axes, replacing NaN with 0.
    Definition xmath.hpp:2496
    +
    auto nan_to_num(E &&e)
    Convert nan or +/- inf to numbers.
    Definition xmath.hpp:2446
    +
    auto ceil(E &&e) noexcept -> detail::xfunction_type_t< math::ceil_fun, E >
    ceil function.
    Definition xmath.hpp:1576
    +
    auto trunc(E &&e) noexcept -> detail::xfunction_type_t< math::trunc_fun, E >
    trunc function.
    Definition xmath.hpp:1606
    +
    auto nearbyint(E &&e) noexcept -> detail::xfunction_type_t< math::nearbyint_fun, E >
    nearbyint function.
    Definition xmath.hpp:1638
    +
    auto floor(E &&e) noexcept -> detail::xfunction_type_t< math::floor_fun, E >
    floor function.
    Definition xmath.hpp:1591
    +
    auto round(E &&e) noexcept -> detail::xfunction_type_t< math::round_fun, E >
    round function.
    Definition xmath.hpp:1622
    +
    auto rint(E &&e) noexcept -> detail::xfunction_type_t< math::rint_fun, E >
    rint function.
    Definition xmath.hpp:1654
    +
    auto cube(E1 &&e1) noexcept
    Cube power function, equivalent to e1 * e1 * e1.
    Definition xmath.hpp:1150
    +
    auto sqrt(E &&e) noexcept -> detail::xfunction_type_t< math::sqrt_fun, E >
    Square root function.
    Definition xmath.hpp:1238
    +
    auto square(E1 &&e1) noexcept
    Square power function, equivalent to e1 * e1.
    Definition xmath.hpp:1127
    +
    auto pow(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >
    Power function.
    Definition xmath.hpp:1014
    +
    auto hypot(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::hypot_fun, E1, E2 >
    Hypotenuse function.
    Definition xmath.hpp:1271
    +
    auto cbrt(E &&e) noexcept -> detail::xfunction_type_t< math::cbrt_fun, E >
    Cubic root function.
    Definition xmath.hpp:1253
    +
    auto sum(E &&e, X &&axes, EVS es=EVS())
    Sum of elements over given axes.
    Definition xmath.hpp:1840
    +
    auto prod(E &&e, X &&axes, EVS es=EVS())
    Product of elements over given axes.
    Definition xmath.hpp:1860
    +
    auto trapz(const xexpression< T > &y, double dx=1.0, std::ptrdiff_t axis=-1)
    Integrate along the given axis using the composite trapezoidal rule.
    Definition xmath.hpp:2947
    +
    auto diff(const xexpression< T > &a, std::size_t n=1, std::ptrdiff_t axis=-1)
    Calculate the n-th discrete difference along the given axis.
    Definition xmath.hpp:2910
    +
    auto minmax(E &&e, EVS es=EVS())
    Minimum and maximum among the elements of an array or expression.
    Definition xmath.hpp:2233
    +
    auto average(E &&e, W &&weights, X &&axes, EVS ev=EVS())
    Average of elements over given axes using weights.
    Definition xmath.hpp:1975
    +
    auto mean(E &&e, X &&axes, EVS es=EVS())
    Mean of elements over given axes.
    Definition xmath.hpp:1934
    +
    auto atan(E &&e) noexcept -> detail::xfunction_type_t< math::atan_fun, E >
    Arctangent function.
    Definition xmath.hpp:1369
    +
    auto atan2(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::atan2_fun, E1, E2 >
    Artangent function, using signs to determine quadrants.
    Definition xmath.hpp:1387
    +
    auto asin(E &&e) noexcept -> detail::xfunction_type_t< math::asin_fun, E >
    Arcsine function.
    Definition xmath.hpp:1339
    +
    auto cos(E &&e) noexcept -> detail::xfunction_type_t< math::cos_fun, E >
    Cosine function.
    Definition xmath.hpp:1309
    +
    auto sin(E &&e) noexcept -> detail::xfunction_type_t< math::sin_fun, E >
    Sine function.
    Definition xmath.hpp:1294
    +
    auto tan(E &&e) noexcept -> detail::xfunction_type_t< math::tan_fun, E >
    Tangent function.
    Definition xmath.hpp:1324
    +
    auto acos(E &&e) noexcept -> detail::xfunction_type_t< math::acos_fun, E >
    Arccosine function.
    Definition xmath.hpp:1354
    +
    auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
    Force evaluation of xexpression.
    Definition xeval.hpp:46
    +
    auto transpose(E &&e) noexcept
    Returns a transpose view by reversing the dimensions of xexpression e.
    +
    bool same_shape(const S1 &s1, const S2 &s2) noexcept
    Check if two objects have the same shape.
    Definition xshape.hpp:112
    +
    standard mathematical functions for xexpressions
    +
    auto stack(std::tuple< CT... > &&t, std::size_t axis=0)
    Stack xexpressions along axis.
    Definition xbuilder.hpp:837
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    auto arange(T start, T stop, S step=1) noexcept
    Generates numbers evenly spaced within given half-open interval [start, stop).
    Definition xbuilder.hpp:432
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto make_lambda_xfunction(F &&lambda, E &&... args)
    Create a xfunction from a lambda.
    Definition xmath.hpp:1084
    +
    auto reduce(F &&f, E &&e, X &&axes, EVS &&options=EVS())
    Returns an xexpression applying the specified reducing function to an expression over the given axes.
    +
    layout_type
    Definition xlayout.hpp:24
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    auto accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())
    Accumulate and flatten array NOTE This function is not lazy!
    +
    auto diagonal(E &&arr, int offset=0, std::size_t axis_1=0, std::size_t axis_2=1)
    Returns the elements on the diagonal of arr If arr has more than two dimensions, then the axes specif...
    +
    xshared_expression< E > make_xshared(xexpression< E > &&expr)
    Helper function to create shared expression from any xexpression.
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto diag(E &&arr, int k=0)
    xexpression with values of arr on the diagonal, zeroes otherwise
    +
    auto xtuple(Types &&... args)
    Creates tuples from arguments for concatenate and stack.
    Definition xbuilder.hpp:661
    +
    auto cov(const E1 &x, const E1 &y=E1())
    Returns the covariance matrix.
    Definition xmath.hpp:3196
    + + + + + + + + + + + + +
    +
    + + + + diff --git a/xmime_8hpp_source.html b/xmime_8hpp_source.html new file mode 100644 index 000000000..200525c9c --- /dev/null +++ b/xmime_8hpp_source.html @@ -0,0 +1,544 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xmime.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xmime.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_MIME_HPP
    +
    11#define XTENSOR_MIME_HPP
    +
    12
    +
    13#include <cstddef>
    +
    14#include <sstream>
    +
    15#include <string>
    +
    16#include <vector>
    +
    17
    +
    18#include <nlohmann/json.hpp>
    +
    19
    +
    20#include "xio.hpp"
    +
    21
    +
    22namespace xt
    +
    23{
    +
    24 template <class P, class T>
    +
    25 void compute_0d_table(std::stringstream& out, P& /*printer*/, const T& expr)
    +
    26 {
    +
    27 out << "<table style='border-style:solid;border-width:1px;'><tbody>";
    +
    28 out << "<tr><td style='font-family:monospace;'><pre>";
    +
    29 out << expr();
    +
    30 out << "</pre></td></tr>";
    +
    31 out << "</tbody></table>";
    +
    32 }
    +
    33
    +
    34 template <class P>
    +
    35 void compute_1d_row(std::stringstream& out, P& printer, const std::size_t& row_idx)
    +
    36 {
    +
    37 out << "<tr><td style='font-family:monospace;' title='" << row_idx << "'><pre>";
    +
    38 printer.print_next(out);
    +
    39 out << "</pre></td></tr>";
    +
    40 }
    +
    41
    +
    42 template <class P, class T>
    +
    43 void compute_1d_table(std::stringstream& out, P& printer, const T& expr, const std::size_t& edgeitems)
    +
    44 {
    +
    45 const auto& dim = expr.shape()[0];
    +
    46
    +
    47 out << "<table style='border-style:solid;border-width:1px;'><tbody>";
    +
    48 if (edgeitems == 0 || 2 * edgeitems >= dim)
    +
    49 {
    +
    50 for (std::size_t row_idx = 0; row_idx < dim; ++row_idx)
    +
    51 {
    +
    52 compute_1d_row(out, printer, row_idx);
    +
    53 }
    +
    54 }
    +
    55 else
    +
    56 {
    +
    57 for (std::size_t row_idx = 0; row_idx < edgeitems; ++row_idx)
    +
    58 {
    +
    59 compute_1d_row(out, printer, row_idx);
    +
    60 }
    +
    61 out << "<tr><td><center>\u22ee</center></td></tr>";
    +
    62 for (std::size_t row_idx = dim - edgeitems; row_idx < dim; ++row_idx)
    +
    63 {
    +
    64 compute_1d_row(out, printer, row_idx);
    +
    65 }
    +
    66 }
    +
    67 out << "</tbody></table>";
    +
    68 }
    +
    69
    +
    70 template <class P>
    +
    71 void compute_2d_element(
    +
    72 std::stringstream& out,
    +
    73 P& printer,
    +
    74 const std::string& idx_str,
    +
    75 const std::size_t& row_idx,
    +
    76 const std::size_t& column_idx
    +
    77 )
    +
    78 {
    +
    79 out << "<td style='font-family:monospace;' title='(" << idx_str << row_idx << ", " << column_idx
    +
    80 << ")'><pre>";
    +
    81 printer.print_next(out);
    +
    82 out << "</pre></td>";
    +
    83 }
    +
    84
    +
    85 template <class P, class T>
    +
    86 void compute_2d_row(
    +
    87 std::stringstream& out,
    +
    88 P& printer,
    +
    89 const T& expr,
    +
    90 const std::size_t& edgeitems,
    +
    91 const std::string& idx_str,
    +
    92 const std::size_t& row_idx
    +
    93 )
    +
    94 {
    +
    95 const auto& dim = expr.shape()[expr.dimension() - 1];
    +
    96
    +
    97 out << "<tr>";
    +
    98 if (edgeitems == 0 || 2 * edgeitems >= dim)
    +
    99 {
    +
    100 for (std::size_t column_idx = 0; column_idx < dim; ++column_idx)
    +
    101 {
    +
    102 compute_2d_element(out, printer, idx_str, row_idx, column_idx);
    +
    103 }
    +
    104 }
    +
    105 else
    +
    106 {
    +
    107 for (std::size_t column_idx = 0; column_idx < edgeitems; ++column_idx)
    +
    108 {
    +
    109 compute_2d_element(out, printer, idx_str, row_idx, column_idx);
    +
    110 }
    +
    111 out << "<td><center>\u22ef</center></td>";
    +
    112 for (std::size_t column_idx = dim - edgeitems; column_idx < dim; ++column_idx)
    +
    113 {
    +
    114 compute_2d_element(out, printer, idx_str, row_idx, column_idx);
    +
    115 }
    +
    116 }
    +
    117 out << "</tr>";
    +
    118 }
    +
    119
    +
    120 template <class P, class T, class I>
    +
    121 void compute_2d_table(
    +
    122 std::stringstream& out,
    +
    123 P& printer,
    +
    124 const T& expr,
    +
    125 const std::size_t& edgeitems,
    +
    126 const std::vector<I>& idx
    +
    127 )
    +
    128 {
    +
    129 const auto& dim = expr.shape()[expr.dimension() - 2];
    +
    130 const auto& last_dim = expr.shape()[expr.dimension() - 1];
    +
    131 std::string idx_str;
    +
    132 std::for_each(
    +
    133 idx.cbegin(),
    +
    134 idx.cend(),
    +
    135 [&idx_str](const auto& i)
    +
    136 {
    +
    137 idx_str += std::to_string(i) + ", ";
    +
    138 }
    +
    139 );
    +
    140
    +
    141 std::size_t nb_ellipsis = 2 * edgeitems + 1;
    +
    142 if (last_dim <= 2 * edgeitems + 1)
    +
    143 {
    +
    144 nb_ellipsis = last_dim;
    +
    145 }
    +
    146
    +
    147 out << "<table style='border-style:solid;border-width:1px;'><tbody>";
    +
    148 if (edgeitems == 0 || 2 * edgeitems >= dim)
    +
    149 {
    +
    150 for (std::size_t row_idx = 0; row_idx < dim; ++row_idx)
    +
    151 {
    +
    152 compute_2d_row(out, printer, expr, edgeitems, idx_str, row_idx);
    +
    153 }
    +
    154 }
    +
    155 else
    +
    156 {
    +
    157 for (std::size_t row_idx = 0; row_idx < edgeitems; ++row_idx)
    +
    158 {
    +
    159 compute_2d_row(out, printer, expr, edgeitems, idx_str, row_idx);
    +
    160 }
    +
    161 out << "<tr>";
    +
    162 for (std::size_t column_idx = 0; column_idx < nb_ellipsis; ++column_idx)
    +
    163 {
    +
    164 if (column_idx == edgeitems && nb_ellipsis != last_dim)
    +
    165 {
    +
    166 out << "<td><center>\u22f1</center></td>";
    +
    167 }
    +
    168 else
    +
    169 {
    +
    170 out << "<td><center>\u22ee</center></td>";
    +
    171 }
    +
    172 }
    +
    173 out << "</tr>";
    +
    174 for (std::size_t row_idx = dim - edgeitems; row_idx < dim; ++row_idx)
    +
    175 {
    +
    176 compute_2d_row(out, printer, expr, edgeitems, idx_str, row_idx);
    +
    177 }
    +
    178 }
    +
    179 out << "</tbody></table>";
    +
    180 }
    +
    181
    +
    182 template <class P, class T, class I>
    +
    183 void compute_nd_row(
    +
    184 std::stringstream& out,
    +
    185 P& printer,
    +
    186 const T& expr,
    +
    187 const std::size_t& edgeitems,
    +
    188 const std::vector<I>& idx
    +
    189 )
    +
    190 {
    +
    191 out << "<tr><td>";
    +
    192 compute_nd_table_impl(out, printer, expr, edgeitems, idx);
    +
    193 out << "</td></tr>";
    +
    194 }
    +
    195
    +
    196 template <class P, class T, class I>
    +
    197 void compute_nd_table_impl(
    +
    198 std::stringstream& out,
    +
    199 P& printer,
    +
    200 const T& expr,
    +
    201 const std::size_t& edgeitems,
    +
    202 const std::vector<I>& idx
    +
    203 )
    +
    204 {
    +
    205 const auto& displayed_dimension = idx.size();
    +
    206 const auto& expr_dim = expr.dimension();
    +
    207 const auto& dim = expr.shape()[displayed_dimension];
    +
    208
    +
    209 if (expr_dim - displayed_dimension == 2)
    +
    210 {
    +
    211 return compute_2d_table(out, printer, expr, edgeitems, idx);
    +
    212 }
    +
    213
    +
    214 std::vector<I> idx2 = idx;
    +
    215 idx2.resize(displayed_dimension + 1);
    +
    216
    +
    217 out << "<table style='border-style:solid;border-width:1px;'>";
    +
    218 if (edgeitems == 0 || 2 * edgeitems >= dim)
    +
    219 {
    +
    220 for (std::size_t i = 0; i < dim; ++i)
    +
    221 {
    +
    222 idx2[displayed_dimension] = i;
    +
    223 compute_nd_row(out, printer, expr, edgeitems, idx2);
    +
    224 }
    +
    225 }
    +
    226 else
    +
    227 {
    +
    228 for (std::size_t i = 0; i < edgeitems; ++i)
    +
    229 {
    +
    230 idx2[displayed_dimension] = i;
    +
    231 compute_nd_row(out, printer, expr, edgeitems, idx2);
    +
    232 }
    +
    233 out << "<tr><td><center>\u22ef</center></td></tr>";
    +
    234 for (std::size_t i = dim - edgeitems; i < dim; ++i)
    +
    235 {
    +
    236 idx2[displayed_dimension] = i;
    +
    237 compute_nd_row(out, printer, expr, edgeitems, idx2);
    +
    238 }
    +
    239 }
    +
    240 out << "</table>";
    +
    241 }
    +
    242
    +
    243 template <class P, class T>
    +
    244 void compute_nd_table(std::stringstream& out, P& printer, const T& expr, const std::size_t& edgeitems)
    +
    245 {
    +
    246 if (expr.dimension() == 0)
    +
    247 {
    +
    248 compute_0d_table(out, printer, expr);
    +
    249 }
    +
    250 else if (expr.dimension() == 1)
    +
    251 {
    +
    252 compute_1d_table(out, printer, expr, edgeitems);
    +
    253 }
    +
    254 else
    +
    255 {
    +
    256 std::vector<std::size_t> empty_vector;
    +
    257 compute_nd_table_impl(out, printer, expr, edgeitems, empty_vector);
    +
    258 }
    +
    259 }
    +
    260
    +
    261 template <class E>
    +
    262 nlohmann::json mime_bundle_repr_impl(const E& expr)
    +
    263 {
    +
    264 std::stringstream out;
    +
    265
    +
    266 std::size_t edgeitems = 0;
    +
    267 std::size_t size = compute_size(expr.shape());
    +
    268 if (size > static_cast<std::size_t>(print_options::print_options().threshold))
    +
    269 {
    +
    270 edgeitems = static_cast<std::size_t>(print_options::print_options().edge_items);
    +
    271 }
    +
    272
    +
    273 if (print_options::print_options().precision != -1)
    +
    274 {
    +
    275 out.precision(print_options::print_options().precision);
    +
    276 }
    +
    277
    +
    278 detail::printer<E> printer(out.precision());
    +
    279
    +
    280 xstrided_slice_vector slice_vector;
    +
    281 detail::recurser_run(printer, expr, slice_vector, edgeitems);
    +
    282 printer.init();
    +
    283
    +
    284 compute_nd_table(out, printer, expr, edgeitems);
    +
    285
    +
    286 auto bundle = nlohmann::json::object();
    +
    287 bundle["text/html"] = out.str();
    +
    288 return bundle;
    +
    289 }
    +
    290
    +
    291 template <class F, class CT>
    +
    292 class xfunctor_view;
    +
    293
    +
    294 template <class F, class CT>
    +
    295 nlohmann::json mime_bundle_repr(const xfunctor_view<F, CT>& expr)
    +
    296 {
    +
    297 return mime_bundle_repr_impl(expr);
    +
    298 }
    +
    299
    +
    300 template <class F, class... CT>
    +
    301 class xfunction;
    +
    302
    +
    303 template <class F, class... CT>
    +
    304 nlohmann::json mime_bundle_repr(const xfunction<F, CT...>& expr)
    +
    305 {
    +
    306 return mime_bundle_repr_impl(expr);
    +
    307 }
    +
    308
    +
    309 template <class EC, layout_type L, class SC, class Tag>
    +
    310 class xarray_container;
    +
    311
    +
    312 template <class EC, layout_type L, class SC, class Tag>
    +
    313 nlohmann::json mime_bundle_repr(const xarray_container<EC, L, SC, Tag>& expr)
    +
    314 {
    +
    315 return mime_bundle_repr_impl(expr);
    +
    316 }
    +
    317
    +
    318 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    319 class xtensor_container;
    +
    320
    +
    321 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    322 nlohmann::json mime_bundle_repr(const xtensor_container<EC, N, L, Tag>& expr)
    +
    323 {
    +
    324 return mime_bundle_repr_impl(expr);
    +
    325 }
    +
    326
    +
    327 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    328 class xfixed_container;
    +
    329
    +
    330 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    331 nlohmann::json mime_bundle_repr(const xfixed_container<ET, S, L, SH, Tag>& expr)
    +
    332 {
    +
    333 return mime_bundle_repr_impl(expr);
    +
    334 }
    +
    335
    +
    336 template <class F, class CT, class X, class O>
    +
    337 class xreducer;
    +
    338
    +
    339 template <class F, class CT, class X, class O>
    +
    340 nlohmann::json mime_bundle_repr(const xreducer<F, CT, X, O>& expr)
    +
    341 {
    +
    342 return mime_bundle_repr_impl(expr);
    +
    343 }
    +
    344
    +
    345 template <class VE, class FE>
    +
    346 class xoptional_assembly;
    +
    347
    +
    348 template <class VE, class FE>
    +
    349 nlohmann::json mime_bundle_repr(const xoptional_assembly<VE, FE>& expr)
    +
    350 {
    +
    351 return mime_bundle_repr_impl(expr);
    +
    352 }
    +
    353
    +
    354 template <class VEC, class FEC>
    +
    355 class xoptional_assembly_adaptor;
    +
    356
    +
    357 template <class VEC, class FEC>
    +
    358 nlohmann::json mime_bundle_repr(const xoptional_assembly_adaptor<VEC, FEC>& expr)
    +
    359 {
    +
    360 return mime_bundle_repr_impl(expr);
    +
    361 }
    +
    362
    +
    363 template <class CT>
    +
    364 class xscalar;
    +
    365
    +
    366 template <class CT>
    +
    367 nlohmann::json mime_bundle_repr(const xscalar<CT>& expr)
    +
    368 {
    +
    369 return mime_bundle_repr_impl(expr);
    +
    370 }
    +
    371
    +
    372 template <class CT, class X>
    +
    373 class xbroadcast;
    +
    374
    +
    375 template <class CT, class X>
    +
    376 nlohmann::json mime_bundle_repr(const xbroadcast<CT, X>& expr)
    +
    377 {
    +
    378 return mime_bundle_repr_impl(expr);
    +
    379 }
    +
    380
    +
    381 template <class F, class R, class S>
    +
    382 class xgenerator;
    +
    383
    +
    384 template <class F, class R, class S>
    +
    385 nlohmann::json mime_bundle_repr(const xgenerator<F, R, S>& expr)
    +
    386 {
    +
    387 return mime_bundle_repr_impl(expr);
    +
    388 }
    +
    389
    +
    390 template <class CT, class... S>
    +
    391 class xview;
    +
    392
    +
    393 template <class CT, class... S>
    +
    394 nlohmann::json mime_bundle_repr(const xview<CT, S...>& expr)
    +
    395 {
    +
    396 return mime_bundle_repr_impl(expr);
    +
    397 }
    +
    398
    +
    399 template <class CT, class S, layout_type L, class FST>
    +
    400 class xstrided_view;
    +
    401
    +
    402 template <class CT, class S, layout_type L, class FST>
    +
    403 nlohmann::json mime_bundle_repr(const xstrided_view<CT, S, L, FST>& expr)
    +
    404 {
    +
    405 return mime_bundle_repr_impl(expr);
    +
    406 }
    +
    407
    +
    408 template <class CTD, class CTM>
    +
    409 class xmasked_view;
    +
    410
    +
    411 template <class CTD, class CTM>
    +
    412 nlohmann::json mime_bundle_repr(const xmasked_view<CTD, CTM>& expr)
    +
    413 {
    +
    414 return mime_bundle_repr_impl(expr);
    +
    415 }
    +
    416
    +
    417 template <class T, class B>
    + +
    419
    +
    420 template <class T, class B>
    +
    421 nlohmann::json mime_bundle_repr(const xmasked_value<T, B>& v)
    +
    422 {
    +
    423 auto bundle = nlohmann::json::object();
    +
    424 std::stringstream tmp;
    +
    425 tmp << v;
    +
    426 bundle["text/plain"] = tmp.str();
    +
    427 return bundle;
    +
    428 }
    +
    429}
    +
    430
    +
    431#endif
    + +
    standard mathematical functions for xexpressions
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    +
    + + + + diff --git a/xmultiindex__iterator_8hpp_source.html b/xmultiindex__iterator_8hpp_source.html new file mode 100644 index 000000000..c546669c4 --- /dev/null +++ b/xmultiindex__iterator_8hpp_source.html @@ -0,0 +1,245 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xmultiindex_iterator.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xmultiindex_iterator.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_XMULTIINDEX_ITERATOR
    +
    11#define XTENSOR_XMULTIINDEX_ITERATOR
    +
    12
    +
    13#include "xstrided_view.hpp"
    +
    14#include "xtl/xsequence.hpp"
    +
    15
    +
    16namespace xt
    +
    17{
    +
    18
    +
    19 template <class S>
    +
    + +
    21 {
    +
    22 public:
    +
    23
    + +
    25 using shape_type = S;
    +
    26
    +
    27 using value_type = shape_type;
    +
    28 using reference = value_type&;
    +
    29 using pointer = value_type*;
    +
    30 using difference_type = std::size_t;
    +
    31 using iterator_category = std::forward_iterator_tag;
    +
    32
    +
    33 xmultiindex_iterator() = default;
    +
    34
    +
    35 template <class B, class E, class C>
    +
    36 xmultiindex_iterator(B&& begin, E&& end, C&& current, const std::size_t linear_index)
    +
    37 : m_begin(std::forward<B>(begin))
    +
    38 , m_end(std::forward<E>(end))
    +
    39 , m_current(std::forward<C>(current))
    +
    40 , m_linear_index(linear_index)
    +
    41 {
    +
    42 }
    +
    43
    +
    44 self_type& operator++()
    +
    45 {
    +
    46 std::size_t i = m_begin.size();
    +
    47 while (i != 0)
    +
    48 {
    +
    49 --i;
    +
    50 if (m_current[i] + 1u == m_end[i])
    +
    51 {
    +
    52 m_current[i] = m_begin[i];
    +
    53 }
    +
    54 else
    +
    55 {
    +
    56 m_current[i] += 1;
    +
    57 break;
    +
    58 }
    +
    59 }
    +
    60 m_linear_index++;
    +
    61 return *this;
    +
    62 }
    +
    63
    +
    64 self_type operator++(int)
    +
    65 {
    +
    66 self_type it = *this;
    +
    67 ++(*this);
    +
    68 return it;
    +
    69 }
    +
    70
    +
    71 shape_type& operator*()
    +
    72 {
    +
    73 return m_current;
    +
    74 }
    +
    75
    +
    76 const shape_type& operator*() const
    +
    77 {
    +
    78 return m_current;
    +
    79 }
    +
    80
    +
    81 bool operator==(const self_type& rhs) const
    +
    82 {
    +
    83 return m_linear_index == rhs.m_linear_index;
    +
    84 }
    +
    85
    +
    86 bool operator!=(const self_type& rhs) const
    +
    87 {
    +
    88 return !this->operator==(rhs);
    +
    89 }
    +
    90
    +
    91 private:
    +
    92
    +
    93 shape_type m_begin;
    +
    94 shape_type m_end;
    +
    95 shape_type m_current;
    +
    96 std::size_t m_linear_index{0};
    +
    97 };
    +
    +
    98
    +
    99 template <class S, class B, class E>
    +
    100 auto multiindex_iterator_begin(B&& roi_begin, E&& roi_end)
    +
    101 {
    +
    102 S current;
    +
    103 resize_container(current, roi_begin.size());
    +
    104 std::copy(roi_begin.begin(), roi_begin.end(), current.begin());
    +
    105 return xmultiindex_iterator<S>(std::forward<B>(roi_begin), std::forward<E>(roi_end), std::move(current), 0);
    +
    106 }
    +
    107
    +
    108 template <class S, class B, class E>
    +
    109 auto multiindex_iterator_end(B&& roi_begin, E&& roi_end)
    +
    110 {
    +
    111 S current;
    +
    112 resize_container(current, roi_begin.size());
    +
    113 std::copy(roi_end.begin(), roi_end.end(), current.begin());
    +
    114
    +
    115 std::size_t linear_index = 1;
    +
    116 for (std::size_t i = 0; i < roi_begin.size(); ++i)
    +
    117 {
    +
    118 linear_index *= roi_end[i] - roi_begin[i];
    +
    119 }
    +
    120
    +
    121 return xmultiindex_iterator<S>(
    +
    122 std::forward<B>(roi_begin),
    +
    123 std::forward<E>(roi_end),
    +
    124 std::move(current),
    +
    125 linear_index
    +
    126 );
    +
    127 }
    +
    128
    +
    129}
    +
    130
    +
    131#endif
    + +
    standard mathematical functions for xexpressions
    +
    +
    + + + + diff --git a/xnoalias_8hpp_source.html b/xnoalias_8hpp_source.html new file mode 100644 index 000000000..673cfa05b --- /dev/null +++ b/xnoalias_8hpp_source.html @@ -0,0 +1,345 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xnoalias.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xnoalias.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_NOALIAS_HPP
    +
    11#define XTENSOR_NOALIAS_HPP
    +
    12
    +
    13#include "xsemantic.hpp"
    +
    14
    +
    15namespace xt
    +
    16{
    +
    17
    +
    18 template <class A>
    +
    + +
    20 {
    +
    21 public:
    +
    22
    +
    23 noalias_proxy(A a) noexcept;
    +
    24
    +
    25 template <class E>
    +
    26 disable_xexpression<E, A> operator=(const E&);
    +
    27
    +
    28 template <class E>
    +
    29 disable_xexpression<E, A> operator+=(const E&);
    +
    30
    +
    31 template <class E>
    +
    32 disable_xexpression<E, A> operator-=(const E&);
    +
    33
    +
    34 template <class E>
    +
    35 disable_xexpression<E, A> operator*=(const E&);
    +
    36
    +
    37 template <class E>
    +
    38 disable_xexpression<E, A> operator/=(const E&);
    +
    39
    +
    40 template <class E>
    +
    41 disable_xexpression<E, A> operator%=(const E&);
    +
    42
    +
    43 template <class E>
    +
    44 disable_xexpression<E, A> operator&=(const E&);
    +
    45
    +
    46 template <class E>
    +
    47 disable_xexpression<E, A> operator|=(const E&);
    +
    48
    +
    49 template <class E>
    +
    50 disable_xexpression<E, A> operator^=(const E&);
    +
    51
    +
    52 template <class E>
    +
    53 A operator=(const xexpression<E>& e);
    +
    54
    +
    55 template <class E>
    +
    56 A operator+=(const xexpression<E>& e);
    +
    57
    +
    58 template <class E>
    +
    59 A operator-=(const xexpression<E>& e);
    +
    60
    +
    61 template <class E>
    +
    62 A operator*=(const xexpression<E>& e);
    +
    63
    +
    64 template <class E>
    +
    65 A operator/=(const xexpression<E>& e);
    +
    66
    +
    67 template <class E>
    +
    68 A operator%=(const xexpression<E>& e);
    +
    69
    +
    70 template <class E>
    +
    71 A operator&=(const xexpression<E>&);
    +
    72
    +
    73 template <class E>
    +
    74 A operator|=(const xexpression<E>&);
    +
    75
    +
    76 template <class E>
    +
    77 A operator^=(const xexpression<E>&);
    +
    78
    +
    79 private:
    +
    80
    +
    81 A m_array;
    +
    82 };
    +
    +
    83
    +
    84 template <class A>
    +
    85 noalias_proxy<xtl::closure_type_t<A>> noalias(A&& a) noexcept;
    +
    86
    +
    87 /********************************
    +
    88 * noalias_proxy implementation *
    +
    89 ********************************/
    +
    90
    +
    91 template <class A>
    +
    92 inline noalias_proxy<A>::noalias_proxy(A a) noexcept
    +
    93 : m_array(std::forward<A>(a))
    +
    94 {
    +
    95 }
    +
    96
    +
    97 template <class A>
    +
    98 template <class E>
    +
    99 inline auto noalias_proxy<A>::operator=(const E& e) -> disable_xexpression<E, A>
    +
    100 {
    +
    101 return m_array.assign(xscalar<E>(e));
    +
    102 }
    +
    103
    +
    104 template <class A>
    +
    105 template <class E>
    +
    106 inline auto noalias_proxy<A>::operator+=(const E& e) -> disable_xexpression<E, A>
    +
    107 {
    +
    108 return m_array.scalar_computed_assign(e, std::plus<>());
    +
    109 }
    +
    110
    +
    111 template <class A>
    +
    112 template <class E>
    +
    113 inline auto noalias_proxy<A>::operator-=(const E& e) -> disable_xexpression<E, A>
    +
    114 {
    +
    115 return m_array.scalar_computed_assign(e, std::minus<>());
    +
    116 }
    +
    117
    +
    118 template <class A>
    +
    119 template <class E>
    +
    120 inline auto noalias_proxy<A>::operator*=(const E& e) -> disable_xexpression<E, A>
    +
    121 {
    +
    122 return m_array.scalar_computed_assign(e, std::multiplies<>());
    +
    123 }
    +
    124
    +
    125 template <class A>
    +
    126 template <class E>
    +
    127 inline auto noalias_proxy<A>::operator/=(const E& e) -> disable_xexpression<E, A>
    +
    128 {
    +
    129 return m_array.scalar_computed_assign(e, std::divides<>());
    +
    130 }
    +
    131
    +
    132 template <class A>
    +
    133 template <class E>
    +
    134 inline auto noalias_proxy<A>::operator%=(const E& e) -> disable_xexpression<E, A>
    +
    135 {
    +
    136 return m_array.scalar_computed_assign(e, std::modulus<>());
    +
    137 }
    +
    138
    +
    139 template <class A>
    +
    140 template <class E>
    +
    141 inline auto noalias_proxy<A>::operator&=(const E& e) -> disable_xexpression<E, A>
    +
    142 {
    +
    143 return m_array.scalar_computed_assign(e, std::bit_and<>());
    +
    144 }
    +
    145
    +
    146 template <class A>
    +
    147 template <class E>
    +
    148 inline auto noalias_proxy<A>::operator|=(const E& e) -> disable_xexpression<E, A>
    +
    149 {
    +
    150 return m_array.scalar_computed_assign(e, std::bit_or<>());
    +
    151 }
    +
    152
    +
    153 template <class A>
    +
    154 template <class E>
    +
    155 inline auto noalias_proxy<A>::operator^=(const E& e) -> disable_xexpression<E, A>
    +
    156 {
    +
    157 return m_array.scalar_computed_assign(e, std::bit_xor<>());
    +
    158 }
    +
    159
    +
    160 template <class A>
    +
    161 template <class E>
    +
    162 inline A noalias_proxy<A>::operator=(const xexpression<E>& e)
    +
    163 {
    +
    164 return m_array.assign(e);
    +
    165 }
    +
    166
    +
    167 template <class A>
    +
    168 template <class E>
    +
    169 inline A noalias_proxy<A>::operator+=(const xexpression<E>& e)
    +
    170 {
    +
    171 return m_array.plus_assign(e);
    +
    172 }
    +
    173
    +
    174 template <class A>
    +
    175 template <class E>
    +
    176 inline A noalias_proxy<A>::operator-=(const xexpression<E>& e)
    +
    177 {
    +
    178 return m_array.minus_assign(e);
    +
    179 }
    +
    180
    +
    181 template <class A>
    +
    182 template <class E>
    +
    183 inline A noalias_proxy<A>::operator*=(const xexpression<E>& e)
    +
    184 {
    +
    185 return m_array.multiplies_assign(e);
    +
    186 }
    +
    187
    +
    188 template <class A>
    +
    189 template <class E>
    +
    190 inline A noalias_proxy<A>::operator/=(const xexpression<E>& e)
    +
    191 {
    +
    192 return m_array.divides_assign(e);
    +
    193 }
    +
    194
    +
    195 template <class A>
    +
    196 template <class E>
    +
    197 inline A noalias_proxy<A>::operator%=(const xexpression<E>& e)
    +
    198 {
    +
    199 return m_array.modulus_assign(e);
    +
    200 }
    +
    201
    +
    202 template <class A>
    +
    203 template <class E>
    +
    204 inline A noalias_proxy<A>::operator&=(const xexpression<E>& e)
    +
    205 {
    +
    206 return m_array.bit_and_assign(e);
    +
    207 }
    +
    208
    +
    209 template <class A>
    +
    210 template <class E>
    +
    211 inline A noalias_proxy<A>::operator|=(const xexpression<E>& e)
    +
    212 {
    +
    213 return m_array.bit_or_assign(e);
    +
    214 }
    +
    215
    +
    216 template <class A>
    +
    217 template <class E>
    +
    218 inline A noalias_proxy<A>::operator^=(const xexpression<E>& e)
    +
    219 {
    +
    220 return m_array.bit_xor_assign(e);
    +
    221 }
    +
    222
    +
    223 template <class A>
    +
    224 inline noalias_proxy<xtl::closure_type_t<A>> noalias(A&& a) noexcept
    +
    225 {
    +
    226 return noalias_proxy<xtl::closure_type_t<A>>(a);
    +
    227 }
    +
    228}
    +
    229
    +
    230#endif
    + +
    Base class for xexpressions.
    +
    standard mathematical functions for xexpressions
    +
    +
    + + + + diff --git a/xnorm_8hpp_source.html b/xnorm_8hpp_source.html new file mode 100644 index 000000000..43e3d0806 --- /dev/null +++ b/xnorm_8hpp_source.html @@ -0,0 +1,655 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xnorm.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xnorm.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) Ullrich Koethe
    +
    4 * Copyright (c) QuantStack *
    +
    5 * *
    +
    6 * Distributed under the terms of the BSD 3-Clause License. *
    +
    7 * *
    +
    8 * The full license is in the file LICENSE, distributed with this software. *
    +
    9 ****************************************************************************/
    +
    10
    +
    11#ifndef XTENSOR_NORM_HPP
    +
    12#define XTENSOR_NORM_HPP
    +
    13
    +
    14#include <cmath>
    +
    15// std::abs(int) prior to C++ 17
    +
    16#include <complex>
    +
    17#include <cstdlib>
    +
    18
    +
    19#include <xtl/xtype_traits.hpp>
    +
    20
    +
    21#include "xmath.hpp"
    +
    22#include "xoperation.hpp"
    +
    23#include "xutils.hpp"
    +
    24
    +
    25namespace xt
    +
    26{
    +
    27 /********************************************
    +
    28 * type inference for norm and squared norm *
    +
    29 ********************************************/
    +
    30
    +
    31 template <class T>
    +
    32 struct norm_type;
    +
    33
    +
    34 template <class T>
    +
    35 struct squared_norm_type;
    +
    36
    +
    37 namespace traits_detail
    +
    38 {
    +
    39
    +
    40 template <class T, bool scalar = xtl::is_arithmetic<T>::value>
    + +
    42
    +
    43 template <class T>
    +
    +
    44 struct norm_of_scalar_impl<T, false>
    +
    45 {
    +
    46 static const bool value = false;
    +
    47 using norm_type = void*;
    +
    48 using squared_norm_type = void*;
    +
    49 };
    +
    +
    50
    +
    51 template <class T>
    +
    +
    52 struct norm_of_scalar_impl<T, true>
    +
    53 {
    +
    54 static const bool value = true;
    +
    55 using norm_type = xtl::promote_type_t<T>;
    +
    56 using squared_norm_type = xtl::promote_type_t<T>;
    +
    57 };
    +
    +
    58
    +
    59 template <class T, bool integral = xtl::is_integral<T>::value, bool floating = std::is_floating_point<T>::value>
    + +
    61
    +
    62 template <>
    +
    +
    63 struct norm_of_array_elements_impl<void*, false, false>
    +
    64 {
    +
    65 using norm_type = void*;
    +
    66 using squared_norm_type = void*;
    +
    67 };
    +
    +
    68
    +
    69 template <class T>
    +
    +
    70 struct norm_of_array_elements_impl<T, false, false>
    +
    71 {
    +
    72 using norm_type = typename norm_type<T>::type;
    +
    73 using squared_norm_type = typename squared_norm_type<T>::type;
    +
    74 };
    +
    +
    75
    +
    76 template <class T>
    +
    +
    77 struct norm_of_array_elements_impl<T, true, false>
    +
    78 {
    +
    79 static_assert(
    +
    80 !std::is_same<T, char>::value,
    +
    81 "'char' is not a numeric type, use 'signed char' or 'unsigned char'."
    +
    82 );
    +
    83
    +
    84 using norm_type = double;
    +
    85 using squared_norm_type = uint64_t;
    +
    86 };
    +
    +
    87
    +
    88 template <class T>
    +
    +
    89 struct norm_of_array_elements_impl<T, false, true>
    +
    90 {
    +
    91 using norm_type = double;
    +
    92 using squared_norm_type = double;
    +
    93 };
    +
    +
    94
    +
    95 template <>
    +
    +
    96 struct norm_of_array_elements_impl<long double, false, true>
    +
    97 {
    +
    98 using norm_type = long double;
    +
    99 using squared_norm_type = long double;
    +
    100 };
    +
    +
    101
    +
    102 template <class ARRAY>
    +
    + +
    104 {
    +
    105 static void* test(...);
    +
    106
    +
    107 template <class U>
    +
    108 static typename U::value_type test(U*, typename U::value_type* = 0);
    +
    109
    +
    110 using T = decltype(test(std::declval<ARRAY*>()));
    +
    111
    +
    112 static const bool value = !std::is_same<T, void*>::value;
    +
    113
    +
    114 using norm_type = typename norm_of_array_elements_impl<T>::norm_type;
    +
    115 using squared_norm_type = typename norm_of_array_elements_impl<T>::squared_norm_type;
    +
    116 };
    +
    +
    117
    +
    118 template <class U>
    +
    + +
    120 {
    +
    121 using T = std::decay_t<U>;
    +
    122
    +
    123 static_assert(
    +
    124 !std::is_same<T, char>::value,
    +
    125 "'char' is not a numeric type, use 'signed char' or 'unsigned char'."
    +
    126 );
    +
    127
    + + +
    130
    +
    131 static const bool value = norm_of_scalar::value || norm_of_vector::value;
    +
    132
    +
    133 static_assert(value, "norm_type<T> are undefined for type U.");
    +
    134 };
    +
    +
    135 } // namespace traits_detail
    +
    136
    +
    152 template <class T>
    +
    + +
    154 {
    + +
    156
    +
    157 using type = typename std::conditional<
    +
    158 base_type::norm_of_vector::value,
    +
    159 typename base_type::norm_of_vector::norm_type,
    +
    160 typename base_type::norm_of_scalar::norm_type>::type;
    +
    161 };
    +
    +
    162
    +
    166 template <class T>
    +
    167 using norm_type_t = typename norm_type<T>::type;
    +
    168
    +
    185 template <class T>
    +
    + +
    187 {
    + +
    189
    +
    190 using type = typename std::conditional<
    +
    191 base_type::norm_of_vector::value,
    +
    192 typename base_type::norm_of_vector::squared_norm_type,
    +
    193 typename base_type::norm_of_scalar::squared_norm_type>::type;
    +
    194 };
    +
    +
    195
    +
    199 template <class T>
    +
    200 using squared_norm_type_t = typename squared_norm_type<T>::type;
    +
    201
    +
    202 /*************************************
    +
    203 * norm functions for built-in types *
    +
    204 *************************************/
    +
    205
    +
    207#define XTENSOR_DEFINE_SIGNED_NORMS(T) \
    +
    208 inline auto norm_lp(T t, double p) noexcept \
    +
    209 { \
    +
    210 using rt = decltype(std::abs(t)); \
    +
    211 return p == 0.0 ? static_cast<rt>(t != 0) : std::abs(t); \
    +
    212 } \
    +
    213 inline auto norm_lp_to_p(T t, double p) noexcept \
    +
    214 { \
    +
    215 using rt = xtl::real_promote_type_t<T>; \
    +
    216 return p == 0.0 ? static_cast<rt>(t != 0) \
    +
    217 : std::pow(static_cast<rt>(std::abs(t)), static_cast<rt>(p)); \
    +
    218 } \
    +
    219 inline std::size_t norm_l0(T t) noexcept \
    +
    220 { \
    +
    221 return (t != 0); \
    +
    222 } \
    +
    223 inline auto norm_l1(T t) noexcept \
    +
    224 { \
    +
    225 return std::abs(t); \
    +
    226 } \
    +
    227 inline auto norm_l2(T t) noexcept \
    +
    228 { \
    +
    229 return std::abs(t); \
    +
    230 } \
    +
    231 inline auto norm_linf(T t) noexcept \
    +
    232 { \
    +
    233 return std::abs(t); \
    +
    234 } \
    +
    235 inline auto norm_sq(T t) noexcept \
    +
    236 { \
    +
    237 return t * t; \
    +
    238 }
    +
    239
    +
    240 XTENSOR_DEFINE_SIGNED_NORMS(signed char)
    +
    241 XTENSOR_DEFINE_SIGNED_NORMS(short)
    +
    242 XTENSOR_DEFINE_SIGNED_NORMS(int)
    +
    243 XTENSOR_DEFINE_SIGNED_NORMS(long)
    +
    244 XTENSOR_DEFINE_SIGNED_NORMS(long long)
    +
    245 XTENSOR_DEFINE_SIGNED_NORMS(float)
    +
    246 XTENSOR_DEFINE_SIGNED_NORMS(double)
    +
    247 XTENSOR_DEFINE_SIGNED_NORMS(long double)
    +
    248
    +
    249#undef XTENSOR_DEFINE_SIGNED_NORMS
    +
    250
    +
    251#define XTENSOR_DEFINE_UNSIGNED_NORMS(T) \
    +
    252 inline T norm_lp(T t, double p) noexcept \
    +
    253 { \
    +
    254 return p == 0.0 ? (t != 0) : t; \
    +
    255 } \
    +
    256 inline auto norm_lp_to_p(T t, double p) noexcept \
    +
    257 { \
    +
    258 using rt = xtl::real_promote_type_t<T>; \
    +
    259 return p == 0.0 ? static_cast<rt>(t != 0) : std::pow(static_cast<rt>(t), static_cast<rt>(p)); \
    +
    260 } \
    +
    261 inline T norm_l0(T t) noexcept \
    +
    262 { \
    +
    263 return t != 0 ? 1 : 0; \
    +
    264 } \
    +
    265 inline T norm_l1(T t) noexcept \
    +
    266 { \
    +
    267 return t; \
    +
    268 } \
    +
    269 inline T norm_l2(T t) noexcept \
    +
    270 { \
    +
    271 return t; \
    +
    272 } \
    +
    273 inline T norm_linf(T t) noexcept \
    +
    274 { \
    +
    275 return t; \
    +
    276 } \
    +
    277 inline auto norm_sq(T t) noexcept \
    +
    278 { \
    +
    279 return t * t; \
    +
    280 }
    +
    281
    +
    282 XTENSOR_DEFINE_UNSIGNED_NORMS(unsigned char)
    +
    283 XTENSOR_DEFINE_UNSIGNED_NORMS(unsigned short)
    +
    284 XTENSOR_DEFINE_UNSIGNED_NORMS(unsigned int)
    +
    285 XTENSOR_DEFINE_UNSIGNED_NORMS(unsigned long)
    +
    286 XTENSOR_DEFINE_UNSIGNED_NORMS(unsigned long long)
    +
    287
    +
    288#undef XTENSOR_DEFINE_UNSIGNED_NORMS
    +
    289
    +
    290 /***********************************
    +
    291 * norm functions for std::complex *
    +
    292 ***********************************/
    +
    293
    +
    298 template <class T>
    +
    299 inline uint64_t norm_l0(const std::complex<T>& t) noexcept
    +
    300 {
    +
    301 return t.real() != 0 || t.imag() != 0;
    +
    302 }
    +
    303
    +
    307 template <class T>
    +
    308 inline auto norm_l1(const std::complex<T>& t) noexcept
    +
    309 {
    +
    310 return std::abs(t.real()) + std::abs(t.imag());
    +
    311 }
    +
    312
    +
    317 template <class T>
    +
    318 inline auto norm_l2(const std::complex<T>& t) noexcept
    +
    319 {
    +
    320 return std::abs(t);
    +
    321 }
    +
    322
    +
    328 template <class T>
    +
    329 inline auto norm_sq(const std::complex<T>& t) noexcept
    +
    330 {
    +
    331 // Does not use std::norm since it returns a std::complex on OSX
    +
    332 return t.real() * t.real() + t.imag() * t.imag();
    +
    333 }
    +
    334
    +
    338 template <class T>
    +
    339 inline auto norm_linf(const std::complex<T>& t) noexcept
    +
    340 {
    +
    341 return (std::max)(std::abs(t.real()), std::abs(t.imag()));
    +
    342 }
    +
    343
    +
    347 template <class T>
    +
    348 inline auto norm_lp_to_p(const std::complex<T>& t, double p) noexcept
    +
    349 {
    +
    350 using rt = decltype(std::pow(std::abs(t.real()), static_cast<T>(p)));
    +
    351 return p == 0 ? static_cast<rt>(t.real() != 0 || t.imag() != 0)
    +
    352 : std::pow(std::abs(t.real()), static_cast<T>(p))
    +
    353 + std::pow(std::abs(t.imag()), static_cast<T>(p));
    +
    354 }
    +
    355
    +
    359 template <class T>
    +
    360 inline auto norm_lp(const std::complex<T>& t, double p) noexcept
    +
    361 {
    +
    362 return p == 0 ? norm_lp_to_p(t, p) : std::pow(norm_lp_to_p(t, p), 1.0 / p);
    +
    363 }
    +
    364
    +
    365 /***********************************
    +
    366 * norm functions for xexpressions *
    +
    367 ***********************************/
    +
    368
    +
    369#define XTENSOR_NORM_FUNCTION_AXES(NAME) \
    +
    370 template <class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS> \
    +
    371 inline auto NAME(E&& e, const I(&axes)[N], EVS es = EVS()) noexcept \
    +
    372 { \
    +
    373 using axes_type = std::array<typename std::decay_t<E>::size_type, N>; \
    +
    374 return NAME(std::forward<E>(e), xtl::forward_sequence<axes_type, decltype(axes)>(axes), es); \
    +
    375 }
    +
    376
    +
    377 namespace detail
    +
    378 {
    +
    379 template <class T>
    +
    380 struct norm_value_type
    +
    381 {
    +
    382 using type = T;
    +
    383 };
    +
    384
    +
    385 template <class T>
    +
    386 struct norm_value_type<std::complex<T>>
    +
    387 {
    +
    388 using type = T;
    +
    389 };
    +
    390
    +
    391 template <class T>
    +
    392 using norm_value_type_t = typename norm_value_type<T>::type;
    +
    393 }
    +
    394
    +
    395#define XTENSOR_EMPTY
    +
    396#define XTENSOR_COMMA ,
    +
    397#define XTENSOR_NORM_FUNCTION(NAME, RESULT_TYPE, REDUCE_EXPR, REDUCE_OP, MERGE_FUNC) \
    +
    398 template <class E, class X, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)> \
    +
    399 inline auto NAME(E&& e, X&& axes, EVS es = EVS()) noexcept \
    +
    400 { \
    +
    401 using value_type = typename std::decay_t<E>::value_type; \
    +
    402 using result_type = detail::norm_value_type_t<RESULT_TYPE>; \
    +
    403 \
    +
    404 auto reduce_func = [](result_type const& r, value_type const& v) \
    +
    405 { \
    +
    406 return REDUCE_EXPR(r REDUCE_OP NAME(v)); \
    +
    407 }; \
    +
    408 \
    +
    409 return xt::reduce( \
    +
    410 make_xreducer_functor(std::move(reduce_func), const_value<result_type>(0), MERGE_FUNC<result_type>()), \
    +
    411 std::forward<E>(e), \
    +
    412 std::forward<X>(axes), \
    +
    413 es \
    +
    414 ); \
    +
    415 } \
    +
    416 \
    +
    417 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_xexpression<E>)> \
    +
    418 inline auto NAME(E&& e, EVS es = EVS()) noexcept \
    +
    419 { \
    +
    420 return NAME(std::forward<E>(e), arange(e.dimension()), es); \
    +
    421 } \
    +
    422 XTENSOR_NORM_FUNCTION_AXES(NAME)
    +
    423
    +
    424 XTENSOR_NORM_FUNCTION(norm_l0, unsigned long long, XTENSOR_EMPTY, +, std::plus)
    +
    425 XTENSOR_NORM_FUNCTION(norm_l1, xtl::big_promote_type_t<value_type>, XTENSOR_EMPTY, +, std::plus)
    +
    426 XTENSOR_NORM_FUNCTION(norm_sq, xtl::big_promote_type_t<value_type>, XTENSOR_EMPTY, +, std::plus)
    +
    427 XTENSOR_NORM_FUNCTION(
    +
    428 norm_linf,
    +
    429 decltype(norm_linf(std::declval<value_type>())),
    +
    430 (std::max<result_type>),
    +
    431 XTENSOR_COMMA,
    +
    432 math::maximum
    +
    433 )
    +
    434
    +
    435#undef XTENSOR_EMPTY
    +
    436#undef XTENSOR_COMMA
    +
    437#undef XTENSOR_NORM_FUNCTION
    +
    438#undef XTENSOR_NORM_FUNCTION_AXES
    +
    440
    +
    452 template <class E, class X, class EVS, class>
    +
    453 auto norm_l0(E&& e, X&& axes, EVS es) noexcept;
    +
    454
    +
    467 template <class E, class X, class EVS, class>
    +
    468 auto norm_l1(E&& e, X&& axes, EVS es) noexcept;
    +
    469
    +
    482 template <class E, class X, class EVS, class>
    +
    483 auto norm_sq(E&& e, X&& axes, EVS es) noexcept;
    +
    484
    +
    493 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_xexpression<E>)>
    +
    +
    494 inline auto norm_l2(E&& e, EVS es = EVS()) noexcept
    +
    495 {
    +
    496 using std::sqrt;
    +
    497 return sqrt(norm_sq(std::forward<E>(e), es));
    +
    498 }
    +
    +
    499
    +
    511 template <
    +
    512 class E,
    +
    513 class X,
    +
    514 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    515 XTL_REQUIRES(is_xexpression<E>, xtl::negation<is_reducer_options<X>>)>
    +
    +
    516 inline auto norm_l2(E&& e, X&& axes, EVS es = EVS()) noexcept
    +
    517 {
    +
    518 return sqrt(norm_sq(std::forward<E>(e), std::forward<X>(axes), es));
    +
    519 }
    +
    +
    520
    +
    521 template <class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    522 inline auto norm_l2(E&& e, const I (&axes)[N], EVS es = EVS()) noexcept
    +
    523 {
    +
    524 using axes_type = std::array<typename std::decay_t<E>::size_type, N>;
    +
    525 return sqrt(norm_sq(std::forward<E>(e), xtl::forward_sequence<axes_type, decltype(axes)>(axes), es));
    +
    526 }
    +
    527
    +
    540 template <class E, class X, class EVS, class>
    +
    541 auto norm_linf(E&& e, X&& axes, EVS es) noexcept;
    +
    542
    +
    556 template <class E, class X, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    557 inline auto norm_lp_to_p(E&& e, double p, X&& axes, EVS es = EVS()) noexcept
    +
    558 {
    +
    559 using value_type = typename std::decay_t<E>::value_type;
    +
    560 using result_type = norm_type_t<std::decay_t<E>>;
    +
    561
    +
    562 auto reduce_func = [p](const result_type& r, const value_type& v)
    +
    563 {
    +
    564 return r + norm_lp_to_p(v, p);
    +
    565 };
    +
    566 return xt::reduce(
    +
    567 make_xreducer_functor(std::move(reduce_func), xt::const_value<result_type>(0), std::plus<result_type>()),
    +
    568 std::forward<E>(e),
    +
    569 std::forward<X>(axes),
    +
    570 es
    +
    571 );
    +
    572 }
    +
    +
    573
    +
    574 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_xexpression<E>)>
    +
    575 inline auto norm_lp_to_p(E&& e, double p, EVS es = EVS()) noexcept
    +
    576 {
    +
    577 return norm_lp_to_p(std::forward<E>(e), p, arange(e.dimension()), es);
    +
    578 }
    +
    579
    +
    580 template <class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    581 inline auto norm_lp_to_p(E&& e, double p, const I (&axes)[N], EVS es = EVS()) noexcept
    +
    582 {
    +
    583 using axes_type = std::array<typename std::decay_t<E>::size_type, N>;
    +
    584 return norm_lp_to_p(std::forward<E>(e), p, xtl::forward_sequence<axes_type, decltype(axes)>(axes), es);
    +
    585 }
    +
    586
    +
    600 template <class E, class X, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(xtl::negation<is_reducer_options<X>>)>
    +
    +
    601 inline auto norm_lp(E&& e, double p, X&& axes, EVS es = EVS())
    +
    602 {
    +
    603 XTENSOR_PRECONDITION(p != 0, "norm_lp(): p must be nonzero, use norm_l0() instead.");
    +
    604 return pow(norm_lp_to_p(std::forward<E>(e), p, std::forward<X>(axes), es), 1.0 / p);
    +
    605 }
    +
    +
    606
    +
    607 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_xexpression<E>)>
    +
    608 inline auto norm_lp(E&& e, double p, EVS es = EVS())
    +
    609 {
    +
    610 return norm_lp(std::forward<E>(e), p, arange(e.dimension()), es);
    +
    611 }
    +
    612
    +
    613 template <class E, class I, std::size_t N, class EVS = DEFAULT_STRATEGY_REDUCERS>
    +
    614 inline auto norm_lp(E&& e, double p, const I (&axes)[N], EVS es = EVS())
    +
    615 {
    +
    616 using axes_type = std::array<typename std::decay_t<E>::size_type, N>;
    +
    617 return norm_lp(std::forward<E>(e), p, xtl::forward_sequence<axes_type, decltype(axes)>(axes), es);
    +
    618 }
    +
    619
    +
    629 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_xexpression<E>)>
    +
    +
    630 inline auto norm_induced_l1(E&& e, EVS es = EVS())
    +
    631 {
    +
    632 XTENSOR_PRECONDITION(
    +
    633 e.dimension() == 2,
    +
    634 "norm_induced_l1(): only applicable to matrices (e.dimension() must be 2)."
    +
    635 );
    +
    636 return norm_linf(norm_l1(std::forward<E>(e), {0}, es), es);
    +
    637 }
    +
    +
    638
    +
    649 template <class E, class EVS = DEFAULT_STRATEGY_REDUCERS, XTL_REQUIRES(is_xexpression<E>)>
    +
    +
    650 inline auto norm_induced_linf(E&& e, EVS es = EVS())
    +
    651 {
    +
    652 XTENSOR_PRECONDITION(
    +
    653 e.dimension() == 2,
    +
    654 "norm_induced_linf(): only applicable to matrices (e.dimension() must be 2)."
    +
    655 );
    +
    656 return norm_linf(norm_l1(std::forward<E>(e), {1}, es), es);
    +
    657 }
    +
    +
    658
    +
    659} // namespace xt
    +
    660
    +
    661#endif
    +
    auto sqrt(E &&e) noexcept -> detail::xfunction_type_t< math::sqrt_fun, E >
    Square root function.
    Definition xmath.hpp:1238
    +
    auto pow(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< math::pow_fun, E1, E2 >
    Power function.
    Definition xmath.hpp:1014
    +
    auto norm_sq(E &&e, X &&axes, EVS es) noexcept
    Squared L2 norm of an array-like argument over given axes.
    +
    auto norm_induced_linf(E &&e, EVS es=EVS())
    Induced L-infinity norm of a matrix.
    Definition xnorm.hpp:650
    +
    auto norm_lp(E &&e, double p, X &&axes, EVS es=EVS())
    Lp norm of an array-like argument over given axes.
    Definition xnorm.hpp:601
    +
    auto norm_l2(E &&e, EVS es=EVS()) noexcept
    L2 norm of a scalar or array-like argument.
    Definition xnorm.hpp:494
    +
    auto norm_induced_l1(E &&e, EVS es=EVS())
    Induced L1 norm of a matrix.
    Definition xnorm.hpp:630
    +
    auto norm_l1(E &&e, X &&axes, EVS es) noexcept
    L1 norm of an array-like argument over given axes.
    +
    auto norm_lp_to_p(E &&e, double p, X &&axes, EVS es=EVS()) noexcept
    p-th power of the Lp norm of an array-like argument over given axes.
    Definition xnorm.hpp:557
    +
    auto norm_l0(E &&e, X &&axes, EVS es) noexcept
    L0 (count) pseudo-norm of an array-like argument over given axes.
    +
    auto norm_linf(E &&e, X &&axes, EVS es) noexcept
    Infinity (maximum) norm of an array-like argument over given axes.
    +
    decltype(auto) imag(E &&e) noexcept
    Return an xt::xexpression representing the imaginary part of the given expression.
    Definition xcomplex.hpp:144
    +
    decltype(auto) real(E &&e) noexcept
    Return an xt::xexpression representing the real part of the given expression.
    Definition xcomplex.hpp:128
    +
    standard mathematical functions for xexpressions
    +
    auto arange(T start, T stop, S step=1) noexcept
    Generates numbers evenly spaced within given half-open interval [start, stop).
    Definition xbuilder.hpp:432
    +
    auto reduce(F &&f, E &&e, X &&axes, EVS &&options=EVS())
    Returns an xexpression applying the specified reducing function to an expression over the given axes.
    +
    typename squared_norm_type< T >::type squared_norm_type_t
    Abbreviation of 'typename squared_norm_type<T>::type'.
    Definition xnorm.hpp:200
    +
    typename norm_type< T >::type norm_type_t
    Abbreviation of 'typename norm_type<T>::type'.
    Definition xnorm.hpp:167
    + +
    Traits class for the result type of the norm_l2() function.
    Definition xnorm.hpp:154
    +
    Traits class for the result type of the norm_sq() function.
    Definition xnorm.hpp:187
    + + + + +
    +
    + + + + diff --git a/xnpy_8hpp_source.html b/xnpy_8hpp_source.html new file mode 100644 index 000000000..8f5a4d7b0 --- /dev/null +++ b/xnpy_8hpp_source.html @@ -0,0 +1,902 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xnpy.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xnpy.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright Leon Merten Lohse
    +
    4 * Copyright (c) QuantStack *
    +
    5 * *
    +
    6 * Distributed under the terms of the BSD 3-Clause License. *
    +
    7 * *
    +
    8 * The full license is in the file LICENSE, distributed with this software. *
    +
    9 ****************************************************************************/
    +
    10
    +
    11#ifndef XTENSOR_NPY_HPP
    +
    12#define XTENSOR_NPY_HPP
    +
    13
    +
    14// Derived from https://github.com/llohse/libnpy by Leon Merten Lohse,
    +
    15// relicensed from MIT License with permission
    +
    16
    +
    17#include <algorithm>
    +
    18#include <complex>
    +
    19#include <cstdint>
    +
    20#include <cstring>
    +
    21#include <fstream>
    +
    22#include <iostream>
    +
    23#include <memory>
    +
    24#include <regex>
    +
    25#include <sstream>
    +
    26#include <stdexcept>
    +
    27#include <string>
    +
    28#include <typeinfo>
    +
    29#include <vector>
    +
    30
    +
    31#include <xtl/xplatform.hpp>
    +
    32#include <xtl/xsequence.hpp>
    +
    33
    +
    34#include "xtensor/xadapt.hpp"
    +
    35#include "xtensor/xarray.hpp"
    +
    36#include "xtensor/xeval.hpp"
    +
    37#include "xtensor/xstrides.hpp"
    +
    38
    +
    39#include "xtensor_config.hpp"
    +
    40
    +
    41namespace xt
    +
    42{
    +
    43 using namespace std::string_literals;
    +
    44
    +
    45 namespace detail
    +
    46 {
    +
    47
    +
    48 const char magic_string[] = "\x93NUMPY";
    +
    49 const std::size_t magic_string_length = sizeof(magic_string) - 1;
    +
    50
    +
    51 template <class O>
    +
    52 inline void write_magic(O& ostream, unsigned char v_major = 1, unsigned char v_minor = 0)
    +
    53 {
    +
    54 ostream.write(magic_string, magic_string_length);
    +
    55 ostream.put(char(v_major));
    +
    56 ostream.put(char(v_minor));
    +
    57 }
    +
    58
    +
    59 inline void read_magic(std::istream& istream, unsigned char* v_major, unsigned char* v_minor)
    +
    60 {
    +
    61 std::unique_ptr<char[]> buf(new char[magic_string_length + 2]);
    +
    62 istream.read(buf.get(), magic_string_length + 2);
    +
    63
    +
    64 if (!istream)
    +
    65 {
    +
    66 XTENSOR_THROW(std::runtime_error, "io error: failed reading file");
    +
    67 }
    +
    68
    +
    69 for (std::size_t i = 0; i < magic_string_length; i++)
    +
    70 {
    +
    71 if (buf[i] != magic_string[i])
    +
    72 {
    +
    73 XTENSOR_THROW(std::runtime_error, "this file do not have a valid npy format.");
    +
    74 }
    +
    75 }
    +
    76
    +
    77 *v_major = static_cast<unsigned char>(buf[magic_string_length]);
    +
    78 *v_minor = static_cast<unsigned char>(buf[magic_string_length + 1]);
    +
    79 }
    +
    80
    +
    81 template <class T>
    +
    82 inline char map_type()
    +
    83 {
    +
    84 if (std::is_same<T, float>::value)
    +
    85 {
    +
    86 return 'f';
    +
    87 }
    +
    88 if (std::is_same<T, double>::value)
    +
    89 {
    +
    90 return 'f';
    +
    91 }
    +
    92 if (std::is_same<T, long double>::value)
    +
    93 {
    +
    94 return 'f';
    +
    95 }
    +
    96
    +
    97 if (std::is_same<T, char>::value)
    +
    98 {
    +
    99 return 'i';
    +
    100 }
    +
    101 if (std::is_same<T, signed char>::value)
    +
    102 {
    +
    103 return 'i';
    +
    104 }
    +
    105 if (std::is_same<T, short>::value)
    +
    106 {
    +
    107 return 'i';
    +
    108 }
    +
    109 if (std::is_same<T, int>::value)
    +
    110 {
    +
    111 return 'i';
    +
    112 }
    +
    113 if (std::is_same<T, long>::value)
    +
    114 {
    +
    115 return 'i';
    +
    116 }
    +
    117 if (std::is_same<T, long long>::value)
    +
    118 {
    +
    119 return 'i';
    +
    120 }
    +
    121
    +
    122 if (std::is_same<T, unsigned char>::value)
    +
    123 {
    +
    124 return 'u';
    +
    125 }
    +
    126 if (std::is_same<T, unsigned short>::value)
    +
    127 {
    +
    128 return 'u';
    +
    129 }
    +
    130 if (std::is_same<T, unsigned int>::value)
    +
    131 {
    +
    132 return 'u';
    +
    133 }
    +
    134 if (std::is_same<T, unsigned long>::value)
    +
    135 {
    +
    136 return 'u';
    +
    137 }
    +
    138 if (std::is_same<T, unsigned long long>::value)
    +
    139 {
    +
    140 return 'u';
    +
    141 }
    +
    142
    +
    143 if (std::is_same<T, bool>::value)
    +
    144 {
    +
    145 return 'b';
    +
    146 }
    +
    147
    +
    148 if (std::is_same<T, std::complex<float>>::value)
    +
    149 {
    +
    150 return 'c';
    +
    151 }
    +
    152 if (std::is_same<T, std::complex<double>>::value)
    +
    153 {
    +
    154 return 'c';
    +
    155 }
    +
    156 if (std::is_same<T, std::complex<long double>>::value)
    +
    157 {
    +
    158 return 'c';
    +
    159 }
    +
    160
    +
    161 XTENSOR_THROW(std::runtime_error, "Type not known.");
    +
    162 }
    +
    163
    +
    164 template <class T>
    +
    165 inline char get_endianess()
    +
    166 {
    +
    167 constexpr char little_endian_char = '<';
    +
    168 constexpr char big_endian_char = '>';
    +
    169 constexpr char no_endian_char = '|';
    +
    170
    +
    171 if (sizeof(T) <= sizeof(char))
    +
    172 {
    +
    173 return no_endian_char;
    +
    174 }
    +
    175
    +
    176 switch (xtl::endianness())
    +
    177 {
    +
    178 case xtl::endian::little_endian:
    +
    179 return little_endian_char;
    +
    180 case xtl::endian::big_endian:
    +
    181 return big_endian_char;
    +
    182 default:
    +
    183 return no_endian_char;
    +
    184 }
    +
    185 }
    +
    186
    +
    187 template <class T>
    +
    188 inline std::string build_typestring()
    +
    189 {
    +
    190 std::stringstream ss;
    +
    191 ss << get_endianess<T>() << map_type<T>() << sizeof(T);
    +
    192 return ss.str();
    +
    193 }
    +
    194
    +
    195 // Safety check function
    +
    196 inline void parse_typestring(std::string typestring)
    +
    197 {
    +
    198 std::regex re("'([<>|])([ifucb])(\\d+)'");
    +
    199 std::smatch sm;
    +
    200
    +
    201 std::regex_match(typestring, sm, re);
    +
    202 if (sm.size() != 4)
    +
    203 {
    +
    204 XTENSOR_THROW(std::runtime_error, "invalid typestring");
    +
    205 }
    +
    206 }
    +
    207
    +
    208 // Helpers for the improvised parser
    +
    209 inline std::string unwrap_s(std::string s, char delim_front, char delim_back)
    +
    210 {
    +
    211 if ((s.back() == delim_back) && (s.front() == delim_front))
    +
    212 {
    +
    213 return s.substr(1, s.length() - 2);
    +
    214 }
    +
    215 else
    +
    216 {
    +
    217 XTENSOR_THROW(std::runtime_error, "unable to unwrap");
    +
    218 }
    +
    219 }
    +
    220
    +
    221 inline std::string get_value_from_map(std::string mapstr)
    +
    222 {
    +
    223 std::size_t sep_pos = mapstr.find_first_of(":");
    +
    224 if (sep_pos == std::string::npos)
    +
    225 {
    +
    226 return "";
    +
    227 }
    +
    228
    +
    229 return mapstr.substr(sep_pos + 1);
    +
    230 }
    +
    231
    +
    232 inline void pop_char(std::string& s, char c)
    +
    233 {
    +
    234 if (s.back() == c)
    +
    235 {
    +
    236 s.pop_back();
    +
    237 }
    +
    238 }
    +
    239
    +
    240 inline void
    +
    241 parse_header(std::string header, std::string& descr, bool* fortran_order, std::vector<std::size_t>& shape)
    +
    242 {
    +
    243 // The first 6 bytes are a magic string: exactly "x93NUMPY".
    +
    244 //
    +
    245 // The next 1 byte is an unsigned byte: the major version number of the file
    +
    246 // format, e.g. x01.
    +
    247 //
    +
    248 // The next 1 byte is an unsigned byte: the minor version number of the file
    +
    249 // format, e.g. x00. Note: the version of the file format is not tied to the
    +
    250 // version of the NumPy package.
    +
    251 //
    +
    252 // The next 2 bytes form a little-endian unsigned short int: the length of the
    +
    253 // header data HEADER_LEN.
    +
    254 //
    +
    255 // The next HEADER_LEN bytes form the header data describing the array's
    +
    256 // format. It is an ASCII string which contains a Python literal expression of
    +
    257 // a dictionary. It is terminated by a newline ('n') and padded with spaces
    +
    258 // ('x20') to make the total length of the magic string + 4 + HEADER_LEN be
    +
    259 // evenly divisible by 16 for alignment purposes.
    +
    260 //
    +
    261 // The dictionary contains three keys:
    +
    262 //
    +
    263 // "descr" : dtype.descr
    +
    264 // An object that can be passed as an argument to the numpy.dtype()
    +
    265 // constructor to create the array's dtype.
    +
    266 // "fortran_order" : bool
    +
    267 // Whether the array data is Fortran-contiguous or not. Since
    +
    268 // Fortran-contiguous arrays are a common form of non-C-contiguity, we allow
    +
    269 // them to be written directly to disk for efficiency.
    +
    270 // "shape" : tuple of int
    +
    271 // The shape of the array.
    +
    272 // For repeatability and readability, this dictionary is formatted using
    +
    273 // pprint.pformat() so the keys are in alphabetic order.
    +
    274
    +
    275 // remove trailing newline
    +
    276 if (header.back() != '\n')
    +
    277 {
    +
    278 XTENSOR_THROW(std::runtime_error, "invalid header");
    +
    279 }
    +
    280 header.pop_back();
    +
    281
    +
    282 // remove all whitespaces
    +
    283 header.erase(std::remove(header.begin(), header.end(), ' '), header.end());
    +
    284
    +
    285 // unwrap dictionary
    +
    286 header = unwrap_s(header, '{', '}');
    +
    287
    +
    288 // find the positions of the 3 dictionary keys
    +
    289 std::size_t keypos_descr = header.find("'descr'");
    +
    290 std::size_t keypos_fortran = header.find("'fortran_order'");
    +
    291 std::size_t keypos_shape = header.find("'shape'");
    +
    292
    +
    293 // make sure all the keys are present
    +
    294 if (keypos_descr == std::string::npos)
    +
    295 {
    +
    296 XTENSOR_THROW(std::runtime_error, "missing 'descr' key");
    +
    297 }
    +
    298 if (keypos_fortran == std::string::npos)
    +
    299 {
    +
    300 XTENSOR_THROW(std::runtime_error, "missing 'fortran_order' key");
    +
    301 }
    +
    302 if (keypos_shape == std::string::npos)
    +
    303 {
    +
    304 XTENSOR_THROW(std::runtime_error, "missing 'shape' key");
    +
    305 }
    +
    306
    +
    307 // Make sure the keys are in order.
    +
    308 // Note that this violates the standard, which states that readers *must* not
    +
    309 // depend on the correct order here.
    +
    310 // TODO: fix
    +
    311 if (keypos_descr >= keypos_fortran || keypos_fortran >= keypos_shape)
    +
    312 {
    +
    313 XTENSOR_THROW(std::runtime_error, "header keys in wrong order");
    +
    314 }
    +
    315
    +
    316 // get the 3 key-value pairs
    +
    317 std::string keyvalue_descr;
    +
    318 keyvalue_descr = header.substr(keypos_descr, keypos_fortran - keypos_descr);
    +
    319 pop_char(keyvalue_descr, ',');
    +
    320
    +
    321 std::string keyvalue_fortran;
    +
    322 keyvalue_fortran = header.substr(keypos_fortran, keypos_shape - keypos_fortran);
    +
    323 pop_char(keyvalue_fortran, ',');
    +
    324
    +
    325 std::string keyvalue_shape;
    +
    326 keyvalue_shape = header.substr(keypos_shape, std::string::npos);
    +
    327 pop_char(keyvalue_shape, ',');
    +
    328
    +
    329 // get the values (right side of `:')
    +
    330 std::string descr_s = get_value_from_map(keyvalue_descr);
    +
    331 std::string fortran_s = get_value_from_map(keyvalue_fortran);
    +
    332 std::string shape_s = get_value_from_map(keyvalue_shape);
    +
    333
    +
    334 parse_typestring(descr_s);
    +
    335 descr = unwrap_s(descr_s, '\'', '\'');
    +
    336
    +
    337 // convert literal Python bool to C++ bool
    +
    338 if (fortran_s == "True")
    +
    339 {
    +
    340 *fortran_order = true;
    +
    341 }
    +
    342 else if (fortran_s == "False")
    +
    343 {
    +
    344 *fortran_order = false;
    +
    345 }
    +
    346 else
    +
    347 {
    +
    348 XTENSOR_THROW(std::runtime_error, "invalid fortran_order value");
    +
    349 }
    +
    350
    +
    351 // parse the shape Python tuple ( x, y, z,)
    +
    352
    +
    353 // first clear the vector
    +
    354 shape.clear();
    +
    355 shape_s = unwrap_s(shape_s, '(', ')');
    +
    356
    +
    357 // a tokenizer would be nice...
    +
    358 std::size_t pos = 0;
    +
    359 for (;;)
    +
    360 {
    +
    361 std::size_t pos_next = shape_s.find_first_of(',', pos);
    +
    362 std::string dim_s;
    +
    363
    +
    364 if (pos_next != std::string::npos)
    +
    365 {
    +
    366 dim_s = shape_s.substr(pos, pos_next - pos);
    +
    367 }
    +
    368 else
    +
    369 {
    +
    370 dim_s = shape_s.substr(pos);
    +
    371 }
    +
    372
    +
    373 if (dim_s.length() == 0)
    +
    374 {
    +
    375 if (pos_next != std::string::npos)
    +
    376 {
    +
    377 XTENSOR_THROW(std::runtime_error, "invalid shape");
    +
    378 }
    +
    379 }
    +
    380 else
    +
    381 {
    +
    382 std::stringstream ss;
    +
    383 ss << dim_s;
    +
    384 std::size_t tmp;
    +
    385 ss >> tmp;
    +
    386 shape.push_back(tmp);
    +
    387 }
    +
    388
    +
    389 if (pos_next != std::string::npos)
    +
    390 {
    +
    391 pos = ++pos_next;
    +
    392 }
    +
    393 else
    +
    394 {
    +
    395 break;
    +
    396 }
    +
    397 }
    +
    398 }
    +
    399
    +
    400 template <class O, class S>
    +
    401 inline void write_header(O& out, const std::string& descr, bool fortran_order, const S& shape)
    +
    402 {
    +
    403 std::ostringstream ss_header;
    +
    404 std::string s_fortran_order;
    +
    405 if (fortran_order)
    +
    406 {
    +
    407 s_fortran_order = "True";
    +
    408 }
    +
    409 else
    +
    410 {
    +
    411 s_fortran_order = "False";
    +
    412 }
    +
    413
    +
    414 std::string s_shape;
    +
    415 std::ostringstream ss_shape;
    +
    416 ss_shape << "(";
    +
    417 for (auto shape_it = std::begin(shape); shape_it != std::end(shape); ++shape_it)
    +
    418 {
    +
    419 ss_shape << *shape_it << ", ";
    +
    420 }
    +
    421 s_shape = ss_shape.str();
    +
    422 if (xtl::sequence_size(shape) > 1)
    +
    423 {
    +
    424 s_shape = s_shape.erase(s_shape.size() - 2);
    +
    425 }
    +
    426 else if (xtl::sequence_size(shape) == 1)
    +
    427 {
    +
    428 s_shape = s_shape.erase(s_shape.size() - 1);
    +
    429 }
    +
    430 s_shape += ")";
    +
    431
    +
    432 ss_header << "{'descr': '" << descr << "', 'fortran_order': " << s_fortran_order
    +
    433 << ", 'shape': " << s_shape << ", }";
    +
    434
    +
    435 std::size_t header_len_pre = ss_header.str().length() + 1;
    +
    436 std::size_t metadata_len = magic_string_length + 2 + 2 + header_len_pre;
    +
    437
    +
    438 unsigned char version[2] = {1, 0};
    +
    439 if (metadata_len >= 255 * 255)
    +
    440 {
    +
    441 metadata_len = magic_string_length + 2 + 4 + header_len_pre;
    +
    442 version[0] = 2;
    +
    443 version[1] = 0;
    +
    444 }
    +
    445 std::size_t padding_len = 64 - (metadata_len % 64);
    +
    446 std::string padding(padding_len, ' ');
    +
    447 ss_header << padding;
    +
    448 ss_header << std::endl;
    +
    449
    +
    450 std::string header = ss_header.str();
    +
    451
    +
    452 // write magic
    +
    453 write_magic(out, version[0], version[1]);
    +
    454
    +
    455 // write header length
    +
    456 if (version[0] == 1 && version[1] == 0)
    +
    457 {
    +
    458 char header_len_le16[2];
    +
    459 uint16_t header_len = uint16_t(header.length());
    +
    460
    +
    461 header_len_le16[0] = char((header_len >> 0) & 0xff);
    +
    462 header_len_le16[1] = char((header_len >> 8) & 0xff);
    +
    463 out.write(reinterpret_cast<char*>(header_len_le16), 2);
    +
    464 }
    +
    465 else
    +
    466 {
    +
    467 char header_len_le32[4];
    +
    468 uint32_t header_len = uint32_t(header.length());
    +
    469
    +
    470 header_len_le32[0] = char((header_len >> 0) & 0xff);
    +
    471 header_len_le32[1] = char((header_len >> 8) & 0xff);
    +
    472 header_len_le32[2] = char((header_len >> 16) & 0xff);
    +
    473 header_len_le32[3] = char((header_len >> 24) & 0xff);
    +
    474 out.write(reinterpret_cast<char*>(header_len_le32), 4);
    +
    475 }
    +
    476
    +
    477 out << header;
    +
    478 }
    +
    479
    +
    480 inline std::string read_header_1_0(std::istream& istream)
    +
    481 {
    +
    482 // read header length and convert from little endian
    +
    483 char header_len_le16[2];
    +
    484 istream.read(header_len_le16, 2);
    +
    485
    +
    486 uint16_t header_length = uint16_t(header_len_le16[0] << 0) | uint16_t(header_len_le16[1] << 8);
    +
    487
    +
    488 if ((magic_string_length + 2 + 2 + header_length) % 16 != 0)
    +
    489 {
    +
    490 // TODO: display warning
    +
    491 }
    +
    492
    +
    493 std::unique_ptr<char[]> buf(new char[header_length]);
    +
    494 istream.read(buf.get(), header_length);
    +
    495 std::string header(buf.get(), header_length);
    +
    496
    +
    497 return header;
    +
    498 }
    +
    499
    +
    500 inline std::string read_header_2_0(std::istream& istream)
    +
    501 {
    +
    502 // read header length and convert from little endian
    +
    503 char header_len_le32[4];
    +
    504 istream.read(header_len_le32, 4);
    +
    505
    +
    506 uint32_t header_length = uint32_t(header_len_le32[0] << 0) | uint32_t(header_len_le32[1] << 8)
    +
    507 | uint32_t(header_len_le32[2] << 16) | uint32_t(header_len_le32[3] << 24);
    +
    508
    +
    509 if ((magic_string_length + 2 + 4 + header_length) % 16 != 0)
    +
    510 {
    +
    511 // TODO: display warning
    +
    512 }
    +
    513
    +
    514 std::unique_ptr<char[]> buf(new char[header_length]);
    +
    515 istream.read(buf.get(), header_length);
    +
    516 std::string header(buf.get(), header_length);
    +
    517
    +
    518 return header;
    +
    519 }
    +
    520
    +
    521 struct npy_file
    +
    522 {
    +
    523 npy_file() = default;
    +
    524
    +
    525 npy_file(std::vector<std::size_t>& shape, bool fortran_order, std::string typestring)
    +
    526 : m_shape(shape)
    +
    527 , m_fortran_order(fortran_order)
    +
    528 , m_typestring(typestring)
    +
    529 {
    +
    530 // Allocate memory
    +
    531 m_word_size = std::size_t(atoi(&typestring[2]));
    +
    532 m_n_bytes = compute_size(shape) * m_word_size;
    +
    533 m_buffer = std::allocator<char>{}.allocate(m_n_bytes);
    +
    534 }
    +
    535
    +
    536 ~npy_file()
    +
    537 {
    +
    538 if (m_buffer != nullptr)
    +
    539 {
    +
    540 std::allocator<char>{}.deallocate(m_buffer, m_n_bytes);
    +
    541 }
    +
    542 }
    +
    543
    +
    544 // delete copy constructor
    +
    545 npy_file(const npy_file&) = delete;
    +
    546 npy_file& operator=(const npy_file&) = delete;
    +
    547
    +
    548 // implement move constructor and assignment
    +
    549 npy_file(npy_file&& rhs)
    +
    550 : m_shape(std::move(rhs.m_shape))
    +
    551 , m_fortran_order(std::move(rhs.m_fortran_order))
    +
    552 , m_word_size(std::move(rhs.m_word_size))
    +
    553 , m_n_bytes(std::move(rhs.m_n_bytes))
    +
    554 , m_typestring(std::move(rhs.m_typestring))
    +
    555 , m_buffer(rhs.m_buffer)
    +
    556 {
    +
    557 rhs.m_buffer = nullptr;
    +
    558 }
    +
    559
    +
    560 npy_file& operator=(npy_file&& rhs)
    +
    561 {
    +
    562 if (this != &rhs)
    +
    563 {
    +
    564 m_shape = std::move(rhs.m_shape);
    +
    565 m_fortran_order = std::move(rhs.m_fortran_order);
    +
    566 m_word_size = std::move(rhs.m_word_size);
    +
    567 m_n_bytes = std::move(rhs.m_n_bytes);
    +
    568 m_typestring = std::move(rhs.m_typestring);
    +
    569 m_buffer = rhs.m_buffer;
    +
    570 rhs.m_buffer = nullptr;
    +
    571 }
    +
    572 return *this;
    +
    573 }
    +
    574
    +
    575 template <class T, layout_type L>
    +
    576 auto cast_impl(bool check_type)
    +
    577 {
    +
    578 if (m_buffer == nullptr)
    +
    579 {
    +
    580 XTENSOR_THROW(std::runtime_error, "This npy_file has already been cast.");
    +
    581 }
    +
    582 T* ptr = reinterpret_cast<T*>(&m_buffer[0]);
    +
    583 std::vector<std::size_t> strides(m_shape.size());
    +
    584 std::size_t sz = compute_size(m_shape);
    +
    585
    +
    586 // check if the typestring matches the given one
    +
    587 if (check_type && m_typestring != detail::build_typestring<T>())
    +
    588 {
    +
    589 XTENSOR_THROW(
    +
    590 std::runtime_error,
    +
    591 "Cast error: formats not matching "s + m_typestring + " vs "s
    +
    592 + detail::build_typestring<T>()
    +
    593 );
    +
    594 }
    +
    595
    +
    596 if ((L == layout_type::column_major && !m_fortran_order)
    +
    597 || (L == layout_type::row_major && m_fortran_order))
    +
    598 {
    +
    599 XTENSOR_THROW(
    +
    600 std::runtime_error,
    +
    601 "Cast error: layout mismatch between npy file and requested layout."
    +
    602 );
    +
    603 }
    +
    604
    + +
    606 m_shape,
    + +
    608 strides
    +
    609 );
    +
    610 std::vector<std::size_t> shape(m_shape);
    +
    611
    +
    612 return std::make_tuple(ptr, sz, std::move(shape), std::move(strides));
    +
    613 }
    +
    614
    +
    615 template <class T, layout_type L = layout_type::dynamic>
    +
    616 auto cast(bool check_type = true) &&
    +
    617 {
    +
    618 auto cast_elems = cast_impl<T, L>(check_type);
    +
    619 m_buffer = nullptr;
    +
    620 return adapt(
    +
    621 std::move(std::get<0>(cast_elems)),
    +
    622 std::get<1>(cast_elems),
    +
    623 acquire_ownership(),
    +
    624 std::get<2>(cast_elems),
    +
    625 std::get<3>(cast_elems)
    +
    626 );
    +
    627 }
    +
    628
    +
    629 template <class T, layout_type L = layout_type::dynamic>
    +
    630 auto cast(bool check_type = true) const&
    +
    631 {
    +
    632 auto cast_elems = cast_impl<T, L>(check_type);
    +
    633 return adapt(
    +
    634 std::get<0>(cast_elems),
    +
    635 std::get<1>(cast_elems),
    +
    636 no_ownership(),
    +
    637 std::get<2>(cast_elems),
    +
    638 std::get<3>(cast_elems)
    +
    639 );
    +
    640 }
    +
    641
    +
    642 template <class T, layout_type L = layout_type::dynamic>
    +
    643 auto cast(bool check_type = true) &
    +
    644 {
    +
    645 auto cast_elems = cast_impl<T, L>(check_type);
    +
    646 return adapt(
    +
    647 std::get<0>(cast_elems),
    +
    648 std::get<1>(cast_elems),
    +
    649 no_ownership(),
    +
    650 std::get<2>(cast_elems),
    +
    651 std::get<3>(cast_elems)
    +
    652 );
    +
    653 }
    +
    654
    +
    655 char* ptr()
    +
    656 {
    +
    657 return m_buffer;
    +
    658 }
    +
    659
    +
    660 std::size_t n_bytes()
    +
    661 {
    +
    662 return m_n_bytes;
    +
    663 }
    +
    664
    +
    665 std::vector<std::size_t> m_shape;
    +
    666 bool m_fortran_order;
    +
    667 std::size_t m_word_size;
    +
    668 std::size_t m_n_bytes;
    +
    669 std::string m_typestring;
    +
    670 char* m_buffer;
    +
    671 };
    +
    672
    +
    673 inline npy_file load_npy_file(std::istream& stream)
    +
    674 {
    +
    675 // check magic bytes an version number
    +
    676 unsigned char v_major, v_minor;
    +
    677 detail::read_magic(stream, &v_major, &v_minor);
    +
    678
    +
    679 std::string header;
    +
    680
    +
    681 if (v_major == 1 && v_minor == 0)
    +
    682 {
    +
    683 header = detail::read_header_1_0(stream);
    +
    684 }
    +
    685 else if (v_major == 2 && v_minor == 0)
    +
    686 {
    +
    687 header = detail::read_header_2_0(stream);
    +
    688 }
    +
    689 else
    +
    690 {
    +
    691 XTENSOR_THROW(std::runtime_error, "unsupported file format version");
    +
    692 }
    +
    693
    +
    694 // parse header
    +
    695 bool fortran_order;
    +
    696 std::string typestr;
    +
    697
    +
    698 std::vector<std::size_t> shape;
    +
    699 detail::parse_header(header, typestr, &fortran_order, shape);
    +
    700
    +
    701 npy_file result(shape, fortran_order, typestr);
    +
    702 // read the data
    +
    703 stream.read(result.ptr(), std::streamsize((result.n_bytes())));
    +
    704 return result;
    +
    705 }
    +
    706
    +
    707 template <class O, class E>
    +
    708 inline void dump_npy_stream(O& stream, const xexpression<E>& e)
    +
    709 {
    +
    710 using value_type = typename E::value_type;
    +
    711 const E& ex = e.derived_cast();
    +
    712 auto&& eval_ex = eval(ex);
    +
    713 bool fortran_order = false;
    +
    714 if (eval_ex.layout() == layout_type::column_major && eval_ex.dimension() > 1)
    +
    715 {
    +
    716 fortran_order = true;
    +
    717 }
    +
    718
    +
    719 std::string typestring = detail::build_typestring<value_type>();
    +
    720
    +
    721 auto shape = eval_ex.shape();
    +
    722 detail::write_header(stream, typestring, fortran_order, shape);
    +
    723
    +
    724 std::size_t size = compute_size(shape);
    +
    725 stream.write(
    +
    726 reinterpret_cast<const char*>(eval_ex.data()),
    +
    727 std::streamsize((sizeof(value_type) * size))
    +
    728 );
    +
    729 }
    +
    730 } // namespace detail
    +
    731
    +
    738 template <typename E>
    +
    +
    739 inline void dump_npy(const std::string& filename, const xexpression<E>& e)
    +
    740 {
    +
    741 std::ofstream stream(filename, std::ofstream::binary);
    +
    742 if (!stream)
    +
    743 {
    +
    744 XTENSOR_THROW(std::runtime_error, "IO Error: failed to open file: "s + filename);
    +
    745 }
    +
    746
    +
    747 detail::dump_npy_stream(stream, e);
    +
    748 }
    +
    +
    749
    +
    755 template <typename E>
    +
    +
    756 inline std::string dump_npy(const xexpression<E>& e)
    +
    757 {
    +
    758 std::stringstream stream;
    +
    759 detail::dump_npy_stream(stream, e);
    +
    760 return stream.str();
    +
    761 }
    +
    +
    762
    +
    773 template <typename T, layout_type L = layout_type::dynamic>
    +
    +
    774 inline auto load_npy(std::istream& stream)
    +
    775 {
    +
    776 detail::npy_file file = detail::load_npy_file(stream);
    +
    777 return std::move(file).cast<T, L>();
    +
    778 }
    +
    +
    779
    +
    790 template <typename T, layout_type L = layout_type::dynamic>
    +
    +
    791 inline auto load_npy(const std::string& filename)
    +
    792 {
    +
    793 std::ifstream stream(filename, std::ifstream::binary);
    +
    794 if (!stream)
    +
    795 {
    +
    796 XTENSOR_THROW(std::runtime_error, "io error: failed to open a file.");
    +
    797 }
    +
    798 return load_npy<T, L>(stream);
    +
    799 }
    +
    +
    800
    +
    801} // namespace xt
    +
    802
    +
    803#endif
    +
    Base class for xexpressions.
    +
    auto cast(E &&e) noexcept -> detail::xfunction_type_t< typename detail::cast< R >::functor, E >
    Element-wise static_cast.
    +
    auto adapt(C &&container, const SC &shape, layout_type l=L)
    Constructs:
    +
    auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
    Force evaluation of xexpression.
    Definition xeval.hpp:46
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto load_npy(std::istream &stream)
    Loads a npy file (the NumPy storage format)
    Definition xnpy.hpp:774
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    void dump_npy(const std::string &filename, const xexpression< E > &e)
    Save xexpression to NumPy npy format.
    Definition xnpy.hpp:739
    +
    +
    + + + + diff --git a/xoffset__view_8hpp_source.html b/xoffset__view_8hpp_source.html new file mode 100644 index 000000000..ca14bd8d5 --- /dev/null +++ b/xoffset__view_8hpp_source.html @@ -0,0 +1,206 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xoffset_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xoffset_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_OFFSET_VIEW_HPP
    +
    11#define XTENSOR_OFFSET_VIEW_HPP
    +
    12
    +
    13#include <xtl/xcomplex.hpp>
    +
    14
    +
    15#include "xtensor/xfunctor_view.hpp"
    +
    16
    +
    17namespace xt
    +
    18{
    +
    19 namespace detail
    +
    20 {
    +
    21 template <class M, std::size_t I>
    +
    22 struct offset_forwarder
    +
    23 {
    +
    24 using value_type = M;
    +
    25 using reference = M&;
    +
    26 using const_reference = const M&;
    +
    27 using pointer = M*;
    +
    28 using const_pointer = const M*;
    +
    29
    +
    30 using proxy = xtl::xproxy_wrapper<M>;
    +
    31
    +
    32 template <class value_type, class requested_type>
    +
    33 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    34
    +
    35 template <class T>
    +
    36 decltype(auto) operator()(T&& t) const
    +
    37 {
    +
    38 return xtl::forward_offset<M, I>(std::forward<T>(t));
    +
    39 }
    +
    40
    +
    41 template <
    +
    42 class align,
    +
    43 class requested_type,
    +
    44 std::size_t N,
    +
    45 class E,
    +
    46 class MF = M,
    +
    47 class = std::enable_if_t<
    +
    48 (std::is_same<MF, double>::value || std::is_same<MF, float>::value) && I <= sizeof(MF),
    +
    49 int>>
    +
    50 auto proxy_simd_load(const E& expr, std::size_t n) const
    +
    51 {
    +
    52 // TODO refactor using shuffle only
    +
    53 auto batch = expr.template load_simd<align, requested_type, N>(n);
    +
    54 if (I == 0)
    +
    55 {
    +
    56 return batch.real();
    +
    57 }
    +
    58 else
    +
    59 {
    +
    60 return batch.imag();
    +
    61 }
    +
    62 }
    +
    63
    +
    64 template <
    +
    65 class align,
    +
    66 class simd,
    +
    67 class E,
    +
    68 class MF = M,
    +
    69 class = std::enable_if_t<
    +
    70 (std::is_same<MF, double>::value || std::is_same<MF, float>::value) && I <= sizeof(MF),
    +
    71 int>>
    +
    72 auto proxy_simd_store(E& expr, std::size_t n, const simd& batch) const
    +
    73 {
    +
    74 auto x = expr.template load_simd<align, double, simd::size>(n);
    +
    75 if (I == 0)
    +
    76 {
    +
    77 x.real() = batch;
    +
    78 }
    +
    79 else
    +
    80 {
    +
    81 x.imag() = batch;
    +
    82 }
    +
    83 expr.template store_simd<align>(n, x);
    +
    84 }
    +
    85 };
    +
    86 }
    +
    87
    +
    88 template <class CT, class M, std::size_t I>
    +
    89 using xoffset_view = xfunctor_view<detail::offset_forwarder<M, I>, CT>;
    +
    90
    +
    91 template <class CT, class M, std::size_t I>
    +
    92 using xoffset_adaptor = xfunctor_adaptor<detail::offset_forwarder<M, I>, CT>;
    +
    93}
    +
    94
    +
    95#endif
    +
    standard mathematical functions for xexpressions
    +
    +
    + + + + diff --git a/xoperation_8hpp_source.html b/xoperation_8hpp_source.html new file mode 100644 index 000000000..409c8e366 --- /dev/null +++ b/xoperation_8hpp_source.html @@ -0,0 +1,827 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xoperation.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xoperation.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_OPERATION_HPP
    +
    11#define XTENSOR_OPERATION_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <functional>
    +
    15#include <type_traits>
    +
    16
    +
    17#include <xtl/xsequence.hpp>
    +
    18
    +
    19#include "xfunction.hpp"
    +
    20#include "xscalar.hpp"
    +
    21#include "xstrided_view.hpp"
    +
    22#include "xstrides.hpp"
    +
    23
    +
    24namespace xt
    +
    25{
    +
    26
    +
    27 /***********
    +
    28 * helpers *
    +
    29 ***********/
    +
    30
    +
    31#define UNARY_OPERATOR_FUNCTOR(NAME, OP) \
    +
    32 struct NAME \
    +
    33 { \
    +
    34 template <class A1> \
    +
    35 constexpr auto operator()(const A1& arg) const \
    +
    36 { \
    +
    37 return OP arg; \
    +
    38 } \
    +
    39 template <class B> \
    +
    40 constexpr auto simd_apply(const B& arg) const \
    +
    41 { \
    +
    42 return OP arg; \
    +
    43 } \
    +
    44 }
    +
    45
    +
    46#define DEFINE_COMPLEX_OVERLOAD(OP) \
    +
    47 template <class T1, class T2, XTL_REQUIRES(xtl::negation<std::is_same<T1, T2>>)> \
    +
    48 constexpr auto operator OP(const std::complex<T1>& arg1, const std::complex<T2>& arg2) \
    +
    49 { \
    +
    50 using result_type = typename xtl::promote_type_t<std::complex<T1>, std::complex<T2>>; \
    +
    51 return (result_type(arg1) OP result_type(arg2)); \
    +
    52 } \
    +
    53 \
    +
    54 template <class T1, class T2, XTL_REQUIRES(xtl::negation<std::is_same<T1, T2>>)> \
    +
    55 constexpr auto operator OP(const T1& arg1, const std::complex<T2>& arg2) \
    +
    56 { \
    +
    57 using result_type = typename xtl::promote_type_t<T1, std::complex<T2>>; \
    +
    58 return (result_type(arg1) OP result_type(arg2)); \
    +
    59 } \
    +
    60 \
    +
    61 template <class T1, class T2, XTL_REQUIRES(xtl::negation<std::is_same<T1, T2>>)> \
    +
    62 constexpr auto operator OP(const std::complex<T1>& arg1, const T2& arg2) \
    +
    63 { \
    +
    64 using result_type = typename xtl::promote_type_t<std::complex<T1>, T2>; \
    +
    65 return (result_type(arg1) OP result_type(arg2)); \
    +
    66 }
    +
    67
    +
    68#define BINARY_OPERATOR_FUNCTOR(NAME, OP) \
    +
    69 struct NAME \
    +
    70 { \
    +
    71 template <class T1, class T2> \
    +
    72 constexpr auto operator()(T1&& arg1, T2&& arg2) const \
    +
    73 { \
    +
    74 using xt::detail::operator OP; \
    +
    75 return (std::forward<T1>(arg1) OP std::forward<T2>(arg2)); \
    +
    76 } \
    +
    77 template <class B> \
    +
    78 constexpr auto simd_apply(const B& arg1, const B& arg2) const \
    +
    79 { \
    +
    80 return (arg1 OP arg2); \
    +
    81 } \
    +
    82 }
    +
    83
    +
    84 namespace detail
    +
    85 {
    +
    86 DEFINE_COMPLEX_OVERLOAD(+);
    +
    87 DEFINE_COMPLEX_OVERLOAD(-);
    +
    88 DEFINE_COMPLEX_OVERLOAD(*);
    +
    89 DEFINE_COMPLEX_OVERLOAD(/);
    +
    90 DEFINE_COMPLEX_OVERLOAD(%);
    +
    91 DEFINE_COMPLEX_OVERLOAD(||);
    +
    92 DEFINE_COMPLEX_OVERLOAD(&&);
    +
    93 DEFINE_COMPLEX_OVERLOAD(|);
    +
    94 DEFINE_COMPLEX_OVERLOAD(&);
    +
    95 DEFINE_COMPLEX_OVERLOAD(^);
    +
    96 DEFINE_COMPLEX_OVERLOAD(<<);
    +
    97 DEFINE_COMPLEX_OVERLOAD(>>);
    +
    98 DEFINE_COMPLEX_OVERLOAD(<);
    +
    99 DEFINE_COMPLEX_OVERLOAD(<=);
    +
    100 DEFINE_COMPLEX_OVERLOAD(>);
    +
    101 DEFINE_COMPLEX_OVERLOAD(>=);
    +
    102 DEFINE_COMPLEX_OVERLOAD(==);
    +
    103 DEFINE_COMPLEX_OVERLOAD(!=);
    +
    104
    +
    105 UNARY_OPERATOR_FUNCTOR(identity, +);
    +
    106 UNARY_OPERATOR_FUNCTOR(negate, -);
    +
    107 BINARY_OPERATOR_FUNCTOR(plus, +);
    +
    108 BINARY_OPERATOR_FUNCTOR(minus, -);
    +
    109 BINARY_OPERATOR_FUNCTOR(multiplies, *);
    +
    110 BINARY_OPERATOR_FUNCTOR(divides, /);
    +
    111 BINARY_OPERATOR_FUNCTOR(modulus, %);
    +
    112 BINARY_OPERATOR_FUNCTOR(logical_or, ||);
    +
    113 BINARY_OPERATOR_FUNCTOR(logical_and, &&);
    +
    114 UNARY_OPERATOR_FUNCTOR(logical_not, !);
    +
    115 BINARY_OPERATOR_FUNCTOR(bitwise_or, |);
    +
    116 BINARY_OPERATOR_FUNCTOR(bitwise_and, &);
    +
    117 BINARY_OPERATOR_FUNCTOR(bitwise_xor, ^);
    +
    118 UNARY_OPERATOR_FUNCTOR(bitwise_not, ~);
    +
    119 BINARY_OPERATOR_FUNCTOR(left_shift, <<);
    +
    120 BINARY_OPERATOR_FUNCTOR(right_shift, >>);
    +
    121 BINARY_OPERATOR_FUNCTOR(less, <);
    +
    122 BINARY_OPERATOR_FUNCTOR(less_equal, <=);
    +
    123 BINARY_OPERATOR_FUNCTOR(greater, >);
    +
    124 BINARY_OPERATOR_FUNCTOR(greater_equal, >=);
    +
    125 BINARY_OPERATOR_FUNCTOR(equal_to, ==);
    +
    126 BINARY_OPERATOR_FUNCTOR(not_equal_to, !=);
    +
    127
    +
    128 struct conditional_ternary
    +
    129 {
    +
    130 template <class B>
    +
    131 using get_batch_bool = typename xt_simd::simd_traits<typename xt_simd::revert_simd_traits<B>::type>::bool_type;
    +
    132
    +
    133 template <class B, class A1, class A2>
    +
    134 constexpr auto operator()(const B& cond, const A1& v1, const A2& v2) const noexcept
    +
    135 {
    +
    136 return xtl::select(cond, v1, v2);
    +
    137 }
    +
    138
    +
    139 template <class B>
    +
    140 constexpr B simd_apply(const get_batch_bool<B>& t1, const B& t2, const B& t3) const noexcept
    +
    141 {
    +
    142 return xt_simd::select(t1, t2, t3);
    +
    143 }
    +
    144 };
    +
    145
    +
    146 template <class R>
    +
    147 struct cast
    +
    148 {
    +
    149 struct functor
    +
    150 {
    +
    151 using result_type = R;
    +
    152
    +
    153 template <class A1>
    +
    154 constexpr result_type operator()(const A1& arg) const
    +
    155 {
    +
    156 return static_cast<R>(arg);
    +
    157 }
    +
    158
    +
    159 // SIMD conversion disabled for now since it does not make sense
    +
    160 // in most of the cases
    +
    161 /*constexpr simd_result_type simd_apply(const simd_value_type& arg) const
    +
    162 {
    +
    163 return static_cast<R>(arg);
    +
    164 }*/
    +
    165 };
    +
    166 };
    +
    167
    +
    168 template <class Tag, class F, class... E>
    +
    169 struct select_xfunction_expression;
    +
    170
    +
    171 template <class F, class... E>
    +
    172 struct select_xfunction_expression<xtensor_expression_tag, F, E...>
    +
    173 {
    +
    174 using type = xfunction<F, E...>;
    +
    175 };
    +
    176
    +
    177 template <class F, class... E>
    +
    178 struct select_xfunction_expression<xoptional_expression_tag, F, E...>
    +
    179 {
    +
    180 using type = xfunction<F, E...>;
    +
    181 };
    +
    182
    +
    183 template <class Tag, class F, class... E>
    +
    184 using select_xfunction_expression_t = typename select_xfunction_expression<Tag, F, E...>::type;
    +
    185
    +
    186 template <class F, class... E>
    +
    187 struct xfunction_type
    +
    188 {
    +
    189 using expression_tag = xexpression_tag_t<E...>;
    +
    190 using functor_type = F;
    +
    191 using type = select_xfunction_expression_t<expression_tag, functor_type, const_xclosure_t<E>...>;
    +
    192 };
    +
    193
    +
    194 template <class F, class... E>
    +
    195 inline auto make_xfunction(E&&... e) noexcept
    +
    196 {
    +
    197 using function_type = xfunction_type<F, E...>;
    +
    198 using functor_type = typename function_type::functor_type;
    +
    199 using type = typename function_type::type;
    +
    200 return type(functor_type(), std::forward<E>(e)...);
    +
    201 }
    +
    202
    +
    203 // On MSVC, the second argument of enable_if_t is always evaluated, even if the condition is false.
    +
    204 // Wrapping the xfunction type in the xfunction_type metafunction avoids this evaluation when
    +
    205 // the condition is false, since it leads to a tricky bug preventing from using operator+ and
    +
    206 // operator- on vector and arrays iterators.
    +
    207 template <class F, class... E>
    +
    208 using xfunction_type_t = typename std::
    +
    209 enable_if_t<has_xexpression<std::decay_t<E>...>::value, xfunction_type<F, E...>>::type;
    +
    210 }
    +
    211
    +
    212#undef UNARY_OPERATOR_FUNCTOR
    +
    213#undef BINARY_OPERATOR_FUNCTOR
    +
    214
    +
    215 /*************
    +
    216 * operators *
    +
    217 *************/
    +
    218
    +
    232 template <class E>
    +
    +
    233 inline auto operator+(E&& e) noexcept -> detail::xfunction_type_t<detail::identity, E>
    +
    234 {
    +
    235 return detail::make_xfunction<detail::identity>(std::forward<E>(e));
    +
    236 }
    +
    +
    237
    +
    247 template <class E>
    +
    +
    248 inline auto operator-(E&& e) noexcept -> detail::xfunction_type_t<detail::negate, E>
    +
    249 {
    +
    250 return detail::make_xfunction<detail::negate>(std::forward<E>(e));
    +
    251 }
    +
    +
    252
    +
    263 template <class E1, class E2>
    +
    +
    264 inline auto operator+(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::plus, E1, E2>
    +
    265 {
    +
    266 return detail::make_xfunction<detail::plus>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    267 }
    +
    +
    268
    +
    279 template <class E1, class E2>
    +
    +
    280 inline auto operator-(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::minus, E1, E2>
    +
    281 {
    +
    282 return detail::make_xfunction<detail::minus>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    283 }
    +
    +
    284
    +
    295 template <class E1, class E2>
    +
    +
    296 inline auto operator*(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::multiplies, E1, E2>
    +
    297 {
    +
    298 return detail::make_xfunction<detail::multiplies>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    299 }
    +
    +
    300
    +
    311 template <class E1, class E2>
    +
    +
    312 inline auto operator/(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::divides, E1, E2>
    +
    313 {
    +
    314 return detail::make_xfunction<detail::divides>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    315 }
    +
    +
    316
    +
    327 template <class E1, class E2>
    +
    +
    328 inline auto operator%(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::modulus, E1, E2>
    +
    329 {
    +
    330 return detail::make_xfunction<detail::modulus>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    331 }
    +
    +
    332
    +
    347 template <class E1, class E2>
    +
    +
    348 inline auto operator||(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::logical_or, E1, E2>
    +
    349 {
    +
    350 return detail::make_xfunction<detail::logical_or>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    351 }
    +
    +
    352
    +
    363 template <class E1, class E2>
    +
    +
    364 inline auto operator&&(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::logical_and, E1, E2>
    +
    365 {
    +
    366 return detail::make_xfunction<detail::logical_and>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    367 }
    +
    +
    368
    +
    378 template <class E>
    +
    +
    379 inline auto operator!(E&& e) noexcept -> detail::xfunction_type_t<detail::logical_not, E>
    +
    380 {
    +
    381 return detail::make_xfunction<detail::logical_not>(std::forward<E>(e));
    +
    382 }
    +
    +
    383
    +
    398 template <class E1, class E2>
    +
    +
    399 inline auto operator&(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::bitwise_and, E1, E2>
    +
    400 {
    +
    401 return detail::make_xfunction<detail::bitwise_and>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    402 }
    +
    +
    403
    +
    414 template <class E1, class E2>
    +
    +
    415 inline auto operator|(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::bitwise_or, E1, E2>
    +
    416 {
    +
    417 return detail::make_xfunction<detail::bitwise_or>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    418 }
    +
    +
    419
    +
    430 template <class E1, class E2>
    +
    +
    431 inline auto operator^(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::bitwise_xor, E1, E2>
    +
    432 {
    +
    433 return detail::make_xfunction<detail::bitwise_xor>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    434 }
    +
    +
    435
    +
    445 template <class E>
    +
    +
    446 inline auto operator~(E&& e) noexcept -> detail::xfunction_type_t<detail::bitwise_not, E>
    +
    447 {
    +
    448 return detail::make_xfunction<detail::bitwise_not>(std::forward<E>(e));
    +
    449 }
    +
    +
    450
    +
    461 template <class E1, class E2>
    +
    +
    462 inline auto left_shift(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::left_shift, E1, E2>
    +
    463 {
    +
    464 return detail::make_xfunction<detail::left_shift>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    465 }
    +
    +
    466
    +
    477 template <class E1, class E2>
    +
    +
    478 inline auto right_shift(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::right_shift, E1, E2>
    +
    479 {
    +
    480 return detail::make_xfunction<detail::right_shift>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    481 }
    +
    +
    482
    +
    483 namespace detail
    +
    484 {
    +
    485 // Shift operator is not available for all the types, so the xfunction type instantiation
    +
    486 // has to be delayed, enable_if_t is not sufficient
    +
    487 template <class F, class E1, class E2>
    +
    488 struct shift_function_getter
    +
    489 {
    +
    490 using type = xfunction_type_t<F, E1, E2>;
    +
    491 };
    +
    492
    +
    493 template <bool B, class T>
    +
    494 struct eval_enable_if
    +
    495 {
    +
    496 using type = typename T::type;
    +
    497 };
    +
    498
    +
    499 template <class T>
    +
    500 struct eval_enable_if<false, T>
    +
    501 {
    +
    502 };
    +
    503
    +
    504 template <bool B, class T>
    +
    505 using eval_enable_if_t = typename eval_enable_if<B, T>::type;
    +
    506
    +
    507 template <class F, class E1, class E2>
    +
    508 using shift_return_type_t = eval_enable_if_t<
    +
    509 is_xexpression<std::decay_t<E1>>::value,
    +
    510 shift_function_getter<F, E1, E2>>;
    +
    511 }
    +
    512
    +
    524 template <class E1, class E2>
    +
    +
    525 inline auto operator<<(E1&& e1, E2&& e2) noexcept
    +
    526 -> detail::shift_return_type_t<detail::left_shift, E1, E2>
    +
    527 {
    +
    528 return left_shift(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    529 }
    +
    +
    530
    +
    542 template <class E1, class E2>
    +
    +
    543 inline auto operator>>(E1&& e1, E2&& e2) -> detail::shift_return_type_t<detail::right_shift, E1, E2>
    +
    544 {
    +
    545 return right_shift(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    546 }
    +
    +
    547
    +
    562 template <class E1, class E2>
    +
    +
    563 inline auto operator<(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::less, E1, E2>
    +
    564 {
    +
    565 return detail::make_xfunction<detail::less>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    566 }
    +
    +
    567
    +
    578 template <class E1, class E2>
    +
    +
    579 inline auto operator<=(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::less_equal, E1, E2>
    +
    580 {
    +
    581 return detail::make_xfunction<detail::less_equal>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    582 }
    +
    +
    583
    +
    594 template <class E1, class E2>
    +
    +
    595 inline auto operator>(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::greater, E1, E2>
    +
    596 {
    +
    597 return detail::make_xfunction<detail::greater>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    598 }
    +
    +
    599
    +
    610 template <class E1, class E2>
    +
    +
    611 inline auto operator>=(E1&& e1, E2&& e2) noexcept
    +
    612 -> detail::xfunction_type_t<detail::greater_equal, E1, E2>
    +
    613 {
    +
    614 return detail::make_xfunction<detail::greater_equal>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    615 }
    +
    +
    616
    +
    628 template <class E1, class E2>
    +
    629 inline std::enable_if_t<xoptional_comparable<E1, E2>::value, bool>
    +
    + +
    631 {
    +
    632 const E1& de1 = e1.derived_cast();
    +
    633 const E2& de2 = e2.derived_cast();
    +
    634 bool res = de1.dimension() == de2.dimension()
    +
    635 && std::equal(de1.shape().begin(), de1.shape().end(), de2.shape().begin());
    +
    636 auto iter1 = de1.begin();
    +
    637 auto iter2 = de2.begin();
    +
    638 auto iter_end = de1.end();
    +
    639 while (res && iter1 != iter_end)
    +
    640 {
    +
    641 res = (*iter1++ == *iter2++);
    +
    642 }
    +
    643 return res;
    +
    644 }
    +
    +
    645
    +
    657 template <class E1, class E2>
    +
    +
    658 inline bool operator!=(const xexpression<E1>& e1, const xexpression<E2>& e2)
    +
    659 {
    +
    660 return !(e1 == e2);
    +
    661 }
    +
    +
    662
    +
    673 template <class E1, class E2>
    +
    +
    674 inline auto equal(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::equal_to, E1, E2>
    +
    675 {
    +
    676 return detail::make_xfunction<detail::equal_to>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    677 }
    +
    +
    678
    +
    689 template <class E1, class E2>
    +
    +
    690 inline auto not_equal(E1&& e1, E2&& e2) noexcept -> detail::xfunction_type_t<detail::not_equal_to, E1, E2>
    +
    691 {
    +
    692 return detail::make_xfunction<detail::not_equal_to>(std::forward<E1>(e1), std::forward<E2>(e2));
    +
    693 }
    +
    +
    694
    +
    706 template <class E1, class E2>
    +
    +
    707 inline auto less(E1&& e1, E2&& e2) noexcept -> decltype(std::forward<E1>(e1) < std::forward<E2>(e2))
    +
    708 {
    +
    709 return std::forward<E1>(e1) < std::forward<E2>(e2);
    +
    710 }
    +
    +
    711
    +
    723 template <class E1, class E2>
    +
    +
    724 inline auto less_equal(E1&& e1, E2&& e2) noexcept -> decltype(std::forward<E1>(e1) <= std::forward<E2>(e2))
    +
    725 {
    +
    726 return std::forward<E1>(e1) <= std::forward<E2>(e2);
    +
    727 }
    +
    +
    728
    +
    740 template <class E1, class E2>
    +
    +
    741 inline auto greater(E1&& e1, E2&& e2) noexcept -> decltype(std::forward<E1>(e1) > std::forward<E2>(e2))
    +
    742 {
    +
    743 return std::forward<E1>(e1) > std::forward<E2>(e2);
    +
    744 }
    +
    +
    745
    +
    757 template <class E1, class E2>
    +
    +
    758 inline auto greater_equal(E1&& e1, E2&& e2) noexcept
    +
    759 -> decltype(std::forward<E1>(e1) >= std::forward<E2>(e2))
    +
    760 {
    +
    761 return std::forward<E1>(e1) >= std::forward<E2>(e2);
    +
    762 }
    +
    +
    763
    +
    776 template <class E1, class E2, class E3>
    +
    +
    777 inline auto where(E1&& e1, E2&& e2, E3&& e3) noexcept
    +
    778 -> detail::xfunction_type_t<detail::conditional_ternary, E1, E2, E3>
    +
    779 {
    +
    780 return detail::make_xfunction<detail::conditional_ternary>(
    +
    781 std::forward<E1>(e1),
    +
    782 std::forward<E2>(e2),
    +
    783 std::forward<E3>(e3)
    +
    784 );
    +
    785 }
    +
    +
    786
    +
    787 namespace detail
    +
    788 {
    +
    789 template <layout_type L>
    +
    790 struct next_idx_impl;
    +
    791
    +
    792 template <>
    +
    793 struct next_idx_impl<layout_type::row_major>
    +
    794 {
    +
    795 template <class S, class I>
    +
    796 inline auto operator()(const S& shape, I& idx)
    +
    797 {
    +
    798 for (std::size_t j = shape.size(); j > 0; --j)
    +
    799 {
    +
    800 std::size_t i = j - 1;
    +
    801 if (idx[i] >= shape[i] - 1)
    +
    802 {
    +
    803 idx[i] = 0;
    +
    804 }
    +
    805 else
    +
    806 {
    +
    807 idx[i]++;
    +
    808 return idx;
    +
    809 }
    +
    810 }
    +
    811 // return empty index, happens at last iteration step, but remains unused
    +
    812 return I();
    +
    813 }
    +
    814 };
    +
    815
    +
    816 template <>
    +
    817 struct next_idx_impl<layout_type::column_major>
    +
    818 {
    +
    819 template <class S, class I>
    +
    820 inline auto operator()(const S& shape, I& idx)
    +
    821 {
    +
    822 for (std::size_t i = 0; i < shape.size(); ++i)
    +
    823 {
    +
    824 if (idx[i] >= shape[i] - 1)
    +
    825 {
    +
    826 idx[i] = 0;
    +
    827 }
    +
    828 else
    +
    829 {
    +
    830 idx[i]++;
    +
    831 return idx;
    +
    832 }
    +
    833 }
    +
    834 // return empty index, happens at last iteration step, but remains unused
    +
    835 return I();
    +
    836 }
    +
    837 };
    +
    838
    +
    839 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class S, class I>
    +
    840 inline auto next_idx(const S& shape, I& idx)
    +
    841 {
    +
    842 next_idx_impl<L> nii;
    +
    843 return nii(shape, idx);
    +
    844 }
    +
    845 }
    +
    846
    +
    855 template <class T>
    +
    +
    856 inline auto nonzero(const T& arr)
    +
    857 {
    +
    858 auto shape = arr.shape();
    +
    859 using index_type = xindex_type_t<typename T::shape_type>;
    +
    860 using size_type = typename T::size_type;
    +
    861
    +
    862 auto idx = xtl::make_sequence<index_type>(arr.dimension(), 0);
    +
    863 std::vector<std::vector<size_type>> indices(arr.dimension());
    +
    864
    +
    865 size_type total_size = compute_size(shape);
    +
    866 for (size_type i = 0; i < total_size; i++, detail::next_idx(shape, idx))
    +
    867 {
    +
    868 if (arr.element(std::begin(idx), std::end(idx)))
    +
    869 {
    +
    870 for (std::size_t n = 0; n < indices.size(); ++n)
    +
    871 {
    +
    872 indices.at(n).push_back(idx[n]);
    +
    873 }
    +
    874 }
    +
    875 }
    +
    876
    +
    877 return indices;
    +
    878 }
    +
    +
    879
    +
    888 template <class T>
    +
    +
    889 inline auto where(const T& condition)
    +
    890 {
    +
    891 return nonzero(condition);
    +
    892 }
    +
    +
    893
    +
    904 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class T>
    +
    +
    905 inline auto argwhere(const T& arr)
    +
    906 {
    +
    907 auto shape = arr.shape();
    +
    908 using index_type = xindex_type_t<typename T::shape_type>;
    +
    909 using size_type = typename T::size_type;
    +
    910
    +
    911 auto idx = xtl::make_sequence<index_type>(arr.dimension(), 0);
    +
    912 std::vector<index_type> indices;
    +
    913
    +
    914 size_type total_size = compute_size(shape);
    +
    915 for (size_type i = 0; i < total_size; i++, detail::next_idx<L>(shape, idx))
    +
    916 {
    +
    917 if (arr.element(std::begin(idx), std::end(idx)))
    +
    918 {
    +
    919 indices.push_back(idx);
    +
    920 }
    +
    921 }
    +
    922
    +
    923 return indices;
    +
    924 }
    +
    +
    925
    +
    935 template <class E>
    +
    +
    936 inline bool any(E&& e)
    +
    937 {
    +
    938 using xtype = std::decay_t<E>;
    +
    939 using value_type = typename xtype::value_type;
    +
    940 return std::any_of(
    +
    941 e.cbegin(),
    +
    942 e.cend(),
    +
    943 [](const value_type& el)
    +
    944 {
    +
    945 return el;
    +
    946 }
    +
    947 );
    +
    948 }
    +
    +
    949
    +
    959 template <class E>
    +
    +
    960 inline bool all(E&& e)
    +
    961 {
    +
    962 using xtype = std::decay_t<E>;
    +
    963 using value_type = typename xtype::value_type;
    +
    964 return std::all_of(
    +
    965 e.cbegin(),
    +
    966 e.cend(),
    +
    967 [](const value_type& el)
    +
    968 {
    +
    969 return el;
    +
    970 }
    +
    971 );
    +
    972 }
    +
    +
    973
    +
    989 template <class R, class E>
    +
    +
    990 inline auto cast(E&& e) noexcept -> detail::xfunction_type_t<typename detail::cast<R>::functor, E>
    +
    991 {
    +
    992 return detail::make_xfunction<typename detail::cast<R>::functor>(std::forward<E>(e));
    +
    993 }
    +
    +
    994
    +
    995}
    +
    996
    +
    997#endif
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    auto operator+(E &&e) noexcept -> detail::xfunction_type_t< detail::identity, E >
    Identity.
    +
    auto operator/(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::divides, E1, E2 >
    Division.
    +
    auto operator%(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::modulus, E1, E2 >
    Modulus.
    +
    auto operator-(E &&e) noexcept -> detail::xfunction_type_t< detail::negate, E >
    Opposite.
    +
    auto operator*(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::multiplies, E1, E2 >
    Multiplication.
    +
    auto operator&(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_and, E1, E2 >
    Bitwise and.
    +
    auto left_shift(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::left_shift, E1, E2 >
    Bitwise left shift.
    +
    auto right_shift(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::right_shift, E1, E2 >
    Bitwise left shift.
    +
    auto operator~(E &&e) noexcept -> detail::xfunction_type_t< detail::bitwise_not, E >
    Bitwise not.
    +
    auto operator^(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_xor, E1, E2 >
    Bitwise xor.
    +
    auto operator|(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_or, E1, E2 >
    Bitwise or.
    +
    auto operator>>(E1 &&e1, E2 &&e2) -> detail::shift_return_type_t< detail::right_shift, E1, E2 >
    Bitwise right shift.
    +
    auto cast(E &&e) noexcept -> detail::xfunction_type_t< typename detail::cast< R >::functor, E >
    Element-wise static_cast.
    +
    auto not_equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::not_equal_to, E1, E2 >
    Element-wise inequality.
    +
    auto less(E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1)< std::forward< E2 >(e2))
    Lesser than.
    +
    auto equal(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::equal_to, E1, E2 >
    Element-wise equality.
    +
    auto greater_equal(E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) >=std::forward< E2 >(e2))
    Greater or equal.
    +
    auto greater(E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1) > std::forward< E2 >(e2))
    Greater than.
    +
    auto less_equal(E1 &&e1, E2 &&e2) noexcept -> decltype(std::forward< E1 >(e1)<=std::forward< E2 >(e2))
    Lesser or equal.
    +
    auto operator!(E &&e) noexcept -> detail::xfunction_type_t< detail::logical_not, E >
    Not.
    +
    auto argwhere(const T &arr)
    return vector of indices where arr is not zero
    +
    auto operator&&(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::logical_and, E1, E2 >
    And.
    +
    auto nonzero(const T &arr)
    return vector of indices where T is not zero
    +
    auto operator||(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::logical_or, E1, E2 >
    Or.
    +
    auto where(E1 &&e1, E2 &&e2, E3 &&e3) noexcept -> detail::xfunction_type_t< detail::conditional_ternary, E1, E2, E3 >
    Ternary selection.
    +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    standard mathematical functions for xexpressions
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    + +
    +
    + + + + diff --git a/xoptional_8hpp_source.html b/xoptional_8hpp_source.html new file mode 100644 index 000000000..1d6052446 --- /dev/null +++ b/xoptional_8hpp_source.html @@ -0,0 +1,1603 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xoptional.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xoptional.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_OPTIONAL_HPP
    +
    11#define XTENSOR_OPTIONAL_HPP
    +
    12
    +
    13#include <type_traits>
    +
    14#include <utility>
    +
    15
    +
    16#include <xtl/xoptional.hpp>
    +
    17#include <xtl/xoptional_sequence.hpp>
    +
    18
    +
    19#include "xarray.hpp"
    +
    20#include "xbroadcast.hpp"
    +
    21#include "xdynamic_view.hpp"
    +
    22#include "xfunctor_view.hpp"
    +
    23#include "xgenerator.hpp"
    +
    24#include "xindex_view.hpp"
    +
    25#include "xreducer.hpp"
    +
    26#include "xrepeat.hpp"
    +
    27#include "xscalar.hpp"
    +
    28#include "xstrided_view.hpp"
    +
    29#include "xtensor.hpp"
    +
    30#include "xview.hpp"
    +
    31
    +
    32namespace xt
    +
    33{
    +
    34
    +
    35 /****************************************************
    +
    36 * Metafunction for splitting xoptional expressions *
    +
    37 ****************************************************/
    +
    38
    +
    39 namespace extension
    +
    40 {
    +
    41
    +
    42 /**************************************
    +
    43 * get_expression_tag specializations *
    +
    44 **************************************/
    +
    45
    +
    46 template <class T, class B>
    +
    +
    47 struct get_expression_tag<xtl::xoptional<T, B>>
    +
    48 {
    + +
    50 };
    +
    +
    51
    +
    52 /************************
    +
    53 * xoptional_empty_base *
    +
    54 ************************/
    +
    55
    +
    56 template <class D>
    +
    + +
    58 {
    +
    59 public:
    +
    60
    + +
    62
    +
    63 protected:
    +
    64
    +
    65 D& derived_cast() noexcept;
    +
    66 const D& derived_cast() const noexcept;
    +
    67 };
    +
    +
    68 }
    +
    69
    +
    70 namespace detail
    +
    71 {
    +
    72 /*****************************
    +
    73 * split_optional_expression *
    +
    74 *****************************/
    +
    75
    +
    76 template <class T, class Tag>
    +
    77 struct split_optional_expression_impl
    +
    78 {
    +
    79 using value_expression = T;
    +
    80 using flag_expression = decltype(ones<bool>(std::declval<T>().shape()));
    +
    81
    +
    82 template <class U>
    +
    83 inline static U&& value(U&& arg)
    +
    84 {
    +
    85 return std::forward<U>(arg);
    +
    86 }
    +
    87
    +
    88 template <class U>
    +
    89 inline static flag_expression has_value(U&& arg)
    +
    90 {
    +
    91 return ones<bool>(arg.shape());
    +
    92 }
    +
    93 };
    +
    94
    +
    95 template <class T, class Tag>
    +
    96 struct split_optional_expression_impl<xscalar<T>, Tag>
    +
    97 {
    +
    98 using value_expression = xscalar<T>;
    +
    99 using flag_expression = xscalar<bool>;
    +
    100
    +
    101 template <class U>
    +
    102 inline static U&& value(U&& arg)
    +
    103 {
    +
    104 return std::forward<U>(arg);
    +
    105 }
    +
    106
    +
    107 template <class U>
    +
    108 inline static flag_expression has_value(U&&)
    +
    109 {
    +
    110 return xscalar<bool>(true);
    +
    111 }
    +
    112 };
    +
    113
    +
    114 template <class T>
    +
    115 struct split_optional_expression_impl_base
    +
    116 {
    +
    117 static constexpr bool is_const = std::is_const<std::remove_reference_t<T>>::value;
    +
    118 using decay_type = std::decay_t<T>;
    +
    119
    +
    120 using value_expression = std::conditional_t<
    +
    121 is_const,
    +
    122 typename decay_type::const_value_expression,
    +
    123 typename decay_type::value_expression>;
    +
    124 using flag_expression = std::
    +
    125 conditional_t<is_const, typename decay_type::const_flag_expression, typename decay_type::flag_expression>;
    +
    126
    +
    127 template <class U>
    +
    128 inline static value_expression value(U&& arg)
    +
    129 {
    +
    130 return arg.value();
    +
    131 }
    +
    132
    +
    133 template <class U>
    +
    134 inline static flag_expression has_value(U&& arg)
    +
    135 {
    +
    136 return arg.has_value();
    +
    137 }
    +
    138 };
    +
    139
    +
    140 template <class T>
    +
    141 struct split_optional_expression_impl<T, xoptional_expression_tag>
    +
    142 : split_optional_expression_impl_base<T>
    +
    143 {
    +
    144 };
    +
    145
    +
    146 template <class T>
    +
    147 struct split_optional_expression_impl<xscalar<T>, xoptional_expression_tag>
    +
    148 : split_optional_expression_impl_base<xscalar<T>>
    +
    149 {
    +
    150 };
    +
    151
    +
    152 template <class T>
    +
    153 struct split_optional_expression
    +
    154 : split_optional_expression_impl<T, xexpression_tag_t<std::decay_t<T>>>
    +
    155 {
    +
    156 };
    +
    157
    +
    158 template <class T>
    +
    159 using value_expression_t = typename split_optional_expression<T>::value_expression;
    +
    160
    +
    161 template <class T>
    +
    162 using flag_expression_t = typename split_optional_expression<T>::flag_expression;
    +
    163
    +
    164 /********************
    +
    165 * optional_bitwise *
    +
    166 ********************/
    +
    167
    +
    168 template <class T = bool>
    +
    169 class optional_bitwise
    +
    170 {
    +
    171 public:
    +
    172
    +
    173 using return_type = T;
    +
    174 using first_argument_type = T;
    +
    175 using second_argument_type = T;
    +
    176 using result_type = T;
    +
    177 using simd_value_type = bool;
    +
    178 using simd_result_type = bool;
    +
    179
    +
    180 template <class... Args>
    +
    181 constexpr result_type operator()(const Args&... args) const
    +
    182 {
    +
    183 return apply_impl(args...);
    +
    184 }
    +
    185
    +
    186 template <class B, class... Args>
    +
    187 constexpr B simd_apply(const B& b, const Args&... args) const
    +
    188 {
    +
    189 return simd_apply_impl(b, args...);
    +
    190 }
    +
    191
    +
    192 private:
    +
    193
    +
    194 constexpr result_type apply_impl() const
    +
    195 {
    +
    196 return true;
    +
    197 }
    +
    198
    +
    199 template <class U, class... Args>
    +
    200 constexpr result_type apply_impl(const U& t, const Args&... args) const
    +
    201 {
    +
    202 return t & apply_impl(args...);
    +
    203 }
    +
    204
    +
    205 template <class B>
    +
    206 constexpr B simd_apply_impl(const B& b) const
    +
    207 {
    +
    208 return b;
    +
    209 }
    +
    210
    +
    211 template <class B1, class B2, class... Args>
    +
    212 constexpr B1 simd_apply_impl(const B1& b1, const B2& b2, const Args&... args) const
    +
    213 {
    +
    214 return b1 & simd_apply_impl(b2, args...);
    +
    215 }
    +
    216 };
    +
    217
    +
    218 /*********************************
    +
    219 * optional const_value rebinder *
    +
    220 *********************************/
    +
    221
    +
    222 template <class T, class B>
    +
    223 struct const_value_rebinder<xtl::xoptional<T, B>, T>
    +
    224 {
    +
    225 static const_value<T> run(const const_value<xtl::xoptional<T, B>>& src)
    +
    226 {
    +
    227 return const_value<T>(src.m_value.value());
    +
    228 }
    +
    229 };
    +
    230
    +
    231 /**************************
    +
    232 * xreducer types helpers *
    +
    233 **************************/
    +
    234
    +
    235 template <class T, class B>
    +
    236 struct xreducer_size_type<xtl::xoptional<T, B>>
    +
    237 {
    +
    238 using type = xtl::xoptional<std::size_t, bool>;
    +
    239 };
    +
    240
    +
    241 template <class T, class B>
    +
    242 struct xreducer_temporary_type<xtl::xoptional<T, B>>
    +
    243 {
    +
    244 using type = xtl::xoptional<std::decay_t<T>, bool>;
    +
    245 ;
    +
    246 };
    +
    247 }
    +
    248
    +
    249 /**********************
    +
    250 * optional functions *
    +
    251 **********************/
    +
    252
    +
    253 template <class T, class B>
    +
    254 auto sign(const xtl::xoptional<T, B>& e);
    +
    255
    +
    256 /*template <class E, XTL_REQUIRES(is_xexpression<E>)>
    +
    257 detail::value_expression_t<E> value(E&&);
    +
    258
    +
    259 template <class E, XTL_REQUIRES(is_xexpression<E>)>
    +
    260 detail::flag_expression_t<E> has_value(E&&);*/
    +
    261
    +
    262 template <>
    +
    + +
    264 {
    +
    265 public:
    +
    266
    +
    267 template <class E1, class E2>
    +
    268 static void assign_data(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial);
    +
    269 };
    +
    +
    270
    +
    271 /**********************************
    +
    272 * xscalar extension for optional *
    +
    273 **********************************/
    +
    274
    +
    275 namespace extension
    +
    276 {
    +
    277 template <class CT>
    +
    + +
    279 {
    +
    280 using closure_type = CT;
    +
    281 static constexpr bool is_ref = std::is_reference<closure_type>::value;
    +
    282 using unref_closure_type = std::remove_reference_t<closure_type>;
    +
    283 static constexpr bool is_const = std::is_const<unref_closure_type>::value;
    +
    284 using raw_closure_type = std::decay_t<CT>;
    +
    285
    +
    286 using raw_value_closure = typename raw_closure_type::value_closure;
    +
    287 using raw_flag_closure = typename raw_closure_type::flag_closure;
    +
    288 using const_raw_value_closure = std::add_const_t<raw_value_closure>;
    +
    289 using const_raw_flag_closure = std::add_const_t<raw_flag_closure>;
    +
    290
    +
    291 using value_closure = std::conditional_t<is_ref, std::add_lvalue_reference_t<raw_value_closure>, raw_value_closure>;
    +
    292 using flag_closure = std::conditional_t<is_ref, std::add_lvalue_reference_t<raw_flag_closure>, raw_flag_closure>;
    +
    293 using const_value_closure = std::
    +
    294 conditional_t<is_ref, std::add_lvalue_reference_t<const_raw_value_closure>, raw_value_closure>;
    +
    295 using const_flag_closure = std::
    +
    296 conditional_t<is_ref, std::add_lvalue_reference_t<const_raw_flag_closure>, raw_flag_closure>;
    +
    297
    + + + + +
    302 };
    +
    +
    303
    +
    304 template <class CT>
    +
    +
    305 class xscalar_optional_base : public xoptional_empty_base<xscalar<CT>>
    +
    306 {
    +
    307 public:
    +
    308
    + +
    310 using value_expression = typename traits::value_expression;
    +
    311 using flag_expression = typename traits::flag_expression;
    +
    312 using const_value_expression = typename traits::const_value_expression;
    +
    313 using const_flag_expression = typename traits::const_flag_expression;
    + +
    315
    +
    316 value_expression value();
    +
    317 const_value_expression value() const;
    +
    318
    +
    319 flag_expression has_value();
    +
    320 const_flag_expression has_value() const;
    +
    321 };
    +
    +
    322
    +
    323 template <class CT>
    +
    + +
    325 {
    + +
    327 };
    +
    +
    328 }
    +
    329
    +
    330 /*************************************
    +
    331 * xcontainer extension for optional *
    +
    332 *************************************/
    +
    333
    +
    334 namespace extension
    +
    335 {
    +
    336 template <class T>
    +
    +
    337 class xcontainer_optional_base : public xoptional_empty_base<typename T::derived_type>
    +
    338 {
    +
    339 public:
    +
    340
    +
    341 using traits = T;
    +
    342 using value_expression = typename traits::value_expression;
    +
    343 using flag_expression = typename traits::flag_expression;
    +
    344 using const_value_expression = typename traits::const_value_expression;
    +
    345 using const_flag_expression = typename traits::const_flag_expression;
    + +
    347
    +
    348 value_expression value();
    +
    349 const_value_expression value() const;
    +
    350
    +
    351 flag_expression has_value();
    +
    352 const_flag_expression has_value() const;
    +
    353 };
    +
    +
    354 }
    +
    355
    +
    356 /*******************************************
    +
    357 * xarray_container extension for optional *
    +
    358 *******************************************/
    +
    359
    +
    360 namespace extension
    +
    361 {
    +
    362 template <class EC, layout_type L, class SC>
    +
    + +
    364 {
    +
    365 using value_container = typename std::remove_reference_t<EC>::base_container_type;
    +
    366 using flag_container = typename std::remove_reference_t<EC>::flag_container_type;
    + + + + +
    371 };
    +
    +
    372
    +
    373 template <class EC, layout_type L, class SC>
    + +
    378
    +
    379 template <class EC, layout_type L, class SC>
    + +
    385 }
    +
    386
    +
    387 /*****************************************
    +
    388 * xarray_adaptor extension for optional *
    +
    389 *****************************************/
    +
    390
    +
    391 namespace extension
    +
    392 {
    +
    393 template <class EC, layout_type L, class SC>
    + +
    398
    +
    399 template <class EC, layout_type L, class SC>
    +
    +
    400 struct xarray_adaptor_base<EC, L, SC, xoptional_expression_tag>
    +
    401 {
    + + +
    404 };
    +
    +
    405 }
    +
    406
    +
    407 /********************************************
    +
    408 * xtensor_container extension for optional *
    +
    409 ********************************************/
    +
    410
    +
    411 namespace extension
    +
    412 {
    +
    413 template <class EC, std::size_t N, layout_type L>
    +
    + +
    415 {
    +
    416 using value_container = typename std::remove_reference_t<EC>::base_container_type;
    +
    417 using flag_container = typename std::remove_reference_t<EC>::flag_container_type;
    + + + + +
    422 };
    +
    +
    423
    +
    424 template <class EC, std::size_t N, layout_type L>
    + +
    429
    +
    430 template <class EC, std::size_t N, layout_type L>
    + +
    436 }
    +
    437
    +
    438 /******************************************
    +
    439 * xtensor_adaptor extension for optional *
    +
    440 ******************************************/
    +
    441
    +
    442 namespace extension
    +
    443 {
    +
    444 template <class EC, std::size_t N, layout_type L>
    + +
    449
    +
    450 template <class EC, std::size_t N, layout_type L>
    +
    +
    451 struct xtensor_adaptor_base<EC, N, L, xoptional_expression_tag>
    +
    452 {
    + + +
    455 };
    +
    +
    456 }
    +
    457
    +
    458 /***************************************
    +
    459 * xtensor_view extension for optional *
    +
    460 ***************************************/
    +
    461
    +
    462 namespace extension
    +
    463 {
    +
    464 template <class EC, std::size_t N, layout_type L>
    + +
    469
    +
    470 template <class EC, std::size_t N, layout_type L>
    +
    +
    471 struct xtensor_view_base<EC, N, L, xoptional_expression_tag>
    +
    472 {
    + + +
    475 };
    +
    +
    476 }
    +
    477
    +
    478 /************************************************
    +
    479 * xfunction extension for optional expressions *
    +
    480 ************************************************/
    +
    481
    +
    482 namespace extension
    +
    483 {
    +
    484 template <class F, class... CT>
    +
    +
    485 class xfunction_optional_base : public xoptional_empty_base<xfunction<F, CT...>>
    +
    486 {
    +
    487 public:
    +
    488
    + +
    490 using value_functor = F;
    +
    491 using flag_functor = xt::detail::optional_bitwise<bool>;
    +
    492
    + + + + +
    497
    +
    498 const_value_expression value() const;
    +
    499 const_flag_expression has_value() const;
    +
    500
    +
    501 private:
    +
    502
    +
    503 template <std::size_t... I>
    +
    504 const_value_expression value_impl(std::index_sequence<I...>) const;
    +
    505
    +
    506 template <std::size_t... I>
    +
    507 const_flag_expression has_value_impl(std::index_sequence<I...>) const;
    +
    508 };
    +
    +
    509
    +
    510 template <class F, class... CT>
    +
    + +
    512 {
    +
    513 using type = xfunction_optional_base<F, CT...>;
    +
    514 };
    +
    +
    515 }
    +
    516
    +
    517 /****************************************************
    +
    518 * xdynamic_view extension for optional expressions *
    +
    519 ****************************************************/
    +
    520
    +
    521 namespace extension
    +
    522 {
    +
    523 template <class CT, class S, layout_type L, class FST>
    +
    +
    524 class xdynamic_view_optional : public xoptional_empty_base<xdynamic_view<CT, S, L, FST>>
    +
    525 {
    +
    526 public:
    +
    527
    + +
    529 using uvt = typename std::decay_t<CT>::value_expression;
    +
    530 using uft = typename std::decay_t<CT>::flag_expression;
    +
    531 using ucvt = typename std::decay_t<CT>::const_value_expression;
    +
    532 using ucft = typename std::decay_t<CT>::const_flag_expression;
    + + + + +
    537
    +
    538 value_expression value();
    +
    539 const_value_expression value() const;
    +
    540
    +
    541 flag_expression has_value();
    +
    542 const_flag_expression has_value() const;
    +
    543 };
    +
    +
    544
    +
    545 template <class CT, class S, layout_type L, class FST>
    +
    + +
    547 {
    + +
    549 };
    +
    +
    550 }
    +
    551
    +
    552 /*************************************************
    +
    553 * xbroadcast extension for optional expressions *
    +
    554 *************************************************/
    +
    555
    +
    556 namespace extension
    +
    557 {
    +
    558 template <class CT, class X>
    +
    +
    559 class xbroadcast_optional : public xoptional_empty_base<xbroadcast<CT, X>>
    +
    560 {
    +
    561 public:
    +
    562
    + + + + + +
    568
    +
    569 const_value_expression value() const;
    +
    570 const_flag_expression has_value() const;
    +
    571 };
    +
    +
    572
    +
    573 template <class CT, class X>
    +
    + +
    575 {
    + +
    577 };
    +
    +
    578 }
    +
    579
    +
    580 /***************************************************
    +
    581 * xfunctor_view extension for optional expression *
    +
    582 ***************************************************/
    +
    583
    +
    584 namespace extension
    +
    585 {
    +
    586 template <class F, class CT>
    +
    +
    587 class xfunctor_view_optional : public xoptional_empty_base<xfunctor_view<F, CT>>
    +
    588 {
    +
    589 public:
    +
    590
    + +
    592 using uvt = typename std::decay_t<CT>::value_expression;
    +
    593 using uft = typename std::decay_t<CT>::flag_expression;
    +
    594 using ucvt = typename std::decay_t<CT>::const_value_expression;
    +
    595 using ucft = typename std::decay_t<CT>::const_flag_expression;
    + +
    597 using flag_expression = uft;
    + +
    599 using const_flag_expression = ucft;
    +
    600
    +
    601 value_expression value();
    +
    602 const_value_expression value() const;
    +
    603
    +
    604 flag_expression has_value();
    +
    605 const_flag_expression has_value() const;
    +
    606 };
    +
    +
    607
    +
    608 template <class F, class CT>
    + +
    613 }
    +
    614
    +
    615 /**************************************************
    +
    616 * xindex_view extension for optional expressions *
    +
    617 **************************************************/
    +
    618
    +
    619 namespace extension
    +
    620 {
    +
    621 template <class CT, class I>
    +
    +
    622 class xindex_view_optional : public xoptional_empty_base<xindex_view<CT, I>>
    +
    623 {
    +
    624 public:
    +
    625
    + +
    627 using uvt = typename std::decay_t<CT>::value_expression;
    +
    628 using ucvt = typename std::decay_t<CT>::const_value_expression;
    +
    629 using uft = typename std::decay_t<CT>::flag_expression;
    +
    630 using ucft = typename std::decay_t<CT>::const_flag_expression;
    + + + + +
    635
    +
    636 value_expression value();
    +
    637 const_value_expression value() const;
    +
    638
    +
    639 flag_expression has_value();
    +
    640 const_flag_expression has_value() const;
    +
    641 };
    +
    +
    642
    +
    643 template <class CT, class I>
    +
    + +
    645 {
    + +
    647 };
    +
    +
    648 }
    +
    649
    +
    650 /***********************************************
    +
    651 * xreducer extension for optional expressions *
    +
    652 ***********************************************/
    +
    653
    +
    654 namespace extension
    +
    655 {
    +
    656 template <class F, class CT, class X, class O>
    +
    +
    657 class xreducer_optional : public xoptional_empty_base<xreducer<F, CT, X, O>>
    +
    658 {
    +
    659 public:
    +
    660
    + +
    662 using result_type = typename F::init_value_type;
    +
    663
    +
    664 using rebound_result_type = typename result_type::value_type;
    +
    665 using rebound_functors_type = typename F::template rebind_t<rebound_result_type>;
    +
    666 using rebound_reduce_options_values = typename O::template rebind_t<rebound_result_type>;
    +
    667 using rebound_reduce_options_flag = typename O::template rebind_t<bool>;
    +
    668
    + +
    670 using flag_expression = xreducer<flag_reducer, xt::detail::flag_expression_t<CT>, X, rebound_reduce_options_flag>;
    + +
    672
    + + +
    675
    +
    676 const_value_expression value() const;
    +
    677 const_flag_expression has_value() const;
    +
    678 };
    +
    +
    679
    +
    680 template <class F, class CT, class X, class O>
    +
    +
    681 struct xreducer_base_impl<xoptional_expression_tag, F, CT, X, O>
    +
    682 {
    + +
    684 };
    +
    +
    685 }
    +
    686
    +
    687 /**********************************************
    +
    688 * xrepeat extension for optional expressions *
    +
    689 **********************************************/
    +
    690
    +
    691 namespace extension
    +
    692 {
    +
    693 template <class CT, class X>
    +
    +
    694 class xrepeat_optional : public xoptional_empty_base<xrepeat<CT, X>>
    +
    695 {
    +
    696 public:
    +
    697
    + + + + + +
    703
    +
    704 const_value_expression value() const;
    +
    705 const_flag_expression has_value() const;
    +
    706 };
    +
    +
    707
    +
    708 template <class CT, class X>
    +
    + +
    710 {
    + +
    712 };
    +
    +
    713 }
    +
    714
    +
    715 /****************************************************
    +
    716 * xstrided_view extension for optional expressions *
    +
    717 ****************************************************/
    +
    718
    +
    719 namespace extension
    +
    720 {
    +
    721 template <class CT, class S, layout_type L, class FST>
    +
    +
    722 class xstrided_view_optional : public xoptional_empty_base<xstrided_view<CT, S, L, FST>>
    +
    723 {
    +
    724 public:
    +
    725
    + +
    727 using uvt = typename std::decay_t<CT>::value_expression;
    +
    728 using uft = typename std::decay_t<CT>::flag_expression;
    +
    729 using ucvt = typename std::decay_t<CT>::const_value_expression;
    +
    730 using ucft = typename std::decay_t<CT>::const_flag_expression;
    + + + + +
    735
    +
    736 value_expression value();
    +
    737 const_value_expression value() const;
    +
    738
    +
    739 flag_expression has_value();
    +
    740 const_flag_expression has_value() const;
    +
    741 };
    +
    +
    742
    +
    743 template <class CT, class S, layout_type L, class FST>
    +
    + +
    745 {
    + +
    747 };
    +
    +
    748 }
    +
    749
    +
    750 /********************************************
    +
    751 * xview extension for optional expressions *
    +
    752 ********************************************/
    +
    753
    +
    754 namespace extension
    +
    755 {
    +
    756 template <class CT, class... S>
    +
    +
    757 class xview_optional : public xoptional_empty_base<xview<CT, S...>>
    +
    758 {
    +
    759 public:
    +
    760
    + +
    762 using uvt = typename std::decay_t<CT>::value_expression;
    +
    763 using uft = typename std::decay_t<CT>::flag_expression;
    +
    764 using ucvt = typename std::decay_t<CT>::const_value_expression;
    +
    765 using ucft = typename std::decay_t<CT>::const_flag_expression;
    +
    766 using value_expression = xview<uvt, S...>;
    +
    767 using flag_expression = xview<uft, S...>;
    +
    768 using const_value_expression = xview<ucvt, S...>;
    +
    769 using const_flag_expression = xview<ucft, S...>;
    +
    770
    +
    771 value_expression value();
    +
    772 const_value_expression value() const;
    +
    773
    +
    774 flag_expression has_value();
    +
    775 const_flag_expression has_value() const;
    +
    776 };
    +
    +
    777
    +
    778 template <class CT, class... S>
    +
    + +
    780 {
    +
    781 using type = xview_optional<CT, S...>;
    +
    782 };
    +
    +
    783 }
    +
    784
    +
    785 /*************************************************
    +
    786 * xgenerator extension for generator expression *
    +
    787 *************************************************/
    +
    788
    +
    789 namespace extension
    +
    790 {
    +
    791 namespace detail
    +
    792 {
    +
    793 template <class F, class = void_t<int>>
    +
    794 struct value_functor
    +
    795 {
    +
    796 using type = F;
    +
    797
    +
    798 static type get(const F& f)
    +
    799 {
    +
    800 return f;
    +
    801 }
    +
    802 };
    +
    803
    +
    804 template <class F>
    +
    805 struct value_functor<F, void_t<typename F::value_functor_type>>
    +
    806 {
    +
    807 using type = typename F::value_functor_type;
    +
    808
    +
    809 static type get(const F& f)
    +
    810 {
    +
    811 return f.value_functor();
    +
    812 }
    +
    813 };
    +
    814
    +
    815 template <class F>
    +
    816 using value_functor_t = typename value_functor<F>::type;
    +
    817
    +
    818 struct always_true
    +
    819 {
    +
    820 template <class... T>
    +
    821 bool operator()(T...) const
    +
    822 {
    +
    823 return true;
    +
    824 }
    +
    825 };
    +
    826
    +
    827 template <class F, class = void_t<int>>
    +
    828 struct flag_functor
    +
    829 {
    +
    830 using type = always_true;
    +
    831
    +
    832 static type get(const F&)
    +
    833 {
    +
    834 return type();
    +
    835 }
    +
    836 };
    +
    837
    +
    838 template <class F>
    +
    839 struct flag_functor<F, void_t<typename F::flag_functor_type>>
    +
    840 {
    +
    841 using type = typename F::flag_functor_type;
    +
    842
    +
    843 static type get(const F& f)
    +
    844 {
    +
    845 return f.flag_functor();
    +
    846 }
    +
    847 };
    +
    848
    +
    849 template <class F>
    +
    850 using flag_functor_t = typename flag_functor<F>::type;
    +
    851 }
    +
    852
    +
    853 template <class F, class R, class S>
    +
    +
    854 class xgenerator_optional : public xoptional_empty_base<xgenerator<F, R, S>>
    +
    855 {
    +
    856 public:
    +
    857
    + +
    859 using value_closure = typename R::value_closure;
    +
    860 using flag_closure = typename R::flag_closure;
    +
    861 using value_functor = detail::value_functor_t<F>;
    +
    862 using flag_functor = detail::flag_functor_t<F>;
    + + + + +
    867
    +
    868 const_value_expression value() const;
    +
    869 const_flag_expression has_value() const;
    +
    870 };
    +
    +
    871
    +
    872 template <class F, class R, class S>
    +
    + +
    874 {
    + +
    876 };
    +
    +
    877 }
    +
    878
    +
    879 /***************************************
    +
    880 * xoptional_empty_base implementation *
    +
    881 ***************************************/
    +
    882
    +
    883 namespace extension
    +
    884 {
    +
    885 template <class D>
    +
    886 inline D& xoptional_empty_base<D>::derived_cast() noexcept
    +
    887 {
    +
    888 return *static_cast<D*>(this);
    +
    889 }
    +
    890
    +
    891 template <class D>
    +
    892 inline const D& xoptional_empty_base<D>::derived_cast() const noexcept
    +
    893 {
    +
    894 return *static_cast<const D*>(this);
    +
    895 }
    +
    896 }
    +
    897
    +
    898 /****************************************
    +
    899 * xscalar_optional_base implementation *
    +
    900 ****************************************/
    +
    901
    +
    902 namespace extension
    +
    903 {
    +
    904 template <class CT>
    +
    905 inline auto xscalar_optional_base<CT>::value() -> value_expression
    +
    906 {
    +
    907 return this->derived_cast().expression().value();
    +
    908 }
    +
    909
    +
    910 template <class CT>
    +
    911 inline auto xscalar_optional_base<CT>::value() const -> const_value_expression
    +
    912 {
    +
    913 return this->derived_cast().expression().value();
    +
    914 }
    +
    915
    +
    916 template <class CT>
    +
    917 inline auto xscalar_optional_base<CT>::has_value() -> flag_expression
    +
    918 {
    +
    919 return this->derived_cast().expression().has_value();
    +
    920 }
    +
    921
    +
    922 template <class CT>
    +
    923 inline auto xscalar_optional_base<CT>::has_value() const -> const_flag_expression
    +
    924 {
    +
    925 return this->derived_cast().expression().has_value();
    +
    926 }
    +
    927 }
    +
    928
    +
    929 /*******************************************
    +
    930 * xcontainer_optional_base implementation *
    +
    931 *******************************************/
    +
    932
    +
    933 namespace extension
    +
    934 {
    +
    935 template <class T>
    +
    936 inline auto xcontainer_optional_base<T>::value() -> value_expression
    +
    937 {
    +
    938 return value_expression(this->derived_cast().storage().value(), this->derived_cast().shape());
    +
    939 }
    +
    940
    +
    941 template <class T>
    +
    942 inline auto xcontainer_optional_base<T>::value() const -> const_value_expression
    +
    943 {
    +
    944 return const_value_expression(this->derived_cast().storage().value(), this->derived_cast().shape());
    +
    945 }
    +
    946
    +
    947 template <class T>
    +
    948 inline auto xcontainer_optional_base<T>::has_value() -> flag_expression
    +
    949 {
    +
    950 return flag_expression(this->derived_cast().storage().has_value(), this->derived_cast().shape());
    +
    951 }
    +
    952
    +
    953 template <class T>
    +
    954 inline auto xcontainer_optional_base<T>::has_value() const -> const_flag_expression
    +
    955 {
    +
    956 return const_flag_expression(this->derived_cast().storage().has_value(), this->derived_cast().shape());
    +
    957 }
    +
    958 }
    +
    959
    +
    960 /******************************************
    +
    961 * xfunction_optional_base implementation *
    +
    962 ******************************************/
    +
    963
    +
    964 namespace extension
    +
    965 {
    +
    966 template <class F, class... CT>
    +
    967 inline auto xfunction_optional_base<F, CT...>::value() const -> const_value_expression
    +
    968 {
    +
    969 return value_impl(std::make_index_sequence<sizeof...(CT)>());
    +
    970 }
    +
    971
    +
    972 template <class F, class... CT>
    +
    973 inline auto xfunction_optional_base<F, CT...>::has_value() const -> const_flag_expression
    +
    974 {
    +
    975 return has_value_impl(std::make_index_sequence<sizeof...(CT)>());
    +
    976 }
    +
    977
    +
    978 template <class F, class... CT>
    +
    979 template <std::size_t... I>
    +
    980 inline auto xfunction_optional_base<F, CT...>::value_impl(std::index_sequence<I...>) const
    +
    981 -> const_value_expression
    +
    982 {
    +
    983 return value_expression(
    +
    984 value_functor(),
    +
    985 xt::detail::split_optional_expression<CT>::value(std::get<I>(this->derived_cast().arguments()))...
    +
    986 );
    +
    987 }
    +
    988
    +
    989 template <class F, class... CT>
    +
    990 template <std::size_t... I>
    +
    991 inline auto xfunction_optional_base<F, CT...>::has_value_impl(std::index_sequence<I...>) const
    +
    992 -> const_flag_expression
    +
    993 {
    +
    994 return flag_expression(
    +
    995 flag_functor(),
    +
    996 xt::detail::split_optional_expression<CT>::has_value(
    +
    997 std::get<I>(this->derived_cast().arguments())
    +
    998 )...
    +
    999 );
    +
    1000 }
    +
    1001 }
    +
    1002
    +
    1003 /*****************************************
    +
    1004 * xdynamic_view_optional implementation *
    +
    1005 *****************************************/
    +
    1006
    +
    1007 namespace extension
    +
    1008 {
    +
    1009 template <class CT, class S, layout_type L, class FST>
    +
    1010 inline auto xdynamic_view_optional<CT, S, L, FST>::value() -> value_expression
    +
    1011 {
    +
    1012 return this->derived_cast().build_view(this->derived_cast().expression().value());
    +
    1013 }
    +
    1014
    +
    1015 template <class CT, class S, layout_type L, class FST>
    +
    1016 inline auto xdynamic_view_optional<CT, S, L, FST>::value() const -> const_value_expression
    +
    1017 {
    +
    1018 return this->derived_cast().build_view(this->derived_cast().expression().value());
    +
    1019 }
    +
    1020
    +
    1021 template <class CT, class S, layout_type L, class FST>
    +
    1022 inline auto xdynamic_view_optional<CT, S, L, FST>::has_value() -> flag_expression
    +
    1023 {
    +
    1024 return this->derived_cast().build_view(this->derived_cast().expression().has_value());
    +
    1025 }
    +
    1026
    +
    1027 template <class CT, class S, layout_type L, class FST>
    +
    1028 inline auto xdynamic_view_optional<CT, S, L, FST>::has_value() const -> const_flag_expression
    +
    1029 {
    +
    1030 return this->derived_cast().build_view(this->derived_cast().expression().has_value());
    +
    1031 }
    +
    1032 }
    +
    1033
    +
    1034 /**************************************
    +
    1035 * xbroadcast_optional implementation *
    +
    1036 **************************************/
    +
    1037
    +
    1038 namespace extension
    +
    1039 {
    +
    1040 template <class CT, class X>
    +
    1041 inline auto xbroadcast_optional<CT, X>::value() const -> const_value_expression
    +
    1042 {
    +
    1043 return this->derived_cast().build_broadcast(this->derived_cast().expression().value());
    +
    1044 }
    +
    1045
    +
    1046 template <class CT, class X>
    +
    1047 inline auto xbroadcast_optional<CT, X>::has_value() const -> const_flag_expression
    +
    1048 {
    +
    1049 return this->derived_cast().build_broadcast(this->derived_cast().expression().has_value());
    +
    1050 }
    +
    1051 }
    +
    1052
    +
    1053 /*****************************************
    +
    1054 * xfunctor_view_optional implementation *
    +
    1055 *****************************************/
    +
    1056
    +
    1057 namespace extension
    +
    1058 {
    +
    1059 template <class F, class CT>
    +
    1060 inline auto xfunctor_view_optional<F, CT>::value() -> value_expression
    +
    1061 {
    +
    1062 return this->derived_cast().build_functor_view(this->derived_cast().expression().value());
    +
    1063 }
    +
    1064
    +
    1065 template <class F, class CT>
    +
    1066 inline auto xfunctor_view_optional<F, CT>::value() const -> const_value_expression
    +
    1067 {
    +
    1068 return this->derived_cast().build_functor_view(this->derived_cast().expression().value());
    +
    1069 }
    +
    1070
    +
    1071 template <class F, class CT>
    +
    1072 inline auto xfunctor_view_optional<F, CT>::has_value() -> flag_expression
    +
    1073 {
    +
    1074 return this->derived_cast().expression().has_value();
    +
    1075 }
    +
    1076
    +
    1077 template <class F, class CT>
    +
    1078 inline auto xfunctor_view_optional<F, CT>::has_value() const -> const_flag_expression
    +
    1079 {
    +
    1080 return this->derived_cast().expression().has_value();
    +
    1081 }
    +
    1082 }
    +
    1083
    +
    1084 /***************************************
    +
    1085 * xindex_view_optional implementation *
    +
    1086 ***************************************/
    +
    1087
    +
    1088 namespace extension
    +
    1089 {
    +
    1090 template <class CT, class I>
    +
    1091 inline auto xindex_view_optional<CT, I>::value() -> value_expression
    +
    1092 {
    +
    1093 return this->derived_cast().build_index_view(this->derived_cast().expression().value());
    +
    1094 };
    +
    1095
    +
    1096 template <class CT, class I>
    +
    1097 inline auto xindex_view_optional<CT, I>::value() const -> const_value_expression
    +
    1098 {
    +
    1099 return this->derived_cast().build_index_view(this->derived_cast().expression().value());
    +
    1100 };
    +
    1101
    +
    1102 template <class CT, class I>
    +
    1103 inline auto xindex_view_optional<CT, I>::has_value() -> flag_expression
    +
    1104 {
    +
    1105 return this->derived_cast().build_index_view(this->derived_cast().expression().has_value());
    +
    1106 };
    +
    1107
    +
    1108 template <class CT, class I>
    +
    1109 inline auto xindex_view_optional<CT, I>::has_value() const -> const_flag_expression
    +
    1110 {
    +
    1111 return this->derived_cast().build_index_view(this->derived_cast().expression().has_value());
    +
    1112 };
    +
    1113 }
    +
    1114
    +
    1115 /************************************
    +
    1116 * xreducer_optional implementation *
    +
    1117 ************************************/
    +
    1118
    +
    1119 namespace extension
    +
    1120 {
    +
    1121 template <class F, class CT, class X, class O>
    +
    1122 inline auto xreducer_optional<F, CT, X, O>::value() const -> const_value_expression
    +
    1123 {
    +
    1124 auto func = this->derived_cast().functors();
    +
    1125 auto opts = this->derived_cast().options().template rebind<rebound_result_type>(
    +
    1126 this->derived_cast().options().initial_value.value(),
    +
    1127 this->derived_cast().options()
    +
    1128 );
    +
    1129
    +
    1130 return this->derived_cast().build_reducer(
    +
    1131 this->derived_cast().expression().value(),
    +
    1132 func.template rebind<rebound_result_type>(),
    +
    1133 std::move(opts)
    +
    1134 );
    +
    1135 }
    +
    1136
    +
    1137 template <class F, class CT, class X, class O>
    +
    1138 inline auto xreducer_optional<F, CT, X, O>::has_value() const -> const_flag_expression
    +
    1139 {
    +
    1140 auto opts = this->derived_cast().options().rebind(
    +
    1141 this->derived_cast().options().initial_value.has_value(),
    +
    1142 this->derived_cast().options()
    +
    1143 );
    +
    1144
    +
    1145 return this->derived_cast().build_reducer(
    +
    1146 this->derived_cast().expression().has_value(),
    +
    1147 make_xreducer_functor(xt::detail::optional_bitwise<bool>(), xt::const_value<bool>(true)),
    +
    1148 std::move(opts)
    +
    1149 );
    +
    1150 }
    +
    1151 }
    +
    1152
    +
    1153 /*****************************************
    +
    1154 * xstrided_view_optional implementation *
    +
    1155 *****************************************/
    +
    1156
    +
    1157 namespace extension
    +
    1158 {
    +
    1159 template <class CT, class S, layout_type L, class FST>
    +
    1160 inline auto xstrided_view_optional<CT, S, L, FST>::value() -> value_expression
    +
    1161 {
    +
    1162 return this->derived_cast().build_view(this->derived_cast().expression().value());
    +
    1163 }
    +
    1164
    +
    1165 template <class CT, class S, layout_type L, class FST>
    +
    1166 inline auto xstrided_view_optional<CT, S, L, FST>::value() const -> const_value_expression
    +
    1167 {
    +
    1168 return this->derived_cast().build_view(this->derived_cast().expression().value());
    +
    1169 }
    +
    1170
    +
    1171 template <class CT, class S, layout_type L, class FST>
    +
    1172 inline auto xstrided_view_optional<CT, S, L, FST>::has_value() -> flag_expression
    +
    1173 {
    +
    1174 return this->derived_cast().build_view(this->derived_cast().expression().has_value());
    +
    1175 }
    +
    1176
    +
    1177 template <class CT, class S, layout_type L, class FST>
    +
    1178 inline auto xstrided_view_optional<CT, S, L, FST>::has_value() const -> const_flag_expression
    +
    1179 {
    +
    1180 return this->derived_cast().build_view(this->derived_cast().expression().has_value());
    +
    1181 }
    +
    1182 }
    +
    1183
    +
    1184 /*********************************
    +
    1185 * xview_optional implementation *
    +
    1186 *********************************/
    +
    1187
    +
    1188 namespace extension
    +
    1189 {
    +
    1190 template <class CT, class... S>
    +
    1191 inline auto xview_optional<CT, S...>::value() -> value_expression
    +
    1192 {
    +
    1193 return this->derived_cast().build_view(this->derived_cast().expression().value());
    +
    1194 }
    +
    1195
    +
    1196 template <class CT, class... S>
    +
    1197 inline auto xview_optional<CT, S...>::value() const -> const_value_expression
    +
    1198 {
    +
    1199 return this->derived_cast().build_view(this->derived_cast().expression().value());
    +
    1200 }
    +
    1201
    +
    1202 template <class CT, class... S>
    +
    1203 inline auto xview_optional<CT, S...>::has_value() -> flag_expression
    +
    1204 {
    +
    1205 return this->derived_cast().build_view(this->derived_cast().expression().has_value());
    +
    1206 }
    +
    1207
    +
    1208 template <class CT, class... S>
    +
    1209 inline auto xview_optional<CT, S...>::has_value() const -> const_flag_expression
    +
    1210 {
    +
    1211 return this->derived_cast().build_view(this->derived_cast().expression().has_value());
    +
    1212 }
    +
    1213 }
    +
    1214
    +
    1215 /**************************************
    +
    1216 * xgenerator_optional implementation *
    +
    1217 **************************************/
    +
    1218
    +
    1219 namespace extension
    +
    1220 {
    +
    1221 template <class F, class R, class S>
    +
    1222 inline auto xgenerator_optional<F, R, S>::value() const -> const_value_expression
    +
    1223 {
    +
    1224 return this->derived_cast().template build_generator<value_closure>(
    +
    1225 detail::value_functor<F>::get(this->derived_cast().functor())
    +
    1226 );
    +
    1227 }
    +
    1228
    +
    1229 template <class F, class R, class S>
    +
    1230 inline auto xgenerator_optional<F, R, S>::has_value() const -> const_flag_expression
    +
    1231 {
    +
    1232 return this->derived_cast().template build_generator<flag_closure>(
    +
    1233 detail::flag_functor<F>::get(this->derived_cast().functor())
    +
    1234 );
    +
    1235 }
    +
    1236 }
    +
    1237
    +
    1238 /********************************
    +
    1239 * sign function implementation *
    +
    1240 ********************************/
    +
    1241
    +
    1242 namespace math
    +
    1243 {
    +
    1244 template <class T, class B>
    +
    +
    1245 struct sign_impl<xtl::xoptional<T, B>>
    +
    1246 {
    +
    1247 static constexpr auto run(const xtl::xoptional<T, B>& x)
    +
    1248 {
    +
    1249 return sign(x); // use overload declared above
    +
    1250 }
    +
    1251 };
    +
    +
    1252 }
    +
    1253
    +
    1254 template <class T, class B>
    +
    1255 inline auto sign(const xtl::xoptional<T, B>& e)
    +
    1256 {
    +
    1257 using value_type = std::decay_t<T>;
    +
    1258 return e.has_value() ? math::sign_impl<value_type>::run(e.value()) : xtl::missing<value_type>();
    +
    1259 }
    +
    1260
    +
    1261 /******************************************
    +
    1262 * value() and has_value() implementation *
    +
    1263 ******************************************/
    +
    1264
    +
    1265 template <class E, XTL_REQUIRES(is_xexpression<E>)>
    +
    1266 inline auto value(E&& e) -> detail::value_expression_t<E>
    +
    1267 {
    +
    1268 return detail::split_optional_expression<E>::value(std::forward<E>(e));
    +
    1269 }
    +
    1270
    +
    1271 template <class E, XTL_REQUIRES(is_xexpression<E>)>
    +
    1272 inline auto has_value(E&& e) -> detail::flag_expression_t<E>
    +
    1273 {
    +
    1274 return detail::split_optional_expression<E>::has_value(std::forward<E>(e));
    +
    1275 }
    +
    1276
    +
    1277 namespace detail
    +
    1278 {
    +
    1279 template <class T1, class T2>
    +
    1280 struct assign_data_impl
    +
    1281 {
    +
    1282 template <class E1, class E2>
    +
    1283 static void run(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial)
    +
    1284 {
    +
    1285 E1& de1 = e1.derived_cast();
    +
    1286 const E2& de2 = e2.derived_cast();
    +
    1287
    +
    1288 decltype(auto) bde1 = xt::value(de1);
    +
    1289 decltype(auto) hde1 = xt::has_value(de1);
    +
    1290 xexpression_assigner_base<xtensor_expression_tag>::assign_data(bde1, xt::value(de2), trivial);
    +
    1291 xexpression_assigner_base<xtensor_expression_tag>::assign_data(hde1, xt::has_value(de2), trivial);
    +
    1292 }
    +
    1293 };
    +
    1294
    +
    1295 template <class T>
    +
    1296 struct xarray_assigner
    +
    1297 {
    +
    1298 template <class E1, class E2>
    +
    1299 static void assign(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial)
    +
    1300 {
    +
    1301 E1& de1 = e1.derived_cast();
    +
    1302 const E2& de2 = e2.derived_cast();
    +
    1303 xarray<bool> mask = xt::full_like(de2, true);
    +
    1304
    +
    1305 decltype(auto) bde1 = xt::value(de1);
    +
    1306 decltype(auto) hde1 = xt::has_value(de1);
    +
    1307 xexpression_assigner_base<xtensor_expression_tag>::assign_data(bde1, e2, trivial);
    +
    1308 xexpression_assigner_base<xtensor_expression_tag>::assign_data(hde1, mask, trivial);
    +
    1309 }
    +
    1310 };
    +
    1311
    +
    1312 template <class T>
    +
    1313 struct xarray_assigner<xtl::xoptional<T>>
    +
    1314 {
    +
    1315 template <class E1, class E2>
    +
    1316 static void assign(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial)
    +
    1317 {
    +
    1318 xexpression_assigner_base<xtensor_expression_tag>::assign_data(e1, e2, trivial);
    +
    1319 }
    +
    1320 };
    +
    1321
    +
    1322 template <>
    +
    1323 struct assign_data_impl<xoptional_expression_tag, xtensor_expression_tag>
    +
    1324 {
    +
    1325 template <class E1, class E2>
    +
    1326 static void run(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial)
    +
    1327 {
    +
    1328 xarray_assigner<typename E2::value_type>::assign(e1, e2, trivial);
    +
    1329 }
    +
    1330 };
    +
    1331
    +
    1332 template <>
    +
    1333 struct assign_data_impl<xtensor_expression_tag, xoptional_expression_tag>
    +
    1334 {
    +
    1335 template <class E1, class E2>
    +
    1336 static void run(xexpression<E1>& e1, const xexpression<E2>& e2, bool trivial)
    +
    1337 {
    +
    1338 xexpression_assigner_base<xtensor_expression_tag>::assign_data(e1, e2, trivial);
    +
    1339 }
    +
    1340 };
    +
    1341 }
    +
    1342
    +
    1343 template <class E1, class E2>
    +
    1344 inline void xexpression_assigner_base<xoptional_expression_tag>::assign_data(
    +
    1345 xexpression<E1>& e1,
    +
    1346 const xexpression<E2>& e2,
    +
    1347 bool trivial
    +
    1348 )
    +
    1349 {
    +
    1350 detail::assign_data_impl<typename E1::expression_tag, typename E2::expression_tag>::run(e1, e2, trivial);
    +
    1351 }
    +
    1352}
    +
    1353
    +
    1354#endif
    + + + + + + + + + + + + + +
    Dense multidimensional container adaptor with tensor semantic.
    Definition xarray.hpp:217
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Broadcasted xexpression to a specified shape.
    + + +
    Base class for xexpressions.
    +
    Multidimensional function operating on xtensor expressions.
    +
    View of an xexpression .
    +
    Multidimensional function operating on indices.
    +
    View of an xexpression from vector of indices.
    +
    Reducing function operating over specified axes.
    Definition xreducer.hpp:817
    + +
    View of an xexpression using strides.
    +
    Dense multidimensional container adaptor with tensor semantics and fixed dimension.
    Definition xtensor.hpp:212
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    Dense multidimensional container adaptor with view semantics and fixed dimension.
    Definition xtensor.hpp:329
    +
    Multidimensional view with tensor semantic.
    Definition xview.hpp:360
    +
    auto sign(E &&e) noexcept -> detail::xfunction_type_t< math::sign_fun, E >
    Returns an element-wise indication of the sign of a number.
    Definition xmath.hpp:876
    +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    standard mathematical functions for xexpressions
    +
    auto full_like(const xexpression< E > &e, typename E::value_type fill_value)
    Create a xcontainer (xarray, xtensor or xtensor_fixed), filled with fill_value and of the same shape,...
    Definition xbuilder.hpp:136
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xoptional__assembly_8hpp_source.html b/xoptional__assembly_8hpp_source.html new file mode 100644 index 000000000..80156c2f7 --- /dev/null +++ b/xoptional__assembly_8hpp_source.html @@ -0,0 +1,784 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xoptional_assembly.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xoptional_assembly.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XOPTIONAL_ASSEMBLY_HPP
    +
    11#define XOPTIONAL_ASSEMBLY_HPP
    +
    12
    +
    13#include "xoptional.hpp"
    +
    14#include "xoptional_assembly_base.hpp"
    +
    15#include "xsemantic.hpp"
    +
    16
    +
    17namespace xt
    +
    18{
    +
    19
    +
    20 /**********************************
    +
    21 * xoptional_assembly declaration *
    +
    22 **********************************/
    +
    23
    +
    24 template <class VE, class FE>
    +
    25 class xoptional_assembly;
    +
    26
    +
    27 template <class VE, class FE>
    +
    + +
    29 {
    +
    30 using raw_value_expression = VE;
    +
    31 using value_storage_type = typename raw_value_expression::storage_type&;
    +
    32 using raw_flag_expression = FE;
    +
    33 using flag_storage_type = typename raw_flag_expression::storage_type&;
    + + +
    36 };
    +
    +
    37
    +
    38 template <class VE, class FE>
    +
    + +
    40 {
    + +
    42 using inner_shape_type = typename VE::inner_shape_type;
    + + +
    45 };
    +
    +
    46
    +
    60 template <class VE, class FE>
    +
    +
    61 class xoptional_assembly : public xoptional_assembly_base<xoptional_assembly<VE, FE>>,
    +
    62 public xcontainer_semantic<xoptional_assembly<VE, FE>>
    +
    63 {
    +
    64 public:
    +
    65
    + + + +
    69 using raw_value_expression = typename base_type::raw_value_expression;
    +
    70 using raw_flag_expression = typename base_type::raw_flag_expression;
    +
    71 using value_expression = typename base_type::value_expression;
    +
    72 using flag_expression = typename base_type::flag_expression;
    +
    73 using const_value_expression = typename base_type::const_value_expression;
    +
    74 using const_flag_expression = typename base_type::const_flag_expression;
    +
    75 using storage_type = typename base_type::storage_type;
    +
    76 using value_type = typename base_type::value_type;
    +
    77 using reference = typename base_type::reference;
    +
    78 using const_reference = typename base_type::const_reference;
    +
    79 using pointer = typename base_type::pointer;
    +
    80 using const_pointer = typename base_type::const_pointer;
    +
    81 using shape_type = typename base_type::shape_type;
    +
    82 using strides_type = typename base_type::strides_type;
    +
    83
    + +
    85
    + +
    87 explicit xoptional_assembly(const shape_type& shape, layout_type l = base_type::static_layout);
    +
    88 explicit xoptional_assembly(
    +
    89 const shape_type& shape,
    +
    90 const value_type& value,
    +
    91 layout_type l = base_type::static_layout
    +
    92 );
    +
    93 explicit xoptional_assembly(const shape_type& shape, const strides_type& strides);
    +
    94 explicit xoptional_assembly(const shape_type& shape, const strides_type& strides, const value_type& value);
    +
    95
    +
    96 xoptional_assembly(const VE& ve);
    +
    97 xoptional_assembly(VE&& ve);
    +
    98
    +
    99 template <class OVE, class OFE, typename = std::enable_if_t<is_xexpression<OVE>::value && is_xexpression<OFE>::value>>
    +
    100 xoptional_assembly(OVE&& ove, OFE&& ofe);
    +
    101
    +
    102 xoptional_assembly(const value_type& value);
    +
    103 xoptional_assembly(nested_initializer_list_t<value_type, 1> t);
    +
    104 xoptional_assembly(nested_initializer_list_t<value_type, 2> t);
    +
    105 xoptional_assembly(nested_initializer_list_t<value_type, 3> t);
    +
    106 xoptional_assembly(nested_initializer_list_t<value_type, 4> t);
    +
    107 xoptional_assembly(nested_initializer_list_t<value_type, 5> t);
    +
    108
    +
    109 template <class S = shape_type>
    +
    110 static xoptional_assembly from_shape(S&& s);
    +
    111
    +
    112 ~xoptional_assembly() = default;
    +
    113
    + +
    115 xoptional_assembly& operator=(const xoptional_assembly&);
    +
    116
    + + +
    119
    +
    120 template <class E>
    + +
    122
    +
    123 template <class E>
    +
    124 xoptional_assembly& operator=(const xexpression<E>& e);
    +
    125
    +
    126 private:
    +
    127
    +
    128 storage_type& storage_impl() noexcept;
    +
    129 const storage_type& storage_impl() const noexcept;
    +
    130
    +
    131 value_expression value_impl() noexcept;
    +
    132 const_value_expression value_impl() const noexcept;
    +
    133
    +
    134 flag_expression has_value_impl() noexcept;
    +
    135 const_flag_expression has_value_impl() const noexcept;
    +
    136
    +
    137 raw_value_expression m_value;
    +
    138 raw_flag_expression m_has_value;
    +
    139 storage_type m_storage;
    +
    140
    +
    141 friend class xoptional_assembly_base<xoptional_assembly<VE, FE>>;
    +
    142 };
    +
    +
    143
    +
    144 /******************************************
    +
    145 * xoptional_assembly_adaptor declaration *
    +
    146 ******************************************/
    +
    147
    +
    148 template <class VEC, class FEC>
    + +
    150
    +
    151 template <class VEC, class FEC>
    +
    + +
    153 {
    +
    154 using raw_value_expression = std::remove_reference_t<VEC>;
    +
    155 using value_storage_type = std::conditional_t<
    +
    156 std::is_const<raw_value_expression>::value,
    +
    157 const typename raw_value_expression::storage_type&,
    +
    158 typename raw_value_expression::storage_type&>;
    +
    159 using raw_flag_expression = std::remove_reference_t<FEC>;
    +
    160 using flag_storage_type = std::conditional_t<
    +
    161 std::is_const<raw_flag_expression>::value,
    +
    162 const typename raw_flag_expression::storage_type&,
    +
    163 typename raw_flag_expression::storage_type&>;
    + + +
    166 };
    +
    +
    167
    +
    168 template <class VEC, class FEC>
    +
    + +
    170 {
    + +
    172 using inner_shape_type = typename std::decay_t<VEC>::inner_shape_type;
    + + +
    175 };
    +
    +
    176
    +
    189 template <class VEC, class FEC>
    +
    +
    190 class xoptional_assembly_adaptor : public xoptional_assembly_base<xoptional_assembly_adaptor<VEC, FEC>>,
    +
    191 public xcontainer_semantic<xoptional_assembly_adaptor<VEC, FEC>>
    +
    192 {
    +
    193 public:
    +
    194
    + + + +
    198 using storage_type = typename base_type::storage_type;
    +
    199 using value_expression = typename base_type::value_expression;
    +
    200 using flag_expression = typename base_type::flag_expression;
    +
    201 using const_value_expression = typename base_type::const_value_expression;
    +
    202 using const_flag_expression = typename base_type::const_flag_expression;
    +
    203 using value_type = typename base_type::value_type;
    +
    204 using reference = typename base_type::reference;
    +
    205 using const_reference = typename base_type::const_reference;
    +
    206 using pointer = typename base_type::pointer;
    +
    207 using const_pointer = typename base_type::const_pointer;
    +
    208 using shape_type = typename base_type::shape_type;
    +
    209 using strides_type = typename base_type::strides_type;
    +
    210 using temporary_type = typename semantic_base::temporary_type;
    +
    211
    +
    212 using assembly_type = base_type;
    +
    213
    +
    214 template <class OVE, class OFE>
    +
    215 xoptional_assembly_adaptor(OVE&& ve, OFE&& fe);
    +
    216
    +
    217 ~xoptional_assembly_adaptor() = default;
    +
    218
    + + +
    221
    + + +
    224 xoptional_assembly_adaptor& operator=(temporary_type&&);
    +
    225
    +
    226 template <class E>
    +
    227 xoptional_assembly_adaptor& operator=(const xexpression<E>& e);
    +
    228
    +
    229 private:
    +
    230
    +
    231 storage_type& storage_impl() noexcept;
    +
    232 const storage_type& storage_impl() const noexcept;
    +
    233
    +
    234 value_expression value_impl() noexcept;
    +
    235 const_value_expression value_impl() const noexcept;
    +
    236
    +
    237 flag_expression has_value_impl() noexcept;
    +
    238 const_flag_expression has_value_impl() const noexcept;
    +
    239
    +
    240 VEC m_value;
    +
    241 FEC m_has_value;
    +
    242 storage_type m_storage;
    +
    243
    + +
    245 };
    +
    +
    246
    +
    247 /*************************************
    +
    248 * xoptional_assembly implementation *
    +
    249 *************************************/
    +
    250
    +
    251 namespace detail
    +
    252 {
    +
    253 template <class T, class S>
    +
    254 inline void nested_optional_copy(T&& iter, const S& s)
    +
    255 {
    +
    256 iter->value() = s.value();
    +
    257 iter->has_value() = s.has_value();
    +
    258 ++iter;
    +
    259 }
    +
    260
    +
    261 template <class T, class S>
    +
    262 inline void nested_optional_copy(T&& iter, std::initializer_list<S> s)
    +
    263 {
    +
    264 for (auto it = s.begin(); it != s.end(); ++it)
    +
    265 {
    +
    266 nested_optional_copy(std::forward<T>(iter), *it);
    +
    267 }
    +
    268 }
    +
    269 }
    +
    270
    +
    278 template <class VE, class FE>
    +
    + +
    280 : m_value()
    +
    281 , m_has_value()
    +
    282 , m_storage(m_value.storage(), m_has_value.storage())
    +
    283 {
    +
    284 }
    +
    +
    285
    +
    292 template <class VE, class FE>
    +
    + +
    294 : m_value(shape, l)
    +
    295 , m_has_value(shape, l)
    +
    296 , m_storage(m_value.storage(), m_has_value.storage())
    +
    297 {
    +
    298 }
    +
    +
    299
    +
    307 template <class VE, class FE>
    +
    + +
    309 const shape_type& shape,
    +
    310 const value_type& value,
    + +
    312 )
    +
    313 : m_value(shape, value.value(), l)
    +
    314 , m_has_value(shape, value.has_value(), l)
    +
    315 , m_storage(m_value.storage(), m_has_value.storage())
    +
    316 {
    +
    317 }
    +
    +
    318
    +
    324 template <class VE, class FE>
    +
    +
    325 inline xoptional_assembly<VE, FE>::xoptional_assembly(const shape_type& shape, const strides_type& strides)
    +
    326 : m_value(shape, strides)
    +
    327 , m_has_value(shape, strides)
    +
    328 , m_storage(m_value.storage(), m_has_value.storage())
    +
    329 {
    +
    330 }
    +
    +
    331
    +
    339 template <class VE, class FE>
    +
    + +
    341 const shape_type& shape,
    +
    342 const strides_type& strides,
    +
    343 const value_type& value
    +
    344 )
    +
    345 : m_value(shape, strides, value.value())
    +
    346 , m_has_value(shape, strides, value.has_value())
    +
    347 , m_storage(m_value.storage(), m_has_value.storage())
    +
    348 {
    +
    349 }
    +
    +
    350
    +
    356 template <class VE, class FE>
    +
    + +
    358 : m_value(value.value())
    +
    359 , m_has_value(value.has_value())
    +
    360 , m_storage(m_value.storage(), m_has_value.storage())
    +
    361 {
    +
    362 }
    +
    +
    363
    +
    369 template <class VE, class FE>
    +
    + +
    371 : m_value(ve)
    +
    372 , m_has_value(ve.shape(), true, ve.layout())
    +
    373 , m_storage(m_value.storage(), m_has_value.storage())
    +
    374 {
    +
    375 }
    +
    +
    376
    +
    384 template <class VE, class FE>
    +
    + +
    386 : m_value(std::move(ve))
    +
    387 , m_has_value(ve.shape(), true, ve.layout())
    +
    388 , m_storage(m_value.storage(), m_has_value.storage())
    +
    389 {
    +
    390 }
    +
    +
    391
    +
    398 template <class VE, class FE>
    +
    399 template <class OVE, class OFE, typename>
    +
    + +
    401 : m_value(std::forward<OVE>(ove))
    +
    402 , m_has_value(std::forward<OFE>(ofe))
    +
    403 , m_storage(m_value.storage(), m_has_value.storage())
    +
    404 {
    +
    405 }
    +
    +
    406
    +
    408
    +
    417 template <class VE, class FE>
    +
    +
    418 inline xoptional_assembly<VE, FE>::xoptional_assembly(nested_initializer_list_t<value_type, 1> t)
    +
    419 : base_type()
    +
    420 , m_value()
    +
    421 , m_has_value()
    +
    422 , m_storage(m_value.storage(), m_has_value.storage())
    +
    423 {
    +
    424 base_type::resize(xt::shape<shape_type>(t));
    +
    425 bool condition = VE::static_layout == layout_type::row_major
    +
    426 && FE::static_layout == layout_type::row_major;
    +
    427 condition ? detail::nested_optional_copy(this->linear_begin(), t)
    +
    428 : nested_copy(this->template begin<layout_type::row_major>(), t);
    +
    429 }
    +
    +
    430
    +
    435 template <class VE, class FE>
    +
    +
    436 inline xoptional_assembly<VE, FE>::xoptional_assembly(nested_initializer_list_t<value_type, 2> t)
    +
    437 : base_type()
    +
    438 , m_value()
    +
    439 , m_has_value()
    +
    440 , m_storage(m_value.storage(), m_has_value.storage())
    +
    441 {
    +
    442 base_type::resize(xt::shape<shape_type>(t));
    +
    443 bool condition = VE::static_layout == layout_type::row_major
    +
    444 && FE::static_layout == layout_type::row_major;
    +
    445 condition ? detail::nested_optional_copy(this->linear_begin(), t)
    +
    446 : nested_copy(this->template begin<layout_type::row_major>(), t);
    +
    447 }
    +
    +
    448
    +
    453 template <class VE, class FE>
    +
    +
    454 inline xoptional_assembly<VE, FE>::xoptional_assembly(nested_initializer_list_t<value_type, 3> t)
    +
    455 : base_type()
    +
    456 , m_value()
    +
    457 , m_has_value()
    +
    458 , m_storage(m_value.storage(), m_has_value.storage())
    +
    459 {
    +
    460 base_type::resize(xt::shape<shape_type>(t));
    +
    461 bool condition = VE::static_layout == layout_type::row_major
    +
    462 && FE::static_layout == layout_type::row_major;
    +
    463 condition ? detail::nested_optional_copy(this->linear_begin(), t)
    +
    464 : nested_copy(this->template begin<layout_type::row_major>(), t);
    +
    465 }
    +
    +
    466
    +
    471 template <class VE, class FE>
    +
    +
    472 inline xoptional_assembly<VE, FE>::xoptional_assembly(nested_initializer_list_t<value_type, 4> t)
    +
    473 : base_type()
    +
    474 , m_value()
    +
    475 , m_has_value()
    +
    476 , m_storage(m_value.storage(), m_has_value.storage())
    +
    477 {
    +
    478 base_type::resize(xt::shape<shape_type>(t));
    +
    479 bool condition = VE::static_layout == layout_type::row_major
    +
    480 && FE::static_layout == layout_type::row_major;
    +
    481 condition ? detail::nested_optional_copy(this->linear_begin(), t)
    +
    482 : nested_copy(this->template begin<layout_type::row_major>(), t);
    +
    483 }
    +
    +
    484
    +
    489 template <class VE, class FE>
    +
    +
    490 inline xoptional_assembly<VE, FE>::xoptional_assembly(nested_initializer_list_t<value_type, 5> t)
    +
    491 : base_type()
    +
    492 , m_value()
    +
    493 , m_has_value()
    +
    494 , m_storage(m_value.storage(), m_has_value.storage())
    +
    495 {
    +
    496 base_type::resize(xt::shape<shape_type>(t));
    +
    497 bool condition = VE::static_layout == layout_type::row_major
    +
    498 && FE::static_layout == layout_type::row_major;
    +
    499 condition ? detail::nested_optional_copy(this->linear_begin(), t)
    +
    500 : nested_copy(this->template begin<layout_type::row_major>(), t);
    +
    501 }
    +
    +
    502
    +
    504
    +
    509 template <class VE, class FE>
    +
    510 template <class S>
    +
    + +
    512 {
    +
    513 shape_type shape = xtl::forward_sequence<shape_type, S>(s);
    +
    514 return self_type(shape);
    +
    515 }
    +
    +
    516
    +
    517 template <class VE, class FE>
    +
    518 inline xoptional_assembly<VE, FE>::xoptional_assembly(const self_type& rhs)
    +
    519 : base_type()
    +
    520 , semantic_base()
    +
    521 , m_value(rhs.m_value)
    +
    522 , m_has_value(rhs.m_has_value)
    +
    523 , m_storage(m_value.storage(), m_has_value.storage())
    +
    524 {
    +
    525 }
    +
    526
    +
    527 template <class VE, class FE>
    + +
    529 : base_type()
    +
    530 , semantic_base()
    +
    531 , m_value(rhs.m_value)
    +
    532 , m_has_value(rhs.m_has_value)
    +
    533 , m_storage(m_value.storage(), m_has_value.storage())
    +
    534 {
    +
    535 }
    +
    536
    +
    537 template <class VE, class FE>
    +
    538 inline auto xoptional_assembly<VE, FE>::operator=(const self_type& rhs) -> self_type&
    +
    539 {
    +
    540 base_type::operator=(rhs);
    +
    541 m_value = rhs.m_value;
    +
    542 m_has_value = rhs.m_has_value;
    +
    543 return *this;
    +
    544 }
    +
    545
    +
    546 template <class VE, class FE>
    +
    547 inline auto xoptional_assembly<VE, FE>::operator=(self_type&& rhs) -> self_type&
    +
    548 {
    +
    549 base_type::operator=(rhs);
    +
    550 m_value = std::move(rhs.m_value);
    +
    551 m_has_value = std::move(rhs.m_has_value);
    +
    552 return *this;
    +
    553 }
    +
    554
    +
    562 template <class VE, class FE>
    +
    563 template <class E>
    +
    + +
    565 : base_type()
    +
    566 , m_value()
    +
    567 , m_has_value()
    +
    568 , m_storage(m_value.storage(), m_has_value.storage())
    +
    569 {
    +
    570 semantic_base::assign(e);
    +
    571 }
    +
    +
    572
    +
    576 template <class VE, class FE>
    +
    577 template <class E>
    +
    + +
    579 {
    +
    580 return semantic_base::operator=(e);
    +
    581 }
    +
    +
    582
    +
    584
    +
    585 template <class VE, class FE>
    +
    586 inline auto xoptional_assembly<VE, FE>::storage_impl() noexcept -> storage_type&
    +
    587 {
    +
    588 return m_storage;
    +
    589 }
    +
    590
    +
    591 template <class VE, class FE>
    +
    592 inline auto xoptional_assembly<VE, FE>::storage_impl() const noexcept -> const storage_type&
    +
    593 {
    +
    594 return m_storage;
    +
    595 }
    +
    596
    +
    597 template <class VE, class FE>
    +
    598 inline auto xoptional_assembly<VE, FE>::value_impl() noexcept -> value_expression
    +
    599 {
    +
    600 return m_value;
    +
    601 }
    +
    602
    +
    603 template <class VE, class FE>
    +
    604 inline auto xoptional_assembly<VE, FE>::value_impl() const noexcept -> const_value_expression
    +
    605 {
    +
    606 return m_value;
    +
    607 }
    +
    608
    +
    609 template <class VE, class FE>
    +
    610 inline auto xoptional_assembly<VE, FE>::has_value_impl() noexcept -> flag_expression
    +
    611 {
    +
    612 return m_has_value;
    +
    613 }
    +
    614
    +
    615 template <class VE, class FE>
    +
    616 inline auto xoptional_assembly<VE, FE>::has_value_impl() const noexcept -> const_flag_expression
    +
    617 {
    +
    618 return m_has_value;
    +
    619 }
    +
    620
    +
    621 /*********************************************
    +
    622 * xoptional_assembly_adaptor implementation *
    +
    623 *********************************************/
    +
    624
    +
    635 template <class VEC, class FEC>
    +
    636 template <class OVE, class OFE>
    +
    + +
    638 : m_value(std::forward<OVE>(ve))
    +
    639 , m_has_value(std::forward<OFE>(fe))
    +
    640 , m_storage(m_value.storage(), m_has_value.storage())
    +
    641 {
    +
    642 }
    +
    +
    643
    +
    645
    +
    646 template <class VEC, class FEC>
    + +
    648 : base_type()
    +
    649 , semantic_base()
    +
    650 , m_value(rhs.m_value)
    +
    651 , m_has_value(rhs.m_has_value)
    +
    652 , m_storage(m_value.storage(), m_has_value.storage())
    +
    653 {
    +
    654 }
    +
    655
    +
    656 template <class VEC, class FEC>
    +
    657 inline auto xoptional_assembly_adaptor<VEC, FEC>::operator=(const self_type& rhs) -> self_type&
    +
    658 {
    +
    659 base_type::operator=(rhs);
    +
    660 m_value = rhs.m_value;
    +
    661 m_has_value = rhs.m_has_value;
    +
    662 return *this;
    +
    663 }
    +
    664
    +
    665 template <class VEC, class FEC>
    + +
    667 : base_type()
    +
    668 , semantic_base()
    +
    669 , m_value(rhs.m_value)
    +
    670 , m_has_value(rhs.m_has_value)
    +
    671 , m_storage(m_value.storage(), m_has_value.storage())
    +
    672 {
    +
    673 }
    +
    674
    +
    675 template <class VEC, class FEC>
    +
    676 inline auto xoptional_assembly_adaptor<VEC, FEC>::operator=(self_type&& rhs) -> self_type&
    +
    677 {
    +
    678 base_type::operator=(std::move(rhs));
    +
    679 m_value = rhs.m_value;
    +
    680 m_has_value = rhs.m_has_value;
    +
    681 return *this;
    +
    682 }
    +
    683
    +
    684 template <class VEC, class FEC>
    +
    685 inline auto xoptional_assembly_adaptor<VEC, FEC>::operator=(temporary_type&& tmp) -> self_type&
    +
    686 {
    +
    687 m_value = std::move(tmp.value());
    +
    688 m_has_value = std::move(tmp.has_value());
    +
    689 return *this;
    +
    690 }
    +
    691
    +
    699 template <class VEC, class FEC>
    +
    700 template <class E>
    +
    + +
    702 {
    +
    703 return semantic_base::operator=(e);
    +
    704 }
    +
    +
    705
    +
    707
    +
    708 template <class VEC, class FEC>
    +
    709 inline auto xoptional_assembly_adaptor<VEC, FEC>::storage_impl() noexcept -> storage_type&
    +
    710 {
    +
    711 return m_storage;
    +
    712 }
    +
    713
    +
    714 template <class VEC, class FEC>
    +
    715 inline auto xoptional_assembly_adaptor<VEC, FEC>::storage_impl() const noexcept -> const storage_type&
    +
    716 {
    +
    717 return m_storage;
    +
    718 }
    +
    719
    +
    720 template <class VEC, class FEC>
    +
    721 inline auto xoptional_assembly_adaptor<VEC, FEC>::value_impl() noexcept -> value_expression
    +
    722 {
    +
    723 return m_value;
    +
    724 }
    +
    725
    +
    726 template <class VEC, class FEC>
    +
    727 inline auto xoptional_assembly_adaptor<VEC, FEC>::value_impl() const noexcept -> const_value_expression
    +
    728 {
    +
    729 return m_value;
    +
    730 }
    +
    731
    +
    732 template <class VEC, class FEC>
    +
    733 inline auto xoptional_assembly_adaptor<VEC, FEC>::has_value_impl() noexcept -> flag_expression
    +
    734 {
    +
    735 return m_has_value;
    +
    736 }
    +
    737
    +
    738 template <class VEC, class FEC>
    +
    739 inline auto xoptional_assembly_adaptor<VEC, FEC>::has_value_impl() const noexcept -> const_flag_expression
    +
    740 {
    +
    741 return m_has_value;
    +
    742 }
    +
    743}
    +
    744
    +
    745#endif
    +
    Implementation of the xsemantic_base interface for dense multidimensional containers.
    +
    Base class for xexpressions.
    +
    Dense multidimensional adaptor holding optional values, optimized for tensor operations.
    +
    xoptional_assembly_adaptor(OVE &&ve, OFE &&fe)
    Constructs an xoptional_assembly_adaptor of the given value and missing mask expressions.
    +
    Base class for dense multidimensional optional assemblies.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the optional assembly.
    +
    value_expression value() noexcept
    Return an expression for the values of the optional assembly.
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the optional assembly.
    +
    void resize(const S &shape, bool force=false)
    Resizes the optional assembly.
    + + +
    Dense multidimensional container holding optional values, optimized for tensor operations.
    +
    xoptional_assembly()
    Allocates an uninitialized xoptional_assembly that holds 0 element.
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    +
    + + + + diff --git a/xoptional__assembly__base_8hpp_source.html b/xoptional__assembly__base_8hpp_source.html new file mode 100644 index 000000000..0690a523b --- /dev/null +++ b/xoptional__assembly__base_8hpp_source.html @@ -0,0 +1,1083 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xoptional_assembly_base.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xoptional_assembly_base.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XOPTIONAL_ASSEMBLY_BASE_HPP
    +
    11#define XOPTIONAL_ASSEMBLY_BASE_HPP
    +
    12
    +
    13#include "xiterable.hpp"
    +
    14#include "xoptional_assembly_storage.hpp"
    +
    15#include "xtensor_forward.hpp"
    +
    16
    +
    17namespace xt
    +
    18{
    +
    19 template <class D, bool is_const>
    +
    20 class xoptional_assembly_stepper;
    +
    21
    +
    22 /***************************
    +
    23 * xoptional_assembly_base *
    +
    24 ***************************/
    +
    25
    +
    38 template <class D>
    +
    + +
    40 {
    +
    41 public:
    +
    42
    + +
    44 using derived_type = D;
    + +
    46
    +
    47 using raw_value_expression = typename inner_types::raw_value_expression;
    +
    48 using base_value_type = typename raw_value_expression::value_type;
    +
    49 using base_reference = typename raw_value_expression::reference;
    +
    50 using base_const_reference = typename raw_value_expression::const_reference;
    +
    51
    +
    52 using raw_flag_expression = typename inner_types::raw_flag_expression;
    +
    53 using flag_type = typename raw_flag_expression::value_type;
    +
    54 using flag_reference = typename raw_flag_expression::reference;
    +
    55 using flag_const_reference = typename raw_flag_expression::const_reference;
    +
    56
    +
    57 using storage_type = typename inner_types::storage_type;
    +
    58
    +
    59 using value_type = typename storage_type::value_type;
    +
    60 using reference = typename storage_type::reference;
    +
    61 using const_reference = typename storage_type::const_reference;
    +
    62 using pointer = typename storage_type::pointer;
    +
    63 using const_pointer = typename storage_type::const_pointer;
    +
    64 using size_type = typename raw_value_expression::size_type;
    +
    65 using difference_type = typename raw_value_expression::difference_type;
    +
    66 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    67 using bool_load_type = xt::bool_load_type<value_type>;
    +
    68
    +
    69 using shape_type = typename raw_value_expression::shape_type;
    +
    70 using strides_type = typename raw_value_expression::strides_type;
    +
    71 using backstrides_type = typename raw_value_expression::backstrides_type;
    +
    72
    +
    73 using inner_shape_type = typename raw_value_expression::inner_shape_type;
    +
    74 using inner_strides_type = typename raw_value_expression::inner_strides_type;
    +
    75 using inner_backstrides_type = typename raw_value_expression::inner_backstrides_type;
    +
    76
    + +
    78 using stepper = typename iterable_base::stepper;
    +
    79 using const_stepper = typename iterable_base::const_stepper;
    +
    80
    +
    81 static constexpr layout_type static_layout = raw_value_expression::static_layout;
    +
    82 static constexpr bool contiguous_layout = raw_value_expression::contiguous_layout;
    +
    83
    + +
    85 using value_expression = raw_value_expression&;
    +
    86 using flag_expression = raw_flag_expression&;
    +
    87 using const_value_expression = const raw_value_expression&;
    +
    88 using const_flag_expression = const raw_flag_expression&;
    +
    89
    +
    90 template <layout_type L>
    +
    91 using layout_iterator = typename iterable_base::template layout_iterator<L>;
    +
    92 template <layout_type L>
    +
    93 using const_layout_iterator = typename iterable_base::template const_layout_iterator<L>;
    +
    94 template <layout_type L>
    +
    95 using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>;
    +
    96 template <layout_type L>
    +
    97 using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>;
    +
    98
    +
    99 template <class S, layout_type L>
    +
    100 using broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>;
    +
    101 template <class S, layout_type L>
    +
    102 using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>;
    +
    103 template <class S, layout_type L>
    +
    104 using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>;
    +
    105 template <class S, layout_type L>
    +
    106 using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>;
    +
    107
    +
    108 using linear_iterator = typename storage_type::iterator;
    +
    109 using const_linear_iterator = typename storage_type::const_iterator;
    +
    110 using reverse_linear_iterator = typename storage_type::reverse_iterator;
    +
    111 using const_reverse_linear_iterator = typename storage_type::const_reverse_iterator;
    +
    112
    +
    113 using iterator = typename iterable_base::iterator;
    +
    114 using const_iterator = typename iterable_base::const_iterator;
    +
    115 using reverse_iterator = typename iterable_base::reverse_iterator;
    +
    116 using const_reverse_iterator = typename iterable_base::const_reverse_iterator;
    +
    117
    +
    +
    118 size_type size() const noexcept;
    +
    +
    119 constexpr size_type dimension() const noexcept;
    +
    +
    120 const inner_shape_type& shape() const noexcept;
    +
    +
    121 size_type shape(size_type index) const;
    +
    +
    122 const inner_strides_type& strides() const noexcept;
    +
    +
    123 const inner_backstrides_type& backstrides() const noexcept;
    +
    124
    +
    125 template <class S = shape_type>
    +
    +
    126 void resize(const S& shape, bool force = false);
    +
    127 template <class S = shape_type>
    +
    +
    128 void resize(const S& shape, layout_type l);
    +
    129 template <class S = shape_type>
    +
    +
    130 void resize(const S& shape, const strides_type& strides);
    +
    131
    +
    132 template <class S = shape_type>
    +
    +
    133 auto& reshape(const S& shape, layout_type layout = static_layout) &;
    +
    134
    +
    135 template <class T>
    +
    136 auto& reshape(std::initializer_list<T> shape, layout_type layout = static_layout) &;
    +
    137
    +
    +
    138 layout_type layout() const noexcept;
    +
    139 bool is_contiguous() const noexcept;
    +
    140
    +
    141 template <class T>
    +
    +
    142 void fill(const T& value);
    +
    143
    +
    144 template <class... Args>
    +
    145 reference operator()(Args... args);
    +
    146
    +
    147 template <class... Args>
    +
    148 const_reference operator()(Args... args) const;
    +
    149
    +
    150 template <class... Args>
    +
    151 reference at(Args... args);
    +
    152
    +
    153 template <class... Args>
    +
    154 const_reference at(Args... args) const;
    +
    155
    +
    156 template <class... Args>
    +
    157 reference unchecked(Args... args);
    +
    158
    +
    159 template <class... Args>
    +
    160 const_reference unchecked(Args... args) const;
    +
    161
    +
    162 template <class S>
    +
    163 disable_integral_t<S, reference> operator[](const S& index);
    +
    164 template <class I>
    +
    165 reference operator[](std::initializer_list<I> index);
    +
    166 reference operator[](size_type i);
    +
    167
    +
    168 template <class S>
    +
    169 disable_integral_t<S, const_reference> operator[](const S& index) const;
    +
    170 template <class I>
    +
    171 const_reference operator[](std::initializer_list<I> index) const;
    +
    172 const_reference operator[](size_type i) const;
    +
    173
    +
    174 template <class... Args>
    +
    175 reference periodic(Args... args);
    +
    176
    +
    177 template <class... Args>
    +
    178 const_reference periodic(Args... args) const;
    +
    179
    +
    +
    180 reference front();
    +
    +
    181 const_reference front() const;
    +
    182
    +
    +
    183 reference back();
    +
    +
    184 const_reference back() const;
    +
    185
    +
    +
    186 reference flat(size_type args);
    +
    +
    187 const_reference flat(size_type args) const;
    +
    188
    +
    189 template <class It>
    +
    190 reference element(It first, It last);
    +
    191 template <class It>
    +
    192 const_reference element(It first, It last) const;
    +
    193
    +
    194 template <class... Args>
    +
    +
    195 bool in_bounds(Args... args) const;
    +
    196
    +
    197 storage_type& storage() noexcept;
    +
    198 const storage_type& storage() const noexcept;
    +
    199
    +
    200 value_type* data() noexcept;
    +
    201 const value_type* data() const noexcept;
    +
    202 const size_type data_offset() const noexcept;
    +
    203
    +
    204 template <class S>
    +
    +
    205 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    206
    +
    207 template <class S>
    +
    +
    208 bool has_linear_assign(const S& strides) const noexcept;
    +
    209
    +
    210 using iterable_base::begin;
    +
    211 using iterable_base::cbegin;
    +
    212 using iterable_base::cend;
    +
    213 using iterable_base::crbegin;
    +
    214 using iterable_base::crend;
    +
    215 using iterable_base::end;
    +
    216 using iterable_base::rbegin;
    +
    217 using iterable_base::rend;
    +
    218
    +
    219 linear_iterator linear_begin() noexcept;
    +
    220 linear_iterator linear_end() noexcept;
    +
    221
    +
    222 const_linear_iterator linear_begin() const noexcept;
    +
    223 const_linear_iterator linear_end() const noexcept;
    +
    224 const_linear_iterator linear_cbegin() const noexcept;
    +
    225 const_linear_iterator linear_cend() const noexcept;
    +
    226
    +
    227 reverse_linear_iterator linear_rbegin() noexcept;
    +
    228 reverse_linear_iterator linear_rend() noexcept;
    +
    229
    +
    230 const_reverse_linear_iterator linear_rbegin() const noexcept;
    +
    231 const_reverse_linear_iterator linear_rend() const noexcept;
    +
    232 const_reverse_linear_iterator linear_crbegin() const noexcept;
    +
    233 const_reverse_linear_iterator linear_crend() const noexcept;
    +
    234
    +
    235 template <class S>
    +
    236 stepper stepper_begin(const S& shape) noexcept;
    +
    237 template <class S>
    +
    238 stepper stepper_end(const S& shape, layout_type l) noexcept;
    +
    239
    +
    240 template <class S>
    +
    241 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    242 template <class S>
    +
    243 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    244
    +
    +
    245 value_expression value() noexcept;
    +
    +
    246 const_value_expression value() const noexcept;
    +
    247
    +
    +
    248 flag_expression has_value() noexcept;
    +
    +
    249 const_flag_expression has_value() const noexcept;
    +
    250
    +
    251 protected:
    +
    252
    +
    253 xoptional_assembly_base() = default;
    +
    254 ~xoptional_assembly_base() = default;
    +
    255
    + +
    257 xoptional_assembly_base& operator=(const xoptional_assembly_base&) = default;
    +
    258
    + +
    260 xoptional_assembly_base& operator=(xoptional_assembly_base&&) = default;
    +
    261
    +
    262 private:
    +
    263
    +
    264 derived_type& derived_cast() noexcept;
    +
    265 const derived_type& derived_cast() const noexcept;
    +
    266
    +
    267 friend class xiterable<D>;
    +
    268 friend class xconst_iterable<D>;
    +
    269 };
    +
    270
    +
    271 /******************************
    +
    272 * xoptional_assembly_stepper *
    +
    273 ******************************/
    +
    274
    +
    275 template <class D, bool is_const>
    +
    + +
    277 {
    +
    278 public:
    +
    279
    + +
    281 using assembly_type = typename D::assembly_type;
    +
    282 using value_type = typename assembly_type::value_type;
    +
    283 using reference = std::
    +
    284 conditional_t<is_const, typename assembly_type::const_reference, typename assembly_type::reference>;
    +
    285 using pointer = std::conditional_t<is_const, typename assembly_type::const_pointer, typename assembly_type::pointer>;
    +
    286 using size_type = typename assembly_type::size_type;
    +
    287 using difference_type = typename assembly_type::difference_type;
    +
    288 using raw_value_expression = typename assembly_type::raw_value_expression;
    +
    289 using raw_flag_expression = typename assembly_type::raw_flag_expression;
    +
    290 using value_stepper = std::
    +
    291 conditional_t<is_const, typename raw_value_expression::const_stepper, typename raw_value_expression::stepper>;
    +
    292 using flag_stepper = std::
    +
    293 conditional_t<is_const, typename raw_flag_expression::const_stepper, typename raw_flag_expression::stepper>;
    +
    294
    +
    295 xoptional_assembly_stepper(value_stepper vs, flag_stepper fs) noexcept;
    +
    296
    +
    297
    +
    298 void step(size_type dim);
    +
    299 void step_back(size_type dim);
    +
    300 void step(size_type dim, size_type n);
    +
    301 void step_back(size_type dim, size_type n);
    +
    302 void reset(size_type dim);
    +
    303 void reset_back(size_type dim);
    +
    304
    +
    305 void to_begin();
    +
    306 void to_end(layout_type l);
    +
    307
    +
    308 reference operator*() const;
    +
    309
    +
    310 private:
    +
    311
    +
    312 value_stepper m_vs;
    +
    313 flag_stepper m_fs;
    +
    314 };
    +
    +
    315
    +
    316 /******************************************
    +
    317 * xoptional_assembly_base implementation *
    +
    318 ******************************************/
    +
    319
    +
    327 template <class D>
    +
    +
    328 inline auto xoptional_assembly_base<D>::size() const noexcept -> size_type
    +
    329 {
    +
    330 return value().size();
    +
    331 }
    +
    +
    332
    +
    336 template <class D>
    +
    +
    337 inline constexpr auto xoptional_assembly_base<D>::dimension() const noexcept -> size_type
    +
    338 {
    +
    339 return value().dimension();
    +
    340 }
    +
    +
    341
    +
    345 template <class D>
    +
    +
    346 inline auto xoptional_assembly_base<D>::shape() const noexcept -> const inner_shape_type&
    +
    347 {
    +
    348 return value().shape();
    +
    349 }
    +
    +
    350
    +
    354 template <class D>
    +
    +
    355 inline auto xoptional_assembly_base<D>::shape(size_type i) const -> size_type
    +
    356 {
    +
    357 return value().shape(i);
    +
    358 }
    +
    +
    359
    +
    363 template <class D>
    +
    +
    364 inline auto xoptional_assembly_base<D>::strides() const noexcept -> const inner_strides_type&
    +
    365 {
    +
    366 return value().strides();
    +
    367 }
    +
    +
    368
    +
    372 template <class D>
    +
    +
    373 inline auto xoptional_assembly_base<D>::backstrides() const noexcept -> const inner_backstrides_type&
    +
    374 {
    +
    375 return value().backstrides();
    +
    376 }
    +
    +
    377
    +
    379
    +
    385 template <class D>
    +
    386 template <class S>
    +
    +
    387 inline void xoptional_assembly_base<D>::resize(const S& shape, bool force)
    +
    388 {
    +
    389 value().resize(shape, force);
    +
    390 has_value().resize(shape, force);
    +
    391 }
    +
    +
    392
    +
    398 template <class D>
    +
    399 template <class S>
    +
    + +
    401 {
    +
    402 value().resize(shape, l);
    +
    403 has_value().resize(shape, l);
    +
    404 }
    +
    +
    405
    +
    411 template <class D>
    +
    412 template <class S>
    +
    +
    413 inline void xoptional_assembly_base<D>::resize(const S& shape, const strides_type& strides)
    +
    414 {
    +
    415 value().resize(shape, strides);
    +
    416 has_value().resize(shape, strides);
    +
    417 }
    +
    +
    418
    +
    424 template <class D>
    +
    425 template <class S>
    +
    + +
    427 {
    +
    428 value().reshape(shape, layout);
    +
    429 has_value().reshape(shape, layout);
    +
    430 return *this;
    +
    431 }
    +
    +
    432
    +
    433 template <class D>
    +
    434 template <class T>
    +
    435 inline auto& xoptional_assembly_base<D>::reshape(std::initializer_list<T> shape, layout_type layout) &
    +
    436 {
    +
    437 value().reshape(shape, layout);
    +
    438 has_value().reshape(shape, layout);
    +
    439 return *this;
    +
    440 }
    +
    441
    +
    446 template <class D>
    +
    + +
    448 {
    +
    449 return value().layout();
    +
    450 }
    +
    +
    451
    +
    452 template <class D>
    +
    453 inline bool xoptional_assembly_base<D>::is_contiguous() const noexcept
    +
    454 {
    +
    455 return value().is_contiguous();
    +
    456 }
    +
    457
    +
    462 template <class D>
    +
    463 template <class T>
    +
    + +
    465 {
    +
    466 std::fill(this->linear_begin(), this->linear_end(), value);
    +
    467 }
    +
    +
    468
    +
    479 template <class D>
    +
    480 template <class... Args>
    +
    +
    481 inline auto xoptional_assembly_base<D>::operator()(Args... args) -> reference
    +
    482 {
    +
    483 return reference(value()(args...), has_value()(args...));
    +
    484 }
    +
    +
    485
    +
    492 template <class D>
    +
    493 template <class... Args>
    +
    +
    494 inline auto xoptional_assembly_base<D>::operator()(Args... args) const -> const_reference
    +
    495 {
    +
    496 return const_reference(value()(args...), has_value()(args...));
    +
    497 }
    +
    +
    498
    +
    508 template <class D>
    +
    509 template <class... Args>
    +
    +
    510 inline auto xoptional_assembly_base<D>::at(Args... args) -> reference
    +
    511 {
    +
    512 return reference(value().at(args...), has_value().at(args...));
    +
    513 }
    +
    +
    514
    +
    524 template <class D>
    +
    525 template <class... Args>
    +
    +
    526 inline auto xoptional_assembly_base<D>::at(Args... args) const -> const_reference
    +
    527 {
    +
    528 return const_reference(value().at(args...), has_value().at(args...));
    +
    529 }
    +
    +
    530
    +
    550 template <class D>
    +
    551 template <class... Args>
    +
    +
    552 inline auto xoptional_assembly_base<D>::unchecked(Args... args) -> reference
    +
    553 {
    +
    554 return reference(value().unchecked(args...), has_value().unchecked(args...));
    +
    555 }
    +
    +
    556
    +
    576 template <class D>
    +
    577 template <class... Args>
    +
    +
    578 inline auto xoptional_assembly_base<D>::unchecked(Args... args) const -> const_reference
    +
    579 {
    +
    580 return const_reference(value().unchecked(args...), has_value().unchecked(args...));
    +
    581 }
    +
    +
    582
    +
    589 template <class D>
    +
    590 template <class S>
    +
    +
    591 inline auto xoptional_assembly_base<D>::operator[](const S& index) -> disable_integral_t<S, reference>
    +
    592 {
    +
    593 return reference(value()[index], has_value()[index]);
    +
    594 }
    +
    +
    595
    +
    596 template <class D>
    +
    597 template <class I>
    +
    598 inline auto xoptional_assembly_base<D>::operator[](std::initializer_list<I> index) -> reference
    +
    599 {
    +
    600 return reference(value()[index], has_value()[index]);
    +
    601 }
    +
    602
    +
    603 template <class D>
    +
    604 inline auto xoptional_assembly_base<D>::operator[](size_type i) -> reference
    +
    605 {
    +
    606 return reference(value()[i], has_value()[i]);
    +
    607 }
    +
    608
    +
    615 template <class D>
    +
    616 template <class S>
    +
    +
    617 inline auto xoptional_assembly_base<D>::operator[](const S& index) const
    +
    618 -> disable_integral_t<S, const_reference>
    +
    619 {
    +
    620 return const_reference(value()[index], has_value()[index]);
    +
    621 }
    +
    +
    622
    +
    623 template <class D>
    +
    624 template <class I>
    +
    625 inline auto xoptional_assembly_base<D>::operator[](std::initializer_list<I> index) const -> const_reference
    +
    626 {
    +
    627 return const_reference(value()[index], has_value()[index]);
    +
    628 }
    +
    629
    +
    630 template <class D>
    +
    631 inline auto xoptional_assembly_base<D>::operator[](size_type i) const -> const_reference
    +
    632 {
    +
    633 return const_reference(value()[i], has_value()[i]);
    +
    634 }
    +
    635
    +
    643 template <class D>
    +
    644 template <class... Args>
    +
    +
    645 inline auto xoptional_assembly_base<D>::periodic(Args... args) -> reference
    +
    646 {
    +
    647 return reference(value().periodic(args...), has_value().periodic(args...));
    +
    648 }
    +
    +
    649
    +
    657 template <class D>
    +
    658 template <class... Args>
    +
    +
    659 inline auto xoptional_assembly_base<D>::periodic(Args... args) const -> const_reference
    +
    660 {
    +
    661 return const_reference(value().periodic(args...), has_value().periodic(args...));
    +
    662 }
    +
    +
    663
    +
    667 template <class D>
    +
    +
    668 inline auto xoptional_assembly_base<D>::front() -> reference
    +
    669 {
    +
    670 return reference(value().front(), has_value().front());
    +
    671 }
    +
    +
    672
    +
    676 template <class D>
    +
    +
    677 inline auto xoptional_assembly_base<D>::front() const -> const_reference
    +
    678 {
    +
    679 return const_reference(value().front(), has_value().front());
    +
    680 }
    +
    +
    681
    +
    685 template <class D>
    +
    +
    686 inline auto xoptional_assembly_base<D>::back() -> reference
    +
    687 {
    +
    688 return reference(value().back(), has_value().back());
    +
    689 }
    +
    +
    690
    +
    694 template <class D>
    +
    +
    695 inline auto xoptional_assembly_base<D>::back() const -> const_reference
    +
    696 {
    +
    697 return const_reference(value().back(), has_value().back());
    +
    698 }
    +
    +
    699
    +
    705 template <class D>
    +
    +
    706 inline auto xoptional_assembly_base<D>::flat(size_type i) -> reference
    +
    707 {
    +
    708 return reference(value().flat(i), has_value().flat(i));
    +
    709 }
    +
    +
    710
    +
    716 template <class D>
    +
    +
    717 inline auto xoptional_assembly_base<D>::flat(size_type i) const -> const_reference
    +
    718 {
    +
    719 return const_reference(value().flat(i), has_value().flat(i));
    +
    720 }
    +
    +
    721
    +
    729 template <class D>
    +
    730 template <class It>
    +
    +
    731 inline auto xoptional_assembly_base<D>::element(It first, It last) -> reference
    +
    732 {
    +
    733 return reference(value().element(first, last), has_value().element(first, last));
    +
    734 }
    +
    +
    735
    +
    743 template <class D>
    +
    744 template <class It>
    +
    +
    745 inline auto xoptional_assembly_base<D>::element(It first, It last) const -> const_reference
    +
    746 {
    +
    747 return const_reference(value().element(first, last), has_value().element(first, last));
    +
    748 }
    +
    +
    749
    +
    755 template <class D>
    +
    756 template <class... Args>
    +
    +
    757 inline bool xoptional_assembly_base<D>::in_bounds(Args... args) const
    +
    758 {
    +
    759 return value().in_bounds(args...) && has_value().in_bounds(args...);
    +
    760 }
    +
    +
    761
    +
    763
    +
    764 template <class D>
    +
    765 inline auto xoptional_assembly_base<D>::storage() noexcept -> storage_type&
    +
    766 {
    +
    767 return derived_cast().storage_impl();
    +
    768 }
    +
    769
    +
    770 template <class D>
    +
    771 inline auto xoptional_assembly_base<D>::storage() const noexcept -> const storage_type&
    +
    772 {
    +
    773 return derived_cast().storage_impl();
    +
    774 }
    +
    775
    +
    776 template <class D>
    +
    777 inline auto xoptional_assembly_base<D>::data() noexcept -> value_type*
    +
    778 {
    +
    779 return storage().data();
    +
    780 }
    +
    781
    +
    782 template <class D>
    +
    783 inline auto xoptional_assembly_base<D>::data() const noexcept -> const value_type*
    +
    784 {
    +
    785 return storage().data();
    +
    786 }
    +
    787
    +
    788 template <class D>
    +
    789 inline auto xoptional_assembly_base<D>::data_offset() const noexcept -> const size_type
    +
    790 {
    +
    791 return size_type(0);
    +
    792 }
    +
    793
    +
    804 template <class D>
    +
    805 template <class S>
    +
    +
    806 inline bool xoptional_assembly_base<D>::broadcast_shape(S& shape, bool reuse_cache) const
    +
    807 {
    +
    808 bool res = value().broadcast_shape(shape, reuse_cache);
    +
    809 return res && has_value().broadcast_shape(shape, reuse_cache);
    +
    810 }
    +
    +
    811
    +
    817 template <class D>
    +
    818 template <class S>
    +
    +
    819 inline bool xoptional_assembly_base<D>::has_linear_assign(const S& strides) const noexcept
    +
    820 {
    +
    821 return value().has_linear_assign(strides) && has_value().has_linear_assign(strides);
    +
    822 }
    +
    +
    823
    +
    825
    +
    826 template <class D>
    +
    827 inline auto xoptional_assembly_base<D>::linear_begin() noexcept -> linear_iterator
    +
    828 {
    +
    829 return linear_iterator(value().linear_begin(), has_value().linear_begin());
    +
    830 }
    +
    831
    +
    832 template <class D>
    +
    833 inline auto xoptional_assembly_base<D>::linear_end() noexcept -> linear_iterator
    +
    834 {
    +
    835 return linear_iterator(value().linear_end(), has_value().linear_end());
    +
    836 }
    +
    837
    +
    838 template <class D>
    +
    839 inline auto xoptional_assembly_base<D>::linear_begin() const noexcept -> const_linear_iterator
    +
    840 {
    +
    841 return linear_cbegin();
    +
    842 }
    +
    843
    +
    844 template <class D>
    +
    845 inline auto xoptional_assembly_base<D>::linear_end() const noexcept -> const_linear_iterator
    +
    846 {
    +
    847 return linear_cend();
    +
    848 }
    +
    849
    +
    850 template <class D>
    +
    851 inline auto xoptional_assembly_base<D>::linear_cbegin() const noexcept -> const_linear_iterator
    +
    852 {
    +
    853 return const_linear_iterator(value().linear_cbegin(), has_value().linear_cbegin());
    +
    854 }
    +
    855
    +
    856 template <class D>
    +
    857 inline auto xoptional_assembly_base<D>::linear_cend() const noexcept -> const_linear_iterator
    +
    858 {
    +
    859 return const_linear_iterator(value().linear_cend(), has_value().linear_cend());
    +
    860 }
    +
    861
    +
    862 template <class D>
    +
    863 inline auto xoptional_assembly_base<D>::linear_rbegin() noexcept -> reverse_linear_iterator
    +
    864 {
    +
    865 return reverse_linear_iterator(linear_end());
    +
    866 }
    +
    867
    +
    868 template <class D>
    +
    869 inline auto xoptional_assembly_base<D>::linear_rend() noexcept -> reverse_linear_iterator
    +
    870 {
    +
    871 return reverse_linear_iterator(linear_begin());
    +
    872 }
    +
    873
    +
    874 template <class D>
    +
    875 inline auto xoptional_assembly_base<D>::linear_rbegin() const noexcept -> const_reverse_linear_iterator
    +
    876 {
    +
    877 return linear_crbegin();
    +
    878 }
    +
    879
    +
    880 template <class D>
    +
    881 inline auto xoptional_assembly_base<D>::linear_rend() const noexcept -> const_reverse_linear_iterator
    +
    882 {
    +
    883 return linear_crend();
    +
    884 }
    +
    885
    +
    886 template <class D>
    +
    887 inline auto xoptional_assembly_base<D>::linear_crbegin() const noexcept -> const_reverse_linear_iterator
    +
    888 {
    +
    889 return const_reverse_linear_iterator(linear_cend());
    +
    890 }
    +
    891
    +
    892 template <class D>
    +
    893 inline auto xoptional_assembly_base<D>::linear_crend() const noexcept -> const_reverse_linear_iterator
    +
    894 {
    +
    895 return const_reverse_linear_iterator(linear_cbegin());
    +
    896 }
    +
    897
    +
    898 template <class D>
    +
    899 template <class S>
    +
    900 inline auto xoptional_assembly_base<D>::stepper_begin(const S& shape) noexcept -> stepper
    +
    901 {
    +
    902 return stepper(value().stepper_begin(shape), has_value().stepper_begin(shape));
    +
    903 }
    +
    904
    +
    905 template <class D>
    +
    906 template <class S>
    +
    907 inline auto xoptional_assembly_base<D>::stepper_end(const S& shape, layout_type l) noexcept -> stepper
    +
    908 {
    +
    909 return stepper(value().stepper_end(shape, l), has_value().stepper_end(shape, l));
    +
    910 }
    +
    911
    +
    912 template <class D>
    +
    913 template <class S>
    +
    914 inline auto xoptional_assembly_base<D>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    915 {
    +
    916 return const_stepper(value().stepper_begin(shape), has_value().stepper_begin(shape));
    +
    917 }
    +
    918
    +
    919 template <class D>
    +
    920 template <class S>
    +
    921 inline auto xoptional_assembly_base<D>::stepper_end(const S& shape, layout_type l) const noexcept
    +
    922 -> const_stepper
    +
    923 {
    +
    924 return const_stepper(value().stepper_end(shape, l), has_value().stepper_end(shape, l));
    +
    925 }
    +
    926
    +
    930 template <class D>
    +
    +
    931 inline auto xoptional_assembly_base<D>::value() noexcept -> value_expression
    +
    932 {
    +
    933 return derived_cast().value_impl();
    +
    934 }
    +
    +
    935
    +
    939 template <class D>
    +
    +
    940 inline auto xoptional_assembly_base<D>::value() const noexcept -> const_value_expression
    +
    941 {
    +
    942 return derived_cast().value_impl();
    +
    943 }
    +
    +
    944
    +
    948 template <class D>
    +
    +
    949 inline auto xoptional_assembly_base<D>::has_value() noexcept -> flag_expression
    +
    950 {
    +
    951 return derived_cast().has_value_impl();
    +
    952 }
    +
    +
    953
    +
    957 template <class D>
    +
    +
    958 inline auto xoptional_assembly_base<D>::has_value() const noexcept -> const_flag_expression
    +
    959 {
    +
    960 return derived_cast().has_value_impl();
    +
    961 }
    +
    +
    +
    962
    +
    963 template <class D>
    +
    964 inline auto xoptional_assembly_base<D>::derived_cast() noexcept -> derived_type&
    +
    965 {
    +
    966 return *static_cast<derived_type*>(this);
    +
    967 }
    +
    968
    +
    969 template <class D>
    +
    970 inline auto xoptional_assembly_base<D>::derived_cast() const noexcept -> const derived_type&
    +
    971 {
    +
    972 return *static_cast<const derived_type*>(this);
    +
    973 }
    +
    974
    +
    975 /*********************************************
    +
    976 * xoptional_assembly_stepper implementation *
    +
    977 *********************************************/
    +
    978
    +
    979 template <class D, bool C>
    +
    980 inline xoptional_assembly_stepper<D, C>::xoptional_assembly_stepper(value_stepper vs, flag_stepper fs) noexcept
    +
    981 : m_vs(vs)
    +
    982 , m_fs(fs)
    +
    983 {
    +
    984 }
    +
    985
    +
    986 template <class D, bool C>
    +
    987 inline void xoptional_assembly_stepper<D, C>::step(size_type dim)
    +
    988 {
    +
    989 m_vs.step(dim);
    +
    990 m_fs.step(dim);
    +
    991 }
    +
    992
    +
    993 template <class D, bool C>
    +
    994 inline void xoptional_assembly_stepper<D, C>::step_back(size_type dim)
    +
    995 {
    +
    996 m_vs.step_back(dim);
    +
    997 m_fs.step_back(dim);
    +
    998 }
    +
    999
    +
    1000 template <class D, bool C>
    +
    1001 inline void xoptional_assembly_stepper<D, C>::step(size_type dim, size_type n)
    +
    1002 {
    +
    1003 m_vs.step(dim, n);
    +
    1004 m_fs.step(dim, n);
    +
    1005 }
    +
    1006
    +
    1007 template <class D, bool C>
    +
    1008 inline void xoptional_assembly_stepper<D, C>::step_back(size_type dim, size_type n)
    +
    1009 {
    +
    1010 m_vs.step_back(dim, n);
    +
    1011 m_fs.step_back(dim, n);
    +
    1012 }
    +
    1013
    +
    1014 template <class D, bool C>
    +
    1015 inline void xoptional_assembly_stepper<D, C>::reset(size_type dim)
    +
    1016 {
    +
    1017 m_vs.reset(dim);
    +
    1018 m_fs.reset(dim);
    +
    1019 }
    +
    1020
    +
    1021 template <class D, bool C>
    +
    1022 inline void xoptional_assembly_stepper<D, C>::reset_back(size_type dim)
    +
    1023 {
    +
    1024 m_vs.reset_back(dim);
    +
    1025 m_fs.reset_back(dim);
    +
    1026 }
    +
    1027
    +
    1028 template <class D, bool C>
    +
    1029 inline void xoptional_assembly_stepper<D, C>::to_begin()
    +
    1030 {
    +
    1031 m_vs.to_begin();
    +
    1032 m_fs.to_begin();
    +
    1033 }
    +
    1034
    +
    1035 template <class D, bool C>
    +
    1036 inline void xoptional_assembly_stepper<D, C>::to_end(layout_type l)
    +
    1037 {
    +
    1038 m_vs.to_end(l);
    +
    1039 m_fs.to_end(l);
    +
    1040 }
    +
    1041
    +
    1042 template <class D, bool C>
    +
    1043 inline auto xoptional_assembly_stepper<D, C>::operator*() const -> reference
    +
    1044 {
    +
    1045 return reference(*m_vs, *m_fs);
    +
    1046 }
    +
    1047}
    +
    1048
    +
    1049#endif
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for multidimensional iterable expressions.
    +
    Base class for dense multidimensional optional assemblies.
    +
    const inner_backstrides_type & backstrides() const noexcept
    Returns the backstrides of the optional assembly.
    +
    reference front()
    Returns a reference to the first element of the optional assembly.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    size_type size() const noexcept
    Returns the number of element in the optional assembly.
    +
    reference back()
    Returns a reference to the last element of the optional assembly.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the optional assembly.
    +
    value_expression value() noexcept
    Return an expression for the values of the optional assembly.
    +
    void fill(const T &value)
    Fills the data with the given value.
    +
    bool has_linear_assign(const S &strides) const noexcept
    Checks whether the xoptional_assembly_base can be linearly assigned to an expression with the specifi...
    +
    layout_type layout() const noexcept
    Return the layout_type of the container.
    +
    constexpr size_type dimension() const noexcept
    Returns the number of dimensions of the optional assembly.
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the optional assembly to the specified parameter.
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the optional assembly.
    +
    reference flat(size_type args)
    Returns a reference to the element at the specified position of the underlying storage in the optiona...
    +
    void resize(const S &shape, bool force=false)
    Resizes the optional assembly.
    +
    auto & reshape(const S &shape, layout_type layout=static_layout) &
    Reshapes the optional assembly.
    +
    flag_expression has_value() noexcept
    Return an expression for the missing mask of the optional assembly.
    + +
    Dense multidimensional container holding optional values, optimized for tensor operations.
    +
    auto operator*(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::multiplies, E1, E2 >
    Multiplication.
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    +
    + + + + diff --git a/xoptional__assembly__storage_8hpp_source.html b/xoptional__assembly__storage_8hpp_source.html new file mode 100644 index 000000000..95efc65c0 --- /dev/null +++ b/xoptional__assembly__storage_8hpp_source.html @@ -0,0 +1,694 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xoptional_assembly_storage.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xoptional_assembly_storage.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XOPTIONAL_ASSEMBLY_STORAGE_HPP
    +
    11#define XOPTIONAL_ASSEMBLY_STORAGE_HPP
    +
    12
    +
    13#include "xoptional.hpp"
    +
    14#include "xsemantic.hpp"
    +
    15#include "xtl/xiterator_base.hpp"
    +
    16
    +
    17namespace xt
    +
    18{
    +
    19 template <class VE, class FE, bool is_const>
    +
    20 class xoptional_assembly_linear_iterator;
    +
    21
    +
    22 /******************************
    +
    23 * xoptional_assembly_storage *
    +
    24 ******************************/
    +
    25
    +
    26 template <class VE, class FE>
    +
    + +
    28 {
    +
    29 public:
    +
    30
    + +
    32
    +
    33 using value_storage = std::remove_reference_t<VE>;
    +
    34 using flag_storage = std::remove_reference_t<FE>;
    +
    35
    +
    36 using value_type = xtl::xoptional<typename value_storage::value_type, typename flag_storage::value_type>;
    +
    37
    +
    38 static constexpr bool is_val_const = std::is_const<value_storage>::value;
    +
    39 static constexpr bool is_flag_const = std::is_const<flag_storage>::value;
    +
    40 using val_reference = std::
    +
    41 conditional_t<is_val_const, typename value_storage::const_reference, typename value_storage::reference>;
    +
    42 using flag_reference = std::
    +
    43 conditional_t<is_flag_const, typename flag_storage::const_reference, typename flag_storage::reference>;
    +
    44 using reference = xtl::xoptional<val_reference, flag_reference>;
    +
    45 using const_reference = xtl::xoptional<typename value_storage::const_reference, typename flag_storage::const_reference>;
    +
    46
    +
    47 using pointer = xtl::xclosure_pointer<reference>;
    +
    48 using const_pointer = xtl::xclosure_pointer<const_reference>;
    +
    49
    +
    50 using size_type = typename value_storage::size_type;
    +
    51 using difference_type = typename value_storage::difference_type;
    +
    52
    + + +
    55 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    56 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    57
    +
    58 template <class VE1, class FE1>
    +
    59 xoptional_assembly_storage(const VE1& value_stor, const FE1& flag_stor);
    +
    60
    +
    61 template <class VE1, class FE1>
    +
    62 xoptional_assembly_storage(VE1& value_stor, FE1& flag_stor);
    +
    63
    + + + + +
    68
    +
    69 bool empty() const noexcept;
    +
    70 size_type size() const noexcept;
    +
    71 void resize(size_type size);
    +
    72
    +
    73 reference operator[](size_type i);
    +
    74 const_reference operator[](size_type i) const;
    +
    75
    +
    76 reference front();
    +
    77 const_reference front() const;
    +
    78
    +
    79 reference back();
    +
    80 const_reference back() const;
    +
    81
    +
    82 pointer data() noexcept;
    +
    83 const_pointer data() const noexcept;
    +
    84
    +
    85 iterator begin() noexcept;
    +
    86 iterator end() noexcept;
    +
    87
    +
    88 const_iterator begin() const noexcept;
    +
    89 const_iterator end() const noexcept;
    +
    90
    +
    91 const_iterator cbegin() const noexcept;
    +
    92 const_iterator cend() const noexcept;
    +
    93
    +
    94 reverse_iterator rbegin() noexcept;
    +
    95 reverse_iterator rend() noexcept;
    +
    96
    +
    97 const_reverse_iterator rbegin() const noexcept;
    +
    98 const_reverse_iterator rend() const noexcept;
    +
    99
    +
    100 const_reverse_iterator crbegin() const noexcept;
    +
    101 const_reverse_iterator crend() const noexcept;
    +
    102
    +
    103 void swap(self_type& rhs) noexcept;
    +
    104
    +
    105 value_storage& value() noexcept;
    +
    106 const value_storage& value() const noexcept;
    +
    107
    +
    108 flag_storage& has_value() noexcept;
    +
    109 const flag_storage& has_value() const noexcept;
    +
    110
    +
    111 private:
    +
    112
    +
    113 VE m_value;
    +
    114 FE m_has_value;
    +
    115 };
    +
    +
    116
    +
    117 template <class VE, class FE>
    +
    118 bool
    + +
    120
    +
    121 template <class VE, class FE>
    +
    122 bool
    + +
    124
    +
    125 template <class VE, class FE>
    +
    126 bool
    + +
    128
    +
    129 template <class VE, class FE>
    +
    130 bool
    + +
    132
    +
    133 template <class VE, class FE>
    +
    134 bool
    + +
    136
    +
    137 template <class VE, class FE>
    +
    138 bool
    + +
    140
    +
    141 template <class VE, class FE>
    + +
    143
    +
    144 /***************************************
    +
    145 * xoptional_assembly_linear_iterator *
    +
    146 ***************************************/
    +
    147
    +
    148 template <class VE, class FE, bool is_const>
    + +
    150
    +
    151 template <class VE, class FE, bool is_const>
    +
    + +
    153 {
    + + +
    156 using value_type = typename xoptional_assembly_storage_type::value_type;
    +
    157 using reference = std::conditional_t<
    +
    158 is_const,
    +
    159 typename xoptional_assembly_storage_type::const_reference,
    +
    160 typename xoptional_assembly_storage_type::reference>;
    +
    161 using difference_type = typename xoptional_assembly_storage_type::difference_type;
    +
    162 using pointer = std::conditional_t<
    +
    163 is_const,
    +
    164 typename xoptional_assembly_storage_type::const_pointer,
    +
    165 typename xoptional_assembly_storage_type::pointer>;
    +
    166 };
    +
    +
    167
    +
    168 template <class VE, class FE, bool is_const>
    +
    + +
    170 : public xtl::xrandom_access_iterator_base2<xoptional_assembly_linear_iterator_traits<VE, FE, is_const>>
    +
    171 {
    +
    172 public:
    +
    173
    + +
    175 using base_type = xtl::xrandom_access_iterator_base2<
    + +
    177
    + +
    179 using value_iterator = std::conditional_t<
    +
    180 is_const,
    + + +
    183 using flag_iterator = std::conditional_t<
    +
    184 is_const,
    + + +
    187
    +
    188 using value_type = typename base_type::value_type;
    +
    189 using reference = typename base_type::reference;
    +
    190 using pointer = typename base_type::pointer;
    +
    191 using difference_type = typename base_type::difference_type;
    +
    192
    +
    193 xoptional_assembly_linear_iterator(value_iterator value_it, flag_iterator flag_it);
    +
    194
    +
    195 self_type& operator++();
    +
    196 self_type& operator--();
    +
    197
    +
    198 self_type& operator+=(difference_type n);
    +
    199 self_type& operator-=(difference_type n);
    +
    200
    +
    201 difference_type operator-(const self_type& rhs) const;
    +
    202
    +
    203 reference operator*() const;
    +
    204 pointer operator->() const;
    +
    205
    +
    206 bool operator==(const self_type& rhs) const;
    +
    207 bool operator<(const self_type& rhs) const;
    +
    208
    +
    209 private:
    +
    210
    +
    211 value_iterator m_value_it;
    +
    212 flag_iterator m_flag_it;
    +
    213 };
    +
    +
    214
    +
    215 /*********************************************
    +
    216 * xoptional_assembly_storage implementation *
    +
    217 *********************************************/
    +
    218
    +
    219 template <class VE, class FE>
    +
    220 template <class VE1, class FE1>
    +
    221 inline xoptional_assembly_storage<VE, FE>::xoptional_assembly_storage(const VE1& value_stor, const FE1& flag_stor)
    +
    222 : m_value(value_stor)
    +
    223 , m_has_value(flag_stor)
    +
    224 {
    +
    225 }
    +
    226
    +
    227 template <class VE, class FE>
    +
    228 template <class VE1, class FE1>
    +
    229 inline xoptional_assembly_storage<VE, FE>::xoptional_assembly_storage(VE1& value_stor, FE1& flag_stor)
    +
    230 : m_value(value_stor)
    +
    231 , m_has_value(flag_stor)
    +
    232 {
    +
    233 }
    +
    234
    +
    235 template <class VE, class FE>
    +
    236 inline xoptional_assembly_storage<VE, FE>::xoptional_assembly_storage(const self_type& rhs)
    +
    237 : m_value(rhs.m_value)
    +
    238 , m_has_value(rhs.m_has_value)
    +
    239 {
    +
    240 }
    +
    241
    +
    242 template <class VE, class FE>
    +
    243 inline auto xoptional_assembly_storage<VE, FE>::operator=(const self_type& rhs) -> self_type&
    +
    244 {
    +
    245 m_value = rhs.m_value;
    +
    246 m_has_value = rhs.m_has_value;
    +
    247 return *this;
    +
    248 }
    +
    249
    +
    250 template <class VE, class FE>
    +
    251 inline xoptional_assembly_storage<VE, FE>::xoptional_assembly_storage(self_type&& rhs)
    +
    252 : m_value(std::forward<VE>(rhs.m_value))
    +
    253 , m_has_value(std::forward<FE>(rhs.m_has_value))
    +
    254 {
    +
    255 }
    +
    256
    +
    257 template <class VE, class FE>
    +
    258 inline auto xoptional_assembly_storage<VE, FE>::operator=(self_type&& rhs) -> self_type&
    +
    259 {
    +
    260 m_value = std::forward<VE>(rhs.m_value);
    +
    261 m_has_value = std::forward<FE>(rhs.m_has_value);
    +
    262 return *this;
    +
    263 }
    +
    264
    +
    265 template <class VE, class FE>
    +
    266 inline bool xoptional_assembly_storage<VE, FE>::empty() const noexcept
    +
    267 {
    +
    268 return value().empty();
    +
    269 }
    +
    270
    +
    271 template <class VE, class FE>
    +
    272 inline auto xoptional_assembly_storage<VE, FE>::size() const noexcept -> size_type
    +
    273 {
    +
    274 return value().size();
    +
    275 }
    +
    276
    +
    277 template <class VE, class FE>
    +
    278 inline void xoptional_assembly_storage<VE, FE>::resize(size_type size)
    +
    279 {
    +
    280 value().resize(size);
    +
    281 has_value().resize(size);
    +
    282 }
    +
    283
    +
    284 template <class VE, class FE>
    +
    285 inline auto xoptional_assembly_storage<VE, FE>::operator[](size_type i) -> reference
    +
    286 {
    +
    287 return reference(value()[i], has_value()[i]);
    +
    288 }
    +
    289
    +
    290 template <class VE, class FE>
    +
    291 inline auto xoptional_assembly_storage<VE, FE>::operator[](size_type i) const -> const_reference
    +
    292 {
    +
    293 return const_reference(value()[i], has_value()[i]);
    +
    294 }
    +
    295
    +
    296 template <class VE, class FE>
    +
    297 inline auto xoptional_assembly_storage<VE, FE>::front() -> reference
    +
    298 {
    +
    299 return reference(value()[0], has_value()[0]);
    +
    300 }
    +
    301
    +
    302 template <class VE, class FE>
    +
    303 inline auto xoptional_assembly_storage<VE, FE>::front() const -> const_reference
    +
    304 {
    +
    305 return const_reference(value()[0], has_value()[0]);
    +
    306 }
    +
    307
    +
    308 template <class VE, class FE>
    +
    309 inline auto xoptional_assembly_storage<VE, FE>::back() -> reference
    +
    310 {
    +
    311 return reference(value()[size() - 1], has_value()[size() - 1]);
    +
    312 }
    +
    313
    +
    314 template <class VE, class FE>
    +
    315 inline auto xoptional_assembly_storage<VE, FE>::back() const -> const_reference
    +
    316 {
    +
    317 return const_reference(value()[size() - 1], has_value()[size() - 1]);
    +
    318 }
    +
    319
    +
    320 template <class VE, class FE>
    +
    321 inline auto xoptional_assembly_storage<VE, FE>::data() noexcept -> pointer
    +
    322 {
    +
    323 pointer(front());
    +
    324 }
    +
    325
    +
    326 template <class VE, class FE>
    +
    327 inline auto xoptional_assembly_storage<VE, FE>::data() const noexcept -> const_pointer
    +
    328 {
    +
    329 const_pointer(front());
    +
    330 }
    +
    331
    +
    332 template <class VE, class FE>
    +
    333 inline auto xoptional_assembly_storage<VE, FE>::begin() noexcept -> iterator
    +
    334 {
    +
    335 return iterator(value().begin(), has_value().begin());
    +
    336 }
    +
    337
    +
    338 template <class VE, class FE>
    +
    339 inline auto xoptional_assembly_storage<VE, FE>::end() noexcept -> iterator
    +
    340 {
    +
    341 return iterator(value().end(), has_value().end());
    +
    342 }
    +
    343
    +
    344 template <class VE, class FE>
    +
    345 inline auto xoptional_assembly_storage<VE, FE>::begin() const noexcept -> const_iterator
    +
    346 {
    +
    347 return cbegin();
    +
    348 }
    +
    349
    +
    350 template <class VE, class FE>
    +
    351 inline auto xoptional_assembly_storage<VE, FE>::end() const noexcept -> const_iterator
    +
    352 {
    +
    353 return cend();
    +
    354 }
    +
    355
    +
    356 template <class VE, class FE>
    +
    357 inline auto xoptional_assembly_storage<VE, FE>::cbegin() const noexcept -> const_iterator
    +
    358 {
    +
    359 return const_iterator(value().begin(), has_value().begin());
    +
    360 }
    +
    361
    +
    362 template <class VE, class FE>
    +
    363 inline auto xoptional_assembly_storage<VE, FE>::cend() const noexcept -> const_iterator
    +
    364 {
    +
    365 return const_iterator(value().end(), has_value().end());
    +
    366 }
    +
    367
    +
    368 template <class VE, class FE>
    +
    369 inline auto xoptional_assembly_storage<VE, FE>::rbegin() noexcept -> reverse_iterator
    +
    370 {
    +
    371 return reverse_iterator(end());
    +
    372 }
    +
    373
    +
    374 template <class VE, class FE>
    +
    375 inline auto xoptional_assembly_storage<VE, FE>::rend() noexcept -> reverse_iterator
    +
    376 {
    +
    377 return reverse_iterator(begin());
    +
    378 }
    +
    379
    +
    380 template <class VE, class FE>
    +
    381 inline auto xoptional_assembly_storage<VE, FE>::rbegin() const noexcept -> const_reverse_iterator
    +
    382 {
    +
    383 return crbegin();
    +
    384 }
    +
    385
    +
    386 template <class VE, class FE>
    +
    387 inline auto xoptional_assembly_storage<VE, FE>::rend() const noexcept -> const_reverse_iterator
    +
    388 {
    +
    389 return crend();
    +
    390 }
    +
    391
    +
    392 template <class VE, class FE>
    +
    393 inline auto xoptional_assembly_storage<VE, FE>::crbegin() const noexcept -> const_reverse_iterator
    +
    394 {
    +
    395 return const_reverse_iterator(cend());
    +
    396 }
    +
    397
    +
    398 template <class VE, class FE>
    +
    399 inline auto xoptional_assembly_storage<VE, FE>::crend() const noexcept -> const_reverse_iterator
    +
    400 {
    +
    401 return const_reverse_iterator(cbegin());
    +
    402 }
    +
    403
    +
    404 template <class VE, class FE>
    +
    405 inline void xoptional_assembly_storage<VE, FE>::swap(self_type& rhs) noexcept
    +
    406 {
    +
    407 m_value.swap(rhs.m_value);
    +
    408 m_has_value.swap(rhs.m_has_value);
    +
    409 }
    +
    410
    +
    411 template <class VE, class FE>
    +
    412 inline auto xoptional_assembly_storage<VE, FE>::value() noexcept -> value_storage&
    +
    413 {
    +
    414 return m_value;
    +
    415 }
    +
    416
    +
    417 template <class VE, class FE>
    +
    418 inline auto xoptional_assembly_storage<VE, FE>::value() const noexcept -> const value_storage&
    +
    419 {
    +
    420 return m_value;
    +
    421 }
    +
    422
    +
    423 template <class VE, class FE>
    +
    424 inline auto xoptional_assembly_storage<VE, FE>::has_value() noexcept -> flag_storage&
    +
    425 {
    +
    426 return m_has_value;
    +
    427 }
    +
    428
    +
    429 template <class VE, class FE>
    +
    430 inline auto xoptional_assembly_storage<VE, FE>::has_value() const noexcept -> const flag_storage&
    +
    431 {
    +
    432 return m_has_value;
    +
    433 }
    +
    434
    +
    435 template <class VE, class FE>
    +
    436 bool
    +
    437 operator==(const xoptional_assembly_storage<VE, FE>& lhs, const xoptional_assembly_storage<VE, FE>& rhs)
    +
    438 {
    +
    439 return lhs.value() == rhs.value() && lhs.has_value() == rhs.has_value();
    +
    440 }
    +
    441
    +
    442 template <class VE, class FE>
    +
    443 bool
    +
    444 operator!=(const xoptional_assembly_storage<VE, FE>& lhs, const xoptional_assembly_storage<VE, FE>& rhs)
    +
    445 {
    +
    446 return !(lhs == rhs);
    +
    447 }
    +
    448
    +
    449 template <class VE, class FE>
    +
    450 bool operator<(const xoptional_assembly_storage<VE, FE>& lhs, const xoptional_assembly_storage<VE, FE>& rhs)
    +
    451 {
    +
    452 return lhs.value() < rhs.value() && lhs.has_value() == rhs.has_value();
    +
    453 }
    +
    454
    +
    455 template <class VE, class FE>
    +
    456 bool
    +
    457 operator<=(const xoptional_assembly_storage<VE, FE>& lhs, const xoptional_assembly_storage<VE, FE>& rhs)
    +
    458 {
    +
    459 return lhs.value() <= rhs.value() && lhs.has_value() == rhs.has_value();
    +
    460 }
    +
    461
    +
    462 template <class VE, class FE>
    +
    463 bool operator>(const xoptional_assembly_storage<VE, FE>& lhs, const xoptional_assembly_storage<VE, FE>& rhs)
    +
    464 {
    +
    465 return lhs.value() > rhs.value() && lhs.has_value() == rhs.has_value();
    +
    466 }
    +
    467
    +
    468 template <class VE, class FE>
    +
    469 bool
    +
    470 operator>=(const xoptional_assembly_storage<VE, FE>& lhs, const xoptional_assembly_storage<VE, FE>& rhs)
    +
    471 {
    +
    472 return lhs.value() >= rhs.value() && lhs.has_value() == rhs.has_value();
    +
    473 }
    +
    474
    +
    475 template <class VE, class FE>
    +
    476 void swap(xoptional_assembly_storage<VE, FE>& lhs, xoptional_assembly_storage<VE, FE>& rhs) noexcept
    +
    477 {
    +
    478 lhs.swap(rhs);
    +
    479 }
    +
    480
    +
    481 /******************************************************
    +
    482 * xoptional_assembly_linear_iterator implementation *
    +
    483 ******************************************************/
    +
    484
    +
    485 template <class VE, class FE, bool C>
    +
    486 inline xoptional_assembly_linear_iterator<VE, FE, C>::xoptional_assembly_linear_iterator(
    +
    487 value_iterator value_it,
    +
    488 flag_iterator flag_it
    +
    489 )
    +
    490 : m_value_it(value_it)
    +
    491 , m_flag_it(flag_it)
    +
    492 {
    +
    493 }
    +
    494
    +
    495 template <class VE, class FE, bool C>
    +
    496 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator++() -> self_type&
    +
    497 {
    +
    498 ++m_value_it;
    +
    499 ++m_flag_it;
    +
    500 return *this;
    +
    501 }
    +
    502
    +
    503 template <class VE, class FE, bool C>
    +
    504 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator--() -> self_type&
    +
    505 {
    +
    506 --m_value_it;
    +
    507 --m_flag_it;
    +
    508 return *this;
    +
    509 }
    +
    510
    +
    511 template <class VE, class FE, bool C>
    +
    512 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator+=(difference_type n) -> self_type&
    +
    513 {
    +
    514 m_value_it += n;
    +
    515 m_flag_it += n;
    +
    516 return *this;
    +
    517 }
    +
    518
    +
    519 template <class VE, class FE, bool C>
    +
    520 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator-=(difference_type n) -> self_type&
    +
    521 {
    +
    522 m_value_it -= n;
    +
    523 m_flag_it -= n;
    +
    524 return *this;
    +
    525 }
    +
    526
    +
    527 template <class VE, class FE, bool C>
    +
    528 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator-(const self_type& rhs) const
    +
    529 -> difference_type
    +
    530 {
    +
    531 return m_value_it - rhs.m_value_it;
    +
    532 }
    +
    533
    +
    534 template <class VE, class FE, bool C>
    +
    535 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator*() const -> reference
    +
    536 {
    +
    537 return reference(*m_value_it, *m_flag_it);
    +
    538 }
    +
    539
    +
    540 template <class VE, class FE, bool C>
    +
    541 inline auto xoptional_assembly_linear_iterator<VE, FE, C>::operator->() const -> pointer
    +
    542 {
    +
    543 return &(this->operator*());
    +
    544 }
    +
    545
    +
    546 template <class VE, class FE, bool C>
    +
    547 inline bool xoptional_assembly_linear_iterator<VE, FE, C>::operator==(const self_type& rhs) const
    +
    548 {
    +
    549 return m_value_it == rhs.m_value_it;
    +
    550 }
    +
    551
    +
    552 template <class VE, class FE, bool C>
    +
    553 inline bool xoptional_assembly_linear_iterator<VE, FE, C>::operator<(const self_type& rhs) const
    +
    554 {
    +
    555 return m_value_it < rhs.m_value_it;
    +
    556 }
    +
    557
    +
    558 template <class VE, class FE>
    +
    559 inline xoptional_assembly_storage<VE, FE> optional_assembly_storage(const VE& value, const FE& flag)
    +
    560 {
    +
    561 return xoptional_assembly_storage<VE, FE>(value, flag);
    +
    562 }
    +
    563
    +
    564 template <class VE, class FE>
    +
    565 inline xoptional_assembly_storage<VE, FE> optional_assembly_storage(VE& value, FE& flag)
    +
    566 {
    +
    567 return xoptional_assembly_storage<VE, FE>(value, flag);
    +
    568 }
    +
    569}
    +
    570
    +
    571#endif
    + + +
    auto operator*(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::multiplies, E1, E2 >
    Multiplication.
    +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    + +
    +
    + + + + diff --git a/xpad_8hpp_source.html b/xpad_8hpp_source.html new file mode 100644 index 000000000..c9618b425 --- /dev/null +++ b/xpad_8hpp_source.html @@ -0,0 +1,391 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xpad.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xpad.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_PAD_HPP
    +
    11#define XTENSOR_PAD_HPP
    +
    12
    +
    13#include "xarray.hpp"
    +
    14#include "xstrided_view.hpp"
    +
    15#include "xtensor.hpp"
    +
    16#include "xview.hpp"
    +
    17
    +
    18using namespace xt::placeholders; // to enable _ syntax
    +
    19
    +
    20namespace xt
    +
    21{
    +
    +
    38 enum class pad_mode
    +
    39 {
    +
    40 constant,
    +
    41 symmetric,
    +
    42 reflect,
    +
    43 wrap,
    +
    44 periodic,
    +
    45 edge
    +
    46 };
    +
    +
    47
    +
    48 namespace detail
    +
    49 {
    +
    50 template <class S, class T>
    +
    51 inline bool check_pad_width(const std::vector<std::vector<S>>& pad_width, const T& shape)
    +
    52 {
    +
    53 if (pad_width.size() != shape.size())
    +
    54 {
    +
    55 return false;
    +
    56 }
    +
    57
    +
    58 return true;
    +
    59 }
    +
    60 }
    +
    61
    +
    73 template <class E, class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    +
    74 inline auto
    +
    +
    75 pad(E&& e,
    +
    76 const std::vector<std::vector<S>>& pad_width,
    +
    77 pad_mode mode = pad_mode::constant,
    +
    78 V constant_value = 0)
    +
    79 {
    +
    80 XTENSOR_ASSERT(detail::check_pad_width(pad_width, e.shape()));
    +
    81
    +
    82 using size_type = typename std::decay_t<E>::size_type;
    +
    83 using return_type = temporary_type_t<E>;
    +
    84
    +
    85 // place the original array in the center
    +
    86
    +
    87 auto new_shape = e.shape();
    + +
    89 sv.reserve(e.shape().size());
    +
    90 for (size_type axis = 0; axis < e.shape().size(); ++axis)
    +
    91 {
    +
    92 size_type nb = static_cast<size_type>(pad_width[axis][0]);
    +
    93 size_type ne = static_cast<size_type>(pad_width[axis][1]);
    +
    94 size_type ns = nb + e.shape(axis) + ne;
    +
    95 new_shape[axis] = ns;
    +
    96 sv.push_back(xt::range(nb, nb + e.shape(axis)));
    +
    97 }
    +
    98
    +
    99 if (mode == pad_mode::constant)
    +
    100 {
    +
    101 return_type out(new_shape, constant_value);
    +
    102 xt::strided_view(out, sv) = e;
    +
    103 return out;
    +
    104 }
    +
    105
    +
    106 return_type out(new_shape);
    +
    107 xt::strided_view(out, sv) = e;
    +
    108
    +
    109 // construct padded regions based on original image
    +
    110
    +
    111 xt::xstrided_slice_vector svs(e.shape().size(), xt::all());
    +
    112 xt::xstrided_slice_vector svt(e.shape().size(), xt::all());
    +
    113
    +
    114 for (size_type axis = 0; axis < e.shape().size(); ++axis)
    +
    115 {
    +
    116 size_type nb = static_cast<size_type>(pad_width[axis][0]);
    +
    117 size_type ne = static_cast<size_type>(pad_width[axis][1]);
    +
    118
    +
    119 if (nb > static_cast<size_type>(0))
    +
    120 {
    +
    121 svt[axis] = xt::range(0, nb);
    +
    122
    +
    123 if (mode == pad_mode::wrap || mode == pad_mode::periodic)
    +
    124 {
    +
    125 XTENSOR_ASSERT(nb <= e.shape(axis));
    +
    126 svs[axis] = xt::range(e.shape(axis), nb + e.shape(axis));
    +
    127 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    128 }
    +
    129 else if (mode == pad_mode::symmetric)
    +
    130 {
    +
    131 XTENSOR_ASSERT(nb <= e.shape(axis));
    +
    132 svs[axis] = xt::range(2 * nb - 1, nb - 1, -1);
    +
    133 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    134 }
    +
    135 else if (mode == pad_mode::reflect)
    +
    136 {
    +
    137 XTENSOR_ASSERT(nb <= e.shape(axis) - 1);
    +
    138 svs[axis] = xt::range(2 * nb, nb, -1);
    +
    139 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    140 }
    +
    141 else if (mode == pad_mode::edge)
    +
    142 {
    +
    143 svs[axis] = xt::range(nb, nb + 1);
    + +
    145 xt::strided_view(out, svs),
    +
    146 xt::strided_view(out, svt).shape()
    +
    147 );
    +
    148 }
    +
    149 }
    +
    150
    +
    151 if (ne > static_cast<size_type>(0))
    +
    152 {
    +
    153 svt[axis] = xt::range(out.shape(axis) - ne, out.shape(axis));
    +
    154
    +
    155 if (mode == pad_mode::wrap || mode == pad_mode::periodic)
    +
    156 {
    +
    157 XTENSOR_ASSERT(ne <= e.shape(axis));
    +
    158 svs[axis] = xt::range(nb, nb + ne);
    +
    159 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    160 }
    +
    161 else if (mode == pad_mode::symmetric)
    +
    162 {
    +
    163 XTENSOR_ASSERT(ne <= e.shape(axis));
    +
    164 if (ne == nb + e.shape(axis))
    +
    165 {
    +
    166 svs[axis] = xt::range(nb + e.shape(axis) - 1, _, -1);
    +
    167 }
    +
    168 else
    +
    169 {
    +
    170 svs[axis] = xt::range(nb + e.shape(axis) - 1, nb + e.shape(axis) - ne - 1, -1);
    +
    171 }
    +
    172 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    173 }
    +
    174 else if (mode == pad_mode::reflect)
    +
    175 {
    +
    176 XTENSOR_ASSERT(ne <= e.shape(axis) - 1);
    +
    177 if (ne == nb + e.shape(axis) - 1)
    +
    178 {
    +
    179 svs[axis] = xt::range(nb + e.shape(axis) - 2, _, -1);
    +
    180 }
    +
    181 else
    +
    182 {
    +
    183 svs[axis] = xt::range(nb + e.shape(axis) - 2, nb + e.shape(axis) - ne - 2, -1);
    +
    184 }
    +
    185 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    186 }
    +
    187 else if (mode == pad_mode::edge)
    +
    188 {
    +
    189 svs[axis] = xt::range(out.shape(axis) - ne - 1, out.shape(axis) - ne);
    + +
    191 xt::strided_view(out, svs),
    +
    192 xt::strided_view(out, svt).shape()
    +
    193 );
    +
    194 }
    +
    195 }
    +
    196
    +
    197 svs[axis] = xt::all();
    +
    198 svt[axis] = xt::all();
    +
    199 }
    +
    200
    +
    201 return out;
    +
    202 }
    +
    +
    203
    +
    215 template <class E, class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    +
    216 inline auto
    +
    +
    217 pad(E&& e, const std::vector<S>& pad_width, pad_mode mode = pad_mode::constant, V constant_value = 0)
    +
    218 {
    +
    219 std::vector<std::vector<S>> pw(e.shape().size(), pad_width);
    +
    220
    +
    221 return pad(e, pw, mode, constant_value);
    +
    222 }
    +
    +
    223
    +
    234 template <class E, class S = typename std::decay_t<E>::size_type, class V = typename std::decay_t<E>::value_type>
    +
    +
    235 inline auto pad(E&& e, S pad_width, pad_mode mode = pad_mode::constant, V constant_value = 0)
    +
    236 {
    +
    237 std::vector<std::vector<S>> pw(e.shape().size(), {pad_width, pad_width});
    +
    238
    +
    239 return pad(e, pw, mode, constant_value);
    +
    240 }
    +
    +
    241
    +
    242 namespace detail
    +
    243 {
    +
    244
    +
    245 template <class E, class S>
    +
    246 inline auto tile(E&& e, const S& reps)
    +
    247 {
    +
    248 using size_type = typename std::decay_t<E>::size_type;
    +
    249
    +
    250 using return_type = temporary_type_t<E>;
    +
    251
    +
    252 XTENSOR_ASSERT(e.shape().size() == reps.size());
    +
    253
    +
    254 using new_shape_type = typename return_type::shape_type;
    +
    255 auto new_shape = xtl::make_sequence<new_shape_type>(e.shape().size());
    +
    256
    +
    257 xt::xstrided_slice_vector sv(reps.size());
    +
    258
    +
    259 for (size_type axis = 0; axis < reps.size(); ++axis)
    +
    260 {
    +
    261 new_shape[axis] = e.shape(axis) * reps[axis];
    +
    262 sv[axis] = xt::range(0, e.shape(axis));
    +
    263 }
    +
    264 return_type out(new_shape);
    +
    265
    +
    266 xt::strided_view(out, sv) = e;
    +
    267
    +
    268 xt::xstrided_slice_vector svs(e.shape().size(), xt::all());
    +
    269 xt::xstrided_slice_vector svt(e.shape().size(), xt::all());
    +
    270
    +
    271 for (size_type axis = 0; axis < e.shape().size(); ++axis)
    +
    272 {
    +
    273 for (size_type i = 1; i < static_cast<size_type>(reps[axis]); ++i)
    +
    274 {
    +
    275 svs[axis] = xt::range(0, e.shape(axis));
    +
    276 svt[axis] = xt::range(i * e.shape(axis), (i + 1) * e.shape(axis));
    +
    277 xt::strided_view(out, svt) = xt::strided_view(out, svs);
    +
    278 svs[axis] = xt::all();
    +
    279 svt[axis] = xt::all();
    +
    280 }
    +
    281 }
    +
    282
    +
    283 return out;
    +
    284 }
    +
    285 }
    +
    286
    +
    295 template <class E, class S = typename std::decay_t<E>::size_type>
    +
    +
    296 inline auto tile(E&& e, std::initializer_list<S> reps)
    +
    297 {
    +
    298 return detail::tile(std::forward<E>(e), std::vector<S>{reps});
    +
    299 }
    +
    +
    300
    +
    301 template <class E, class C, XTL_REQUIRES(xtl::negation<xtl::is_integral<C>>)>
    +
    302 inline auto tile(E&& e, const C& reps)
    +
    303 {
    +
    304 return detail::tile(std::forward<E>(e), reps);
    +
    305 }
    +
    306
    +
    314 template <class E, class S = typename std::decay_t<E>::size_type, XTL_REQUIRES(xtl::is_integral<S>)>
    +
    +
    315 inline auto tile(E&& e, S reps)
    +
    316 {
    +
    317 std::vector<S> tw(e.shape().size(), static_cast<S>(1));
    +
    318 tw[0] = reps;
    +
    319 return detail::tile(std::forward<E>(e), tw);
    +
    320 }
    +
    +
    321}
    +
    322
    +
    323#endif
    +
    standard mathematical functions for xexpressions
    +
    auto pad(E &&e, const std::vector< std::vector< S > > &pad_width, pad_mode mode=pad_mode::constant, V constant_value=0)
    Pad an array.
    Definition xpad.hpp:75
    +
    auto broadcast(E &&e, const S &s)
    Returns an xexpression broadcasting the given expression to a specified shape.
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto tile(E &&e, std::initializer_list< S > reps)
    Tile an array.
    Definition xpad.hpp:296
    +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    pad_mode
    Defines different algorithms to be used in xt::pad:
    Definition xpad.hpp:39
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    +
    + + + + diff --git a/xrandom_8hpp_source.html b/xrandom_8hpp_source.html new file mode 100644 index 000000000..023cf9dbd --- /dev/null +++ b/xrandom_8hpp_source.html @@ -0,0 +1,861 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xrandom.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xrandom.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    14#ifndef XTENSOR_RANDOM_HPP
    +
    15#define XTENSOR_RANDOM_HPP
    +
    16
    +
    17#include <algorithm>
    +
    18#include <functional>
    +
    19#include <random>
    +
    20#include <type_traits>
    +
    21#include <utility>
    +
    22
    +
    23#include <xtl/xspan.hpp>
    +
    24
    +
    25#include "xbuilder.hpp"
    +
    26#include "xgenerator.hpp"
    +
    27#include "xindex_view.hpp"
    +
    28#include "xmath.hpp"
    +
    29#include "xtensor.hpp"
    +
    30#include "xtensor_config.hpp"
    +
    31#include "xview.hpp"
    +
    32
    +
    33namespace xt
    +
    34{
    +
    35 /*********************
    +
    36 * Random generators *
    +
    37 *********************/
    +
    38
    +
    39 namespace random
    +
    40 {
    +
    41 using default_engine_type = std::mt19937;
    +
    42 using seed_type = default_engine_type::result_type;
    +
    43
    +
    44 default_engine_type& get_default_random_engine();
    +
    45 void seed(seed_type seed);
    +
    46
    +
    47 template <class T, class S, class E = random::default_engine_type>
    +
    48 auto rand(const S& shape, T lower = 0, T upper = 1, E& engine = random::get_default_random_engine());
    +
    49
    +
    50 template <class T, class S, class E = random::default_engine_type>
    +
    51 auto randint(
    +
    52 const S& shape,
    +
    53 T lower = 0,
    +
    54 T upper = (std::numeric_limits<T>::max)(),
    +
    55 E& engine = random::get_default_random_engine()
    +
    56 );
    +
    57
    +
    58 template <class T, class S, class E = random::default_engine_type>
    +
    59 auto randn(const S& shape, T mean = 0, T std_dev = 1, E& engine = random::get_default_random_engine());
    +
    60
    +
    61 template <class T, class S, class D = double, class E = random::default_engine_type>
    +
    62 auto
    +
    63 binomial(const S& shape, T trials = 1, D prob = 0.5, E& engine = random::get_default_random_engine());
    +
    64
    +
    65 template <class T, class S, class D = double, class E = random::default_engine_type>
    +
    66 auto geometric(const S& shape, D prob = 0.5, E& engine = random::get_default_random_engine());
    +
    67
    +
    68 template <class T, class S, class D = double, class E = random::default_engine_type>
    +
    69 auto
    +
    70 negative_binomial(const S& shape, T k = 1, D prob = 0.5, E& engine = random::get_default_random_engine());
    +
    71
    +
    72 template <class T, class S, class D = double, class E = random::default_engine_type>
    +
    73 auto poisson(const S& shape, D rate = 1.0, E& engine = random::get_default_random_engine());
    +
    74
    +
    75 template <class T, class S, class E = random::default_engine_type>
    +
    76 auto exponential(const S& shape, T rate = 1.0, E& engine = random::get_default_random_engine());
    +
    77
    +
    78 template <class T, class S, class E = random::default_engine_type>
    +
    79 auto
    +
    80 gamma(const S& shape, T alpha = 1.0, T beta = 1.0, E& engine = random::get_default_random_engine());
    +
    81
    +
    82 template <class T, class S, class E = random::default_engine_type>
    +
    83 auto weibull(const S& shape, T a = 1.0, T b = 1.0, E& engine = random::get_default_random_engine());
    +
    84
    +
    85 template <class T, class S, class E = random::default_engine_type>
    +
    86 auto
    +
    87 extreme_value(const S& shape, T a = 0.0, T b = 1.0, E& engine = random::get_default_random_engine());
    +
    88
    +
    89 template <class T, class S, class E = random::default_engine_type>
    +
    90 auto
    +
    91 lognormal(const S& shape, T mean = 0, T std_dev = 1, E& engine = random::get_default_random_engine());
    +
    92
    +
    93 template <class T, class S, class E = random::default_engine_type>
    +
    94 auto chi_squared(const S& shape, T deg = 1.0, E& engine = random::get_default_random_engine());
    +
    95
    +
    96 template <class T, class S, class E = random::default_engine_type>
    +
    97 auto cauchy(const S& shape, T a = 0.0, T b = 1.0, E& engine = random::get_default_random_engine());
    +
    98
    +
    99 template <class T, class S, class E = random::default_engine_type>
    +
    100 auto fisher_f(const S& shape, T m = 1.0, T n = 1.0, E& engine = random::get_default_random_engine());
    +
    101
    +
    102 template <class T, class S, class E = random::default_engine_type>
    +
    103 auto student_t(const S& shape, T n = 1.0, E& engine = random::get_default_random_engine());
    +
    104
    +
    105 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    106 auto
    +
    107 rand(const I (&shape)[L], T lower = 0, T upper = 1, E& engine = random::get_default_random_engine());
    +
    108
    +
    109 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    110 auto randint(
    +
    111 const I (&shape)[L],
    +
    112 T lower = 0,
    +
    113 T upper = (std::numeric_limits<T>::max)(),
    +
    114 E& engine = random::get_default_random_engine()
    +
    115 );
    +
    116
    +
    117 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    118 auto
    +
    119 randn(const I (&shape)[L], T mean = 0, T std_dev = 1, E& engine = random::get_default_random_engine());
    +
    120
    +
    121 template <class T, class I, std::size_t L, class D = double, class E = random::default_engine_type>
    +
    122 auto
    +
    123 binomial(const I (&shape)[L], T trials = 1, D prob = 0.5, E& engine = random::get_default_random_engine());
    +
    124
    +
    125 template <class T, class I, std::size_t L, class D = double, class E = random::default_engine_type>
    +
    126 auto geometric(const I (&shape)[L], D prob = 0.5, E& engine = random::get_default_random_engine());
    +
    127
    +
    128 template <class T, class I, std::size_t L, class D = double, class E = random::default_engine_type>
    +
    129 auto negative_binomial(
    +
    130 const I (&shape)[L],
    +
    131 T k = 1,
    +
    132 D prob = 0.5,
    +
    133 E& engine = random::get_default_random_engine()
    +
    134 );
    +
    135
    +
    136 template <class T, class I, std::size_t L, class D = double, class E = random::default_engine_type>
    +
    137 auto poisson(const I (&shape)[L], D rate = 1.0, E& engine = random::get_default_random_engine());
    +
    138
    +
    139 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    140 auto exponential(const I (&shape)[L], T rate = 1.0, E& engine = random::get_default_random_engine());
    +
    141
    +
    142 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    143 auto
    +
    144 gamma(const I (&shape)[L], T alpha = 1.0, T beta = 1.0, E& engine = random::get_default_random_engine());
    +
    145
    +
    146 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    147 auto
    +
    148 weibull(const I (&shape)[L], T a = 1.0, T b = 1.0, E& engine = random::get_default_random_engine());
    +
    149
    +
    150 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    151 auto
    +
    152 extreme_value(const I (&shape)[L], T a = 0.0, T b = 1.0, E& engine = random::get_default_random_engine());
    +
    153
    +
    154 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    155 auto lognormal(
    +
    156 const I (&shape)[L],
    +
    157 T mean = 0.0,
    +
    158 T std_dev = 1.0,
    +
    159 E& engine = random::get_default_random_engine()
    +
    160 );
    +
    161
    +
    162 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    163 auto chi_squared(const I (&shape)[L], T deg = 1.0, E& engine = random::get_default_random_engine());
    +
    164
    +
    165 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    166 auto cauchy(const I (&shape)[L], T a = 0.0, T b = 1.0, E& engine = random::get_default_random_engine());
    +
    167
    +
    168 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    169 auto
    +
    170 fisher_f(const I (&shape)[L], T m = 1.0, T n = 1.0, E& engine = random::get_default_random_engine());
    +
    171
    +
    172 template <class T, class I, std::size_t L, class E = random::default_engine_type>
    +
    173 auto student_t(const I (&shape)[L], T n = 1.0, E& engine = random::get_default_random_engine());
    +
    174
    +
    175 template <class T, class E = random::default_engine_type>
    +
    176 void shuffle(xexpression<T>& e, E& engine = random::get_default_random_engine());
    +
    177
    +
    178 template <class T, class E = random::default_engine_type>
    +
    179 std::enable_if_t<xtl::is_integral<T>::value, xtensor<T, 1>>
    +
    180 permutation(T e, E& engine = random::get_default_random_engine());
    +
    181
    +
    182 template <class T, class E = random::default_engine_type>
    +
    183 std::enable_if_t<is_xexpression<std::decay_t<T>>::value, std::decay_t<T>>
    +
    184 permutation(T&& e, E& engine = random::get_default_random_engine());
    +
    185
    +
    186 template <class T, class E = random::default_engine_type>
    +
    187 xtensor<typename T::value_type, 1> choice(
    +
    188 const xexpression<T>& e,
    +
    189 std::size_t n,
    +
    190 bool replace = true,
    +
    191 E& engine = random::get_default_random_engine()
    +
    192 );
    +
    193
    +
    194 template <class T, class W, class E = random::default_engine_type>
    +
    195 xtensor<typename T::value_type, 1> choice(
    +
    196 const xexpression<T>& e,
    +
    197 std::size_t n,
    +
    198 const xexpression<W>& weights,
    +
    199 bool replace = true,
    +
    200 E& engine = random::get_default_random_engine()
    +
    201 );
    +
    202 }
    +
    203
    +
    204 namespace detail
    +
    205 {
    +
    206 template <class T, class E, class D>
    +
    207 struct random_impl
    +
    208 {
    +
    209 using value_type = T;
    +
    210
    +
    211 random_impl(E& engine, D&& dist)
    +
    212 : m_engine(engine)
    +
    213 , m_dist(std::move(dist))
    +
    214 {
    +
    215 }
    +
    216
    +
    217 template <class... Args>
    +
    218 inline value_type operator()(Args...) const
    +
    219 {
    +
    220 return m_dist(m_engine);
    +
    221 }
    +
    222
    +
    223 template <class It>
    +
    224 inline value_type element(It, It) const
    +
    225 {
    +
    226 return m_dist(m_engine);
    +
    227 }
    +
    228
    +
    229 template <class EX>
    +
    230 inline void assign_to(xexpression<EX>& e) const noexcept
    +
    231 {
    +
    232 // Note: we're not going row/col major here
    +
    233 auto& ed = e.derived_cast();
    +
    234 for (auto&& el : ed.storage())
    +
    235 {
    +
    236 el = m_dist(m_engine);
    +
    237 }
    +
    238 }
    +
    239
    +
    240 private:
    +
    241
    +
    242 E& m_engine;
    +
    243 mutable D m_dist;
    +
    244 };
    +
    245 }
    +
    246
    +
    247 namespace random
    +
    248 {
    +
    252 inline default_engine_type& get_default_random_engine()
    +
    253 {
    +
    254 static default_engine_type mt;
    +
    255 return mt;
    +
    256 }
    +
    257
    +
    262 inline void seed(seed_type seed)
    +
    263 {
    +
    264 get_default_random_engine().seed(seed);
    +
    265 }
    +
    266
    +
    279 template <class T, class S, class E>
    +
    280 inline auto rand(const S& shape, T lower, T upper, E& engine)
    +
    281 {
    +
    282 std::uniform_real_distribution<T> dist(lower, upper);
    +
    283 return detail::make_xgenerator(
    +
    284 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    285 shape
    +
    286 );
    +
    287 }
    +
    288
    +
    301 template <class T, class S, class E>
    +
    302 inline auto randint(const S& shape, T lower, T upper, E& engine)
    +
    303 {
    +
    304 std::uniform_int_distribution<T> dist(lower, T(upper - 1));
    +
    305 return detail::make_xgenerator(
    +
    306 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    307 shape
    +
    308 );
    +
    309 }
    +
    310
    +
    324 template <class T, class S, class E>
    +
    325 inline auto randn(const S& shape, T mean, T std_dev, E& engine)
    +
    326 {
    +
    327 std::normal_distribution<T> dist(mean, std_dev);
    +
    328 return detail::make_xgenerator(
    +
    329 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    330 shape
    +
    331 );
    +
    332 }
    +
    333
    +
    347 template <class T, class S, class D, class E>
    +
    348 inline auto binomial(const S& shape, T trials, D prob, E& engine)
    +
    349 {
    +
    350 std::binomial_distribution<T> dist(trials, prob);
    +
    351 return detail::make_xgenerator(
    +
    352 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    353 shape
    +
    354 );
    +
    355 }
    +
    356
    +
    369 template <class T, class S, class D, class E>
    +
    370 inline auto geometric(const S& shape, D prob, E& engine)
    +
    371 {
    +
    372 std::geometric_distribution<T> dist(prob);
    +
    373 return detail::make_xgenerator(
    +
    374 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    375 shape
    +
    376 );
    +
    377 }
    +
    378
    +
    393 template <class T, class S, class D, class E>
    +
    394 inline auto negative_binomial(const S& shape, T k, D prob, E& engine)
    +
    395 {
    +
    396 std::negative_binomial_distribution<T> dist(k, prob);
    +
    397 return detail::make_xgenerator(
    +
    398 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    399 shape
    +
    400 );
    +
    401 }
    +
    402
    +
    414 template <class T, class S, class D, class E>
    +
    415 inline auto poisson(const S& shape, D rate, E& engine)
    +
    416 {
    +
    417 std::poisson_distribution<T> dist(rate);
    +
    418 return detail::make_xgenerator(
    +
    419 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    420 shape
    +
    421 );
    +
    422 }
    +
    423
    +
    435 template <class T, class S, class E>
    +
    436 inline auto exponential(const S& shape, T rate, E& engine)
    +
    437 {
    +
    438 std::exponential_distribution<T> dist(rate);
    +
    439 return detail::make_xgenerator(
    +
    440 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    441 shape
    +
    442 );
    +
    443 }
    +
    444
    +
    457 template <class T, class S, class E>
    +
    458 inline auto gamma(const S& shape, T alpha, T beta, E& engine)
    +
    459 {
    +
    460 std::gamma_distribution<T> dist(alpha, beta);
    +
    461 return detail::make_xgenerator(
    +
    462 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    463 shape
    +
    464 );
    +
    465 }
    +
    466
    +
    479 template <class T, class S, class E>
    +
    480 inline auto weibull(const S& shape, T a, T b, E& engine)
    +
    481 {
    +
    482 std::weibull_distribution<T> dist(a, b);
    +
    483 return detail::make_xgenerator(
    +
    484 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    485 shape
    +
    486 );
    +
    487 }
    +
    488
    +
    501 template <class T, class S, class E>
    +
    502 inline auto extreme_value(const S& shape, T a, T b, E& engine)
    +
    503 {
    +
    504 std::extreme_value_distribution<T> dist(a, b);
    +
    505 return detail::make_xgenerator(
    +
    506 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    507 shape
    +
    508 );
    +
    509 }
    +
    510
    +
    524 template <class T, class S, class E>
    +
    525 inline auto lognormal(const S& shape, T mean, T std_dev, E& engine)
    +
    526 {
    +
    527 std::lognormal_distribution<T> dist(mean, std_dev);
    +
    528 return detail::make_xgenerator(
    +
    529 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    530 shape
    +
    531 );
    +
    532 }
    +
    533
    +
    545 template <class T, class S, class E>
    +
    546 inline auto chi_squared(const S& shape, T deg, E& engine)
    +
    547 {
    +
    548 std::chi_squared_distribution<T> dist(deg);
    +
    549 return detail::make_xgenerator(
    +
    550 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    551 shape
    +
    552 );
    +
    553 }
    +
    554
    +
    567 template <class T, class S, class E>
    +
    568 inline auto cauchy(const S& shape, T a, T b, E& engine)
    +
    569 {
    +
    570 std::cauchy_distribution<T> dist(a, b);
    +
    571 return detail::make_xgenerator(
    +
    572 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    573 shape
    +
    574 );
    +
    575 }
    +
    576
    +
    590 template <class T, class S, class E>
    +
    591 inline auto fisher_f(const S& shape, T m, T n, E& engine)
    +
    592 {
    +
    593 std::fisher_f_distribution<T> dist(m, n);
    +
    594 return detail::make_xgenerator(
    +
    595 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    596 shape
    +
    597 );
    +
    598 }
    +
    599
    +
    612 template <class T, class S, class E>
    +
    613 inline auto student_t(const S& shape, T n, E& engine)
    +
    614 {
    +
    615 std::student_t_distribution<T> dist(n);
    +
    616 return detail::make_xgenerator(
    +
    617 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    618 shape
    +
    619 );
    +
    620 }
    +
    621
    +
    622 template <class T, class I, std::size_t L, class E>
    +
    623 inline auto rand(const I (&shape)[L], T lower, T upper, E& engine)
    +
    624 {
    +
    625 std::uniform_real_distribution<T> dist(lower, upper);
    +
    626 return detail::make_xgenerator(
    +
    627 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    628 shape
    +
    629 );
    +
    630 }
    +
    631
    +
    632 template <class T, class I, std::size_t L, class E>
    +
    633 inline auto randint(const I (&shape)[L], T lower, T upper, E& engine)
    +
    634 {
    +
    635 std::uniform_int_distribution<T> dist(lower, T(upper - 1));
    +
    636 return detail::make_xgenerator(
    +
    637 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    638 shape
    +
    639 );
    +
    640 }
    +
    641
    +
    642 template <class T, class I, std::size_t L, class E>
    +
    643 inline auto randn(const I (&shape)[L], T mean, T std_dev, E& engine)
    +
    644 {
    +
    645 std::normal_distribution<T> dist(mean, std_dev);
    +
    646 return detail::make_xgenerator(
    +
    647 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    648 shape
    +
    649 );
    +
    650 }
    +
    651
    +
    652 template <class T, class I, std::size_t L, class D, class E>
    +
    653 inline auto binomial(const I (&shape)[L], T trials, D prob, E& engine)
    +
    654 {
    +
    655 std::binomial_distribution<T> dist(trials, prob);
    +
    656 return detail::make_xgenerator(
    +
    657 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    658 shape
    +
    659 );
    +
    660 }
    +
    661
    +
    662 template <class T, class I, std::size_t L, class D, class E>
    +
    663 inline auto geometric(const I (&shape)[L], D prob, E& engine)
    +
    664 {
    +
    665 std::geometric_distribution<T> dist(prob);
    +
    666 return detail::make_xgenerator(
    +
    667 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    668 shape
    +
    669 );
    +
    670 }
    +
    671
    +
    672 template <class T, class I, std::size_t L, class D, class E>
    +
    673 inline auto negative_binomial(const I (&shape)[L], T k, D prob, E& engine)
    +
    674 {
    +
    675 std::negative_binomial_distribution<T> dist(k, prob);
    +
    676 return detail::make_xgenerator(
    +
    677 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    678 shape
    +
    679 );
    +
    680 }
    +
    681
    +
    682 template <class T, class I, std::size_t L, class D, class E>
    +
    683 inline auto poisson(const I (&shape)[L], D rate, E& engine)
    +
    684 {
    +
    685 std::poisson_distribution<T> dist(rate);
    +
    686 return detail::make_xgenerator(
    +
    687 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    688 shape
    +
    689 );
    +
    690 }
    +
    691
    +
    692 template <class T, class I, std::size_t L, class E>
    +
    693 inline auto exponential(const I (&shape)[L], T rate, E& engine)
    +
    694 {
    +
    695 std::exponential_distribution<T> dist(rate);
    +
    696 return detail::make_xgenerator(
    +
    697 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    698 shape
    +
    699 );
    +
    700 }
    +
    701
    +
    702 template <class T, class I, std::size_t L, class E>
    +
    703 inline auto gamma(const I (&shape)[L], T alpha, T beta, E& engine)
    +
    704 {
    +
    705 std::gamma_distribution<T> dist(alpha, beta);
    +
    706 return detail::make_xgenerator(
    +
    707 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    708 shape
    +
    709 );
    +
    710 }
    +
    711
    +
    712 template <class T, class I, std::size_t L, class E>
    +
    713 inline auto weibull(const I (&shape)[L], T a, T b, E& engine)
    +
    714 {
    +
    715 std::weibull_distribution<T> dist(a, b);
    +
    716 return detail::make_xgenerator(
    +
    717 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    718 shape
    +
    719 );
    +
    720 }
    +
    721
    +
    722 template <class T, class I, std::size_t L, class E>
    +
    723 inline auto extreme_value(const I (&shape)[L], T a, T b, E& engine)
    +
    724 {
    +
    725 std::extreme_value_distribution<T> dist(a, b);
    +
    726 return detail::make_xgenerator(
    +
    727 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    728 shape
    +
    729 );
    +
    730 }
    +
    731
    +
    732 template <class T, class I, std::size_t L, class E>
    +
    733 inline auto lognormal(const I (&shape)[L], T mean, T std_dev, E& engine)
    +
    734 {
    +
    735 std::lognormal_distribution<T> dist(mean, std_dev);
    +
    736 return detail::make_xgenerator(
    +
    737 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    738 shape
    +
    739 );
    +
    740 }
    +
    741
    +
    742 template <class T, class I, std::size_t L, class E>
    +
    743 inline auto chi_squared(const I (&shape)[L], T deg, E& engine)
    +
    744 {
    +
    745 std::chi_squared_distribution<T> dist(deg);
    +
    746 return detail::make_xgenerator(
    +
    747 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    748 shape
    +
    749 );
    +
    750 }
    +
    751
    +
    752 template <class T, class I, std::size_t L, class E>
    +
    753 inline auto cauchy(const I (&shape)[L], T a, T b, E& engine)
    +
    754 {
    +
    755 std::cauchy_distribution<T> dist(a, b);
    +
    756 return detail::make_xgenerator(
    +
    757 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    758 shape
    +
    759 );
    +
    760 }
    +
    761
    +
    762 template <class T, class I, std::size_t L, class E>
    +
    763 inline auto fisher_f(const I (&shape)[L], T m, T n, E& engine)
    +
    764 {
    +
    765 std::fisher_f_distribution<T> dist(m, n);
    +
    766 return detail::make_xgenerator(
    +
    767 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    768 shape
    +
    769 );
    +
    770 }
    +
    771
    +
    772 template <class T, class I, std::size_t L, class E>
    +
    773 inline auto student_t(const I (&shape)[L], T n, E& engine)
    +
    774 {
    +
    775 std::student_t_distribution<T> dist(n);
    +
    776 return detail::make_xgenerator(
    +
    777 detail::random_impl<T, E, decltype(dist)>(engine, std::move(dist)),
    +
    778 shape
    +
    779 );
    +
    780 }
    +
    781
    +
    789 template <class T, class E>
    +
    790 void shuffle(xexpression<T>& e, E& engine)
    +
    791 {
    +
    792 T& de = e.derived_cast();
    +
    793
    +
    794 if (de.dimension() == 1)
    +
    795 {
    +
    796 using size_type = typename T::size_type;
    +
    797 auto first = de.begin();
    +
    798 auto last = de.end();
    +
    799
    +
    800 for (size_type i = std::size_t((last - first) - 1); i > 0; --i)
    +
    801 {
    +
    802 std::uniform_int_distribution<size_type> dist(0, i);
    +
    803 auto j = dist(engine);
    +
    804 using std::swap;
    +
    805 swap(first[i], first[j]);
    +
    806 }
    +
    807 }
    +
    808 else
    +
    809 {
    +
    810 using size_type = typename T::size_type;
    +
    811 decltype(auto) buf = empty_like(view(de, 0));
    +
    812
    +
    813 for (size_type i = de.shape()[0] - 1; i > 0; --i)
    +
    814 {
    +
    815 std::uniform_int_distribution<size_type> dist(0, i);
    +
    816 size_type j = dist(engine);
    +
    817
    +
    818 buf = view(de, j);
    +
    819 view(de, j) = view(de, i);
    +
    820 view(de, i) = buf;
    +
    821 }
    +
    822 }
    +
    823 }
    +
    824
    +
    838 template <class T, class E>
    +
    839 std::enable_if_t<xtl::is_integral<T>::value, xtensor<T, 1>> permutation(T e, E& engine)
    +
    840 {
    +
    841 xt::xtensor<T, 1> res = xt::arange<T>(e);
    +
    842 shuffle(res, engine);
    +
    843 return res;
    +
    844 }
    +
    845
    +
    847 template <class T, class E>
    +
    848 std::enable_if_t<is_xexpression<std::decay_t<T>>::value, std::decay_t<T>> permutation(T&& e, E& engine)
    +
    849 {
    +
    850 using copy_type = std::decay_t<T>;
    +
    851 copy_type res = e;
    +
    852 shuffle(res, engine);
    +
    853 return res;
    +
    854 }
    +
    855
    +
    857
    +
    869 template <class T, class E>
    +
    870 xtensor<typename T::value_type, 1>
    +
    871 choice(const xexpression<T>& e, std::size_t n, bool replace, E& engine)
    +
    872 {
    +
    873 const auto& de = e.derived_cast();
    +
    874 XTENSOR_ASSERT((de.dimension() == 1));
    +
    875 XTENSOR_ASSERT((replace || n <= de.size()));
    +
    876 using result_type = xtensor<typename T::value_type, 1>;
    +
    877 using size_type = typename result_type::size_type;
    +
    878 result_type result;
    +
    879 result.resize({n});
    +
    880
    +
    881 if (replace)
    +
    882 {
    +
    883 auto dist = std::uniform_int_distribution<size_type>(0, de.size() - 1);
    +
    884 for (size_type i = 0; i < n; ++i)
    +
    885 {
    +
    886 result[i] = de.storage()[dist(engine)];
    +
    887 }
    +
    888 }
    +
    889 else
    +
    890 {
    +
    891 // Naive resevoir sampling without weighting:
    +
    892 std::copy(de.storage().begin(), de.storage().begin() + n, result.begin());
    +
    893 size_type i = n;
    +
    894 for (auto it = de.storage().begin() + n; it != de.storage().end(); ++it, ++i)
    +
    895 {
    +
    896 auto idx = std::uniform_int_distribution<size_type>(0, i)(engine);
    +
    897 if (idx < n)
    +
    898 {
    +
    899 result.storage()[idx] = *it;
    +
    900 }
    +
    901 }
    +
    902 }
    +
    903 return result;
    +
    904 }
    +
    905
    +
    933 template <class T, class W, class E>
    +
    934 xtensor<typename T::value_type, 1>
    +
    935 choice(const xexpression<T>& e, std::size_t n, const xexpression<W>& weights, bool replace, E& engine)
    +
    936 {
    +
    937 const auto& de = e.derived_cast();
    +
    938 const auto& dweights = weights.derived_cast();
    +
    939 XTENSOR_ASSERT((de.dimension() == 1));
    +
    940 XTENSOR_ASSERT((replace || n <= de.size()));
    +
    941 XTENSOR_ASSERT((de.size() == dweights.size()));
    +
    942 XTENSOR_ASSERT((de.dimension() == dweights.dimension()));
    +
    943 XTENSOR_ASSERT(xt::all(dweights >= 0));
    +
    944 static_assert(
    +
    945 std::is_floating_point<typename W::value_type>::value,
    +
    946 "Weight expression must be of floating point type"
    +
    947 );
    +
    948 using result_type = xtensor<typename T::value_type, 1>;
    +
    949 using size_type = typename result_type::size_type;
    +
    950 using weight_type = typename W::value_type;
    +
    951 result_type result;
    +
    952 result.resize({n});
    +
    953
    +
    954 if (replace)
    +
    955 {
    +
    956 // Sample u uniformly in the range [0, sum(weights)[
    +
    957 // The index idx of the sampled element is such that weight_cumul[idx - 1] <= u <
    +
    958 // weight_cumul[idx]. Where weight_cumul[-1] is implicitly 0, as the empty sum.
    +
    959 const auto wc = eval(cumsum(dweights));
    +
    960 std::uniform_real_distribution<weight_type> weight_dist{0, wc[wc.size() - 1]};
    +
    961 for (auto& x : result)
    +
    962 {
    +
    963 const auto u = weight_dist(engine);
    +
    964 const auto idx = static_cast<size_type>(
    +
    965 std::upper_bound(wc.cbegin(), wc.cend(), u) - wc.cbegin()
    +
    966 );
    +
    967 x = de[idx];
    +
    968 }
    +
    969 }
    +
    970 else
    +
    971 {
    +
    972 // Compute (modified) keys as weight/randexp(1).
    +
    973 xtensor<weight_type, 1> keys;
    +
    974 keys.resize({dweights.size()});
    +
    975 std::exponential_distribution<weight_type> randexp{weight_type(1)};
    +
    976 std::transform(
    +
    977 dweights.cbegin(),
    +
    978 dweights.cend(),
    +
    979 keys.begin(),
    +
    980 [&randexp, &engine](auto w)
    +
    981 {
    +
    982 return w / randexp(engine);
    +
    983 }
    +
    984 );
    +
    985
    +
    986 // Find indexes for the n biggest key
    +
    987 xtensor<size_type, 1> indices = arange<size_type>(0, dweights.size());
    +
    988 std::partial_sort(
    +
    989 indices.begin(),
    +
    990 indices.begin() + n,
    +
    991 indices.end(),
    +
    992 [&keys](auto i, auto j)
    +
    993 {
    +
    994 return keys[i] > keys[j];
    +
    995 }
    +
    996 );
    +
    997
    +
    998 // Return samples with the n biggest keys
    +
    999 result = index_view(de, xtl::span<size_type>{indices.data(), n});
    +
    1000 }
    +
    1001 return result;
    +
    1002 }
    +
    1003
    +
    1004 }
    +
    1005}
    +
    1006
    +
    1007#endif
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    auto cumsum(E &&e, std::ptrdiff_t axis)
    Cumulative sum.
    Definition xmath.hpp:2285
    +
    auto mean(E &&e, X &&axes, EVS es=EVS())
    Mean of elements over given axes.
    Definition xmath.hpp:1934
    +
    auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
    Force evaluation of xexpression.
    Definition xeval.hpp:46
    +
    @ weibull
    Method 6 of (Hyndman and Fan, 1996) with alpha=0 and beta=0.
    +
    standard mathematical functions for xexpressions
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto index_view(E &&e, I &&indices) noexcept
    creates an indexview from a container of indices.
    +
    auto empty_like(const xexpression< E > &e)
    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of the same shape,...
    Definition xbuilder.hpp:121
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    +
    +
    + + + + diff --git a/xreducer_8hpp_source.html b/xreducer_8hpp_source.html new file mode 100644 index 000000000..0802258cc --- /dev/null +++ b/xreducer_8hpp_source.html @@ -0,0 +1,2021 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xreducer.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xreducer.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_REDUCER_HPP
    +
    11#define XTENSOR_REDUCER_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <initializer_list>
    +
    16#include <iterator>
    +
    17#include <stdexcept>
    +
    18#include <tuple>
    +
    19#include <type_traits>
    +
    20#include <utility>
    +
    21
    +
    22#include <xtl/xfunctional.hpp>
    +
    23#include <xtl/xsequence.hpp>
    +
    24
    +
    25#include "xaccessible.hpp"
    +
    26#include "xbuilder.hpp"
    +
    27#include "xeval.hpp"
    +
    28#include "xexpression.hpp"
    +
    29#include "xgenerator.hpp"
    +
    30#include "xiterable.hpp"
    +
    31#include "xtensor_config.hpp"
    +
    32#include "xutils.hpp"
    +
    33
    +
    34namespace xt
    +
    35{
    +
    36 template <template <class...> class A, class... AX, class X, XTL_REQUIRES(is_evaluation_strategy<AX>..., is_evaluation_strategy<X>)>
    +
    37 auto operator|(const A<AX...>& args, const A<X>& rhs)
    +
    38 {
    +
    39 return std::tuple_cat(args, rhs);
    +
    40 }
    +
    41
    +
    +
    42 struct keep_dims_type : xt::detail::option_base
    +
    43 {
    +
    44 };
    +
    +
    45
    +
    46 constexpr auto keep_dims = std::tuple<keep_dims_type>{};
    +
    47
    +
    48 template <class T = double>
    +
    +
    49 struct xinitial : xt::detail::option_base
    +
    50 {
    +
    51 constexpr xinitial(T val)
    +
    52 : m_val(val)
    +
    53 {
    +
    54 }
    +
    55
    +
    56 constexpr T value() const
    +
    57 {
    +
    58 return m_val;
    +
    59 }
    +
    60
    +
    61 T m_val;
    +
    62 };
    +
    +
    63
    +
    64 template <class T>
    +
    65 constexpr auto initial(T val)
    +
    66 {
    +
    67 return std::make_tuple(xinitial<T>(val));
    +
    68 }
    +
    69
    +
    70 template <std::ptrdiff_t I, class T, class Tuple>
    + +
    72
    +
    73 template <std::ptrdiff_t I, class T>
    +
    +
    74 struct tuple_idx_of_impl<I, T, std::tuple<>>
    +
    75 {
    +
    76 static constexpr std::ptrdiff_t value = -1;
    +
    77 };
    +
    +
    78
    +
    79 template <std::ptrdiff_t I, class T, class... Types>
    +
    +
    80 struct tuple_idx_of_impl<I, T, std::tuple<T, Types...>>
    +
    81 {
    +
    82 static constexpr std::ptrdiff_t value = I;
    +
    83 };
    +
    +
    84
    +
    85 template <std::ptrdiff_t I, class T, class U, class... Types>
    +
    +
    86 struct tuple_idx_of_impl<I, T, std::tuple<U, Types...>>
    +
    87 {
    +
    88 static constexpr std::ptrdiff_t value = tuple_idx_of_impl<I + 1, T, std::tuple<Types...>>::value;
    +
    89 };
    +
    +
    90
    +
    91 template <class S, class... X>
    +
    92 struct decay_all;
    +
    93
    +
    94 template <template <class...> class S, class... X>
    +
    +
    95 struct decay_all<S<X...>>
    +
    96 {
    +
    97 using type = S<std::decay_t<X>...>;
    +
    98 };
    +
    +
    99
    +
    100 template <class T, class Tuple>
    +
    + +
    102 {
    +
    103 static constexpr std::ptrdiff_t
    + +
    105 };
    +
    +
    106
    +
    107 template <class R, class T>
    +
    + +
    109 {
    +
    110 template <class X>
    +
    +
    111 struct initial_tester : std::false_type
    +
    112 {
    +
    113 };
    +
    +
    114
    +
    115 template <class X>
    +
    +
    116 struct initial_tester<xinitial<X>> : std::true_type
    +
    117 {
    +
    118 };
    +
    +
    119
    +
    120 // Workaround for Apple because tuple_cat is buggy!
    +
    121 template <class X>
    +
    +
    122 struct initial_tester<const xinitial<X>> : std::true_type
    +
    123 {
    +
    124 };
    +
    +
    125
    +
    126 using d_t = std::decay_t<T>;
    +
    127
    +
    128 static constexpr std::size_t initial_val_idx = xtl::mpl::find_if<initial_tester, d_t>::value;
    +
    129 reducer_options() = default;
    +
    130
    +
    131 reducer_options(const T& tpl)
    +
    132 {
    +
    133 xtl::mpl::static_if<initial_val_idx != std::tuple_size<T>::value>(
    +
    134 [this, &tpl](auto no_compile)
    +
    135 {
    +
    136 // use no_compile to prevent compilation if initial_val_idx is out of bounds!
    +
    137 this->initial_value = no_compile(
    +
    138 std::get < initial_val_idx != std::tuple_size<T>::value
    +
    139 ? initial_val_idx
    +
    140 : 0 > (tpl)
    +
    141 )
    +
    142 .value();
    +
    143 },
    +
    144 [](auto /*np_compile*/) {}
    +
    145 );
    +
    146 }
    +
    147
    +
    148 using evaluation_strategy = std::conditional_t<
    +
    149 tuple_idx_of<xt::evaluation_strategy::immediate_type, d_t>::value != -1,
    + + +
    152
    +
    153 using keep_dims = std::
    +
    154 conditional_t<tuple_idx_of<xt::keep_dims_type, d_t>::value != -1, std::true_type, std::false_type>;
    +
    155
    +
    156 static constexpr bool has_initial_value = initial_val_idx != std::tuple_size<d_t>::value;
    +
    157
    +
    158 R initial_value;
    +
    159
    +
    160 template <class NR>
    +
    161 using rebind_t = reducer_options<NR, T>;
    +
    162
    +
    163 template <class NR>
    +
    164 auto rebind(NR initial, const reducer_options<R, T>&) const
    +
    165 {
    +
    166 reducer_options<NR, T> res;
    +
    167 res.initial_value = initial;
    +
    168 return res;
    +
    169 }
    +
    170 };
    +
    +
    171
    +
    172 template <class T>
    +
    +
    173 struct is_reducer_options_impl : std::false_type
    +
    174 {
    +
    175 };
    +
    +
    176
    +
    177 template <class... X>
    +
    +
    178 struct is_reducer_options_impl<std::tuple<X...>> : std::true_type
    +
    179 {
    +
    180 };
    +
    +
    181
    +
    182 template <class T>
    +
    + +
    184 {
    +
    185 };
    +
    +
    186
    +
    187 /**********
    +
    188 * reduce *
    +
    189 **********/
    +
    190
    +
    191#define DEFAULT_STRATEGY_REDUCERS std::tuple<evaluation_strategy::lazy_type>
    +
    192
    +
    193 template <class ST, class X, class KD = std::false_type>
    +
    194 struct xreducer_shape_type;
    +
    195
    +
    196 template <class S1, class S2>
    + +
    198
    +
    199 namespace detail
    +
    200 {
    +
    201 template <class O, class RS, class R, class E, class AX>
    +
    202 inline void shape_computation(
    +
    203 RS& result_shape,
    +
    204 R& result,
    +
    205 E& expr,
    +
    206 const AX& axes,
    +
    207 std::enable_if_t<!detail::is_fixed<RS>::value, int> = 0
    +
    208 )
    +
    209 {
    +
    210 if (typename O::keep_dims())
    +
    211 {
    +
    212 resize_container(result_shape, expr.dimension());
    +
    213 for (std::size_t i = 0; i < expr.dimension(); ++i)
    +
    214 {
    +
    215 if (std::find(axes.begin(), axes.end(), i) == axes.end())
    +
    216 {
    +
    217 // i not in axes!
    +
    218 result_shape[i] = expr.shape()[i];
    +
    219 }
    +
    220 else
    +
    221 {
    +
    222 result_shape[i] = 1;
    +
    223 }
    +
    224 }
    +
    225 }
    +
    226 else
    +
    227 {
    +
    228 resize_container(result_shape, expr.dimension() - axes.size());
    +
    229 for (std::size_t i = 0, idx = 0; i < expr.dimension(); ++i)
    +
    230 {
    +
    231 if (std::find(axes.begin(), axes.end(), i) == axes.end())
    +
    232 {
    +
    233 // i not in axes!
    +
    234 result_shape[idx] = expr.shape()[i];
    +
    235 ++idx;
    +
    236 }
    +
    237 }
    +
    238 }
    +
    239 result.resize(result_shape, expr.layout());
    +
    240 }
    +
    241
    +
    242 // skip shape computation if already done at compile time
    +
    243 template <class O, class RS, class R, class S, class AX>
    +
    244 inline void
    +
    245 shape_computation(RS&, R&, const S&, const AX&, std::enable_if_t<detail::is_fixed<RS>::value, int> = 0)
    +
    246 {
    +
    247 }
    +
    248 }
    +
    249
    +
    250 template <class F, class E, class R, XTL_REQUIRES(std::is_convertible<typename E::value_type, typename R::value_type>)>
    +
    251 inline void copy_to_reduced(F&, const E& e, R& result)
    +
    252 {
    +
    253 if (e.layout() == layout_type::row_major)
    +
    254 {
    +
    255 std::copy(
    +
    256 e.template cbegin<layout_type::row_major>(),
    +
    257 e.template cend<layout_type::row_major>(),
    +
    258 result.data()
    +
    259 );
    +
    260 }
    +
    261 else
    +
    262 {
    +
    263 std::copy(
    +
    264 e.template cbegin<layout_type::column_major>(),
    +
    265 e.template cend<layout_type::column_major>(),
    +
    266 result.data()
    +
    267 );
    +
    268 }
    +
    269 }
    +
    270
    +
    271 template <
    +
    272 class F,
    +
    273 class E,
    +
    274 class R,
    +
    275 XTL_REQUIRES(xtl::negation<std::is_convertible<typename E::value_type, typename R::value_type>>)>
    +
    276 inline void copy_to_reduced(F& f, const E& e, R& result)
    +
    277 {
    +
    278 if (e.layout() == layout_type::row_major)
    +
    279 {
    +
    280 std::transform(
    +
    281 e.template cbegin<layout_type::row_major>(),
    +
    282 e.template cend<layout_type::row_major>(),
    +
    283 result.data(),
    +
    284 f
    +
    285 );
    +
    286 }
    +
    287 else
    +
    288 {
    +
    289 std::transform(
    +
    290 e.template cbegin<layout_type::column_major>(),
    +
    291 e.template cend<layout_type::column_major>(),
    +
    292 result.data(),
    +
    293 f
    +
    294 );
    +
    295 }
    +
    296 }
    +
    297
    +
    298 template <class F, class E, class X, class O>
    +
    299 inline auto reduce_immediate(F&& f, E&& e, X&& axes, O&& raw_options)
    +
    300 {
    +
    301 using reduce_functor_type = typename std::decay_t<F>::reduce_functor_type;
    +
    302 using init_functor_type = typename std::decay_t<F>::init_functor_type;
    +
    303 using expr_value_type = typename std::decay_t<E>::value_type;
    +
    304 using result_type = std::decay_t<decltype(std::declval<reduce_functor_type>()(
    +
    305 std::declval<init_functor_type>()(),
    +
    306 std::declval<expr_value_type>()
    +
    307 ))>;
    +
    308
    +
    309 using options_t = reducer_options<result_type, std::decay_t<O>>;
    +
    310 options_t options(raw_options);
    +
    311
    +
    312 using shape_type = typename xreducer_shape_type<
    +
    313 typename std::decay_t<E>::shape_type,
    +
    314 std::decay_t<X>,
    +
    315 typename options_t::keep_dims>::type;
    +
    316 using result_container_type = typename detail::xtype_for_shape<
    +
    317 shape_type>::template type<result_type, std::decay_t<E>::static_layout>;
    +
    318 result_container_type result;
    +
    319
    +
    320 // retrieve functors from triple struct
    +
    321 auto reduce_fct = xt::get<0>(f);
    +
    322 auto init_fct = xt::get<1>(f);
    +
    323 auto merge_fct = xt::get<2>(f);
    +
    324
    +
    325 if (axes.size() == 0)
    +
    326 {
    +
    327 result.resize(e.shape(), e.layout());
    +
    328 auto cpf = [&reduce_fct, &init_fct](const auto& v)
    +
    329 {
    +
    330 return reduce_fct(static_cast<result_type>(init_fct()), v);
    +
    331 };
    +
    332 copy_to_reduced(cpf, e, result);
    +
    333 return result;
    +
    334 }
    +
    335
    +
    336 shape_type result_shape{};
    +
    337 dynamic_shape<std::size_t>
    +
    338 iter_shape = xtl::forward_sequence<dynamic_shape<std::size_t>, decltype(e.shape())>(e.shape());
    +
    339 dynamic_shape<std::size_t> iter_strides(e.dimension());
    +
    340
    +
    341 // std::less is used, because as the standard says (24.4.5):
    +
    342 // A sequence is sorted with respect to a comparator comp if for any iterator i pointing to the
    +
    343 // sequence and any non-negative integer n such that i + n is a valid iterator pointing to an element
    +
    344 // of the sequence, comp(*(i + n), *i) == false. Therefore less is required to detect duplicates.
    +
    345 if (!std::is_sorted(axes.cbegin(), axes.cend(), std::less<>()))
    +
    346 {
    +
    347 XTENSOR_THROW(std::runtime_error, "Reducing axes should be sorted.");
    +
    348 }
    +
    349 if (std::adjacent_find(axes.cbegin(), axes.cend()) != axes.cend())
    +
    350 {
    +
    351 XTENSOR_THROW(std::runtime_error, "Reducing axes should not contain duplicates.");
    +
    352 }
    +
    353 if (axes.size() != 0 && axes[axes.size() - 1] > e.dimension() - 1)
    +
    354 {
    +
    355 XTENSOR_THROW(
    +
    356 std::runtime_error,
    +
    357 "Axis " + std::to_string(axes[axes.size() - 1]) + " out of bounds for reduction."
    +
    358 );
    +
    359 }
    +
    360
    +
    361 detail::shape_computation<options_t>(result_shape, result, e, axes);
    +
    362
    +
    363 // Fast track for complete reduction
    +
    364 if (e.dimension() == axes.size())
    +
    365 {
    +
    366 result_type tmp = options_t::has_initial_value ? options.initial_value : init_fct();
    +
    367 result.data()[0] = std::accumulate(e.storage().begin(), e.storage().end(), tmp, reduce_fct);
    +
    368 return result;
    +
    369 }
    +
    370
    +
    371 std::size_t leading_ax = axes[(e.layout() == layout_type::row_major) ? axes.size() - 1 : 0];
    +
    372 auto strides_finder = e.strides().begin() + static_cast<std::ptrdiff_t>(leading_ax);
    +
    373 // The computed strides contain "0" where the shape is 1 -- therefore find the next none-zero number
    +
    374 std::size_t inner_stride = static_cast<std::size_t>(*strides_finder);
    +
    375 auto iter_bound = e.layout() == layout_type::row_major ? e.strides().begin() : (e.strides().end() - 1);
    +
    376 while (inner_stride == 0 && strides_finder != iter_bound)
    +
    377 {
    +
    378 (e.layout() == layout_type::row_major) ? --strides_finder : ++strides_finder;
    +
    379 inner_stride = static_cast<std::size_t>(*strides_finder);
    +
    380 }
    +
    381
    +
    382 if (inner_stride == 0)
    +
    383 {
    +
    384 auto cpf = [&reduce_fct, &init_fct](const auto& v)
    +
    385 {
    +
    386 return reduce_fct(static_cast<result_type>(init_fct()), v);
    +
    387 };
    +
    388 copy_to_reduced(cpf, e, result);
    +
    389 return result;
    +
    390 }
    +
    391
    +
    392 std::size_t inner_loop_size = static_cast<std::size_t>(inner_stride);
    +
    393 std::size_t outer_loop_size = e.shape()[leading_ax];
    +
    394
    +
    395 // The following code merges reduction axes "at the end" (or the beginning for col_major)
    +
    396 // together by increasing the size of the outer loop where appropriate
    +
    397 auto merge_loops = [&outer_loop_size, &e](auto it, auto end)
    +
    398 {
    +
    399 auto last_ax = *it;
    +
    400 ++it;
    +
    401 for (; it != end; ++it)
    +
    402 {
    +
    403 // note that we check is_sorted, so this condition is valid
    +
    404 if (std::abs(std::ptrdiff_t(*it) - std::ptrdiff_t(last_ax)) == 1)
    +
    405 {
    +
    406 last_ax = *it;
    +
    407 outer_loop_size *= e.shape()[last_ax];
    +
    408 }
    +
    409 }
    +
    410 return last_ax;
    +
    411 };
    +
    412
    +
    413 for (std::size_t i = 0, idx = 0; i < e.dimension(); ++i)
    +
    414 {
    +
    415 if (std::find(axes.begin(), axes.end(), i) == axes.end())
    +
    416 {
    +
    417 // i not in axes!
    +
    418 iter_strides[i] = static_cast<std::size_t>(result.strides(
    +
    419 )[typename options_t::keep_dims() ? i : idx]);
    +
    420 ++idx;
    +
    421 }
    +
    422 }
    +
    423
    +
    424 if (e.layout() == layout_type::row_major)
    +
    425 {
    +
    426 std::size_t last_ax = merge_loops(axes.rbegin(), axes.rend());
    +
    427
    +
    428 iter_shape.erase(iter_shape.begin() + std::ptrdiff_t(last_ax), iter_shape.end());
    +
    429 iter_strides.erase(iter_strides.begin() + std::ptrdiff_t(last_ax), iter_strides.end());
    +
    430 }
    +
    431 else if (e.layout() == layout_type::column_major)
    +
    432 {
    +
    433 // we got column_major here
    +
    434 std::size_t last_ax = merge_loops(axes.begin(), axes.end());
    +
    435
    +
    436 // erasing the front vs the back
    +
    437 iter_shape.erase(iter_shape.begin(), iter_shape.begin() + std::ptrdiff_t(last_ax + 1));
    +
    438 iter_strides.erase(iter_strides.begin(), iter_strides.begin() + std::ptrdiff_t(last_ax + 1));
    +
    439
    +
    440 // and reversing, to make it work with the same next_idx function
    +
    441 std::reverse(iter_shape.begin(), iter_shape.end());
    +
    442 std::reverse(iter_strides.begin(), iter_strides.end());
    +
    443 }
    +
    444 else
    +
    445 {
    +
    446 XTENSOR_THROW(std::runtime_error, "Layout not supported in immediate reduction.");
    +
    447 }
    +
    448
    +
    449 xindex temp_idx(iter_shape.size());
    +
    450 auto next_idx = [&iter_shape, &iter_strides, &temp_idx]()
    +
    451 {
    +
    452 std::size_t i = iter_shape.size();
    +
    453 for (; i > 0; --i)
    +
    454 {
    +
    455 if (std::ptrdiff_t(temp_idx[i - 1]) >= std::ptrdiff_t(iter_shape[i - 1]) - 1)
    +
    456 {
    +
    457 temp_idx[i - 1] = 0;
    +
    458 }
    +
    459 else
    +
    460 {
    +
    461 temp_idx[i - 1]++;
    +
    462 break;
    +
    463 }
    +
    464 }
    +
    465
    +
    466 return std::make_pair(
    +
    467 i == 0,
    +
    468 std::inner_product(temp_idx.begin(), temp_idx.end(), iter_strides.begin(), std::ptrdiff_t(0))
    +
    469 );
    +
    470 };
    +
    471
    +
    472 auto begin = e.data();
    +
    473 auto out = result.data();
    +
    474 auto out_begin = result.data();
    +
    475
    +
    476 std::ptrdiff_t next_stride = 0;
    +
    477
    +
    478 std::pair<bool, std::ptrdiff_t> idx_res(false, 0);
    +
    479
    +
    480 // Remark: eventually some modifications here to make conditions faster where merge + accumulate is
    +
    481 // the same function (e.g. check std::is_same<decltype(merge_fct), decltype(reduce_fct)>::value) ...
    +
    482
    +
    483 auto merge_border = out;
    +
    484 bool merge = false;
    +
    485
    +
    486 // TODO there could be some performance gain by removing merge checking
    +
    487 // when axes.size() == 1 and even next_idx could be removed for something simpler (next_stride
    +
    488 // always the same) best way to do this would be to create a function that takes (begin, out,
    +
    489 // outer_loop_size, inner_loop_size, next_idx_lambda)
    +
    490 // Decide if going about it row-wise or col-wise
    +
    491 if (inner_stride == 1)
    +
    492 {
    +
    493 while (idx_res.first != true)
    +
    494 {
    +
    495 // for unknown reasons it's much faster to use a temporary variable and
    +
    496 // std::accumulate here -- probably some cache behavior
    +
    497 result_type tmp = init_fct();
    +
    498 tmp = std::accumulate(begin, begin + outer_loop_size, tmp, reduce_fct);
    +
    499
    +
    500 // use merge function if necessary
    +
    501 *out = merge ? merge_fct(*out, tmp) : tmp;
    +
    502
    +
    503 begin += outer_loop_size;
    +
    504
    +
    505 idx_res = next_idx();
    +
    506 next_stride = idx_res.second;
    +
    507 out = out_begin + next_stride;
    +
    508
    +
    509 if (out > merge_border)
    +
    510 {
    +
    511 // looped over once
    +
    512 merge = false;
    +
    513 merge_border = out;
    +
    514 }
    +
    515 else
    +
    516 {
    +
    517 merge = true;
    +
    518 }
    +
    519 };
    +
    520 }
    +
    521 else
    +
    522 {
    +
    523 while (idx_res.first != true)
    +
    524 {
    +
    525 std::transform(
    +
    526 out,
    +
    527 out + inner_loop_size,
    +
    528 begin,
    +
    529 out,
    +
    530 [merge, &init_fct, &reduce_fct](auto&& v1, auto&& v2)
    +
    531 {
    +
    532 return merge ? reduce_fct(v1, v2) :
    +
    533 // cast because return type of identity function is not upcasted
    +
    534 reduce_fct(static_cast<result_type>(init_fct()), v2);
    +
    535 }
    +
    536 );
    +
    537
    +
    538 begin += inner_stride;
    +
    539 for (std::size_t i = 1; i < outer_loop_size; ++i)
    +
    540 {
    +
    541 std::transform(out, out + inner_loop_size, begin, out, reduce_fct);
    +
    542 begin += inner_stride;
    +
    543 }
    +
    544
    +
    545 idx_res = next_idx();
    +
    546 next_stride = idx_res.second;
    +
    547 out = out_begin + next_stride;
    +
    548
    +
    549 if (out > merge_border)
    +
    550 {
    +
    551 // looped over once
    +
    552 merge = false;
    +
    553 merge_border = out;
    +
    554 }
    +
    555 else
    +
    556 {
    +
    557 merge = true;
    +
    558 }
    +
    559 };
    +
    560 }
    +
    561 if (options_t::has_initial_value)
    +
    562 {
    +
    563 std::transform(
    +
    564 result.data(),
    +
    565 result.data() + result.size(),
    +
    566 result.data(),
    +
    567 [&merge_fct, &options](auto&& v)
    +
    568 {
    +
    569 return merge_fct(v, options.initial_value);
    +
    570 }
    +
    571 );
    +
    572 }
    +
    573 return result;
    +
    574 }
    +
    575
    +
    576 /*********************
    +
    577 * xreducer functors *
    +
    578 *********************/
    +
    579
    +
    580 template <class T>
    +
    + +
    582 {
    +
    583 using value_type = T;
    +
    584
    +
    585 constexpr const_value() = default;
    +
    586
    +
    587 constexpr const_value(T t)
    +
    588 : m_value(t)
    +
    589 {
    +
    590 }
    +
    591
    +
    592 constexpr T operator()() const
    +
    593 {
    +
    594 return m_value;
    +
    595 }
    +
    596
    +
    597 template <class NT>
    + +
    599
    +
    600 template <class NT>
    +
    601 const_value<NT> rebind() const;
    +
    602
    +
    603 T m_value;
    +
    604 };
    +
    +
    605
    +
    606 namespace detail
    +
    607 {
    +
    608 template <class T, bool B>
    +
    609 struct evaluated_value_type
    +
    610 {
    +
    611 using type = T;
    +
    612 };
    +
    613
    +
    614 template <class T>
    +
    615 struct evaluated_value_type<T, true>
    +
    616 {
    +
    617 using type = typename std::decay_t<decltype(xt::eval(std::declval<T>()))>;
    +
    618 };
    +
    619
    +
    620 template <class T, bool B>
    +
    621 using evaluated_value_type_t = typename evaluated_value_type<T, B>::type;
    +
    622 }
    +
    623
    +
    624 template <class REDUCE_FUNC, class INIT_FUNC = const_value<long int>, class MERGE_FUNC = REDUCE_FUNC>
    +
    +
    625 struct xreducer_functors : public std::tuple<REDUCE_FUNC, INIT_FUNC, MERGE_FUNC>
    +
    626 {
    + +
    628 using base_type = std::tuple<REDUCE_FUNC, INIT_FUNC, MERGE_FUNC>;
    +
    629 using reduce_functor_type = REDUCE_FUNC;
    +
    630 using init_functor_type = INIT_FUNC;
    +
    631 using merge_functor_type = MERGE_FUNC;
    +
    632 using init_value_type = typename init_functor_type::value_type;
    +
    633
    + +
    635 : base_type()
    +
    636 {
    +
    637 }
    +
    638
    +
    639 template <class RF>
    +
    640 xreducer_functors(RF&& reduce_func)
    +
    641 : base_type(std::forward<RF>(reduce_func), INIT_FUNC(), reduce_func)
    +
    642 {
    +
    643 }
    +
    644
    +
    645 template <class RF, class IF>
    +
    646 xreducer_functors(RF&& reduce_func, IF&& init_func)
    +
    647 : base_type(std::forward<RF>(reduce_func), std::forward<IF>(init_func), reduce_func)
    +
    648 {
    +
    649 }
    +
    650
    +
    651 template <class RF, class IF, class MF>
    +
    652 xreducer_functors(RF&& reduce_func, IF&& init_func, MF&& merge_func)
    +
    653 : base_type(std::forward<RF>(reduce_func), std::forward<IF>(init_func), std::forward<MF>(merge_func))
    +
    654 {
    +
    655 }
    +
    656
    +
    657 reduce_functor_type get_reduce() const
    +
    658 {
    +
    659 return std::get<0>(upcast());
    +
    660 }
    +
    661
    +
    662 init_functor_type get_init() const
    +
    663 {
    +
    664 return std::get<1>(upcast());
    +
    665 }
    +
    666
    +
    667 merge_functor_type get_merge() const
    +
    668 {
    +
    669 return std::get<2>(upcast());
    +
    670 }
    +
    671
    +
    672 template <class NT>
    + +
    674
    +
    675 template <class NT>
    +
    676 rebind_t<NT> rebind()
    +
    677 {
    +
    678 return make_xreducer_functor(get_reduce(), get_init().template rebind<NT>(), get_merge());
    +
    679 }
    +
    680
    +
    681 private:
    +
    682
    +
    683 // Workaround for clang-cl
    +
    684 const base_type& upcast() const
    +
    685 {
    +
    686 return static_cast<const base_type&>(*this);
    +
    687 }
    +
    688 };
    +
    +
    689
    +
    690 template <class RF>
    +
    691 auto make_xreducer_functor(RF&& reduce_func)
    +
    692 {
    + +
    694 return reducer_type(std::forward<RF>(reduce_func));
    +
    695 }
    +
    696
    +
    697 template <class RF, class IF>
    +
    698 auto make_xreducer_functor(RF&& reduce_func, IF&& init_func)
    +
    699 {
    +
    700 using reducer_type = xreducer_functors<std::remove_reference_t<RF>, std::remove_reference_t<IF>>;
    +
    701 return reducer_type(std::forward<RF>(reduce_func), std::forward<IF>(init_func));
    +
    702 }
    +
    703
    +
    704 template <class RF, class IF, class MF>
    +
    705 auto make_xreducer_functor(RF&& reduce_func, IF&& init_func, MF&& merge_func)
    +
    706 {
    +
    707 using reducer_type = xreducer_functors<
    +
    708 std::remove_reference_t<RF>,
    +
    709 std::remove_reference_t<IF>,
    +
    710 std::remove_reference_t<MF>>;
    +
    711 return reducer_type(
    +
    712 std::forward<RF>(reduce_func),
    +
    713 std::forward<IF>(init_func),
    +
    714 std::forward<MF>(merge_func)
    +
    715 );
    +
    716 }
    +
    717
    +
    718 /**********************
    +
    719 * xreducer extension *
    +
    720 **********************/
    +
    721
    +
    722 namespace extension
    +
    723 {
    +
    724 template <class Tag, class F, class CT, class X, class O>
    +
    725 struct xreducer_base_impl;
    +
    726
    +
    727 template <class F, class CT, class X, class O>
    +
    728 struct xreducer_base_impl<xtensor_expression_tag, F, CT, X, O>
    +
    729 {
    +
    730 using type = xtensor_empty_base;
    +
    731 };
    +
    732
    +
    733 template <class F, class CT, class X, class O>
    +
    734 struct xreducer_base : xreducer_base_impl<xexpression_tag_t<CT>, F, CT, X, O>
    +
    735 {
    +
    736 };
    +
    737
    +
    738 template <class F, class CT, class X, class O>
    +
    739 using xreducer_base_t = typename xreducer_base<F, CT, X, O>::type;
    +
    740 }
    +
    741
    +
    742 /************
    +
    743 * xreducer *
    +
    744 ************/
    +
    745
    +
    746 template <class F, class CT, class X, class O>
    +
    747 class xreducer;
    +
    748
    +
    749 template <class F, class CT, class X, class O>
    +
    750 class xreducer_stepper;
    +
    751
    +
    752 template <class F, class CT, class X, class O>
    +
    +
    753 struct xiterable_inner_types<xreducer<F, CT, X, O>>
    +
    754 {
    +
    755 using xexpression_type = std::decay_t<CT>;
    +
    756 using inner_shape_type = typename xreducer_shape_type<
    +
    757 typename xexpression_type::shape_type,
    +
    758 std::decay_t<X>,
    +
    759 typename O::keep_dims>::type;
    + +
    761 using stepper = const_stepper;
    +
    762 };
    +
    +
    763
    +
    764 template <class F, class CT, class X, class O>
    +
    +
    765 struct xcontainer_inner_types<xreducer<F, CT, X, O>>
    +
    766 {
    +
    767 using xexpression_type = std::decay_t<CT>;
    +
    768 using reduce_functor_type = typename std::decay_t<F>::reduce_functor_type;
    +
    769 using init_functor_type = typename std::decay_t<F>::init_functor_type;
    +
    770 using merge_functor_type = typename std::decay_t<F>::merge_functor_type;
    +
    771 using substepper_type = typename xexpression_type::const_stepper;
    +
    772 using raw_value_type = std::decay_t<decltype(std::declval<reduce_functor_type>()(
    +
    773 std::declval<init_functor_type>()(),
    +
    774 *std::declval<substepper_type>()
    +
    775 ))>;
    +
    776 using value_type = typename detail::evaluated_value_type_t<raw_value_type, is_xexpression<raw_value_type>::value>;
    +
    777
    +
    778 using reference = value_type;
    +
    779 using const_reference = value_type;
    +
    780 using size_type = typename xexpression_type::size_type;
    +
    781 };
    +
    +
    782
    +
    783 template <class T>
    +
    + +
    785 {
    +
    786 using type = T;
    +
    787 };
    +
    +
    788
    +
    789 template <std::size_t... I>
    +
    + +
    791 {
    +
    792 using type = std::array<std::size_t, sizeof...(I)>;
    +
    793 };
    +
    +
    794
    +
    812 template <class F, class CT, class X, class O>
    +
    +
    813 class xreducer : public xsharable_expression<xreducer<F, CT, X, O>>,
    +
    814 public xconst_iterable<xreducer<F, CT, X, O>>,
    +
    815 public xaccessible<xreducer<F, CT, X, O>>,
    +
    816 public extension::xreducer_base_t<F, CT, X, O>
    +
    817 {
    +
    818 public:
    +
    819
    + + +
    822
    +
    823 using reduce_functor_type = typename inner_types::reduce_functor_type;
    +
    824 using init_functor_type = typename inner_types::init_functor_type;
    +
    825 using merge_functor_type = typename inner_types::merge_functor_type;
    + +
    827
    +
    828 using xexpression_type = typename inner_types::xexpression_type;
    +
    829 using axes_type = X;
    +
    830
    +
    831 using extension_base = extension::xreducer_base_t<F, CT, X, O>;
    +
    832 using expression_tag = typename extension_base::expression_tag;
    +
    833
    +
    834 using substepper_type = typename inner_types::substepper_type;
    +
    835 using value_type = typename inner_types::value_type;
    +
    836 using reference = typename inner_types::reference;
    +
    837 using const_reference = typename inner_types::const_reference;
    +
    838 using pointer = value_type*;
    +
    839 using const_pointer = const value_type*;
    +
    840
    +
    841 using size_type = typename inner_types::size_type;
    +
    842 using difference_type = typename xexpression_type::difference_type;
    +
    843
    + +
    845 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    846 using shape_type = inner_shape_type;
    +
    847
    +
    848 using dim_mapping_type = typename select_dim_mapping_type<inner_shape_type>::type;
    +
    849
    +
    850 using stepper = typename iterable_base::stepper;
    +
    851 using const_stepper = typename iterable_base::const_stepper;
    +
    852 using bool_load_type = typename xexpression_type::bool_load_type;
    +
    853
    +
    854 static constexpr layout_type static_layout = layout_type::dynamic;
    +
    855 static constexpr bool contiguous_layout = false;
    +
    856
    +
    857 template <class Func, class CTA, class AX, class OX>
    +
    858 xreducer(Func&& func, CTA&& e, AX&& axes, OX&& options);
    +
    859
    +
    860 const inner_shape_type& shape() const noexcept;
    +
    861 layout_type layout() const noexcept;
    +
    862 bool is_contiguous() const noexcept;
    +
    863
    +
    864 template <class... Args>
    +
    865 const_reference operator()(Args... args) const;
    +
    866 template <class... Args>
    +
    867 const_reference unchecked(Args... args) const;
    +
    868
    +
    869 template <class It>
    +
    870 const_reference element(It first, It last) const;
    +
    871
    +
    872 const xexpression_type& expression() const noexcept;
    +
    873
    +
    874 template <class S>
    +
    875 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    876
    +
    877 template <class S>
    +
    878 bool has_linear_assign(const S& strides) const noexcept;
    +
    879
    +
    880 template <class S>
    +
    881 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    882 template <class S>
    +
    883 const_stepper stepper_end(const S& shape, layout_type) const noexcept;
    +
    884
    +
    885 template <class E, class Func = F, class Opts = O>
    + +
    887
    +
    888 template <class E>
    +
    889 rebind_t<E> build_reducer(E&& e) const;
    +
    890
    +
    891 template <class E, class Func, class Opts>
    +
    892 rebind_t<E, Func, Opts> build_reducer(E&& e, Func&& func, Opts&& opts) const;
    +
    893
    +
    894 xreducer_functors_type functors() const
    +
    895 {
    +
    896 return xreducer_functors_type(m_reduce, m_init, m_merge); // TODO: understand why
    +
    897 // make_xreducer_functor is throwing an
    +
    898 // error
    +
    899 }
    +
    900
    +
    901 const O& options() const
    +
    902 {
    +
    903 return m_options;
    +
    904 }
    +
    905
    +
    906 private:
    +
    907
    +
    908 CT m_e;
    +
    909 reduce_functor_type m_reduce;
    +
    910 init_functor_type m_init;
    +
    911 merge_functor_type m_merge;
    +
    912 axes_type m_axes;
    +
    913 inner_shape_type m_shape;
    +
    914 dim_mapping_type m_dim_mapping;
    +
    915 O m_options;
    +
    916
    +
    917 friend class xreducer_stepper<F, CT, X, O>;
    +
    918 };
    +
    +
    919
    +
    920 /*************************
    +
    921 * reduce implementation *
    +
    922 *************************/
    +
    923
    +
    924 namespace detail
    +
    925 {
    +
    926 template <class F, class E, class X, class O>
    +
    927 inline auto reduce_impl(F&& f, E&& e, X&& axes, evaluation_strategy::lazy_type, O&& options)
    +
    928 {
    +
    929 decltype(auto) normalized_axes = normalize_axis(e, std::forward<X>(axes));
    +
    930
    +
    931 using reduce_functor_type = typename std::decay_t<F>::reduce_functor_type;
    +
    932 using init_functor_type = typename std::decay_t<F>::init_functor_type;
    +
    933 using value_type = std::decay_t<decltype(std::declval<reduce_functor_type>()(
    +
    934 std::declval<init_functor_type>()(),
    +
    935 *std::declval<typename std::decay_t<E>::const_stepper>()
    +
    936 ))>;
    +
    937 using evaluated_value_type = evaluated_value_type_t<value_type, is_xexpression<value_type>::value>;
    +
    938
    +
    939 using reducer_type = xreducer<
    +
    940 F,
    +
    941 const_xclosure_t<E>,
    +
    942 xtl::const_closure_type_t<decltype(normalized_axes)>,
    +
    943 reducer_options<evaluated_value_type, std::decay_t<O>>>;
    +
    944 return reducer_type(
    +
    945 std::forward<F>(f),
    +
    946 std::forward<E>(e),
    +
    947 std::forward<decltype(normalized_axes)>(normalized_axes),
    +
    948 std::forward<O>(options)
    +
    949 );
    +
    950 }
    +
    951
    +
    952 template <class F, class E, class X, class O>
    +
    953 inline auto reduce_impl(F&& f, E&& e, X&& axes, evaluation_strategy::immediate_type, O&& options)
    +
    954 {
    +
    955 decltype(auto) normalized_axes = normalize_axis(e, std::forward<X>(axes));
    +
    956 return reduce_immediate(
    +
    957 std::forward<F>(f),
    +
    958 eval(std::forward<E>(e)),
    +
    959 std::forward<decltype(normalized_axes)>(normalized_axes),
    +
    960 std::forward<O>(options)
    +
    961 );
    +
    962 }
    +
    963 }
    +
    964
    +
    965#define DEFAULT_STRATEGY_REDUCERS std::tuple<evaluation_strategy::lazy_type>
    +
    966
    +
    967 namespace detail
    +
    968 {
    +
    969 template <class T>
    +
    970 struct is_xreducer_functors_impl : std::false_type
    +
    971 {
    +
    972 };
    +
    973
    +
    974 template <class RF, class IF, class MF>
    +
    975 struct is_xreducer_functors_impl<xreducer_functors<RF, IF, MF>> : std::true_type
    +
    976 {
    +
    977 };
    +
    978
    +
    979 template <class T>
    +
    980 using is_xreducer_functors = is_xreducer_functors_impl<std::decay_t<T>>;
    +
    981 }
    +
    982
    +
    996 template <
    +
    997 class F,
    +
    998 class E,
    +
    999 class X,
    +
    1000 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1001 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, detail::is_xreducer_functors<F>)>
    +
    +
    1002 inline auto reduce(F&& f, E&& e, X&& axes, EVS&& options = EVS())
    +
    1003 {
    +
    1004 return detail::reduce_impl(
    +
    1005 std::forward<F>(f),
    +
    1006 std::forward<E>(e),
    +
    1007 std::forward<X>(axes),
    +
    1008 typename reducer_options<int, EVS>::evaluation_strategy{},
    +
    1009 std::forward<EVS>(options)
    +
    1010 );
    +
    1011 }
    +
    +
    1012
    +
    1013 template <
    +
    1014 class F,
    +
    1015 class E,
    +
    1016 class X,
    +
    1017 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1018 XTL_REQUIRES(xtl::negation<is_reducer_options<X>>, xtl::negation<detail::is_xreducer_functors<F>>)>
    +
    1019 inline auto reduce(F&& f, E&& e, X&& axes, EVS&& options = EVS())
    +
    1020 {
    +
    1021 return reduce(
    +
    1022 make_xreducer_functor(std::forward<F>(f)),
    +
    1023 std::forward<E>(e),
    +
    1024 std::forward<X>(axes),
    +
    1025 std::forward<EVS>(options)
    +
    1026 );
    +
    1027 }
    +
    1028
    +
    1029 template <
    +
    1030 class F,
    +
    1031 class E,
    +
    1032 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1033 XTL_REQUIRES(is_reducer_options<EVS>, detail::is_xreducer_functors<F>)>
    +
    1034 inline auto reduce(F&& f, E&& e, EVS&& options = EVS())
    +
    1035 {
    +
    1036 xindex_type_t<typename std::decay_t<E>::shape_type> ar;
    +
    1037 resize_container(ar, e.dimension());
    +
    1038 std::iota(ar.begin(), ar.end(), 0);
    +
    1039 return detail::reduce_impl(
    +
    1040 std::forward<F>(f),
    +
    1041 std::forward<E>(e),
    +
    1042 std::move(ar),
    +
    1043 typename reducer_options<int, std::decay_t<EVS>>::evaluation_strategy{},
    +
    1044 std::forward<EVS>(options)
    +
    1045 );
    +
    1046 }
    +
    1047
    +
    1048 template <
    +
    1049 class F,
    +
    1050 class E,
    +
    1051 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1052 XTL_REQUIRES(is_reducer_options<EVS>, xtl::negation<detail::is_xreducer_functors<F>>)>
    +
    1053 inline auto reduce(F&& f, E&& e, EVS&& options = EVS())
    +
    1054 {
    +
    1055 return reduce(make_xreducer_functor(std::forward<F>(f)), std::forward<E>(e), std::forward<EVS>(options));
    +
    1056 }
    +
    1057
    +
    1058 template <
    +
    1059 class F,
    +
    1060 class E,
    +
    1061 class I,
    +
    1062 std::size_t N,
    +
    1063 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1064 XTL_REQUIRES(detail::is_xreducer_functors<F>)>
    +
    1065 inline auto reduce(F&& f, E&& e, const I (&axes)[N], EVS options = EVS())
    +
    1066 {
    +
    1067 using axes_type = std::array<std::size_t, N>;
    +
    1068 auto ax = xt::forward_normalize<axes_type>(e, axes);
    +
    1069 return detail::reduce_impl(
    +
    1070 std::forward<F>(f),
    +
    1071 std::forward<E>(e),
    +
    1072 std::move(ax),
    +
    1073 typename reducer_options<int, EVS>::evaluation_strategy{},
    +
    1074 options
    +
    1075 );
    +
    1076 }
    +
    1077
    +
    1078 template <
    +
    1079 class F,
    +
    1080 class E,
    +
    1081 class I,
    +
    1082 std::size_t N,
    +
    1083 class EVS = DEFAULT_STRATEGY_REDUCERS,
    +
    1084 XTL_REQUIRES(xtl::negation<detail::is_xreducer_functors<F>>)>
    +
    1085 inline auto reduce(F&& f, E&& e, const I (&axes)[N], EVS options = EVS())
    +
    1086 {
    +
    1087 return reduce(make_xreducer_functor(std::forward<F>(f)), std::forward<E>(e), axes, options);
    +
    1088 }
    +
    1089
    +
    1090 /********************
    +
    1091 * xreducer_stepper *
    +
    1092 ********************/
    +
    1093
    +
    1094 template <class F, class CT, class X, class O>
    +
    + +
    1096 {
    +
    1097 public:
    +
    1098
    + + +
    1101
    +
    1102 using value_type = typename xreducer_type::value_type;
    +
    1103 using reference = typename xreducer_type::value_type;
    +
    1104 using pointer = typename xreducer_type::const_pointer;
    +
    1105 using size_type = typename xreducer_type::size_type;
    +
    1106 using difference_type = typename xreducer_type::difference_type;
    +
    1107
    +
    1108 using xexpression_type = typename xreducer_type::xexpression_type;
    +
    1109 using substepper_type = typename xexpression_type::const_stepper;
    +
    1110 using shape_type = typename xreducer_type::shape_type;
    +
    1111
    + +
    1113 const xreducer_type& red,
    +
    1114 size_type offset,
    +
    1115 bool end = false,
    +
    1116 layout_type l = default_assignable_layout(xexpression_type::static_layout)
    +
    1117 );
    +
    1118
    +
    1119 reference operator*() const;
    +
    1120
    +
    1121 void step(size_type dim);
    +
    1122 void step_back(size_type dim);
    +
    1123 void step(size_type dim, size_type n);
    +
    1124 void step_back(size_type dim, size_type n);
    +
    1125 void reset(size_type dim);
    +
    1126 void reset_back(size_type dim);
    +
    1127
    +
    1128 void to_begin();
    +
    1129 void to_end(layout_type l);
    +
    1130
    +
    1131 private:
    +
    1132
    +
    1133 reference initial_value() const;
    +
    1134 reference aggregate(size_type dim) const;
    +
    1135 reference aggregate_impl(size_type dim, /*keep_dims=*/std::false_type) const;
    +
    1136 reference aggregate_impl(size_type dim, /*keep_dims=*/std::true_type) const;
    +
    1137
    +
    1138 substepper_type get_substepper_begin() const;
    +
    1139 size_type get_dim(size_type dim) const noexcept;
    +
    1140 size_type shape(size_type i) const noexcept;
    +
    1141 size_type axis(size_type i) const noexcept;
    +
    1142
    +
    1143 const xreducer_type* m_reducer;
    +
    1144 size_type m_offset;
    +
    1145 mutable substepper_type m_stepper;
    +
    1146 };
    +
    +
    1147
    +
    1148 /******************
    +
    1149 * xreducer utils *
    +
    1150 ******************/
    +
    1151
    +
    1152 namespace detail
    +
    1153 {
    +
    1154 template <std::size_t X, std::size_t... I>
    +
    1155 struct in
    +
    1156 {
    +
    1157 static constexpr bool value = xtl::disjunction<std::integral_constant<bool, X == I>...>::value;
    +
    1158 };
    +
    1159
    +
    1160 template <std::size_t Z, class S1, class S2, class R>
    +
    1161 struct fixed_xreducer_shape_type_impl;
    +
    1162
    +
    1163 template <std::size_t Z, std::size_t... I, std::size_t... J, std::size_t... R>
    +
    1164 struct fixed_xreducer_shape_type_impl<Z, fixed_shape<I...>, fixed_shape<J...>, fixed_shape<R...>>
    +
    1165 {
    +
    1166 using type = std::conditional_t<
    +
    1167 in<Z, J...>::value,
    +
    1168 typename fixed_xreducer_shape_type_impl<Z - 1, fixed_shape<I...>, fixed_shape<J...>, fixed_shape<R...>>::type,
    +
    1169 typename fixed_xreducer_shape_type_impl<
    +
    1170 Z - 1,
    +
    1171 fixed_shape<I...>,
    +
    1172 fixed_shape<J...>,
    +
    1173 fixed_shape<detail::at<Z, I...>::value, R...>>::type>;
    +
    1174 };
    +
    1175
    +
    1176 template <std::size_t... I, std::size_t... J, std::size_t... R>
    +
    1177 struct fixed_xreducer_shape_type_impl<0, fixed_shape<I...>, fixed_shape<J...>, fixed_shape<R...>>
    +
    1178 {
    +
    1179 using type = std::
    +
    1180 conditional_t<in<0, J...>::value, fixed_shape<R...>, fixed_shape<detail::at<0, I...>::value, R...>>;
    +
    1181 };
    +
    1182
    +
    1183 /***************************
    +
    1184 * helper for return types *
    +
    1185 ***************************/
    +
    1186
    +
    1187 template <class T>
    +
    1188 struct xreducer_size_type
    +
    1189 {
    +
    1190 using type = std::size_t;
    +
    1191 };
    +
    1192
    +
    1193 template <class T>
    +
    1194 using xreducer_size_type_t = typename xreducer_size_type<T>::type;
    +
    1195
    +
    1196 template <class T>
    +
    1197 struct xreducer_temporary_type
    +
    1198 {
    +
    1199 using type = T;
    +
    1200 };
    +
    1201
    +
    1202 template <class T>
    +
    1203 using xreducer_temporary_type_t = typename xreducer_temporary_type<T>::type;
    +
    1204
    +
    1205 /********************************
    +
    1206 * Default const_value rebinder *
    +
    1207 ********************************/
    +
    1208
    +
    1209 template <class T, class U>
    +
    1210 struct const_value_rebinder
    +
    1211 {
    +
    1212 static const_value<U> run(const const_value<T>& t)
    +
    1213 {
    +
    1214 return const_value<U>(t.m_value);
    +
    1215 }
    +
    1216 };
    +
    1217 }
    +
    1218
    +
    1219 /*******************************************
    +
    1220 * Init functor const_value implementation *
    +
    1221 *******************************************/
    +
    1222
    +
    1223 template <class T>
    +
    1224 template <class NT>
    +
    1225 const_value<NT> const_value<T>::rebind() const
    +
    1226 {
    +
    1227 return detail::const_value_rebinder<T, NT>::run(*this);
    +
    1228 }
    +
    1229
    +
    1230 /*****************************
    +
    1231 * fixed_xreducer_shape_type *
    +
    1232 *****************************/
    +
    1233
    +
    1234 template <class S1, class S2>
    +
    1235 struct fixed_xreducer_shape_type;
    +
    1236
    +
    1237 template <std::size_t... I, std::size_t... J>
    +
    + +
    1239 {
    +
    1240 using type = typename detail::
    +
    1241 fixed_xreducer_shape_type_impl<sizeof...(I) - 1, fixed_shape<I...>, fixed_shape<J...>, fixed_shape<>>::type;
    +
    1242 };
    +
    +
    1243
    +
    1244 // meta-function returning the shape type for an xreducer
    +
    1245 template <class ST, class X, class O>
    +
    + +
    1247 {
    +
    1248 using type = promote_shape_t<ST, std::decay_t<X>>;
    +
    1249 };
    +
    +
    1250
    +
    1251 template <class I1, std::size_t N1, class I2, std::size_t N2>
    +
    +
    1252 struct xreducer_shape_type<std::array<I1, N1>, std::array<I2, N2>, std::true_type>
    +
    1253 {
    +
    1254 using type = std::array<I2, N1>;
    +
    1255 };
    +
    +
    1256
    +
    1257 template <class I1, std::size_t N1, class I2, std::size_t N2>
    +
    +
    1258 struct xreducer_shape_type<std::array<I1, N1>, std::array<I2, N2>, std::false_type>
    +
    1259 {
    +
    1260 using type = std::array<I2, N1 - N2>;
    +
    1261 };
    +
    +
    1262
    +
    1263 template <std::size_t... I, class I2, std::size_t N2>
    +
    +
    1264 struct xreducer_shape_type<fixed_shape<I...>, std::array<I2, N2>, std::false_type>
    +
    1265 {
    +
    1266 using type = std::conditional_t<sizeof...(I) == N2, fixed_shape<>, std::array<I2, sizeof...(I) - N2>>;
    +
    1267 };
    +
    +
    1268
    +
    1269 namespace detail
    +
    1270 {
    +
    1271 template <class S1, class S2>
    +
    1272 struct ixconcat;
    +
    1273
    +
    1274 template <class T, T... I1, T... I2>
    +
    1275 struct ixconcat<std::integer_sequence<T, I1...>, std::integer_sequence<T, I2...>>
    +
    1276 {
    +
    1277 using type = std::integer_sequence<T, I1..., I2...>;
    +
    1278 };
    +
    1279
    +
    1280 template <class T, T X, std::size_t N>
    +
    1281 struct repeat_integer_sequence
    +
    1282 {
    +
    1283 using type = typename ixconcat<
    +
    1284 std::integer_sequence<T, X>,
    +
    1285 typename repeat_integer_sequence<T, X, N - 1>::type>::type;
    +
    1286 };
    +
    1287
    +
    1288 template <class T, T X>
    +
    1289 struct repeat_integer_sequence<T, X, 0>
    +
    1290 {
    +
    1291 using type = std::integer_sequence<T>;
    +
    1292 };
    +
    1293
    +
    1294 template <class T, T X>
    +
    1295 struct repeat_integer_sequence<T, X, 2>
    +
    1296 {
    +
    1297 using type = std::integer_sequence<T, X, X>;
    +
    1298 };
    +
    1299
    +
    1300 template <class T, T X>
    +
    1301 struct repeat_integer_sequence<T, X, 1>
    +
    1302 {
    +
    1303 using type = std::integer_sequence<T, X>;
    +
    1304 };
    +
    1305 }
    +
    1306
    +
    1307 template <std::size_t... I, class I2, std::size_t N2>
    +
    +
    1308 struct xreducer_shape_type<fixed_shape<I...>, std::array<I2, N2>, std::true_type>
    +
    1309 {
    +
    1310 template <std::size_t... X>
    +
    1311 static constexpr auto get_type(std::index_sequence<X...>)
    +
    1312 {
    +
    1313 return fixed_shape<X...>{};
    +
    1314 }
    +
    1315
    +
    1316 // if all axes reduced
    +
    1317 using type = std::conditional_t<
    +
    1318 sizeof...(I) == N2,
    +
    1319 decltype(get_type(typename detail::repeat_integer_sequence<std::size_t, std::size_t(1), N2>::type{})),
    +
    1320 std::array<I2, sizeof...(I)>>;
    +
    1321 };
    +
    +
    1322
    +
    1323 // Note adding "A" to prevent compilation in case nothing else matches
    +
    1324 template <std::size_t... I, std::size_t... J, class O>
    +
    + +
    1326 {
    +
    1327 using type = typename fixed_xreducer_shape_type<fixed_shape<I...>, fixed_shape<J...>>::type;
    +
    1328 };
    +
    +
    1329
    +
    1330 namespace detail
    +
    1331 {
    +
    1332 template <class S, class E, class X, class M>
    +
    1333 inline void shape_and_mapping_computation(S& shape, E& e, const X& axes, M& mapping, std::false_type)
    +
    1334 {
    +
    1335 auto first = e.shape().begin();
    +
    1336 auto last = e.shape().end();
    +
    1337 auto exclude_it = axes.begin();
    +
    1338
    +
    1339 using value_type = typename S::value_type;
    +
    1340 using difference_type = typename S::difference_type;
    +
    1341 auto d_first = shape.begin();
    +
    1342 auto map_first = mapping.begin();
    +
    1343
    +
    1344 auto iter = first;
    +
    1345 while (iter != last && exclude_it != axes.end())
    +
    1346 {
    +
    1347 auto diff = std::distance(first, iter);
    +
    1348 if (diff != difference_type(*exclude_it))
    +
    1349 {
    +
    1350 *d_first++ = *iter++;
    +
    1351 *map_first++ = value_type(diff);
    +
    1352 }
    +
    1353 else
    +
    1354 {
    +
    1355 ++iter;
    +
    1356 ++exclude_it;
    +
    1357 }
    +
    1358 }
    +
    1359
    +
    1360 auto diff = std::distance(first, iter);
    +
    1361 auto end = std::distance(iter, last);
    +
    1362 std::iota(map_first, map_first + end, diff);
    +
    1363 std::copy(iter, last, d_first);
    +
    1364 }
    +
    1365
    +
    1366 template <class S, class E, class X, class M>
    +
    1367 inline void
    +
    1368 shape_and_mapping_computation_keep_dim(S& shape, E& e, const X& axes, M& mapping, std::false_type)
    +
    1369 {
    +
    1370 for (std::size_t i = 0; i < e.dimension(); ++i)
    +
    1371 {
    +
    1372 if (std::find(axes.cbegin(), axes.cend(), i) == axes.cend())
    +
    1373 {
    +
    1374 // i not in axes!
    +
    1375 shape[i] = e.shape()[i];
    +
    1376 }
    +
    1377 else
    +
    1378 {
    +
    1379 shape[i] = 1;
    +
    1380 }
    +
    1381 }
    +
    1382 std::iota(mapping.begin(), mapping.end(), 0);
    +
    1383 }
    +
    1384
    +
    1385 template <class S, class E, class X, class M>
    +
    1386 inline void shape_and_mapping_computation(S&, E&, const X&, M&, std::true_type)
    +
    1387 {
    +
    1388 }
    +
    1389
    +
    1390 template <class S, class E, class X, class M>
    +
    1391 inline void shape_and_mapping_computation_keep_dim(S&, E&, const X&, M&, std::true_type)
    +
    1392 {
    +
    1393 }
    +
    1394 }
    +
    1395
    +
    1396 /***************************
    +
    1397 * xreducer implementation *
    +
    1398 ***************************/
    +
    1399
    +
    1412 template <class F, class CT, class X, class O>
    +
    1413 template <class Func, class CTA, class AX, class OX>
    +
    +
    1414 inline xreducer<F, CT, X, O>::xreducer(Func&& func, CTA&& e, AX&& axes, OX&& options)
    +
    1415 : m_e(std::forward<CTA>(e))
    +
    1416 , m_reduce(xt::get<0>(func))
    +
    1417 , m_init(xt::get<1>(func))
    +
    1418 , m_merge(xt::get<2>(func))
    +
    1419 , m_axes(std::forward<AX>(axes))
    +
    1420 , m_shape(xtl::make_sequence<inner_shape_type>(
    +
    1421 typename O::keep_dims() ? m_e.dimension() : m_e.dimension() - m_axes.size(),
    +
    1422 0
    +
    1423 ))
    +
    1424 , m_dim_mapping(xtl::make_sequence<dim_mapping_type>(
    +
    1425 typename O::keep_dims() ? m_e.dimension() : m_e.dimension() - m_axes.size(),
    +
    1426 0
    +
    1427 ))
    +
    1428 , m_options(std::forward<OX>(options))
    +
    1429 {
    +
    1430 // std::less is used, because as the standard says (24.4.5):
    +
    1431 // A sequence is sorted with respect to a comparator comp if for any iterator i pointing to the
    +
    1432 // sequence and any non-negative integer n such that i + n is a valid iterator pointing to an element
    +
    1433 // of the sequence, comp(*(i + n), *i) == false. Therefore less is required to detect duplicates.
    +
    1434 if (!std::is_sorted(m_axes.cbegin(), m_axes.cend(), std::less<>()))
    +
    1435 {
    +
    1436 XTENSOR_THROW(std::runtime_error, "Reducing axes should be sorted.");
    +
    1437 }
    +
    1438 if (std::adjacent_find(m_axes.cbegin(), m_axes.cend()) != m_axes.cend())
    +
    1439 {
    +
    1440 XTENSOR_THROW(std::runtime_error, "Reducing axes should not contain duplicates.");
    +
    1441 }
    +
    1442 if (m_axes.size() != 0 && m_axes[m_axes.size() - 1] > m_e.dimension() - 1)
    +
    1443 {
    +
    1444 XTENSOR_THROW(
    +
    1445 std::runtime_error,
    +
    1446 "Axis " + std::to_string(m_axes[m_axes.size() - 1]) + " out of bounds for reduction."
    +
    1447 );
    +
    1448 }
    +
    1449
    +
    1450 if (!typename O::keep_dims())
    +
    1451 {
    +
    1452 detail::shape_and_mapping_computation(
    +
    1453 m_shape,
    +
    1454 m_e,
    +
    1455 m_axes,
    +
    1456 m_dim_mapping,
    +
    1457 detail::is_fixed<shape_type>{}
    +
    1458 );
    +
    1459 }
    +
    1460 else
    +
    1461 {
    +
    1462 detail::shape_and_mapping_computation_keep_dim(
    +
    1463 m_shape,
    +
    1464 m_e,
    +
    1465 m_axes,
    +
    1466 m_dim_mapping,
    +
    1467 detail::is_fixed<shape_type>{}
    +
    1468 );
    +
    1469 }
    +
    1470 }
    +
    +
    1471
    +
    1473
    +
    1481 template <class F, class CT, class X, class O>
    +
    +
    1482 inline auto xreducer<F, CT, X, O>::shape() const noexcept -> const inner_shape_type&
    +
    1483 {
    +
    1484 return m_shape;
    +
    1485 }
    +
    +
    1486
    +
    1490 template <class F, class CT, class X, class O>
    +
    + +
    1492 {
    +
    1493 return static_layout;
    +
    1494 }
    +
    +
    1495
    +
    1496 template <class F, class CT, class X, class O>
    +
    1497 inline bool xreducer<F, CT, X, O>::is_contiguous() const noexcept
    +
    1498 {
    +
    1499 return false;
    +
    1500 }
    +
    1501
    +
    1503
    +
    1514 template <class F, class CT, class X, class O>
    +
    1515 template <class... Args>
    +
    +
    1516 inline auto xreducer<F, CT, X, O>::operator()(Args... args) const -> const_reference
    +
    1517 {
    +
    1518 XTENSOR_TRY(check_index(shape(), args...));
    +
    1519 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    1520 std::array<std::size_t, sizeof...(Args)> arg_array = {{static_cast<std::size_t>(args)...}};
    +
    1521 return element(arg_array.cbegin(), arg_array.cend());
    +
    1522 }
    +
    +
    1523
    +
    1543 template <class F, class CT, class X, class O>
    +
    1544 template <class... Args>
    +
    +
    1545 inline auto xreducer<F, CT, X, O>::unchecked(Args... args) const -> const_reference
    +
    1546 {
    +
    1547 std::array<std::size_t, sizeof...(Args)> arg_array = {{static_cast<std::size_t>(args)...}};
    +
    1548 return element(arg_array.cbegin(), arg_array.cend());
    +
    1549 }
    +
    +
    1550
    +
    1558 template <class F, class CT, class X, class O>
    +
    1559 template <class It>
    +
    +
    1560 inline auto xreducer<F, CT, X, O>::element(It first, It last) const -> const_reference
    +
    1561 {
    +
    1562 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    1563 auto stepper = const_stepper(*this, 0);
    +
    1564 if (first != last)
    +
    1565 {
    +
    1566 size_type dim = 0;
    +
    1567 // drop left most elements
    +
    1568 auto size = std::ptrdiff_t(this->dimension()) - std::distance(first, last);
    +
    1569 auto begin = first - size;
    +
    1570 while (begin != last)
    +
    1571 {
    +
    1572 if (begin < first)
    +
    1573 {
    +
    1574 stepper.step(dim++, std::size_t(0));
    +
    1575 begin++;
    +
    1576 }
    +
    1577 else
    +
    1578 {
    +
    1579 stepper.step(dim++, std::size_t(*begin++));
    +
    1580 }
    +
    1581 }
    +
    1582 }
    +
    1583 return *stepper;
    +
    1584 }
    +
    +
    1585
    +
    1589 template <class F, class CT, class X, class O>
    +
    +
    1590 inline auto xreducer<F, CT, X, O>::expression() const noexcept -> const xexpression_type&
    +
    1591 {
    +
    1592 return m_e;
    +
    1593 }
    +
    +
    1594
    +
    1596
    +
    1607 template <class F, class CT, class X, class O>
    +
    1608 template <class S>
    +
    +
    1609 inline bool xreducer<F, CT, X, O>::broadcast_shape(S& shape, bool) const
    +
    1610 {
    +
    1611 return xt::broadcast_shape(m_shape, shape);
    +
    1612 }
    +
    +
    1613
    +
    1619 template <class F, class CT, class X, class O>
    +
    1620 template <class S>
    +
    +
    1621 inline bool xreducer<F, CT, X, O>::has_linear_assign(const S& /*strides*/) const noexcept
    +
    1622 {
    +
    1623 return false;
    +
    1624 }
    +
    +
    1625
    +
    1627
    +
    1628 template <class F, class CT, class X, class O>
    +
    1629 template <class S>
    +
    1630 inline auto xreducer<F, CT, X, O>::stepper_begin(const S& shape) const noexcept -> const_stepper
    +
    1631 {
    +
    1632 size_type offset = shape.size() - this->dimension();
    +
    1633 return const_stepper(*this, offset);
    +
    1634 }
    +
    1635
    +
    1636 template <class F, class CT, class X, class O>
    +
    1637 template <class S>
    +
    1638 inline auto xreducer<F, CT, X, O>::stepper_end(const S& shape, layout_type l) const noexcept
    +
    1639 -> const_stepper
    +
    1640 {
    +
    1641 size_type offset = shape.size() - this->dimension();
    +
    1642 return const_stepper(*this, offset, true, l);
    +
    1643 }
    +
    1644
    +
    1645 template <class F, class CT, class X, class O>
    +
    1646 template <class E>
    +
    1647 inline auto xreducer<F, CT, X, O>::build_reducer(E&& e) const -> rebind_t<E>
    +
    1648 {
    +
    1649 return rebind_t<E>(
    +
    1650 std::make_tuple(m_reduce, m_init, m_merge),
    +
    1651 std::forward<E>(e),
    +
    1652 axes_type(m_axes),
    +
    1653 m_options
    +
    1654 );
    +
    1655 }
    +
    1656
    +
    1657 template <class F, class CT, class X, class O>
    +
    1658 template <class E, class Func, class Opts>
    +
    1659 inline auto xreducer<F, CT, X, O>::build_reducer(E&& e, Func&& func, Opts&& opts) const
    +
    1660 -> rebind_t<E, Func, Opts>
    +
    1661 {
    +
    1662 return rebind_t<E, Func, Opts>(
    +
    1663 std::forward<Func>(func),
    +
    1664 std::forward<E>(e),
    +
    1665 axes_type(m_axes),
    +
    1666 std::forward<Opts>(opts)
    +
    1667 );
    +
    1668 }
    +
    1669
    +
    1670 /***********************************
    +
    1671 * xreducer_stepper implementation *
    +
    1672 ***********************************/
    +
    1673
    +
    1674 template <class F, class CT, class X, class O>
    +
    1675 inline xreducer_stepper<F, CT, X, O>::xreducer_stepper(
    +
    1676 const xreducer_type& red,
    +
    1677 size_type offset,
    +
    1678 bool end,
    +
    1679 layout_type l
    +
    1680 )
    +
    1681 : m_reducer(&red)
    +
    1682 , m_offset(offset)
    +
    1683 , m_stepper(get_substepper_begin())
    +
    1684 {
    +
    1685 if (end)
    +
    1686 {
    +
    1687 to_end(l);
    +
    1688 }
    +
    1689 }
    +
    1690
    +
    1691 template <class F, class CT, class X, class O>
    +
    1692 inline auto xreducer_stepper<F, CT, X, O>::operator*() const -> reference
    +
    1693 {
    +
    1694 reference r = aggregate(0);
    +
    1695 return r;
    +
    1696 }
    +
    1697
    +
    1698 template <class F, class CT, class X, class O>
    +
    1699 inline void xreducer_stepper<F, CT, X, O>::step(size_type dim)
    +
    1700 {
    +
    1701 if (dim >= m_offset)
    +
    1702 {
    +
    1703 m_stepper.step(get_dim(dim - m_offset));
    +
    1704 }
    +
    1705 }
    +
    1706
    +
    1707 template <class F, class CT, class X, class O>
    +
    1708 inline void xreducer_stepper<F, CT, X, O>::step_back(size_type dim)
    +
    1709 {
    +
    1710 if (dim >= m_offset)
    +
    1711 {
    +
    1712 m_stepper.step_back(get_dim(dim - m_offset));
    +
    1713 }
    +
    1714 }
    +
    1715
    +
    1716 template <class F, class CT, class X, class O>
    +
    1717 inline void xreducer_stepper<F, CT, X, O>::step(size_type dim, size_type n)
    +
    1718 {
    +
    1719 if (dim >= m_offset)
    +
    1720 {
    +
    1721 m_stepper.step(get_dim(dim - m_offset), n);
    +
    1722 }
    +
    1723 }
    +
    1724
    +
    1725 template <class F, class CT, class X, class O>
    +
    1726 inline void xreducer_stepper<F, CT, X, O>::step_back(size_type dim, size_type n)
    +
    1727 {
    +
    1728 if (dim >= m_offset)
    +
    1729 {
    +
    1730 m_stepper.step_back(get_dim(dim - m_offset), n);
    +
    1731 }
    +
    1732 }
    +
    1733
    +
    1734 template <class F, class CT, class X, class O>
    +
    1735 inline void xreducer_stepper<F, CT, X, O>::reset(size_type dim)
    +
    1736 {
    +
    1737 if (dim >= m_offset)
    +
    1738 {
    +
    1739 // Because the reducer uses `reset` to reset the non-reducing axes,
    +
    1740 // we need to prevent that here for the KD case where.
    +
    1741 if (typename O::keep_dims()
    +
    1742 && std::binary_search(m_reducer->m_axes.begin(), m_reducer->m_axes.end(), dim - m_offset))
    +
    1743 {
    +
    1744 // If keep dim activated, and dim is in the axes, do nothing!
    +
    1745 return;
    +
    1746 }
    +
    1747 m_stepper.reset(get_dim(dim - m_offset));
    +
    1748 }
    +
    1749 }
    +
    1750
    +
    1751 template <class F, class CT, class X, class O>
    +
    1752 inline void xreducer_stepper<F, CT, X, O>::reset_back(size_type dim)
    +
    1753 {
    +
    1754 if (dim >= m_offset)
    +
    1755 {
    +
    1756 // Note that for *not* KD this is not going to do anything
    +
    1757 if (typename O::keep_dims()
    +
    1758 && std::binary_search(m_reducer->m_axes.begin(), m_reducer->m_axes.end(), dim - m_offset))
    +
    1759 {
    +
    1760 // If keep dim activated, and dim is in the axes, do nothing!
    +
    1761 return;
    +
    1762 }
    +
    1763 m_stepper.reset_back(get_dim(dim - m_offset));
    +
    1764 }
    +
    1765 }
    +
    1766
    +
    1767 template <class F, class CT, class X, class O>
    +
    1768 inline void xreducer_stepper<F, CT, X, O>::to_begin()
    +
    1769 {
    +
    1770 m_stepper.to_begin();
    +
    1771 }
    +
    1772
    +
    1773 template <class F, class CT, class X, class O>
    +
    1774 inline void xreducer_stepper<F, CT, X, O>::to_end(layout_type l)
    +
    1775 {
    +
    1776 m_stepper.to_end(l);
    +
    1777 }
    +
    1778
    +
    1779 template <class F, class CT, class X, class O>
    +
    1780 inline auto xreducer_stepper<F, CT, X, O>::initial_value() const -> reference
    +
    1781 {
    +
    1782 return O::has_initial_value ? m_reducer->m_options.initial_value
    +
    1783 : static_cast<reference>(m_reducer->m_init());
    +
    1784 }
    +
    1785
    +
    1786 template <class F, class CT, class X, class O>
    +
    1787 inline auto xreducer_stepper<F, CT, X, O>::aggregate(size_type dim) const -> reference
    +
    1788 {
    +
    1789 reference res;
    +
    1790 if (m_reducer->m_e.size() == size_type(0))
    +
    1791 {
    +
    1792 res = initial_value();
    +
    1793 }
    +
    1794 else if (m_reducer->m_e.shape().empty() || m_reducer->m_axes.size() == 0)
    +
    1795 {
    +
    1796 res = m_reducer->m_reduce(initial_value(), *m_stepper);
    +
    1797 }
    +
    1798 else
    +
    1799 {
    +
    1800 res = aggregate_impl(dim, typename O::keep_dims());
    +
    1801 if (O::has_initial_value && dim == 0)
    +
    1802 {
    +
    1803 res = m_reducer->m_merge(m_reducer->m_options.initial_value, res);
    +
    1804 }
    +
    1805 }
    +
    1806 return res;
    +
    1807 }
    +
    1808
    +
    1809 template <class F, class CT, class X, class O>
    +
    1810 inline auto xreducer_stepper<F, CT, X, O>::aggregate_impl(size_type dim, std::false_type) const -> reference
    +
    1811 {
    +
    1812 // reference can be std::array, hence the {} initializer
    +
    1813 reference res = {};
    +
    1814 size_type index = axis(dim);
    +
    1815 size_type size = shape(index);
    +
    1816 if (dim != m_reducer->m_axes.size() - 1)
    +
    1817 {
    +
    1818 res = aggregate_impl(dim + 1, typename O::keep_dims());
    +
    1819 for (size_type i = 1; i != size; ++i)
    +
    1820 {
    +
    1821 m_stepper.step(index);
    +
    1822 res = m_reducer->m_merge(res, aggregate_impl(dim + 1, typename O::keep_dims()));
    +
    1823 }
    +
    1824 }
    +
    1825 else
    +
    1826 {
    +
    1827 res = m_reducer->m_reduce(static_cast<reference>(m_reducer->m_init()), *m_stepper);
    +
    1828 for (size_type i = 1; i != size; ++i)
    +
    1829 {
    +
    1830 m_stepper.step(index);
    +
    1831 res = m_reducer->m_reduce(res, *m_stepper);
    +
    1832 }
    +
    1833 }
    +
    1834 m_stepper.reset(index);
    +
    1835 return res;
    +
    1836 }
    +
    1837
    +
    1838 template <class F, class CT, class X, class O>
    +
    1839 inline auto xreducer_stepper<F, CT, X, O>::aggregate_impl(size_type dim, std::true_type) const -> reference
    +
    1840 {
    +
    1841 // reference can be std::array, hence the {} initializer
    +
    1842 reference res = {};
    +
    1843 auto ax_it = std::find(m_reducer->m_axes.begin(), m_reducer->m_axes.end(), dim);
    +
    1844 if (ax_it != m_reducer->m_axes.end())
    +
    1845 {
    +
    1846 size_type index = dim;
    +
    1847 size_type size = m_reducer->m_e.shape()[index];
    +
    1848 if (ax_it != m_reducer->m_axes.end() - 1 && size != 0)
    +
    1849 {
    +
    1850 res = aggregate_impl(dim + 1, typename O::keep_dims());
    +
    1851 for (size_type i = 1; i != size; ++i)
    +
    1852 {
    +
    1853 m_stepper.step(index);
    +
    1854 res = m_reducer->m_merge(res, aggregate_impl(dim + 1, typename O::keep_dims()));
    +
    1855 }
    +
    1856 }
    +
    1857 else
    +
    1858 {
    +
    1859 res = m_reducer->m_reduce(static_cast<reference>(m_reducer->m_init()), *m_stepper);
    +
    1860 for (size_type i = 1; i != size; ++i)
    +
    1861 {
    +
    1862 m_stepper.step(index);
    +
    1863 res = m_reducer->m_reduce(res, *m_stepper);
    +
    1864 }
    +
    1865 }
    +
    1866 m_stepper.reset(index);
    +
    1867 }
    +
    1868 else
    +
    1869 {
    +
    1870 if (dim < m_reducer->m_e.dimension())
    +
    1871 {
    +
    1872 res = aggregate_impl(dim + 1, typename O::keep_dims());
    +
    1873 }
    +
    1874 }
    +
    1875 return res;
    +
    1876 }
    +
    1877
    +
    1878 template <class F, class CT, class X, class O>
    +
    1879 inline auto xreducer_stepper<F, CT, X, O>::get_substepper_begin() const -> substepper_type
    +
    1880 {
    +
    1881 return m_reducer->m_e.stepper_begin(m_reducer->m_e.shape());
    +
    1882 }
    +
    1883
    +
    1884 template <class F, class CT, class X, class O>
    +
    1885 inline auto xreducer_stepper<F, CT, X, O>::get_dim(size_type dim) const noexcept -> size_type
    +
    1886 {
    +
    1887 return m_reducer->m_dim_mapping[dim];
    +
    1888 }
    +
    1889
    +
    1890 template <class F, class CT, class X, class O>
    +
    1891 inline auto xreducer_stepper<F, CT, X, O>::shape(size_type i) const noexcept -> size_type
    +
    1892 {
    +
    1893 return m_reducer->m_e.shape()[i];
    +
    1894 }
    +
    1895
    +
    1896 template <class F, class CT, class X, class O>
    +
    1897 inline auto xreducer_stepper<F, CT, X, O>::axis(size_type i) const noexcept -> size_type
    +
    1898 {
    +
    1899 return m_reducer->m_axes[i];
    +
    1900 }
    +
    1901}
    +
    1902
    +
    1903#endif
    +
    Fixed shape implementation for compile time defined arrays.
    +
    Base class for implementation of common expression access methods.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    + +
    Reducing function operating over specified axes.
    Definition xreducer.hpp:817
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the reducer to the specified parameter.
    +
    const xexpression_type & expression() const noexcept
    Returns a constant reference to the underlying expression of the reducer.
    +
    bool has_linear_assign(const S &strides) const noexcept
    Checks whether the xreducer can be linearly assigned to an expression with the specified strides.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the expression.
    +
    xreducer(Func &&func, CTA &&e, AX &&axes, OX &&options)
    Constructs an xreducer expression applying the specified function to the given expression over the gi...
    +
    layout_type layout() const noexcept
    Returns the shape of the expression.
    + +
    auto operator|(E1 &&e1, E2 &&e2) noexcept -> detail::xfunction_type_t< detail::bitwise_or, E1, E2 >
    Bitwise or.
    +
    auto diff(const xexpression< T > &a, std::size_t n=1, std::ptrdiff_t axis=-1)
    Calculate the n-th discrete difference along the given axis.
    Definition xmath.hpp:2910
    +
    auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
    Force evaluation of xexpression.
    Definition xeval.hpp:46
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto reduce(F &&f, E &&e, X &&axes, EVS &&options=EVS())
    Returns an xexpression applying the specified reducing function to an expression over the given axes.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xrepeat_8hpp_source.html b/xrepeat_8hpp_source.html new file mode 100644 index 000000000..e105c98da --- /dev/null +++ b/xrepeat_8hpp_source.html @@ -0,0 +1,787 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xrepeat.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xrepeat.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_XREPEAT
    +
    11#define XTENSOR_XREPEAT
    +
    12
    +
    13#include <utility>
    +
    14#include <vector>
    +
    15
    +
    16#include "xaccessible.hpp"
    +
    17#include "xexpression.hpp"
    +
    18#include "xiterable.hpp"
    +
    19
    +
    20namespace xt
    +
    21{
    +
    22 template <class CT, class R>
    +
    23 class xrepeat;
    +
    24
    +
    25 template <class S, class R>
    +
    26 class xrepeat_stepper;
    +
    27
    +
    28 /*********************
    +
    29 * xrepeat extension *
    +
    30 *********************/
    +
    31
    +
    32 namespace extension
    +
    33 {
    +
    34 template <class Tag, class CT, class X>
    + +
    36
    +
    37 template <class CT, class X>
    +
    + +
    39 {
    + +
    41 };
    +
    +
    42
    +
    43 template <class CT, class X>
    +
    +
    44 struct xrepeat_base : xrepeat_base_impl<xexpression_tag_t<CT>, CT, X>
    +
    45 {
    +
    46 };
    +
    +
    47
    +
    48 template <class CT, class X>
    +
    49 using xrepeat_base_t = typename xrepeat_base<CT, X>::type;
    +
    50 }
    +
    51
    +
    52 /***********
    +
    53 * xrepeat *
    +
    54 ***********/
    +
    55
    +
    56 template <class CT, class R>
    +
    + +
    58 {
    +
    59 using xexpression_type = std::decay_t<CT>;
    +
    60 using reference = typename xexpression_type::const_reference;
    +
    61 using const_reference = typename xexpression_type::const_reference;
    +
    62 using size_type = typename xexpression_type::size_type;
    +
    63 using temporary_type = typename xexpression_type::temporary_type;
    +
    64
    +
    65 static constexpr bool is_const = std::is_const<std::remove_reference_t<CT>>::value;
    +
    66
    +
    67 using extract_storage_type = xtl::mpl::eval_if_t<
    + +
    69 detail::expr_storage_type<xexpression_type>,
    + +
    71 using storage_type = std::conditional_t<is_const, const extract_storage_type, extract_storage_type>;
    +
    72 };
    +
    +
    73
    +
    74 template <class CT, class R>
    +
    + +
    76 {
    +
    77 using xexpression_type = std::decay_t<CT>;
    +
    78 using repeats_type = std::decay_t<R>;
    +
    79 using inner_shape_type = typename xexpression_type::inner_shape_type;
    + +
    81 using stepper = const_stepper;
    +
    82 };
    +
    +
    83
    +
    95 template <class CT, class R>
    +
    +
    96 class xrepeat : public xconst_iterable<xrepeat<CT, R>>,
    +
    97 public xconst_accessible<xrepeat<CT, R>>,
    +
    98 public xsharable_expression<xrepeat<CT, R>>,
    +
    99 public extension::xrepeat_base_t<CT, R>
    +
    100 {
    +
    101 public:
    +
    102
    + +
    104 using xexpression_type = std::decay_t<CT>;
    + +
    106 using extension_base = extension::xrepeat_base_t<CT, R>;
    +
    107 using expression_tag = typename extension_base::expression_tag;
    +
    108
    +
    109 using value_type = typename xexpression_type::value_type;
    +
    110 using shape_type = typename xexpression_type::shape_type;
    +
    111 using repeats_type = xtl::const_closure_type_t<R>;
    +
    112
    + +
    114 using reference = typename container_type::reference;
    +
    115 using const_reference = typename container_type::const_reference;
    +
    116 using size_type = typename container_type::size_type;
    +
    117 using temporary_type = typename container_type::temporary_type;
    +
    118
    +
    119 static constexpr layout_type static_layout = xexpression_type::static_layout;
    +
    120 static constexpr bool contiguous_layout = false;
    +
    121
    +
    122 using bool_load_type = typename xexpression_type::bool_load_type;
    +
    123 using pointer = typename xexpression_type::pointer;
    +
    124 using const_pointer = typename xexpression_type::const_pointer;
    +
    125 using difference_type = typename xexpression_type::difference_type;
    +
    126
    + +
    128 using stepper = typename iterable_type::stepper;
    +
    129 using const_stepper = typename iterable_type::const_stepper;
    +
    130
    +
    131 template <class CTA>
    +
    132 explicit xrepeat(CTA&& e, R&& repeats, size_type axis);
    +
    133
    + +
    135 const shape_type& shape() const noexcept;
    +
    136 layout_type layout() const noexcept;
    +
    137 bool is_contiguous() const noexcept;
    + +
    139
    +
    140 template <class... Args>
    +
    141 const_reference operator()(Args... args) const;
    +
    142
    +
    143 template <class... Args>
    +
    144 const_reference unchecked(Args... args) const;
    +
    145
    +
    146 template <class It>
    +
    147 const_reference element(It first, It last) const;
    +
    148
    +
    149 const xexpression_type& expression() const noexcept;
    +
    150
    +
    151 template <class S>
    +
    152 bool broadcast_shape(S& shape, bool reuse_cache = false) const;
    +
    153
    +
    154 template <class S>
    +
    155 bool has_linear_assign(const S& strides) const noexcept;
    +
    156
    +
    157 const_stepper stepper_begin() const;
    +
    158 const_stepper stepper_begin(const shape_type& s) const;
    +
    159
    +
    160 const_stepper stepper_end(layout_type l) const;
    +
    161 const_stepper stepper_end(const shape_type& s, layout_type l) const;
    +
    162
    +
    163 private:
    +
    164
    +
    165 CT m_e;
    +
    166 size_type m_repeating_axis;
    +
    167 repeats_type m_repeats;
    +
    168 shape_type m_shape;
    +
    169
    +
    170 const_reference access() const;
    +
    171
    +
    172 template <class Arg, class... Args>
    +
    173 const_reference access(Arg arg, Args... args) const;
    +
    174
    +
    175 template <std::size_t I, class Arg, class... Args>
    +
    176 const_reference access_impl(stepper&& s, Arg arg, Args... args) const;
    +
    177
    +
    178 template <std::size_t I>
    +
    179 const_reference access_impl(stepper&& s) const;
    +
    180 };
    +
    +
    181
    +
    182 /*******************
    +
    183 * xrepeat_stepper *
    +
    184 *******************/
    +
    185
    +
    186 template <class S, class R>
    +
    + +
    188 {
    +
    189 public:
    +
    190
    +
    191 using repeats_type = R;
    +
    192 using storage_type = typename S::storage_type;
    +
    193 using subiterator_type = typename S::subiterator_type;
    +
    194 using subiterator_traits = typename S::subiterator_traits;
    +
    195 using value_type = typename subiterator_traits::value_type;
    +
    196 using reference = typename subiterator_traits::reference;
    +
    197 using pointer = typename subiterator_traits::pointer;
    +
    198 using difference_type = typename subiterator_traits::difference_type;
    +
    199 using size_type = typename storage_type::size_type;
    +
    200 using shape_type = typename storage_type::shape_type;
    +
    201 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    202
    +
    203 template <class requested_type>
    +
    204 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    205
    +
    206 xrepeat_stepper(S&& s, const shape_type& shape, const repeats_type& repeats, size_type axis);
    +
    207
    +
    208 reference operator*() const;
    +
    209
    +
    210 void step(size_type dim, size_type n = 1);
    +
    211 void step_back(size_type dim, size_type n = 1);
    +
    212 void reset(size_type dim);
    +
    213 void reset_back(size_type dim);
    +
    214
    +
    215 void to_begin();
    +
    216 void to_end(layout_type l);
    +
    217
    +
    218 template <class T>
    +
    219 simd_return_type<T> step_simd();
    +
    220
    +
    221 void step_leading();
    +
    222
    +
    223 template <class V>
    +
    224 void store_simd(const V& vec);
    +
    225
    +
    226 private:
    +
    227
    +
    228 S m_substepper;
    +
    229 const shape_type& m_shape;
    +
    230
    +
    231 std::ptrdiff_t m_repeating_steps;
    +
    232 std::vector<size_type> m_positions;
    +
    233 size_type m_subposition;
    +
    234
    +
    235 size_type m_repeating_axis;
    +
    236 const repeats_type& m_repeats;
    +
    237
    +
    238 void make_step(size_type dim, size_type n);
    +
    239 void make_step_back(size_type dim, size_type n);
    +
    240
    +
    241 std::vector<size_type> get_next_positions(size_type dim, size_type steps_to_go) const;
    +
    242 std::vector<size_type> get_next_positions_back(size_type dim, size_type steps_to_go) const;
    +
    243 };
    +
    +
    244
    +
    245 /**************************
    +
    246 * xrepeat implementation *
    +
    247 **************************/
    +
    248
    +
    257 template <class CT, class R>
    +
    258 template <class CTA>
    +
    +
    259 xrepeat<CT, R>::xrepeat(CTA&& e, R&& repeats, size_type axis)
    +
    260 : m_e(std::forward<CTA>(e))
    +
    261 , m_repeating_axis(axis)
    +
    262 , m_repeats(std::forward<R>(repeats))
    +
    263 , m_shape(e.shape())
    +
    264 {
    +
    265 using shape_value_type = typename shape_type::value_type;
    +
    266 m_shape[axis] = static_cast<shape_value_type>(
    +
    267 std::accumulate(m_repeats.begin(), m_repeats.end(), shape_value_type(0))
    +
    268 );
    +
    269 }
    +
    +
    270
    +
    278 template <class CT, class R>
    +
    +
    279 inline auto xrepeat<CT, R>::shape() const noexcept -> const shape_type&
    +
    280 {
    +
    281 return m_shape;
    +
    282 }
    +
    +
    283
    +
    287 template <class CT, class R>
    +
    +
    288 inline auto xrepeat<CT, R>::layout() const noexcept -> layout_type
    +
    289 {
    +
    290 return m_e.layout();
    +
    291 }
    +
    +
    292
    +
    293 template <class CT, class R>
    +
    294 inline bool xrepeat<CT, R>::is_contiguous() const noexcept
    +
    295 {
    +
    296 return false;
    +
    297 }
    +
    298
    +
    300
    +
    311 template <class CT, class R>
    +
    312 template <class... Args>
    +
    +
    313 inline auto xrepeat<CT, R>::operator()(Args... args) const -> const_reference
    +
    314 {
    +
    315 return access(args...);
    +
    316 }
    +
    +
    317
    +
    337 template <class CT, class R>
    +
    338 template <class... Args>
    +
    +
    339 inline auto xrepeat<CT, R>::unchecked(Args... args) const -> const_reference
    +
    340 {
    +
    341 return this->operator()(args...);
    +
    342 }
    +
    +
    343
    +
    351 template <class CT, class R>
    +
    352 template <class It>
    +
    +
    353 inline auto xrepeat<CT, R>::element(It first, It last) const -> const_reference
    +
    354 {
    +
    355 auto s = stepper_begin(m_e.shape());
    +
    356 std::size_t dimension = 0;
    +
    357 auto iter = first;
    +
    358 while (iter != last)
    +
    359 {
    +
    360 s.step(dimension, *iter);
    +
    361 ++dimension;
    +
    362 ++iter;
    +
    363 }
    +
    364 return access_impl<0>(std::forward<stepper>(s));
    +
    365 }
    +
    +
    366
    +
    370 template <class CT, class R>
    +
    +
    371 inline auto xrepeat<CT, R>::expression() const noexcept -> const xexpression_type&
    +
    372 {
    +
    373 return m_e;
    +
    374 }
    +
    +
    375
    +
    377
    +
    388 template <class CT, class R>
    +
    389 template <class S>
    +
    +
    390 inline bool xrepeat<CT, R>::broadcast_shape(S& shape, bool) const
    +
    391 {
    +
    392 return xt::broadcast_shape(m_shape, shape);
    +
    393 }
    +
    +
    394
    +
    400 template <class CT, class R>
    +
    401 template <class S>
    +
    +
    402 inline bool xrepeat<CT, R>::has_linear_assign(const S&) const noexcept
    +
    403 {
    +
    404 return false;
    +
    405 }
    +
    +
    406
    +
    408
    +
    409 template <class CT, class R>
    +
    410 inline auto xrepeat<CT, R>::access() const -> const_reference
    +
    411 {
    +
    412 return access_impl<0>(stepper_begin(m_e.shape()));
    +
    413 }
    +
    414
    +
    415 template <class CT, class R>
    +
    416 template <class Arg, class... Args>
    +
    417 inline auto xrepeat<CT, R>::access(Arg arg, Args... args) const -> const_reference
    +
    418 {
    +
    419 constexpr size_t number_of_arguments = 1 + sizeof...(Args);
    +
    420 if (number_of_arguments > this->dimension())
    +
    421 {
    +
    422 return access(args...);
    +
    423 }
    +
    424 return access_impl<0>(stepper_begin(m_e.shape()), arg, args...);
    +
    425 }
    +
    426
    +
    427 template <class CT, class R>
    +
    428 inline auto xrepeat<CT, R>::stepper_begin() const -> const_stepper
    +
    429 {
    +
    430 return stepper_begin(m_e.shape());
    +
    431 }
    +
    432
    +
    433 template <class CT, class R>
    +
    434 inline auto xrepeat<CT, R>::stepper_begin(const shape_type& s) const -> const_stepper
    +
    435 {
    +
    436 return const_stepper(m_e.stepper_begin(s), m_shape, m_repeats, m_repeating_axis);
    +
    437 }
    +
    438
    +
    439 template <class CT, class R>
    +
    440 inline auto xrepeat<CT, R>::stepper_end(layout_type l) const -> const_stepper
    +
    441 {
    +
    442 return stepper_end(m_e.shape(), l);
    +
    443 }
    +
    444
    +
    445 template <class CT, class R>
    +
    446 inline auto xrepeat<CT, R>::stepper_end(const shape_type& s, layout_type l) const -> const_stepper
    +
    447 {
    +
    448 auto st = const_stepper(m_e.stepper_begin(s), m_shape, m_repeats, m_repeating_axis);
    +
    449 st.to_end(l);
    +
    450 return st;
    +
    451 }
    +
    452
    +
    453 template <class CT, class R>
    +
    454 template <std::size_t I, class Arg, class... Args>
    +
    455 inline auto xrepeat<CT, R>::access_impl(stepper&& s, Arg arg, Args... args) const -> const_reference
    +
    456 {
    +
    457 s.step(I, static_cast<size_type>(arg));
    +
    458 return access_impl<I + 1>(std::forward<stepper>(s), args...);
    +
    459 }
    +
    460
    +
    461 template <class CT, class R>
    +
    462 template <std::size_t I>
    +
    463 inline auto xrepeat<CT, R>::access_impl(stepper&& s) const -> const_reference
    +
    464 {
    +
    465 return *s;
    +
    466 }
    +
    467
    +
    468 /**********************************
    +
    469 * xrepeat_stepper implementation *
    +
    470 **********************************/
    +
    471
    +
    472 template <class S, class R>
    +
    473 xrepeat_stepper<S, R>::xrepeat_stepper(S&& s, const shape_type& shape, const repeats_type& repeats, size_type axis)
    +
    474 : m_substepper(std::forward<S>(s))
    +
    475 , m_shape(shape)
    +
    476 , m_repeating_steps(0)
    +
    477 , m_positions(shape.size())
    +
    478 , m_subposition(0)
    +
    479 , m_repeating_axis(axis)
    +
    480 , m_repeats(repeats)
    +
    481 {
    +
    482 }
    +
    483
    +
    484 template <class S, class R>
    +
    485 inline auto xrepeat_stepper<S, R>::operator*() const -> reference
    +
    486 {
    +
    487 return m_substepper.operator*();
    +
    488 }
    +
    489
    +
    490 template <class S, class R>
    +
    491 inline void xrepeat_stepper<S, R>::step(size_type dim, size_type steps_to_go)
    +
    492 {
    +
    493 if (m_positions[dim] + steps_to_go >= m_shape[dim])
    +
    494 {
    +
    495 const auto next_positions = get_next_positions(dim, steps_to_go);
    +
    496 if (next_positions[dim] > m_positions[dim])
    +
    497 {
    +
    498 make_step(dim, next_positions[dim] - m_positions[dim]);
    +
    499 }
    +
    500 else
    +
    501 {
    +
    502 make_step_back(dim, m_positions[dim] - next_positions[dim]);
    +
    503 }
    +
    504 for (size_type d = 0; d < dim; ++d)
    +
    505 {
    +
    506 make_step(d, next_positions[d] - m_positions[d]);
    +
    507 }
    +
    508 }
    +
    509 else
    +
    510 {
    +
    511 make_step(dim, steps_to_go);
    +
    512 }
    +
    513 }
    +
    514
    +
    515 template <class S, class R>
    +
    516 inline void xrepeat_stepper<S, R>::step_back(size_type dim, size_type steps_to_go)
    +
    517 {
    +
    518 if (m_positions[dim] < steps_to_go)
    +
    519 {
    +
    520 const auto next_positions = get_next_positions_back(dim, steps_to_go);
    +
    521 if (next_positions[dim] < m_positions[dim])
    +
    522 {
    +
    523 make_step_back(dim, m_positions[dim] - next_positions[dim]);
    +
    524 }
    +
    525 else
    +
    526 {
    +
    527 make_step(dim, next_positions[dim] - m_positions[dim]);
    +
    528 }
    +
    529 for (size_type d = 0; d < dim; ++d)
    +
    530 {
    +
    531 make_step_back(d, m_positions[d] - next_positions[d]);
    +
    532 }
    +
    533 }
    +
    534 else
    +
    535 {
    +
    536 make_step_back(dim, steps_to_go);
    +
    537 }
    +
    538 }
    +
    539
    +
    540 template <class S, class R>
    +
    541 inline void xrepeat_stepper<S, R>::reset(size_type dim)
    +
    542 {
    +
    543 m_substepper.reset(dim);
    +
    544 m_positions[dim] = 0;
    +
    545 if (dim == m_repeating_axis)
    +
    546 {
    +
    547 m_subposition = 0;
    +
    548 m_repeating_steps = 0;
    +
    549 }
    +
    550 }
    +
    551
    +
    552 template <class S, class R>
    +
    553 inline void xrepeat_stepper<S, R>::reset_back(size_type dim)
    +
    554 {
    +
    555 m_substepper.reset_back(dim);
    +
    556 m_positions[dim] = m_shape[dim] - 1;
    +
    557 if (dim == m_repeating_axis)
    +
    558 {
    +
    559 m_subposition = m_repeats.size() - 1;
    +
    560 m_repeating_steps = static_cast<std::ptrdiff_t>(m_repeats.back()) - 1;
    +
    561 }
    +
    562 }
    +
    563
    +
    564 template <class S, class R>
    +
    565 inline void xrepeat_stepper<S, R>::to_begin()
    +
    566 {
    +
    567 m_substepper.to_begin();
    +
    568 std::fill(m_positions.begin(), m_positions.end(), 0);
    +
    569 m_subposition = 0;
    +
    570 m_repeating_steps = 0;
    +
    571 }
    +
    572
    +
    573 template <class S, class R>
    +
    574 inline void xrepeat_stepper<S, R>::to_end(layout_type l)
    +
    575 {
    +
    576 m_substepper.to_end(l);
    +
    577 std::transform(
    +
    578 m_shape.begin(),
    +
    579 m_shape.end(),
    +
    580 m_positions.begin(),
    +
    581 [](auto value)
    +
    582 {
    +
    583 return value - 1;
    +
    584 }
    +
    585 );
    +
    586 if (layout_type::row_major == l)
    +
    587 {
    +
    588 ++m_positions.front();
    +
    589 }
    +
    590 else
    +
    591 {
    +
    592 ++m_positions.back();
    +
    593 }
    +
    594 m_subposition = m_repeats.size();
    +
    595 m_repeating_steps = 0;
    +
    596 }
    +
    597
    +
    598 template <class S, class R>
    +
    599 inline void xrepeat_stepper<S, R>::step_leading()
    +
    600 {
    +
    601 step(m_shape.size() - 1, 1);
    +
    602 }
    +
    603
    +
    604 template <class S, class R>
    +
    605 inline void xrepeat_stepper<S, R>::make_step(size_type dim, size_type steps_to_go)
    +
    606 {
    +
    607 if (steps_to_go > 0)
    +
    608 {
    +
    609 if (dim == m_repeating_axis)
    +
    610 {
    +
    611 size_type subposition = m_subposition;
    +
    612 m_repeating_steps += static_cast<std::ptrdiff_t>(steps_to_go);
    +
    613 while (m_repeating_steps >= static_cast<ptrdiff_t>(m_repeats[subposition]))
    +
    614 {
    +
    615 m_repeating_steps -= static_cast<ptrdiff_t>(m_repeats[subposition]);
    +
    616 ++subposition;
    +
    617 }
    +
    618 m_substepper.step(dim, subposition - m_subposition);
    +
    619 m_subposition = subposition;
    +
    620 }
    +
    621 else
    +
    622 {
    +
    623 m_substepper.step(dim, steps_to_go);
    +
    624 }
    +
    625 m_positions[dim] += steps_to_go;
    +
    626 }
    +
    627 }
    +
    628
    +
    629 template <class S, class R>
    +
    630 inline void xrepeat_stepper<S, R>::make_step_back(size_type dim, size_type steps_to_go)
    +
    631 {
    +
    632 if (steps_to_go > 0)
    +
    633 {
    +
    634 if (dim == m_repeating_axis)
    +
    635 {
    +
    636 size_type subposition = m_subposition;
    +
    637 m_repeating_steps -= static_cast<std::ptrdiff_t>(steps_to_go);
    +
    638 while (m_repeating_steps < 0)
    +
    639 {
    +
    640 --subposition;
    +
    641 m_repeating_steps += static_cast<ptrdiff_t>(m_repeats[subposition]);
    +
    642 }
    +
    643 m_substepper.step_back(dim, m_subposition - subposition);
    +
    644 m_subposition = subposition;
    +
    645 }
    +
    646 else
    +
    647 {
    +
    648 m_substepper.step_back(dim, steps_to_go);
    +
    649 }
    +
    650 m_positions[dim] -= steps_to_go;
    +
    651 }
    +
    652 }
    +
    653
    +
    654 template <class S, class R>
    +
    655 inline auto xrepeat_stepper<S, R>::get_next_positions(size_type dim, size_type steps_to_go) const
    +
    656 -> std::vector<size_type>
    +
    657 {
    +
    658 size_type next_position_for_dim = m_positions[dim] + steps_to_go;
    +
    659 if (dim > 0)
    +
    660 {
    +
    661 size_type steps_in_previous_dim = 0;
    +
    662 while (next_position_for_dim >= m_shape[dim])
    +
    663 {
    +
    664 next_position_for_dim -= m_shape[dim];
    +
    665 ++steps_in_previous_dim;
    +
    666 }
    +
    667 if (steps_in_previous_dim > 0)
    +
    668 {
    +
    669 auto next_positions = get_next_positions(dim - 1, steps_in_previous_dim);
    +
    670 next_positions[dim] = next_position_for_dim;
    +
    671 return next_positions;
    +
    672 }
    +
    673 }
    +
    674 std::vector<size_type> next_positions = m_positions;
    +
    675 next_positions[dim] = next_position_for_dim;
    +
    676 return next_positions;
    +
    677 }
    +
    678
    +
    679 template <class S, class R>
    +
    680 inline auto xrepeat_stepper<S, R>::get_next_positions_back(size_type dim, size_type steps_to_go) const
    +
    681 -> std::vector<size_type>
    +
    682 {
    +
    683 auto next_position_for_dim = static_cast<std::ptrdiff_t>(m_positions[dim] - steps_to_go);
    +
    684 if (dim > 0)
    +
    685 {
    +
    686 size_type steps_in_previous_dim = 0;
    +
    687 while (next_position_for_dim < 0)
    +
    688 {
    +
    689 next_position_for_dim += static_cast<std::ptrdiff_t>(m_shape[dim]);
    +
    690 ++steps_in_previous_dim;
    +
    691 }
    +
    692 if (steps_in_previous_dim > 0)
    +
    693 {
    +
    694 auto next_positions = get_next_positions_back(dim - 1, steps_in_previous_dim);
    +
    695 next_positions[dim] = static_cast<size_type>(next_position_for_dim);
    +
    696 return next_positions;
    +
    697 }
    +
    698 }
    +
    699 std::vector<size_type> next_positions = m_positions;
    +
    700 next_positions[dim] = static_cast<size_type>(next_position_for_dim);
    +
    701 return next_positions;
    +
    702 }
    +
    703}
    +
    704
    +
    705#endif
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    +
    Base class for multidimensional iterable expressions.
    + +
    Expression with repeated values along an axis.
    Definition xrepeat.hpp:100
    +
    bool has_linear_assign(const S &strides) const noexcept
    Checks whether the xbroadcast can be linearly assigned to an expression with the specified strides.
    Definition xrepeat.hpp:402
    +
    bool broadcast_shape(S &shape, bool reuse_cache=false) const
    Broadcast the shape of the function to the specified parameter.
    Definition xrepeat.hpp:390
    +
    layout_type layout() const noexcept
    Returns the layout_type of the expression.
    Definition xrepeat.hpp:288
    +
    const xexpression_type & expression() const noexcept
    Returns a constant reference to the underlying expression of the broadcast expression.
    Definition xrepeat.hpp:371
    +
    xrepeat(CTA &&e, R &&repeats, size_type axis)
    Constructs an xrepeat expression repeating the element of the specified xexpression.
    Definition xrepeat.hpp:259
    +
    const shape_type & shape() const noexcept
    Returns the shape of the expression.
    Definition xrepeat.hpp:279
    + +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + + + + +
    +
    + + + + diff --git a/xscalar_8hpp_source.html b/xscalar_8hpp_source.html new file mode 100644 index 000000000..7effc691e --- /dev/null +++ b/xscalar_8hpp_source.html @@ -0,0 +1,1252 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xscalar.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xscalar.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_SCALAR_HPP
    +
    11#define XTENSOR_SCALAR_HPP
    +
    12
    +
    13#include <array>
    +
    14#include <cstddef>
    +
    15#include <utility>
    +
    16
    +
    17#include <xtl/xtype_traits.hpp>
    +
    18
    +
    19#include "xaccessible.hpp"
    +
    20#include "xexpression.hpp"
    +
    21#include "xiterable.hpp"
    +
    22#include "xlayout.hpp"
    +
    23#include "xtensor_simd.hpp"
    +
    24
    +
    25namespace xt
    +
    26{
    +
    27
    +
    28 /*********************
    +
    29 * xscalar extension *
    +
    30 *********************/
    +
    31
    +
    32 namespace extension
    +
    33 {
    +
    34 template <class Tag, class CT>
    + +
    36
    +
    37 template <class CT>
    +
    + +
    39 {
    + +
    41 };
    +
    +
    42
    +
    43 template <class CT>
    +
    +
    44 struct xscalar_base : xscalar_base_impl<get_expression_tag_t<std::decay_t<CT>>, CT>
    +
    45 {
    +
    46 };
    +
    +
    47
    +
    48 template <class CT>
    +
    49 using xscalar_base_t = typename xscalar_base<CT>::type;
    +
    50 }
    +
    51
    +
    52 /***********
    +
    53 * xscalar *
    +
    54 ***********/
    +
    55
    +
    56 // xscalar is a cheap wrapper for a scalar value as an xexpression.
    +
    57 template <class CT>
    +
    58 class xscalar;
    +
    59
    +
    60 template <bool is_const, class CT>
    +
    61 class xscalar_stepper;
    +
    62
    +
    63 template <bool is_const, class CT>
    +
    64 class xdummy_iterator;
    +
    65
    +
    66 template <class CT>
    +
    + +
    68 {
    +
    69 using value_type = std::decay_t<CT>;
    +
    70 using inner_shape_type = std::array<std::size_t, 0>;
    +
    71 using shape_type = inner_shape_type;
    + + +
    74 };
    +
    +
    75
    +
    76 template <class CT>
    +
    + +
    78 {
    +
    79 using value_type = std::decay_t<CT>;
    +
    80 using reference = value_type&;
    +
    81 using const_reference = const value_type&;
    +
    82 using size_type = std::size_t;
    +
    83 };
    +
    +
    84
    +
    85 template <class CT>
    +
    +
    86 class xscalar : public xsharable_expression<xscalar<CT>>,
    +
    87 private xiterable<xscalar<CT>>,
    +
    88 private xaccessible<xscalar<CT>>,
    +
    89 public extension::xscalar_base_t<CT>
    +
    90 {
    +
    91 public:
    +
    92
    +
    93 using self_type = xscalar<CT>;
    +
    94 using xexpression_type = std::decay_t<CT>;
    +
    95 using extension_base = extension::xscalar_base_t<CT>;
    + +
    97 using expression_tag = typename extension_base::expression_tag;
    + +
    99
    +
    100 using value_type = typename inner_types::value_type;
    +
    101 using reference = typename inner_types::reference;
    +
    102 using const_reference = typename inner_types::const_reference;
    +
    103 using pointer = value_type*;
    +
    104 using const_pointer = const value_type*;
    +
    105 using size_type = typename inner_types::size_type;
    +
    106 using difference_type = std::ptrdiff_t;
    +
    107 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    108 using bool_load_type = xt::bool_load_type<value_type>;
    +
    109
    + +
    111 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    112 using shape_type = inner_shape_type;
    +
    113
    +
    114 using stepper = typename iterable_base::stepper;
    +
    115 using const_stepper = typename iterable_base::const_stepper;
    +
    116
    +
    117 template <layout_type L>
    +
    118 using layout_iterator = typename iterable_base::template layout_iterator<L>;
    +
    119 template <layout_type L>
    +
    120 using const_layout_iterator = typename iterable_base::template const_layout_iterator<L>;
    +
    121
    +
    122 template <layout_type L>
    +
    123 using reverse_layout_iterator = typename iterable_base::template reverse_layout_iterator<L>;
    +
    124 template <layout_type L>
    +
    125 using const_reverse_layout_iterator = typename iterable_base::template const_reverse_layout_iterator<L>;
    +
    126
    +
    127 template <class S, layout_type L>
    +
    128 using broadcast_iterator = typename iterable_base::template broadcast_iterator<S, L>;
    +
    129 template <class S, layout_type L>
    +
    130 using const_broadcast_iterator = typename iterable_base::template const_broadcast_iterator<S, L>;
    +
    131
    +
    132 template <class S, layout_type L>
    +
    133 using reverse_broadcast_iterator = typename iterable_base::template reverse_broadcast_iterator<S, L>;
    +
    134 template <class S, layout_type L>
    +
    135 using const_reverse_broadcast_iterator = typename iterable_base::template const_reverse_broadcast_iterator<S, L>;
    +
    136
    +
    137 using iterator = value_type*;
    +
    138 using const_iterator = const value_type*;
    +
    139 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    140 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    141
    + + +
    144
    +
    145 static constexpr layout_type static_layout = layout_type::any;
    +
    146 static constexpr bool contiguous_layout = true;
    +
    147
    +
    148 xscalar() noexcept;
    +
    149 xscalar(CT value) noexcept;
    +
    150
    +
    151 operator value_type&() noexcept;
    +
    152 operator const value_type&() const noexcept;
    +
    153
    +
    154 size_type size() const noexcept;
    +
    155 const shape_type& shape() const noexcept;
    +
    156 size_type shape(size_type i) const noexcept;
    +
    157 layout_type layout() const noexcept;
    +
    158 bool is_contiguous() const noexcept;
    + + +
    161
    +
    162 template <class... Args>
    +
    163 reference operator()(Args...) noexcept;
    +
    164 template <class... Args>
    +
    165 reference unchecked(Args...) noexcept;
    +
    166
    +
    167 template <class... Args>
    +
    168 const_reference operator()(Args...) const noexcept;
    +
    169 template <class... Args>
    +
    170 const_reference unchecked(Args...) const noexcept;
    +
    171
    +
    172 using accessible_base::at;
    +
    173 using accessible_base::operator[];
    + + + +
    177 using accessible_base::periodic;
    +
    178
    +
    179 template <class It>
    +
    180 reference element(It, It) noexcept;
    +
    181
    +
    182 template <class It>
    +
    183 const_reference element(It, It) const noexcept;
    +
    184
    +
    185 xexpression_type& expression() noexcept;
    +
    186 const xexpression_type& expression() const noexcept;
    +
    187
    +
    188 template <class S>
    +
    189 bool broadcast_shape(S& shape, bool reuse_cache = false) const noexcept;
    +
    190
    +
    191 template <class S>
    +
    192 bool has_linear_assign(const S& strides) const noexcept;
    +
    193
    +
    194 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    195 iterator begin() noexcept;
    +
    196 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    197 iterator end() noexcept;
    +
    198
    +
    199 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    200 const_iterator begin() const noexcept;
    +
    201 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    202 const_iterator end() const noexcept;
    +
    203 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    204 const_iterator cbegin() const noexcept;
    +
    205 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    206 const_iterator cend() const noexcept;
    +
    207
    +
    208 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    209 reverse_iterator rbegin() noexcept;
    +
    210 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    211 reverse_iterator rend() noexcept;
    +
    212
    +
    213 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    214 const_reverse_iterator rbegin() const noexcept;
    +
    215 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    216 const_reverse_iterator rend() const noexcept;
    +
    217 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    218 const_reverse_iterator crbegin() const noexcept;
    +
    219 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    220 const_reverse_iterator crend() const noexcept;
    +
    221
    +
    222 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    223 broadcast_iterator<S, L> begin(const S& shape) noexcept;
    +
    224 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    225 broadcast_iterator<S, L> end(const S& shape) noexcept;
    +
    226
    +
    227 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    228 const_broadcast_iterator<S, L> begin(const S& shape) const noexcept;
    +
    229 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    230 const_broadcast_iterator<S, L> end(const S& shape) const noexcept;
    +
    231 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    232 const_broadcast_iterator<S, L> cbegin(const S& shape) const noexcept;
    +
    233 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    234 const_broadcast_iterator<S, L> cend(const S& shape) const noexcept;
    +
    235
    +
    236
    +
    237 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    238 reverse_broadcast_iterator<S, L> rbegin(const S& shape) noexcept;
    +
    239 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    240 reverse_broadcast_iterator<S, L> rend(const S& shape) noexcept;
    +
    241
    +
    242 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    243 const_reverse_broadcast_iterator<S, L> rbegin(const S& shape) const noexcept;
    +
    244 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    245 const_reverse_broadcast_iterator<S, L> rend(const S& shape) const noexcept;
    +
    246 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    247 const_reverse_broadcast_iterator<S, L> crbegin(const S& shape) const noexcept;
    +
    248 template <class S, layout_type L = XTENSOR_DEFAULT_TRAVERSAL>
    +
    249 const_reverse_broadcast_iterator<S, L> crend(const S& shape) const noexcept;
    +
    250
    +
    251 iterator linear_begin() noexcept;
    +
    252 iterator linear_end() noexcept;
    +
    253
    +
    254 const_iterator linear_begin() const noexcept;
    +
    255 const_iterator linear_end() const noexcept;
    +
    256 const_iterator linear_cbegin() const noexcept;
    +
    257 const_iterator linear_cend() const noexcept;
    +
    258
    +
    259 reverse_iterator linear_rbegin() noexcept;
    +
    260 reverse_iterator linear_rend() noexcept;
    +
    261
    +
    262 const_reverse_iterator linear_rbegin() const noexcept;
    +
    263 const_reverse_iterator linear_rend() const noexcept;
    +
    264 const_reverse_iterator linear_crbegin() const noexcept;
    +
    265 const_reverse_iterator linear_crend() const noexcept;
    +
    266
    +
    267 template <class S>
    +
    268 stepper stepper_begin(const S& shape) noexcept;
    +
    269 template <class S>
    +
    270 stepper stepper_end(const S& shape, layout_type l) noexcept;
    +
    271
    +
    272 template <class S>
    +
    273 const_stepper stepper_begin(const S& shape) const noexcept;
    +
    274 template <class S>
    +
    275 const_stepper stepper_end(const S& shape, layout_type l) const noexcept;
    +
    276
    +
    277 dummy_iterator dummy_begin() noexcept;
    +
    278 dummy_iterator dummy_end() noexcept;
    +
    279
    +
    280 const_dummy_iterator dummy_begin() const noexcept;
    +
    281 const_dummy_iterator dummy_end() const noexcept;
    +
    282
    +
    283 reference data_element(size_type i) noexcept;
    +
    284 const_reference data_element(size_type i) const noexcept;
    +
    285
    +
    286 reference flat(size_type i) noexcept;
    +
    287 const_reference flat(size_type i) const noexcept;
    +
    288
    +
    289 template <class align, class simd = simd_value_type>
    +
    290 void store_simd(size_type i, const simd& e);
    +
    291 template <class align, class requested_type = value_type, std::size_t N = xt_simd::simd_traits<requested_type>::size>
    +
    292 xt_simd::simd_return_type<value_type, requested_type> load_simd(size_type i) const;
    +
    293
    +
    294 private:
    +
    295
    +
    296 CT m_value;
    +
    297
    +
    298 friend class xconst_iterable<self_type>;
    +
    299 friend class xiterable<self_type>;
    +
    300 friend class xaccessible<self_type>;
    +
    301 friend class xconst_accessible<self_type>;
    +
    302 };
    +
    +
    303
    +
    304 namespace detail
    +
    305 {
    +
    306 template <class E>
    +
    307 struct is_xscalar_impl : std::false_type
    +
    308 {
    +
    309 };
    +
    310
    +
    311 template <class E>
    +
    312 struct is_xscalar_impl<xscalar<E>> : std::true_type
    +
    313 {
    +
    314 };
    +
    315 }
    +
    316
    +
    317 template <class E>
    +
    318 using is_xscalar = detail::is_xscalar_impl<E>;
    +
    319
    +
    320 namespace detail
    +
    321 {
    +
    322 template <class... E>
    +
    323 struct all_xscalar
    +
    324 {
    +
    325 static constexpr bool value = xtl::conjunction<is_xscalar<std::decay_t<E>>...>::value;
    +
    326 };
    +
    327 }
    +
    328
    +
    329 // Note: MSVC bug workaround. Cannot just define
    +
    330 // template <class... E>
    +
    331 // using all_xscalar = xtl::conjunction<is_xscalar<std::decay_t<E>>...>;
    +
    332
    +
    333 template <class... E>
    +
    334 using all_xscalar = detail::all_xscalar<E...>;
    +
    335
    +
    336 /******************
    +
    337 * xref and xcref *
    +
    338 ******************/
    +
    339
    +
    340 template <class T>
    +
    341 xscalar<T&> xref(T& t);
    +
    342
    +
    343 template <class T>
    +
    344 xscalar<const T&> xcref(T& t);
    +
    345
    +
    346 /*******************
    +
    347 * xscalar_stepper *
    +
    348 *******************/
    +
    349
    +
    350 template <bool is_const, class CT>
    +
    + +
    352 {
    +
    353 public:
    +
    354
    + +
    356 using storage_type = std::conditional_t<is_const, const xscalar<CT>, xscalar<CT>>;
    +
    357
    +
    358 using value_type = typename storage_type::value_type;
    +
    359 using reference = std::
    +
    360 conditional_t<is_const, typename storage_type::const_reference, typename storage_type::reference>;
    +
    361 using pointer = std::conditional_t<is_const, typename storage_type::const_pointer, typename storage_type::pointer>;
    +
    362 using size_type = typename storage_type::size_type;
    +
    363 using difference_type = typename storage_type::difference_type;
    +
    364 using shape_type = typename storage_type::shape_type;
    +
    365
    +
    366 template <class requested_type>
    +
    367 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    368
    +
    369 xscalar_stepper(storage_type* c) noexcept;
    +
    370
    +
    371 reference operator*() const noexcept;
    +
    372
    +
    373 void step(size_type dim, size_type n = 1) noexcept;
    +
    374 void step_back(size_type dim, size_type n = 1) noexcept;
    +
    375 void reset(size_type dim) noexcept;
    +
    376 void reset_back(size_type dim) noexcept;
    +
    377
    +
    378 void to_begin() noexcept;
    +
    379 void to_end(layout_type l) noexcept;
    +
    380
    +
    381 template <class T>
    +
    382 simd_return_type<T> step_simd();
    +
    383
    +
    384 void step_leading();
    +
    385
    +
    386 private:
    +
    387
    +
    388 storage_type* p_c;
    +
    389 };
    +
    +
    390
    +
    391 /*******************
    +
    392 * xdummy_iterator *
    +
    393 *******************/
    +
    394
    +
    395 namespace detail
    +
    396 {
    +
    397 template <bool is_const, class CT>
    +
    398 using dummy_reference_t = std::
    +
    399 conditional_t<is_const, typename xscalar<CT>::const_reference, typename xscalar<CT>::reference>;
    +
    400
    +
    401 template <bool is_const, class CT>
    +
    402 using dummy_pointer_t = std::
    +
    403 conditional_t<is_const, typename xscalar<CT>::const_pointer, typename xscalar<CT>::pointer>;
    +
    404 }
    +
    405
    +
    406 template <bool is_const, class CT>
    +
    +
    407 class xdummy_iterator : public xtl::xrandom_access_iterator_base<
    +
    408 xdummy_iterator<is_const, CT>,
    +
    409 typename xscalar<CT>::value_type,
    +
    410 typename xscalar<CT>::difference_type,
    +
    411 detail::dummy_pointer_t<is_const, CT>,
    +
    412 detail::dummy_reference_t<is_const, CT>>
    +
    413 {
    +
    414 public:
    +
    415
    + +
    417 using storage_type = std::conditional_t<is_const, const xscalar<CT>, xscalar<CT>>;
    +
    418
    +
    419 using value_type = typename storage_type::value_type;
    +
    420 using reference = detail::dummy_reference_t<is_const, CT>;
    +
    421 using pointer = detail::dummy_pointer_t<is_const, CT>;
    +
    422 using difference_type = typename storage_type::difference_type;
    +
    423 using iterator_category = std::random_access_iterator_tag;
    +
    424
    +
    425 explicit xdummy_iterator(storage_type* c) noexcept;
    +
    426
    +
    427 self_type& operator++() noexcept;
    +
    428 self_type& operator--() noexcept;
    +
    429
    +
    430 self_type& operator+=(difference_type n) noexcept;
    +
    431 self_type& operator-=(difference_type n) noexcept;
    +
    432
    +
    433 difference_type operator-(const self_type& rhs) const noexcept;
    +
    434
    +
    435 reference operator*() const noexcept;
    +
    436
    +
    437 bool equal(const self_type& rhs) const noexcept;
    +
    438 bool less_than(const self_type& rhs) const noexcept;
    +
    439
    +
    440 private:
    +
    441
    +
    442 storage_type* p_c;
    +
    443 };
    +
    +
    444
    +
    445 template <bool is_const, class CT>
    +
    446 bool
    + +
    448
    +
    449 template <bool is_const, class CT>
    +
    450 bool operator<(const xdummy_iterator<is_const, CT>& lhs, const xdummy_iterator<is_const, CT>& rhs) noexcept;
    +
    451
    +
    452 template <class T>
    +
    +
    453 struct is_not_xdummy_iterator : std::true_type
    +
    454 {
    +
    455 };
    +
    +
    456
    +
    457 template <bool is_const, class CT>
    +
    +
    458 struct is_not_xdummy_iterator<xdummy_iterator<is_const, CT>> : std::false_type
    +
    459 {
    +
    460 };
    +
    +
    461
    +
    462 /*****************************
    +
    463 * linear_begin / linear_end *
    +
    464 *****************************/
    +
    465
    +
    466 template <class CT>
    +
    467 XTENSOR_CONSTEXPR_RETURN auto linear_begin(xscalar<CT>& c) noexcept -> decltype(c.dummy_begin())
    +
    468 {
    +
    469 return c.dummy_begin();
    +
    470 }
    +
    471
    +
    472 template <class CT>
    +
    473 XTENSOR_CONSTEXPR_RETURN auto linear_end(xscalar<CT>& c) noexcept -> decltype(c.dummy_end())
    +
    474 {
    +
    475 return c.dummy_end();
    +
    476 }
    +
    477
    +
    478 template <class CT>
    +
    479 XTENSOR_CONSTEXPR_RETURN auto linear_begin(const xscalar<CT>& c) noexcept -> decltype(c.dummy_begin())
    +
    480 {
    +
    481 return c.dummy_begin();
    +
    482 }
    +
    483
    +
    484 template <class CT>
    +
    485 XTENSOR_CONSTEXPR_RETURN auto linear_end(const xscalar<CT>& c) noexcept -> decltype(c.dummy_end())
    +
    486 {
    +
    487 return c.dummy_end();
    +
    488 }
    +
    489
    +
    490 /**************************
    +
    491 * xscalar implementation *
    +
    492 **************************/
    +
    493
    +
    494 // This constructor will not compile when CT is a reference type.
    +
    495 template <class CT>
    +
    496 inline xscalar<CT>::xscalar() noexcept
    +
    497 : m_value()
    +
    498 {
    +
    499 }
    +
    500
    +
    501 template <class CT>
    +
    502 inline xscalar<CT>::xscalar(CT value) noexcept
    +
    503 : m_value(value)
    +
    504 {
    +
    505 }
    +
    506
    +
    507 template <class CT>
    +
    508 inline xscalar<CT>::operator value_type&() noexcept
    +
    509 {
    +
    510 return m_value;
    +
    511 }
    +
    512
    +
    513 template <class CT>
    +
    514 inline xscalar<CT>::operator const value_type&() const noexcept
    +
    515 {
    +
    516 return m_value;
    +
    517 }
    +
    518
    +
    519 template <class CT>
    +
    520 inline auto xscalar<CT>::size() const noexcept -> size_type
    +
    521 {
    +
    522 return 1;
    +
    523 }
    +
    524
    +
    525 template <class CT>
    +
    526 inline auto xscalar<CT>::shape() const noexcept -> const shape_type&
    +
    527 {
    +
    528 static std::array<size_type, 0> zero_shape;
    +
    529 return zero_shape;
    +
    530 }
    +
    531
    +
    532 template <class CT>
    +
    533 inline auto xscalar<CT>::shape(size_type) const noexcept -> size_type
    +
    534 {
    +
    535 return 0;
    +
    536 }
    +
    537
    +
    538 template <class CT>
    +
    539 inline layout_type xscalar<CT>::layout() const noexcept
    +
    540 {
    +
    541 return static_layout;
    +
    542 }
    +
    543
    +
    544 template <class CT>
    +
    545 inline bool xscalar<CT>::is_contiguous() const noexcept
    +
    546 {
    +
    547 return true;
    +
    548 }
    +
    549
    +
    550 template <class CT>
    +
    551 template <class... Args>
    +
    552 inline auto xscalar<CT>::operator()(Args...) noexcept -> reference
    +
    553 {
    +
    554 XTENSOR_CHECK_DIMENSION((std::array<int, 0>()), Args()...);
    +
    555 return m_value;
    +
    556 }
    +
    557
    +
    558 template <class CT>
    +
    559 template <class... Args>
    +
    560 inline auto xscalar<CT>::unchecked(Args...) noexcept -> reference
    +
    561 {
    +
    562 return m_value;
    +
    563 }
    +
    564
    +
    565 template <class CT>
    +
    566 template <class... Args>
    +
    567 inline auto xscalar<CT>::operator()(Args...) const noexcept -> const_reference
    +
    568 {
    +
    569 XTENSOR_CHECK_DIMENSION((std::array<int, 0>()), Args()...);
    +
    570 return m_value;
    +
    571 }
    +
    572
    +
    573 template <class CT>
    +
    574 template <class... Args>
    +
    575 inline auto xscalar<CT>::unchecked(Args...) const noexcept -> const_reference
    +
    576 {
    +
    577 return m_value;
    +
    578 }
    +
    579
    +
    580 template <class CT>
    +
    581 template <class It>
    +
    582 inline auto xscalar<CT>::element(It, It) noexcept -> reference
    +
    583 {
    +
    584 return m_value;
    +
    585 }
    +
    586
    +
    587 template <class CT>
    +
    588 template <class It>
    +
    589 inline auto xscalar<CT>::element(It, It) const noexcept -> const_reference
    +
    590 {
    +
    591 return m_value;
    +
    592 }
    +
    593
    +
    594 template <class CT>
    +
    595 inline auto xscalar<CT>::expression() noexcept -> xexpression_type&
    +
    596 {
    +
    597 return m_value;
    +
    598 }
    +
    599
    +
    600 template <class CT>
    +
    601 inline auto xscalar<CT>::expression() const noexcept -> const xexpression_type&
    +
    602 {
    +
    603 return m_value;
    +
    604 }
    +
    605
    +
    606 template <class CT>
    +
    607 template <class S>
    +
    608 inline bool xscalar<CT>::broadcast_shape(S&, bool) const noexcept
    +
    609 {
    +
    610 return true;
    +
    611 }
    +
    612
    +
    613 template <class CT>
    +
    614 template <class S>
    +
    615 inline bool xscalar<CT>::has_linear_assign(const S&) const noexcept
    +
    616 {
    +
    617 return true;
    +
    618 }
    +
    619
    +
    620 template <class CT>
    +
    621 template <layout_type L>
    +
    622 inline auto xscalar<CT>::begin() noexcept -> iterator
    +
    623 {
    +
    624 return &m_value;
    +
    625 }
    +
    626
    +
    627 template <class CT>
    +
    628 template <layout_type L>
    +
    629 inline auto xscalar<CT>::end() noexcept -> iterator
    +
    630 {
    +
    631 return &m_value + 1;
    +
    632 }
    +
    633
    +
    634 template <class CT>
    +
    635 template <layout_type L>
    +
    636 inline auto xscalar<CT>::begin() const noexcept -> const_iterator
    +
    637 {
    +
    638 return &m_value;
    +
    639 }
    +
    640
    +
    641 template <class CT>
    +
    642 template <layout_type L>
    +
    643 inline auto xscalar<CT>::end() const noexcept -> const_iterator
    +
    644 {
    +
    645 return &m_value + 1;
    +
    646 }
    +
    647
    +
    648 template <class CT>
    +
    649 template <layout_type L>
    +
    650 inline auto xscalar<CT>::cbegin() const noexcept -> const_iterator
    +
    651 {
    +
    652 return &m_value;
    +
    653 }
    +
    654
    +
    655 template <class CT>
    +
    656 template <layout_type L>
    +
    657 inline auto xscalar<CT>::cend() const noexcept -> const_iterator
    +
    658 {
    +
    659 return &m_value + 1;
    +
    660 }
    +
    661
    +
    662 template <class CT>
    +
    663 template <layout_type L>
    +
    664 inline auto xscalar<CT>::rbegin() noexcept -> reverse_iterator
    +
    665 {
    +
    666 return reverse_iterator(end());
    +
    667 }
    +
    668
    +
    669 template <class CT>
    +
    670 template <layout_type L>
    +
    671 inline auto xscalar<CT>::rend() noexcept -> reverse_iterator
    +
    672 {
    +
    673 return reverse_iterator(begin());
    +
    674 }
    +
    675
    +
    676 template <class CT>
    +
    677 template <layout_type L>
    +
    678 inline auto xscalar<CT>::rbegin() const noexcept -> const_reverse_iterator
    +
    679 {
    +
    680 return crbegin();
    +
    681 }
    +
    682
    +
    683 template <class CT>
    +
    684 template <layout_type L>
    +
    685 inline auto xscalar<CT>::rend() const noexcept -> const_reverse_iterator
    +
    686 {
    +
    687 return crend();
    +
    688 }
    +
    689
    +
    690 template <class CT>
    +
    691 template <layout_type L>
    +
    692 inline auto xscalar<CT>::crbegin() const noexcept -> const_reverse_iterator
    +
    693 {
    +
    694 return const_reverse_iterator(cend());
    +
    695 }
    +
    696
    +
    697 template <class CT>
    +
    698 template <layout_type L>
    +
    699 inline auto xscalar<CT>::crend() const noexcept -> const_reverse_iterator
    +
    700 {
    +
    701 return const_reverse_iterator(cbegin());
    +
    702 }
    +
    703
    +
    704 /*****************************
    +
    705 * Broadcasting iterator api *
    +
    706 *****************************/
    +
    707
    +
    708 template <class CT>
    +
    709 template <class S, layout_type L>
    +
    710 inline auto xscalar<CT>::begin(const S& shape) noexcept -> broadcast_iterator<S, L>
    +
    711 {
    +
    712 return iterable_base::template begin<S, L>(shape);
    +
    713 }
    +
    714
    +
    715 template <class CT>
    +
    716 template <class S, layout_type L>
    +
    717 inline auto xscalar<CT>::end(const S& shape) noexcept -> broadcast_iterator<S, L>
    +
    718 {
    +
    719 return iterable_base::template end<S, L>(shape);
    +
    720 }
    +
    721
    +
    722 template <class CT>
    +
    723 template <class S, layout_type L>
    +
    724 inline auto xscalar<CT>::begin(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    725 {
    +
    726 return iterable_base::template begin<S, L>(shape);
    +
    727 }
    +
    728
    +
    729 template <class CT>
    +
    730 template <class S, layout_type L>
    +
    731 inline auto xscalar<CT>::end(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    732 {
    +
    733 return iterable_base::template end<S, L>(shape);
    +
    734 }
    +
    735
    +
    736 template <class CT>
    +
    737 template <class S, layout_type L>
    +
    738 inline auto xscalar<CT>::cbegin(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    739 {
    +
    740 return iterable_base::template cbegin<S, L>(shape);
    +
    741 }
    +
    742
    +
    743 template <class CT>
    +
    744 template <class S, layout_type L>
    +
    745 inline auto xscalar<CT>::cend(const S& shape) const noexcept -> const_broadcast_iterator<S, L>
    +
    746 {
    +
    747 return iterable_base::template cend<S, L>(shape);
    +
    748 }
    +
    749
    +
    750 template <class CT>
    +
    751 template <class S, layout_type L>
    +
    752 inline auto xscalar<CT>::rbegin(const S& shape) noexcept -> reverse_broadcast_iterator<S, L>
    +
    753 {
    +
    754 return iterable_base::template rbegin<S, L>(shape);
    +
    755 }
    +
    756
    +
    757 template <class CT>
    +
    758 template <class S, layout_type L>
    +
    759 inline auto xscalar<CT>::rend(const S& shape) noexcept -> reverse_broadcast_iterator<S, L>
    +
    760 {
    +
    761 return iterable_base::template rend<S, L>(shape);
    +
    762 }
    +
    763
    +
    764 template <class CT>
    +
    765 template <class S, layout_type L>
    +
    766 inline auto xscalar<CT>::rbegin(const S& shape) const noexcept -> const_reverse_broadcast_iterator<S, L>
    +
    767 {
    +
    768 return iterable_base::template rbegin<S, L>(shape);
    +
    769 }
    +
    770
    +
    771 template <class CT>
    +
    772 template <class S, layout_type L>
    +
    773 inline auto xscalar<CT>::rend(const S& shape) const noexcept -> const_reverse_broadcast_iterator<S, L>
    +
    774 {
    +
    775 return iterable_base::template rend<S, L>(shape);
    +
    776 }
    +
    777
    +
    778 template <class CT>
    +
    779 template <class S, layout_type L>
    +
    780 inline auto xscalar<CT>::crbegin(const S& shape) const noexcept -> const_reverse_broadcast_iterator<S, L>
    +
    781 {
    +
    782 return iterable_base::template crbegin<S, L>(shape);
    +
    783 }
    +
    784
    +
    785 template <class CT>
    +
    786 template <class S, layout_type L>
    +
    787 inline auto xscalar<CT>::crend(const S& shape) const noexcept -> const_reverse_broadcast_iterator<S, L>
    +
    788 {
    +
    789 return iterable_base::template crend<S, L>(shape);
    +
    790 }
    +
    791
    +
    792 template <class CT>
    +
    793 inline auto xscalar<CT>::linear_begin() noexcept -> iterator
    +
    794 {
    +
    795 return this->template begin<XTENSOR_DEFAULT_LAYOUT>();
    +
    796 }
    +
    797
    +
    798 template <class CT>
    +
    799 inline auto xscalar<CT>::linear_end() noexcept -> iterator
    +
    800 {
    +
    801 return this->template end<XTENSOR_DEFAULT_LAYOUT>();
    +
    802 }
    +
    803
    +
    804 template <class CT>
    +
    805 inline auto xscalar<CT>::linear_begin() const noexcept -> const_iterator
    +
    806 {
    +
    807 return this->template begin<XTENSOR_DEFAULT_LAYOUT>();
    +
    808 }
    +
    809
    +
    810 template <class CT>
    +
    811 inline auto xscalar<CT>::linear_end() const noexcept -> const_iterator
    +
    812 {
    +
    813 return this->template end<XTENSOR_DEFAULT_LAYOUT>();
    +
    814 }
    +
    815
    +
    816 template <class CT>
    +
    817 inline auto xscalar<CT>::linear_cbegin() const noexcept -> const_iterator
    +
    818 {
    +
    819 return this->template cbegin<XTENSOR_DEFAULT_LAYOUT>();
    +
    820 }
    +
    821
    +
    822 template <class CT>
    +
    823 inline auto xscalar<CT>::linear_cend() const noexcept -> const_iterator
    +
    824 {
    +
    825 return this->template cend<XTENSOR_DEFAULT_LAYOUT>();
    +
    826 }
    +
    827
    +
    828 template <class CT>
    +
    829 inline auto xscalar<CT>::linear_rbegin() noexcept -> reverse_iterator
    +
    830 {
    +
    831 return this->template rbegin<XTENSOR_DEFAULT_LAYOUT>();
    +
    832 }
    +
    833
    +
    834 template <class CT>
    +
    835 inline auto xscalar<CT>::linear_rend() noexcept -> reverse_iterator
    +
    836 {
    +
    837 return this->template rend<XTENSOR_DEFAULT_LAYOUT>();
    +
    838 }
    +
    839
    +
    840 template <class CT>
    +
    841 inline auto xscalar<CT>::linear_rbegin() const noexcept -> const_reverse_iterator
    +
    842 {
    +
    843 return this->template rbegin<XTENSOR_DEFAULT_LAYOUT>();
    +
    844 }
    +
    845
    +
    846 template <class CT>
    +
    847 inline auto xscalar<CT>::linear_rend() const noexcept -> const_reverse_iterator
    +
    848 {
    +
    849 return this->template rend<XTENSOR_DEFAULT_LAYOUT>();
    +
    850 }
    +
    851
    +
    852 template <class CT>
    +
    853 inline auto xscalar<CT>::linear_crbegin() const noexcept -> const_reverse_iterator
    +
    854 {
    +
    855 return this->template crbegin<XTENSOR_DEFAULT_LAYOUT>();
    +
    856 }
    +
    857
    +
    858 template <class CT>
    +
    859 inline auto xscalar<CT>::linear_crend() const noexcept -> const_reverse_iterator
    +
    860 {
    +
    861 return this->template crend<XTENSOR_DEFAULT_LAYOUT>();
    +
    862 }
    +
    863
    +
    864 template <class CT>
    +
    865 template <class S>
    +
    866 inline auto xscalar<CT>::stepper_begin(const S&) noexcept -> stepper
    +
    867 {
    +
    868 return stepper(this, false);
    +
    869 }
    +
    870
    +
    871 template <class CT>
    +
    872 template <class S>
    +
    873 inline auto xscalar<CT>::stepper_end(const S&, layout_type) noexcept -> stepper
    +
    874 {
    +
    875 return stepper(this);
    +
    876 }
    +
    877
    +
    878 template <class CT>
    +
    879 template <class S>
    +
    880 inline auto xscalar<CT>::stepper_begin(const S&) const noexcept -> const_stepper
    +
    881 {
    +
    882 return const_stepper(this);
    +
    883 }
    +
    884
    +
    885 template <class CT>
    +
    886 template <class S>
    +
    887 inline auto xscalar<CT>::stepper_end(const S&, layout_type) const noexcept -> const_stepper
    +
    888 {
    +
    889 return const_stepper(this);
    +
    890 }
    +
    891
    +
    892 template <class CT>
    +
    893 inline auto xscalar<CT>::dummy_begin() noexcept -> dummy_iterator
    +
    894 {
    +
    895 return dummy_iterator(this);
    +
    896 }
    +
    897
    +
    898 template <class CT>
    +
    899 inline auto xscalar<CT>::dummy_end() noexcept -> dummy_iterator
    +
    900 {
    +
    901 return dummy_iterator(this);
    +
    902 }
    +
    903
    +
    904 template <class CT>
    +
    905 inline auto xscalar<CT>::dummy_begin() const noexcept -> const_dummy_iterator
    +
    906 {
    +
    907 return const_dummy_iterator(this);
    +
    908 }
    +
    909
    +
    910 template <class CT>
    +
    911 inline auto xscalar<CT>::dummy_end() const noexcept -> const_dummy_iterator
    +
    912 {
    +
    913 return const_dummy_iterator(this);
    +
    914 }
    +
    915
    +
    916 template <class CT>
    +
    917 inline auto xscalar<CT>::data_element(size_type) noexcept -> reference
    +
    918 {
    +
    919 return m_value;
    +
    920 }
    +
    921
    +
    922 template <class CT>
    +
    923 inline auto xscalar<CT>::data_element(size_type) const noexcept -> const_reference
    +
    924 {
    +
    925 return m_value;
    +
    926 }
    +
    927
    +
    928 template <class CT>
    +
    929 inline auto xscalar<CT>::flat(size_type) noexcept -> reference
    +
    930 {
    +
    931 return m_value;
    +
    932 }
    +
    933
    +
    934 template <class CT>
    +
    935 inline auto xscalar<CT>::flat(size_type) const noexcept -> const_reference
    +
    936 {
    +
    937 return m_value;
    +
    938 }
    +
    939
    +
    940 template <class CT>
    +
    941 template <class align, class simd>
    +
    942 inline void xscalar<CT>::store_simd(size_type, const simd& e)
    +
    943 {
    +
    944 m_value = static_cast<value_type>(e[0]);
    +
    945 }
    +
    946
    +
    947 template <class CT>
    +
    948 template <class align, class requested_type, std::size_t N>
    +
    949 inline auto xscalar<CT>::load_simd(size_type) const
    +
    950 -> xt_simd::simd_return_type<value_type, requested_type>
    +
    951 {
    +
    952 return xt_simd::broadcast_as<requested_type>(m_value);
    +
    953 }
    +
    954
    +
    955 template <class T>
    +
    956 inline xscalar<T&> xref(T& t)
    +
    957 {
    +
    958 return xscalar<T&>(t);
    +
    959 }
    +
    960
    +
    961 template <class T>
    +
    962 inline xscalar<const T&> xcref(T& t)
    +
    963 {
    +
    964 return xscalar<const T&>(t);
    +
    965 }
    +
    966
    +
    967 /**********************************
    +
    968 * xscalar_stepper implementation *
    +
    969 **********************************/
    +
    970
    +
    971 template <bool is_const, class CT>
    +
    972 inline xscalar_stepper<is_const, CT>::xscalar_stepper(storage_type* c) noexcept
    +
    973 : p_c(c)
    +
    974 {
    +
    975 }
    +
    976
    +
    977 template <bool is_const, class CT>
    +
    978 inline auto xscalar_stepper<is_const, CT>::operator*() const noexcept -> reference
    +
    979 {
    +
    980 return p_c->operator()();
    +
    981 }
    +
    982
    +
    983 template <bool is_const, class CT>
    +
    984 inline void xscalar_stepper<is_const, CT>::step(size_type /*dim*/, size_type /*n*/) noexcept
    +
    985 {
    +
    986 }
    +
    987
    +
    988 template <bool is_const, class CT>
    +
    989 inline void xscalar_stepper<is_const, CT>::step_back(size_type /*dim*/, size_type /*n*/) noexcept
    +
    990 {
    +
    991 }
    +
    992
    +
    993 template <bool is_const, class CT>
    +
    994 inline void xscalar_stepper<is_const, CT>::reset(size_type /*dim*/) noexcept
    +
    995 {
    +
    996 }
    +
    997
    +
    998 template <bool is_const, class CT>
    +
    999 inline void xscalar_stepper<is_const, CT>::reset_back(size_type /*dim*/) noexcept
    +
    1000 {
    +
    1001 }
    +
    1002
    +
    1003 template <bool is_const, class CT>
    +
    1004 inline void xscalar_stepper<is_const, CT>::to_begin() noexcept
    +
    1005 {
    +
    1006 }
    +
    1007
    +
    1008 template <bool is_const, class CT>
    +
    1009 inline void xscalar_stepper<is_const, CT>::to_end(layout_type /*l*/) noexcept
    +
    1010 {
    +
    1011 }
    +
    1012
    +
    1013 template <bool is_const, class CT>
    +
    1014 template <class T>
    +
    1015 inline auto xscalar_stepper<is_const, CT>::step_simd() -> simd_return_type<T>
    +
    1016 {
    +
    1017 return simd_return_type<T>(p_c->operator()());
    +
    1018 }
    +
    1019
    +
    1020 template <bool is_const, class CT>
    +
    1021 inline void xscalar_stepper<is_const, CT>::step_leading()
    +
    1022 {
    +
    1023 }
    +
    1024
    +
    1025 /**********************************
    +
    1026 * xdummy_iterator implementation *
    +
    1027 **********************************/
    +
    1028
    +
    1029 template <bool is_const, class CT>
    +
    1030 inline xdummy_iterator<is_const, CT>::xdummy_iterator(storage_type* c) noexcept
    +
    1031 : p_c(c)
    +
    1032 {
    +
    1033 }
    +
    1034
    +
    1035 template <bool is_const, class CT>
    +
    1036 inline auto xdummy_iterator<is_const, CT>::operator++() noexcept -> self_type&
    +
    1037 {
    +
    1038 return *this;
    +
    1039 }
    +
    1040
    +
    1041 template <bool is_const, class CT>
    +
    1042 inline auto xdummy_iterator<is_const, CT>::operator--() noexcept -> self_type&
    +
    1043 {
    +
    1044 return *this;
    +
    1045 }
    +
    1046
    +
    1047 template <bool is_const, class CT>
    +
    1048 inline auto xdummy_iterator<is_const, CT>::operator+=(difference_type) noexcept -> self_type&
    +
    1049 {
    +
    1050 return *this;
    +
    1051 }
    +
    1052
    +
    1053 template <bool is_const, class CT>
    +
    1054 inline auto xdummy_iterator<is_const, CT>::operator-=(difference_type) noexcept -> self_type&
    +
    1055 {
    +
    1056 return *this;
    +
    1057 }
    +
    1058
    +
    1059 template <bool is_const, class CT>
    +
    1060 inline auto xdummy_iterator<is_const, CT>::operator-(const self_type&) const noexcept -> difference_type
    +
    1061 {
    +
    1062 return 0;
    +
    1063 }
    +
    1064
    +
    1065 template <bool is_const, class CT>
    +
    1066 inline auto xdummy_iterator<is_const, CT>::operator*() const noexcept -> reference
    +
    1067 {
    +
    1068 return p_c->operator()();
    +
    1069 }
    +
    1070
    +
    1071 template <bool is_const, class CT>
    +
    1072 inline bool xdummy_iterator<is_const, CT>::equal(const self_type& rhs) const noexcept
    +
    1073 {
    +
    1074 return p_c == rhs.p_c;
    +
    1075 }
    +
    1076
    +
    1077 template <bool is_const, class CT>
    +
    1078 inline bool xdummy_iterator<is_const, CT>::less_than(const self_type& rhs) const noexcept
    +
    1079 {
    +
    1080 return p_c < rhs.p_c;
    +
    1081 }
    +
    1082
    +
    1083 template <bool is_const, class CT>
    +
    1084 inline bool
    +
    1085 operator==(const xdummy_iterator<is_const, CT>& lhs, const xdummy_iterator<is_const, CT>& rhs) noexcept
    +
    1086 {
    +
    1087 return lhs.equal(rhs);
    +
    1088 }
    +
    1089
    +
    1090 template <bool is_const, class CT>
    +
    1091 inline bool
    +
    1092 operator<(const xdummy_iterator<is_const, CT>& lhs, const xdummy_iterator<is_const, CT>& rhs) noexcept
    +
    1093 {
    +
    1094 return lhs.less_than(rhs);
    +
    1095 }
    +
    1096}
    +
    1097
    +
    1098#endif
    +
    Base class for implementation of common expression access methods.
    +
    reference back()
    Returns a reference to the last element of the expression.
    +
    reference front()
    Returns a reference to the first element of the expression.
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    bool in_bounds(Args... args) const
    Returns true only if the the specified position is a valid entry in the expression.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for multidimensional iterable constant expressions.
    Definition xiterable.hpp:37
    + +
    Base class for multidimensional iterable expressions.
    + + + +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + + + +
    +
    + + + + diff --git a/xsemantic_8hpp_source.html b/xsemantic_8hpp_source.html new file mode 100644 index 000000000..5177c268e --- /dev/null +++ b/xsemantic_8hpp_source.html @@ -0,0 +1,761 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xsemantic.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xsemantic.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_SEMANTIC_HPP
    +
    11#define XTENSOR_SEMANTIC_HPP
    +
    12
    +
    13#include <functional>
    +
    14#include <utility>
    +
    15
    +
    16#include "xassign.hpp"
    +
    17#include "xexpression_traits.hpp"
    +
    18
    +
    19namespace xt
    +
    20{
    +
    21 namespace detail
    +
    22 {
    +
    23 template <class D>
    +
    24 struct is_sharable
    +
    25 {
    +
    26 static constexpr bool value = true;
    +
    27 };
    +
    28
    +
    29 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    30 struct is_sharable<xfixed_container<ET, S, L, SH, Tag>>
    +
    31 {
    +
    32 static constexpr bool value = SH;
    +
    33 };
    +
    34
    +
    35 template <class ET, class S, layout_type L, bool SH, class Tag>
    +
    36 struct is_sharable<xfixed_adaptor<ET, S, L, SH, Tag>>
    +
    37 {
    +
    38 static constexpr bool value = SH;
    +
    39 };
    +
    40 }
    +
    41
    +
    42 template <class D>
    +
    43 using select_expression_base_t = std::
    +
    44 conditional_t<detail::is_sharable<D>::value, xsharable_expression<D>, xexpression<D>>;
    +
    45
    +
    56 template <class D>
    +
    +
    57 class xsemantic_base : public select_expression_base_t<D>
    +
    58 {
    +
    59 public:
    +
    60
    +
    61 using base_type = select_expression_base_t<D>;
    +
    62 using derived_type = typename base_type::derived_type;
    +
    63
    +
    64 using temporary_type = typename xcontainer_inner_types<D>::temporary_type;
    +
    65
    +
    66 template <class E>
    +
    67 disable_xexpression<E, derived_type&> operator+=(const E&);
    +
    68
    +
    69 template <class E>
    +
    70 disable_xexpression<E, derived_type&> operator-=(const E&);
    +
    71
    +
    72 template <class E>
    +
    73 disable_xexpression<E, derived_type&> operator*=(const E&);
    +
    74
    +
    75 template <class E>
    +
    76 disable_xexpression<E, derived_type&> operator/=(const E&);
    +
    77
    +
    78 template <class E>
    +
    79 disable_xexpression<E, derived_type&> operator%=(const E&);
    +
    80
    +
    81 template <class E>
    +
    82 disable_xexpression<E, derived_type&> operator&=(const E&);
    +
    83
    +
    84 template <class E>
    +
    85 disable_xexpression<E, derived_type&> operator|=(const E&);
    +
    86
    +
    87 template <class E>
    +
    88 disable_xexpression<E, derived_type&> operator^=(const E&);
    +
    89
    +
    90 template <class E>
    +
    91 derived_type& operator+=(const xexpression<E>&);
    +
    92
    +
    93 template <class E>
    +
    94 derived_type& operator-=(const xexpression<E>&);
    +
    95
    +
    96 template <class E>
    +
    97 derived_type& operator*=(const xexpression<E>&);
    +
    98
    +
    99 template <class E>
    +
    100 derived_type& operator/=(const xexpression<E>&);
    +
    101
    +
    102 template <class E>
    +
    103 derived_type& operator%=(const xexpression<E>&);
    +
    104
    +
    105 template <class E>
    +
    106 derived_type& operator&=(const xexpression<E>&);
    +
    107
    +
    108 template <class E>
    +
    109 derived_type& operator|=(const xexpression<E>&);
    +
    110
    +
    111 template <class E>
    +
    112 derived_type& operator^=(const xexpression<E>&);
    +
    113
    +
    114 template <class E>
    +
    115 derived_type& assign(const xexpression<E>&);
    +
    116
    +
    117 template <class E>
    +
    118 derived_type& plus_assign(const xexpression<E>&);
    +
    119
    +
    120 template <class E>
    +
    121 derived_type& minus_assign(const xexpression<E>&);
    +
    122
    +
    123 template <class E>
    +
    124 derived_type& multiplies_assign(const xexpression<E>&);
    +
    125
    +
    126 template <class E>
    +
    127 derived_type& divides_assign(const xexpression<E>&);
    +
    128
    +
    129 template <class E>
    +
    130 derived_type& modulus_assign(const xexpression<E>&);
    +
    131
    +
    132 template <class E>
    +
    133 derived_type& bit_and_assign(const xexpression<E>&);
    +
    134
    +
    135 template <class E>
    +
    136 derived_type& bit_or_assign(const xexpression<E>&);
    +
    137
    +
    138 template <class E>
    +
    139 derived_type& bit_xor_assign(const xexpression<E>&);
    +
    140
    +
    141 protected:
    +
    142
    +
    143 xsemantic_base() = default;
    +
    144 ~xsemantic_base() = default;
    +
    145
    +
    146 xsemantic_base(const xsemantic_base&) = default;
    +
    147 xsemantic_base& operator=(const xsemantic_base&) = default;
    +
    148
    +
    149 xsemantic_base(xsemantic_base&&) = default;
    +
    150 xsemantic_base& operator=(xsemantic_base&&) = default;
    +
    151
    +
    152 template <class E>
    +
    153 derived_type& operator=(const xexpression<E>&);
    +
    154 };
    +
    +
    155
    +
    156 template <class E>
    +
    157 using is_assignable = is_crtp_base_of<xsemantic_base, E>;
    +
    158
    +
    159 template <class E, class R = void>
    +
    160 using enable_assignable = typename std::enable_if<is_assignable<E>::value, R>::type;
    +
    161
    +
    162 template <class E, class R = void>
    +
    163 using disable_assignable = typename std::enable_if<!is_assignable<E>::value, R>::type;
    +
    164
    +
    176 template <class D>
    +
    + +
    178 {
    +
    179 public:
    +
    180
    + +
    182 using derived_type = D;
    +
    183 using temporary_type = typename base_type::temporary_type;
    +
    184
    +
    +
    185 derived_type& assign_temporary(temporary_type&&);
    +
    186
    +
    187 template <class E>
    +
    188 derived_type& assign_xexpression(const xexpression<E>& e);
    +
    189
    +
    190 template <class E>
    +
    191 derived_type& computed_assign(const xexpression<E>& e);
    +
    192
    +
    193 template <class E, class F>
    +
    194 derived_type& scalar_computed_assign(const E& e, F&& f);
    +
    195
    +
    196 protected:
    +
    197
    +
    198 xcontainer_semantic() = default;
    +
    199 ~xcontainer_semantic() = default;
    +
    200
    + +
    202 xcontainer_semantic& operator=(const xcontainer_semantic&) = default;
    +
    203
    + +
    205 xcontainer_semantic& operator=(xcontainer_semantic&&) = default;
    +
    206
    +
    207 template <class E>
    +
    208 derived_type& operator=(const xexpression<E>&);
    +
    209 };
    +
    210
    +
    211 template <class E>
    +
    212 using has_container_semantics = is_crtp_base_of<xcontainer_semantic, E>;
    +
    213
    +
    214 template <class E, class R = void>
    +
    215 using enable_xcontainer_semantics = typename std::enable_if<has_container_semantics<E>::value, R>::type;
    +
    216
    +
    217 template <class E, class R = void>
    +
    218 using disable_xcontainer_semantics = typename std::enable_if<!has_container_semantics<E>::value, R>::type;
    +
    219
    +
    230 template <class D>
    +
    + +
    232 {
    +
    233 public:
    +
    234
    + +
    236 using derived_type = D;
    +
    237 using temporary_type = typename base_type::temporary_type;
    +
    238
    +
    +
    239 derived_type& assign_temporary(temporary_type&&);
    +
    240
    +
    241 template <class E>
    +
    242 derived_type& assign_xexpression(const xexpression<E>& e);
    +
    243
    +
    244 template <class E>
    +
    245 derived_type& computed_assign(const xexpression<E>& e);
    +
    246
    +
    247 template <class E, class F>
    +
    248 derived_type& scalar_computed_assign(const E& e, F&& f);
    +
    249
    +
    250 protected:
    +
    251
    +
    252 xview_semantic() = default;
    +
    253 ~xview_semantic() = default;
    +
    254
    +
    255 xview_semantic(const xview_semantic&) = default;
    +
    256 xview_semantic& operator=(const xview_semantic&) = default;
    +
    257
    +
    258 xview_semantic(xview_semantic&&) = default;
    +
    259 xview_semantic& operator=(xview_semantic&&) = default;
    +
    260
    +
    261 template <class E>
    +
    262 derived_type& operator=(const xexpression<E>&);
    +
    263 };
    +
    264
    +
    265 template <class E>
    +
    266 using has_view_semantics = is_crtp_base_of<xview_semantic, E>;
    +
    267
    +
    268 template <class E, class R = void>
    +
    269 using enable_xview_semantics = typename std::enable_if<has_view_semantics<E>::value, R>::type;
    +
    270
    +
    271 template <class E, class R = void>
    +
    272 using disable_xview_semantics = typename std::enable_if<!has_view_semantics<E>::value, R>::type;
    +
    273
    +
    274 /*********************************
    +
    275 * xsemantic_base implementation *
    +
    276 *********************************/
    +
    277
    +
    287 template <class D>
    +
    288 template <class E>
    +
    +
    289 inline auto xsemantic_base<D>::operator+=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    290 {
    +
    291 return this->derived_cast().scalar_computed_assign(e, std::plus<>());
    +
    292 }
    +
    +
    293
    +
    299 template <class D>
    +
    300 template <class E>
    +
    +
    301 inline auto xsemantic_base<D>::operator-=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    302 {
    +
    303 return this->derived_cast().scalar_computed_assign(e, std::minus<>());
    +
    304 }
    +
    +
    305
    +
    311 template <class D>
    +
    312 template <class E>
    +
    +
    313 inline auto xsemantic_base<D>::operator*=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    314 {
    +
    315 return this->derived_cast().scalar_computed_assign(e, std::multiplies<>());
    +
    316 }
    +
    +
    317
    +
    323 template <class D>
    +
    324 template <class E>
    +
    +
    325 inline auto xsemantic_base<D>::operator/=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    326 {
    +
    327 return this->derived_cast().scalar_computed_assign(e, std::divides<>());
    +
    328 }
    +
    +
    329
    +
    335 template <class D>
    +
    336 template <class E>
    +
    +
    337 inline auto xsemantic_base<D>::operator%=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    338 {
    +
    339 return this->derived_cast().scalar_computed_assign(e, std::modulus<>());
    +
    340 }
    +
    +
    341
    +
    347 template <class D>
    +
    348 template <class E>
    +
    +
    349 inline auto xsemantic_base<D>::operator&=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    350 {
    +
    351 return this->derived_cast().scalar_computed_assign(e, std::bit_and<>());
    +
    352 }
    +
    +
    353
    +
    359 template <class D>
    +
    360 template <class E>
    +
    +
    361 inline auto xsemantic_base<D>::operator|=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    362 {
    +
    363 return this->derived_cast().scalar_computed_assign(e, std::bit_or<>());
    +
    364 }
    +
    +
    365
    +
    371 template <class D>
    +
    372 template <class E>
    +
    +
    373 inline auto xsemantic_base<D>::operator^=(const E& e) -> disable_xexpression<E, derived_type&>
    +
    374 {
    +
    375 return this->derived_cast().scalar_computed_assign(e, std::bit_xor<>());
    +
    376 }
    +
    +
    377
    +
    383 template <class D>
    +
    384 template <class E>
    +
    +
    385 inline auto xsemantic_base<D>::operator+=(const xexpression<E>& e) -> derived_type&
    +
    386 {
    +
    387 return this->derived_cast() = this->derived_cast() + e.derived_cast();
    +
    388 }
    +
    +
    389
    +
    395 template <class D>
    +
    396 template <class E>
    +
    +
    397 inline auto xsemantic_base<D>::operator-=(const xexpression<E>& e) -> derived_type&
    +
    398 {
    +
    399 return this->derived_cast() = this->derived_cast() - e.derived_cast();
    +
    400 }
    +
    +
    401
    +
    407 template <class D>
    +
    408 template <class E>
    +
    +
    409 inline auto xsemantic_base<D>::operator*=(const xexpression<E>& e) -> derived_type&
    +
    410 {
    +
    411 return this->derived_cast() = this->derived_cast() * e.derived_cast();
    +
    412 }
    +
    +
    413
    +
    419 template <class D>
    +
    420 template <class E>
    +
    +
    421 inline auto xsemantic_base<D>::operator/=(const xexpression<E>& e) -> derived_type&
    +
    422 {
    +
    423 return this->derived_cast() = this->derived_cast() / e.derived_cast();
    +
    424 }
    +
    +
    425
    +
    431 template <class D>
    +
    432 template <class E>
    +
    +
    433 inline auto xsemantic_base<D>::operator%=(const xexpression<E>& e) -> derived_type&
    +
    434 {
    +
    435 return this->derived_cast() = this->derived_cast() % e.derived_cast();
    +
    436 }
    +
    +
    437
    +
    443 template <class D>
    +
    444 template <class E>
    +
    +
    445 inline auto xsemantic_base<D>::operator&=(const xexpression<E>& e) -> derived_type&
    +
    446 {
    +
    447 return this->derived_cast() = this->derived_cast() & e.derived_cast();
    +
    448 }
    +
    +
    449
    +
    455 template <class D>
    +
    456 template <class E>
    +
    +
    457 inline auto xsemantic_base<D>::operator|=(const xexpression<E>& e) -> derived_type&
    +
    458 {
    +
    459 return this->derived_cast() = this->derived_cast() | e.derived_cast();
    +
    460 }
    +
    +
    461
    +
    467 template <class D>
    +
    468 template <class E>
    +
    +
    469 inline auto xsemantic_base<D>::operator^=(const xexpression<E>& e) -> derived_type&
    +
    470 {
    +
    471 return this->derived_cast() = this->derived_cast() ^ e.derived_cast();
    +
    472 }
    +
    +
    473
    +
    475
    +
    486 template <class D>
    +
    487 template <class E>
    +
    +
    488 inline auto xsemantic_base<D>::assign(const xexpression<E>& e) -> derived_type&
    +
    489 {
    +
    490 return this->derived_cast().assign_xexpression(e);
    +
    491 }
    +
    +
    492
    +
    499 template <class D>
    +
    500 template <class E>
    +
    +
    501 inline auto xsemantic_base<D>::plus_assign(const xexpression<E>& e) -> derived_type&
    +
    502 {
    +
    503 return this->derived_cast().computed_assign(this->derived_cast() + e.derived_cast());
    +
    504 }
    +
    +
    505
    +
    512 template <class D>
    +
    513 template <class E>
    +
    +
    514 inline auto xsemantic_base<D>::minus_assign(const xexpression<E>& e) -> derived_type&
    +
    515 {
    +
    516 return this->derived_cast().computed_assign(this->derived_cast() - e.derived_cast());
    +
    517 }
    +
    +
    518
    +
    525 template <class D>
    +
    526 template <class E>
    +
    +
    527 inline auto xsemantic_base<D>::multiplies_assign(const xexpression<E>& e) -> derived_type&
    +
    528 {
    +
    529 return this->derived_cast().computed_assign(this->derived_cast() * e.derived_cast());
    +
    530 }
    +
    +
    531
    +
    538 template <class D>
    +
    539 template <class E>
    +
    +
    540 inline auto xsemantic_base<D>::divides_assign(const xexpression<E>& e) -> derived_type&
    +
    541 {
    +
    542 return this->derived_cast().computed_assign(this->derived_cast() / e.derived_cast());
    +
    543 }
    +
    +
    544
    +
    551 template <class D>
    +
    552 template <class E>
    +
    +
    553 inline auto xsemantic_base<D>::modulus_assign(const xexpression<E>& e) -> derived_type&
    +
    554 {
    +
    555 return this->derived_cast().computed_assign(this->derived_cast() % e.derived_cast());
    +
    556 }
    +
    +
    557
    +
    564 template <class D>
    +
    565 template <class E>
    +
    +
    566 inline auto xsemantic_base<D>::bit_and_assign(const xexpression<E>& e) -> derived_type&
    +
    567 {
    +
    568 return this->derived_cast().computed_assign(this->derived_cast() & e.derived_cast());
    +
    569 }
    +
    +
    570
    +
    577 template <class D>
    +
    578 template <class E>
    +
    +
    579 inline auto xsemantic_base<D>::bit_or_assign(const xexpression<E>& e) -> derived_type&
    +
    580 {
    +
    581 return this->derived_cast().computed_assign(this->derived_cast() | e.derived_cast());
    +
    582 }
    +
    +
    583
    +
    590 template <class D>
    +
    591 template <class E>
    +
    +
    592 inline auto xsemantic_base<D>::bit_xor_assign(const xexpression<E>& e) -> derived_type&
    +
    593 {
    +
    594 return this->derived_cast().computed_assign(this->derived_cast() ^ e.derived_cast());
    +
    595 }
    +
    +
    596
    +
    597 template <class D>
    +
    598 template <class E>
    +
    599 inline auto xsemantic_base<D>::operator=(const xexpression<E>& e) -> derived_type&
    +
    600 {
    +
    601 temporary_type tmp(e);
    +
    602 return this->derived_cast().assign_temporary(std::move(tmp));
    +
    603 }
    +
    604
    +
    605 /**************************************
    +
    606 * xcontainer_semantic implementation *
    +
    607 **************************************/
    +
    608
    +
    614 template <class D>
    +
    +
    615 inline auto xcontainer_semantic<D>::assign_temporary(temporary_type&& tmp) -> derived_type&
    +
    616 {
    +
    617 return (this->derived_cast() = std::move(tmp));
    +
    618 }
    +
    +
    619
    +
    620 template <class D>
    +
    621 template <class E>
    +
    622 inline auto xcontainer_semantic<D>::assign_xexpression(const xexpression<E>& e) -> derived_type&
    +
    623 {
    +
    624 xt::assign_xexpression(*this, e);
    +
    625 return this->derived_cast();
    +
    626 }
    +
    627
    +
    628 template <class D>
    +
    629 template <class E>
    +
    630 inline auto xcontainer_semantic<D>::computed_assign(const xexpression<E>& e) -> derived_type&
    +
    631 {
    +
    632 xt::computed_assign(*this, e);
    +
    633 return this->derived_cast();
    +
    634 }
    +
    635
    +
    636 template <class D>
    +
    637 template <class E, class F>
    +
    638 inline auto xcontainer_semantic<D>::scalar_computed_assign(const E& e, F&& f) -> derived_type&
    +
    639 {
    +
    640 xt::scalar_computed_assign(*this, e, std::forward<F>(f));
    +
    641 return this->derived_cast();
    +
    642 }
    +
    643
    +
    644 template <class D>
    +
    645 template <class E>
    +
    646 inline auto xcontainer_semantic<D>::operator=(const xexpression<E>& e) -> derived_type&
    +
    647 {
    +
    648 return base_type::operator=(e);
    +
    649 }
    +
    650
    +
    651 /*********************************
    +
    652 * xview_semantic implementation *
    +
    653 *********************************/
    +
    654
    +
    660 template <class D>
    +
    +
    661 inline auto xview_semantic<D>::assign_temporary(temporary_type&& tmp) -> derived_type&
    +
    662 {
    +
    663 this->derived_cast().assign_temporary_impl(std::move(tmp));
    +
    664 return this->derived_cast();
    +
    665 }
    +
    +
    +
    666
    +
    667 namespace detail
    +
    668 {
    +
    669 template <class F>
    +
    670 bool get_rhs_triviality(const F&)
    +
    671 {
    +
    672 return true;
    +
    673 }
    +
    674
    +
    675 template <class F, class R, class... CT>
    +
    676 bool get_rhs_triviality(const xfunction<F, R, CT...>& rhs)
    +
    677 {
    +
    678 using index_type = xindex_type_t<typename xfunction<F, R, CT...>::shape_type>;
    +
    679 using size_type = typename index_type::size_type;
    +
    680 size_type size = rhs.dimension();
    +
    681 index_type shape = uninitialized_shape<index_type>(size);
    +
    682 bool trivial_broadcast = rhs.broadcast_shape(shape, true);
    +
    683 return trivial_broadcast;
    +
    684 }
    +
    685 }
    +
    686
    +
    687 template <class D>
    +
    688 template <class E>
    +
    689 inline auto xview_semantic<D>::assign_xexpression(const xexpression<E>& e) -> derived_type&
    +
    690 {
    +
    691 xt::assert_compatible_shape(*this, e);
    +
    692 xt::assign_data(*this, e, detail::get_rhs_triviality(e.derived_cast()));
    +
    693 return this->derived_cast();
    +
    694 }
    +
    695
    +
    696 template <class D>
    +
    697 template <class E>
    +
    698 inline auto xview_semantic<D>::computed_assign(const xexpression<E>& e) -> derived_type&
    +
    699 {
    +
    700 xt::assert_compatible_shape(*this, e);
    +
    701 xt::assign_data(*this, e, detail::get_rhs_triviality(e.derived_cast()));
    +
    702 return this->derived_cast();
    +
    703 }
    +
    704
    +
    705 namespace xview_semantic_detail
    +
    706 {
    +
    707 template <class D>
    +
    708 auto get_begin(D&& lhs, std::true_type)
    +
    709 {
    +
    710 return lhs.linear_begin();
    +
    711 }
    +
    712
    +
    713 template <class D>
    +
    714 auto get_begin(D&& lhs, std::false_type)
    +
    715 {
    +
    716 return lhs.begin();
    +
    717 }
    +
    718 }
    +
    719
    +
    720 template <class D>
    +
    721 template <class E, class F>
    +
    722 inline auto xview_semantic<D>::scalar_computed_assign(const E& e, F&& f) -> derived_type&
    +
    723 {
    +
    724 D& d = this->derived_cast();
    +
    725
    +
    726 using size_type = typename D::size_type;
    +
    727 auto dst = xview_semantic_detail::get_begin(d, std::integral_constant<bool, D::contiguous_layout>());
    +
    728 for (size_type i = d.size(); i > 0; --i)
    +
    729 {
    +
    730 *dst = f(*dst, e);
    +
    731 ++dst;
    +
    732 }
    +
    733 return this->derived_cast();
    +
    734 }
    +
    735
    +
    736 template <class D>
    +
    737 template <class E>
    +
    738 inline auto xview_semantic<D>::operator=(const xexpression<E>& rhs) -> derived_type&
    +
    739 {
    +
    740 bool cond = (rhs.derived_cast().shape().size() == this->derived_cast().dimension())
    +
    741 && std::equal(
    +
    742 this->derived_cast().shape().begin(),
    +
    743 this->derived_cast().shape().end(),
    +
    744 rhs.derived_cast().shape().begin()
    +
    745 );
    +
    746
    +
    747 if (!cond)
    +
    748 {
    +
    749 base_type::operator=(broadcast(rhs.derived_cast(), this->derived_cast().shape()));
    +
    750 }
    +
    751 else
    +
    752 {
    +
    753 base_type::operator=(rhs);
    +
    754 }
    +
    755 return this->derived_cast();
    +
    756 }
    +
    757}
    +
    758
    +
    759#endif
    +
    +
    +
    +
    Dense multidimensional container adaptor with tensor semantic.
    Definition xarray.hpp:217
    +
    Implementation of the xsemantic_base interface for dense multidimensional containers.
    +
    derived_type & assign_temporary(temporary_type &&)
    Assigns the temporary tmp to *this.
    +
    Base class for xexpressions.
    +
    View of an xexpression .
    +
    Base interface for assignable xexpressions.
    Definition xsemantic.hpp:58
    +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    derived_type & assign_temporary(temporary_type &&)
    Assigns the temporary tmp to *this.
    +
    standard mathematical functions for xexpressions
    +
    auto broadcast(E &&e, const S &s)
    Returns an xexpression broadcasting the given expression to a specified shape.
    + + +
    +
    + + + + diff --git a/xset__operation_8hpp_source.html b/xset__operation_8hpp_source.html new file mode 100644 index 000000000..6946afa17 --- /dev/null +++ b/xset__operation_8hpp_source.html @@ -0,0 +1,271 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xset_operation.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xset_operation.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_XSET_OPERATION_HPP
    +
    11#define XTENSOR_XSET_OPERATION_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <functional>
    +
    15#include <type_traits>
    +
    16
    +
    17#include <xtl/xsequence.hpp>
    +
    18
    +
    19#include "xfunction.hpp"
    +
    20#include "xmath.hpp"
    +
    21#include "xscalar.hpp"
    +
    22#include "xstrided_view.hpp"
    +
    23#include "xstrides.hpp"
    +
    24#include "xutils.hpp"
    +
    25
    +
    26namespace xt
    +
    27{
    +
    28
    +
    29 namespace detail
    +
    30 {
    +
    31
    +
    32 template <bool lvalue>
    +
    33 struct lambda_isin
    +
    34 {
    +
    35 template <class E>
    +
    36 static auto make(E&& e)
    +
    37 {
    +
    38 return [&e](const auto& t)
    +
    39 {
    +
    40 return std::find(e.begin(), e.end(), t) != e.end();
    +
    41 };
    +
    42 }
    +
    43 };
    +
    44
    +
    45 template <>
    +
    46 struct lambda_isin<false>
    +
    47 {
    +
    48 template <class E>
    +
    49 static auto make(E&& e)
    +
    50 {
    +
    51 return [e](const auto& t)
    +
    52 {
    +
    53 return std::find(e.begin(), e.end(), t) != e.end();
    +
    54 };
    +
    55 }
    +
    56 };
    +
    57
    +
    58 }
    +
    59
    +
    70 template <class E, class T>
    +
    +
    71 inline auto isin(E&& element, std::initializer_list<T> test_elements) noexcept
    +
    72 {
    +
    73 auto lambda = [test_elements](const auto& t)
    +
    74 {
    +
    75 return std::find(test_elements.begin(), test_elements.end(), t) != test_elements.end();
    +
    76 };
    +
    77 return make_lambda_xfunction(std::move(lambda), std::forward<E>(element));
    +
    78 }
    +
    +
    79
    +
    90 template <class E, class F, class = typename std::enable_if_t<has_iterator_interface<F>::value>>
    +
    +
    91 inline auto isin(E&& element, F&& test_elements) noexcept
    +
    92 {
    +
    93 auto lambda = detail::lambda_isin<std::is_lvalue_reference<F>::value>::make(std::forward<F>(test_elements
    +
    94 ));
    +
    95 return make_lambda_xfunction(std::move(lambda), std::forward<E>(element));
    +
    96 }
    +
    +
    97
    +
    109 template <class E, class I, class = typename std::enable_if_t<is_iterator<I>::value>>
    +
    +
    110 inline auto isin(E&& element, I&& test_elements_begin, I&& test_elements_end) noexcept
    +
    111 {
    +
    112 auto lambda = [&test_elements_begin, &test_elements_end](const auto& t)
    +
    113 {
    +
    114 return std::find(test_elements_begin, test_elements_end, t) != test_elements_end;
    +
    115 };
    +
    116 return make_lambda_xfunction(std::move(lambda), std::forward<E>(element));
    +
    117 }
    +
    +
    118
    +
    129 template <class E, class T>
    +
    +
    130 inline auto in1d(E&& element, std::initializer_list<T> test_elements) noexcept
    +
    131 {
    +
    132 XTENSOR_ASSERT(element.dimension() == 1ul);
    +
    133 return isin(std::forward<E>(element), std::forward<std::initializer_list<T>>(test_elements));
    +
    134 }
    +
    +
    135
    +
    146 template <class E, class F, class = typename std::enable_if_t<has_iterator_interface<F>::value>>
    +
    +
    147 inline auto in1d(E&& element, F&& test_elements) noexcept
    +
    148 {
    +
    149 XTENSOR_ASSERT(element.dimension() == 1ul);
    +
    150 XTENSOR_ASSERT(test_elements.dimension() == 1ul);
    +
    151 return isin(std::forward<E>(element), std::forward<F>(test_elements));
    +
    152 }
    +
    +
    153
    +
    165 template <class E, class I, class = typename std::enable_if_t<is_iterator<I>::value>>
    +
    +
    166 inline auto in1d(E&& element, I&& test_elements_begin, I&& test_elements_end) noexcept
    +
    167 {
    +
    168 XTENSOR_ASSERT(element.dimension() == 1ul);
    +
    169 return isin(
    +
    170 std::forward<E>(element),
    +
    171 std::forward<I>(test_elements_begin),
    +
    172 std::forward<I>(test_elements_end)
    +
    173 );
    +
    174 }
    +
    +
    175
    +
    185 template <class E1, class E2>
    +
    +
    186 inline auto searchsorted(E1&& a, E2&& v, bool right = true)
    +
    187 {
    +
    188 XTENSOR_ASSERT(std::is_sorted(a.cbegin(), a.cend()));
    +
    189
    +
    190 auto out = xt::empty<size_t>(v.shape());
    +
    191
    +
    192 if (right)
    +
    193 {
    +
    194 for (size_t i = 0; i < v.size(); ++i)
    +
    195 {
    +
    196 out(i) = static_cast<std::size_t>(std::lower_bound(a.cbegin(), a.cend(), v(i)) - a.cbegin());
    +
    197 }
    +
    198 }
    +
    199 else
    +
    200 {
    +
    201 for (size_t i = 0; i < v.size(); ++i)
    +
    202 {
    +
    203 out(i) = static_cast<std::size_t>(std::upper_bound(a.cbegin(), a.cend(), v(i)) - a.cbegin());
    +
    204 }
    +
    205 }
    +
    206
    +
    207
    +
    208 return out;
    +
    209 }
    +
    +
    210
    +
    211}
    +
    212
    +
    213#endif
    +
    auto in1d(E &&element, std::initializer_list< T > test_elements) noexcept
    in1d
    +
    auto isin(E &&element, std::initializer_list< T > test_elements) noexcept
    isin
    +
    standard mathematical functions for xexpressions
    +
    auto make_lambda_xfunction(F &&lambda, E &&... args)
    Create a xfunction from a lambda.
    Definition xmath.hpp:1084
    +
    auto searchsorted(E1 &&a, E2 &&v, bool right=true)
    Find indices where elements should be inserted to maintain order.
    +
    +
    + + + + diff --git a/xshape_8hpp_source.html b/xshape_8hpp_source.html new file mode 100644 index 000000000..480092b7a --- /dev/null +++ b/xshape_8hpp_source.html @@ -0,0 +1,675 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xshape.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xshape.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_XSHAPE_HPP
    +
    11#define XTENSOR_XSHAPE_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cassert>
    +
    15#include <cstddef>
    +
    16#include <cstdlib>
    +
    17#include <cstring>
    +
    18#include <initializer_list>
    +
    19#include <iterator>
    +
    20#include <memory>
    +
    21
    +
    22#include "xlayout.hpp"
    +
    23#include "xstorage.hpp"
    +
    24#include "xtensor_forward.hpp"
    +
    25
    +
    26namespace xt
    +
    27{
    +
    28 template <class T>
    +
    29 using dynamic_shape = svector<T, 4>;
    +
    30
    +
    31 template <class T, std::size_t N>
    +
    32 using static_shape = std::array<T, N>;
    +
    33
    +
    34 template <std::size_t... X>
    +
    35 class fixed_shape;
    +
    36
    +
    37 using xindex = dynamic_shape<std::size_t>;
    +
    38
    +
    39 template <class S1, class S2>
    +
    40 bool same_shape(const S1& s1, const S2& s2) noexcept;
    +
    41
    +
    42 template <class U>
    +
    43 struct initializer_dimension;
    +
    44
    +
    45 template <class R, class T>
    +
    46 constexpr R shape(T t);
    +
    47
    +
    48 template <class R = std::size_t, class T, std::size_t N>
    +
    49 xt::static_shape<R, N> shape(const T (&aList)[N]);
    +
    50
    +
    51 template <class S>
    +
    52 struct static_dimension;
    +
    53
    +
    54 template <layout_type L, class S>
    +
    55 struct select_layout;
    +
    56
    +
    57 template <class... S>
    +
    58 struct promote_shape;
    +
    59
    +
    60 template <class... S>
    +
    61 struct promote_strides;
    +
    62
    +
    63 template <class S>
    +
    64 struct index_from_shape;
    +
    65}
    +
    66
    +
    67namespace xtl
    +
    68{
    +
    69 namespace detail
    +
    70 {
    +
    71 template <class S>
    +
    72 struct sequence_builder;
    +
    73
    +
    74 template <std::size_t... I>
    +
    75 struct sequence_builder<xt::fixed_shape<I...>>
    +
    76 {
    +
    77 using sequence_type = xt::fixed_shape<I...>;
    +
    78 using value_type = typename sequence_type::value_type;
    +
    79
    +
    80 inline static sequence_type make(std::size_t /*size*/)
    +
    81 {
    +
    82 return sequence_type{};
    +
    83 }
    +
    84
    +
    85 inline static sequence_type make(std::size_t /*size*/, value_type /*v*/)
    +
    86 {
    +
    87 return sequence_type{};
    +
    88 }
    +
    89 };
    +
    90 }
    +
    91}
    +
    92
    +
    93namespace xt
    +
    94{
    +
    99 /**************
    +
    100 * same_shape *
    +
    101 **************/
    +
    102
    +
    111 template <class S1, class S2>
    +
    +
    112 inline bool same_shape(const S1& s1, const S2& s2) noexcept
    +
    113 {
    +
    114 return s1.size() == s2.size() && std::equal(s1.begin(), s1.end(), s2.begin());
    +
    115 }
    +
    +
    116
    +
    117 /*************
    +
    118 * has_shape *
    +
    119 *************/
    +
    120
    +
    129 template <class E, class S>
    +
    +
    130 inline bool has_shape(const E& e, std::initializer_list<S> shape) noexcept
    +
    131 {
    +
    132 return e.shape().size() == shape.size()
    +
    133 && std::equal(e.shape().cbegin(), e.shape().cend(), shape.begin());
    +
    134 }
    +
    +
    135
    +
    144 template <class E, class S, class = typename std::enable_if_t<has_iterator_interface<S>::value>>
    +
    +
    145 inline bool has_shape(const E& e, const S& shape)
    +
    146 {
    +
    147 return e.shape().size() == shape.size()
    +
    148 && std::equal(e.shape().cbegin(), e.shape().cend(), shape.begin());
    +
    149 }
    +
    +
    150
    +
    151 /*************************
    +
    152 * initializer_dimension *
    +
    153 *************************/
    +
    154
    +
    155 namespace detail
    +
    156 {
    +
    157 template <class U>
    +
    158 struct initializer_depth_impl
    +
    159 {
    +
    160 static constexpr std::size_t value = 0;
    +
    161 };
    +
    162
    +
    163 template <class T>
    +
    164 struct initializer_depth_impl<std::initializer_list<T>>
    +
    165 {
    +
    166 static constexpr std::size_t value = 1 + initializer_depth_impl<T>::value;
    +
    167 };
    +
    168 }
    +
    169
    +
    170 template <class U>
    +
    + +
    172 {
    +
    173 static constexpr std::size_t value = detail::initializer_depth_impl<U>::value;
    +
    174 };
    +
    +
    175
    +
    176 /*********************
    +
    177 * initializer_shape *
    +
    178 *********************/
    +
    179
    +
    180 namespace detail
    +
    181 {
    +
    182 template <std::size_t I>
    +
    183 struct initializer_shape_impl
    +
    184 {
    +
    185 template <class T>
    +
    186 static constexpr std::size_t value(T t)
    +
    187 {
    +
    188 return t.size() == 0 ? 0 : initializer_shape_impl<I - 1>::value(*t.begin());
    +
    189 }
    +
    190 };
    +
    191
    +
    192 template <>
    +
    193 struct initializer_shape_impl<0>
    +
    194 {
    +
    195 template <class T>
    +
    196 static constexpr std::size_t value(T t)
    +
    197 {
    +
    198 return t.size();
    +
    199 }
    +
    200 };
    +
    201
    +
    202 template <class R, class U, std::size_t... I>
    +
    203 constexpr R initializer_shape(U t, std::index_sequence<I...>)
    +
    204 {
    +
    205 using size_type = typename R::value_type;
    +
    206 return {size_type(initializer_shape_impl<I>::value(t))...};
    +
    207 }
    +
    208 }
    +
    209
    +
    210 template <class R, class T>
    +
    211 constexpr R shape(T t)
    +
    212 {
    +
    213 return detail::initializer_shape<R, decltype(t)>(
    +
    214 t,
    +
    215 std::make_index_sequence<initializer_dimension<decltype(t)>::value>()
    +
    216 );
    +
    217 }
    +
    218
    +
    220 template <class R, class T, std::size_t N>
    +
    +
    221 xt::static_shape<R, N> shape(const T (&list)[N])
    +
    222 {
    +
    223 xt::static_shape<R, N> shape;
    +
    224 std::copy(std::begin(list), std::end(list), std::begin(shape));
    +
    225 return shape;
    +
    226 }
    +
    +
    227
    +
    228 /********************
    +
    229 * static_dimension *
    +
    230 ********************/
    +
    231
    +
    232 namespace detail
    +
    233 {
    +
    234 template <class T, class E = void>
    +
    235 struct static_dimension_impl
    +
    236 {
    +
    237 static constexpr std::ptrdiff_t value = -1;
    +
    238 };
    +
    239
    +
    240 template <class T>
    +
    241 struct static_dimension_impl<T, void_t<decltype(std::tuple_size<T>::value)>>
    +
    242 {
    +
    243 static constexpr std::ptrdiff_t value = static_cast<std::ptrdiff_t>(std::tuple_size<T>::value);
    +
    244 };
    +
    245 }
    +
    246
    +
    247 template <class S>
    +
    + +
    249 {
    +
    250 static constexpr std::ptrdiff_t value = detail::static_dimension_impl<S>::value;
    +
    251 };
    +
    +
    252
    +
    262 template <layout_type L, class S>
    +
    + +
    264 {
    +
    265 static constexpr std::ptrdiff_t static_dimension = xt::static_dimension<S>::value;
    +
    266 static constexpr bool is_any = static_dimension != -1 && static_dimension <= 1
    +
    267 && L != layout_type::dynamic;
    +
    268 static constexpr layout_type value = is_any ? layout_type::any : L;
    +
    269 };
    +
    +
    270
    +
    271 /*************************************
    +
    272 * promote_shape and promote_strides *
    +
    273 *************************************/
    +
    274
    +
    275 namespace detail
    +
    276 {
    +
    277 template <class T1, class T2>
    +
    278 constexpr std::common_type_t<T1, T2> imax(const T1& a, const T2& b)
    +
    279 {
    +
    280 return a > b ? a : b;
    +
    281 }
    +
    282
    +
    283 // Variadic meta-function returning the maximal size of std::arrays.
    +
    284 template <class... T>
    +
    285 struct max_array_size;
    +
    286
    +
    287 template <>
    +
    288 struct max_array_size<>
    +
    289 {
    +
    290 static constexpr std::size_t value = 0;
    +
    291 };
    +
    292
    +
    293 template <class T, class... Ts>
    +
    294 struct max_array_size<T, Ts...>
    +
    295 : std::integral_constant<std::size_t, imax(std::tuple_size<T>::value, max_array_size<Ts...>::value)>
    +
    296 {
    +
    297 };
    +
    298
    +
    299 // Broadcasting for fixed shapes
    +
    300 template <std::size_t IDX, std::size_t... X>
    +
    301 struct at
    +
    302 {
    +
    303 static constexpr std::size_t arr[sizeof...(X)] = {X...};
    +
    304 static constexpr std::size_t value = (IDX < sizeof...(X)) ? arr[IDX] : 0;
    +
    305 };
    +
    306
    +
    307 template <class S1, class S2>
    +
    308 struct broadcast_fixed_shape;
    +
    309
    +
    310 template <class IX, class A, class B>
    +
    311 struct broadcast_fixed_shape_impl;
    +
    312
    +
    313 template <std::size_t IX, class A, class B>
    +
    314 struct broadcast_fixed_shape_cmp_impl;
    +
    315
    +
    316 template <std::size_t JX, std::size_t... I, std::size_t... J>
    +
    317 struct broadcast_fixed_shape_cmp_impl<JX, fixed_shape<I...>, fixed_shape<J...>>
    +
    318 {
    +
    319 // We line the shapes up from the last index
    +
    320 // IX may underflow, thus being a very large number
    +
    321 static constexpr std::size_t IX = JX - (sizeof...(J) - sizeof...(I));
    +
    322
    +
    323 // Out of bounds access gives value 0
    +
    324 static constexpr std::size_t I_v = at<IX, I...>::value;
    +
    325 static constexpr std::size_t J_v = at<JX, J...>::value;
    +
    326
    +
    327 // we're statically checking if the broadcast shapes are either one on either of them or equal
    +
    328 static_assert(!I_v || I_v == 1 || J_v == 1 || J_v == I_v, "broadcast shapes do not match.");
    +
    329
    +
    330 static constexpr std::size_t ordinate = (I_v > J_v) ? I_v : J_v;
    +
    331 static constexpr bool value = (I_v == J_v);
    +
    332 };
    +
    333
    +
    334 template <std::size_t... JX, std::size_t... I, std::size_t... J>
    +
    335 struct broadcast_fixed_shape_impl<std::index_sequence<JX...>, fixed_shape<I...>, fixed_shape<J...>>
    +
    336 {
    +
    337 static_assert(sizeof...(J) >= sizeof...(I), "broadcast shapes do not match.");
    +
    338
    +
    339 using type = xt::fixed_shape<
    +
    340 broadcast_fixed_shape_cmp_impl<JX, fixed_shape<I...>, fixed_shape<J...>>::ordinate...>;
    +
    341 static constexpr bool value = xtl::conjunction<
    +
    342 broadcast_fixed_shape_cmp_impl<JX, fixed_shape<I...>, fixed_shape<J...>>...>::value;
    +
    343 };
    +
    344
    +
    345 /* broadcast_fixed_shape<fixed_shape<I...>, fixed_shape<J...>>
    +
    346 * Just like a call to broadcast_shape(cont S1& input, S2& output),
    +
    347 * except that the result shape is alised as type, and the returned
    +
    348 * bool is the member value. Asserts on an illegal broadcast, including
    +
    349 * the case where pack I is strictly longer than pack J. */
    +
    350
    +
    351 template <std::size_t... I, std::size_t... J>
    +
    352 struct broadcast_fixed_shape<fixed_shape<I...>, fixed_shape<J...>>
    +
    353 : broadcast_fixed_shape_impl<std::make_index_sequence<sizeof...(J)>, fixed_shape<I...>, fixed_shape<J...>>
    +
    354 {
    +
    355 };
    +
    356
    +
    357 // Simple is_array and only_array meta-functions
    +
    358 template <class S>
    +
    359 struct is_array
    +
    360 {
    +
    361 static constexpr bool value = false;
    +
    362 };
    +
    363
    +
    364 template <class T, std::size_t N>
    +
    365 struct is_array<std::array<T, N>>
    +
    366 {
    +
    367 static constexpr bool value = true;
    +
    368 };
    +
    369
    +
    370 template <class S>
    +
    371 struct is_fixed : std::false_type
    +
    372 {
    +
    373 };
    +
    374
    +
    375 template <std::size_t... N>
    +
    376 struct is_fixed<fixed_shape<N...>> : std::true_type
    +
    377 {
    +
    378 };
    +
    379
    +
    380 template <class S>
    +
    381 struct is_scalar_shape
    +
    382 {
    +
    383 static constexpr bool value = false;
    +
    384 };
    +
    385
    +
    386 template <class T>
    +
    387 struct is_scalar_shape<std::array<T, 0>>
    +
    388 {
    +
    389 static constexpr bool value = true;
    +
    390 };
    +
    391
    +
    392 template <class... S>
    +
    393 using only_array = xtl::conjunction<xtl::disjunction<is_array<S>, is_fixed<S>>...>;
    +
    394
    +
    395 // test that at least one argument is a fixed shape. If yes, then either argument has to be fixed or
    +
    396 // scalar
    +
    397 template <class... S>
    +
    398 using only_fixed = std::integral_constant<
    +
    399 bool,
    +
    400 xtl::disjunction<is_fixed<S>...>::value
    +
    401 && xtl::conjunction<xtl::disjunction<is_fixed<S>, is_scalar_shape<S>>...>::value>;
    +
    402
    +
    403 template <class... S>
    +
    404 using all_fixed = xtl::conjunction<is_fixed<S>...>;
    +
    405
    +
    406 // The promote_index meta-function returns std::vector<promoted_value_type> in the
    +
    407 // general case and an array of the promoted value type and maximal size if all
    +
    408 // arguments are of type std::array
    +
    409
    +
    410 template <class... S>
    +
    411 struct promote_array
    +
    412 {
    +
    413 using type = std::
    +
    414 array<typename std::common_type<typename S::value_type...>::type, max_array_size<S...>::value>;
    +
    415 };
    +
    416
    +
    417 template <>
    +
    418 struct promote_array<>
    +
    419 {
    +
    420 using type = std::array<std::size_t, 0>;
    +
    421 };
    +
    422
    +
    423 template <class S>
    +
    424 struct filter_scalar
    +
    425 {
    +
    426 using type = S;
    +
    427 };
    +
    428
    +
    429 template <class T>
    +
    430 struct filter_scalar<std::array<T, 0>>
    +
    431 {
    +
    432 using type = fixed_shape<1>;
    +
    433 };
    +
    434
    +
    435 template <class S>
    +
    436 using filter_scalar_t = typename filter_scalar<S>::type;
    +
    437
    +
    438 template <class... S>
    +
    439 struct promote_fixed : promote_fixed<filter_scalar_t<S>...>
    +
    440 {
    +
    441 };
    +
    442
    +
    443 template <std::size_t... I>
    +
    444 struct promote_fixed<fixed_shape<I...>>
    +
    445 {
    +
    446 using type = fixed_shape<I...>;
    +
    447 static constexpr bool value = true;
    +
    448 };
    +
    449
    +
    450 template <std::size_t... I, std::size_t... J, class... S>
    +
    451 struct promote_fixed<fixed_shape<I...>, fixed_shape<J...>, S...>
    +
    452 {
    +
    453 private:
    +
    454
    +
    455 using intermediate = std::conditional_t<
    +
    456 (sizeof...(I) > sizeof...(J)),
    +
    457 broadcast_fixed_shape<fixed_shape<J...>, fixed_shape<I...>>,
    +
    458 broadcast_fixed_shape<fixed_shape<I...>, fixed_shape<J...>>>;
    +
    459 using result = promote_fixed<typename intermediate::type, S...>;
    +
    460
    +
    461 public:
    +
    462
    +
    463 using type = typename result::type;
    +
    464 static constexpr bool value = xtl::conjunction<intermediate, result>::value;
    +
    465 };
    +
    466
    +
    467 template <bool all_index, bool all_array, class... S>
    +
    468 struct select_promote_index;
    +
    469
    +
    470 template <class... S>
    +
    471 struct select_promote_index<true, true, S...> : promote_fixed<S...>
    +
    472 {
    +
    473 };
    +
    474
    +
    475 template <>
    +
    476 struct select_promote_index<true, true>
    +
    477 {
    +
    478 // todo correct? used in xvectorize
    +
    479 using type = dynamic_shape<std::size_t>;
    +
    480 };
    +
    481
    +
    482 template <class... S>
    +
    483 struct select_promote_index<false, true, S...> : promote_array<S...>
    +
    484 {
    +
    485 };
    +
    486
    +
    487 template <class... S>
    +
    488 struct select_promote_index<false, false, S...>
    +
    489 {
    +
    490 using type = dynamic_shape<typename std::common_type<typename S::value_type...>::type>;
    +
    491 };
    +
    492
    +
    493 template <class... S>
    +
    494 struct promote_index : select_promote_index<only_fixed<S...>::value, only_array<S...>::value, S...>
    +
    495 {
    +
    496 };
    +
    497
    +
    498 template <class T>
    +
    499 struct index_from_shape_impl
    +
    500 {
    +
    501 using type = T;
    +
    502 };
    +
    503
    +
    504 template <std::size_t... N>
    +
    505 struct index_from_shape_impl<fixed_shape<N...>>
    +
    506 {
    +
    507 using type = std::array<std::size_t, sizeof...(N)>;
    +
    508 };
    +
    509 }
    +
    510
    +
    511 template <class... S>
    +
    + +
    513 {
    +
    514 using type = typename detail::promote_index<S...>::type;
    +
    515 };
    +
    +
    516
    +
    520 template <class... S>
    +
    521 using promote_shape_t = typename promote_shape<S...>::type;
    +
    522
    +
    523 template <class... S>
    +
    + +
    525 {
    +
    526 using type = typename detail::promote_index<S...>::type;
    +
    527 };
    +
    +
    528
    +
    532 template <class... S>
    +
    533 using promote_strides_t = typename promote_strides<S...>::type;
    +
    534
    +
    535 template <class S>
    +
    + +
    537 {
    +
    538 using type = typename detail::index_from_shape_impl<S>::type;
    +
    539 };
    +
    +
    540
    +
    544 template <class S>
    +
    545 using index_from_shape_t = typename index_from_shape<S>::type;
    +
    546
    +
    547 /**********************
    +
    548 * filter_fixed_shape *
    +
    549 **********************/
    +
    550
    +
    551 namespace detail
    +
    552 {
    +
    553 template <class S>
    +
    554 struct filter_fixed_shape_impl
    +
    555 {
    +
    556 using type = S;
    +
    557 };
    +
    558
    +
    559 template <std::size_t... N>
    +
    560 struct filter_fixed_shape_impl<fixed_shape<N...>>
    +
    561 {
    +
    562 using type = std::array<std::size_t, sizeof...(N)>;
    +
    563 };
    +
    564 }
    +
    565
    +
    566 template <class S>
    +
    +
    567 struct filter_fixed_shape : detail::filter_fixed_shape_impl<S>
    +
    568 {
    +
    569 };
    +
    +
    570
    +
    574 template <class S>
    +
    575 using filter_fixed_shape_t = typename filter_fixed_shape<S>::type;
    +
    576}
    +
    577
    +
    578#endif
    +
    Fixed shape implementation for compile time defined arrays.
    +
    bool same_shape(const S1 &s1, const S2 &s2) noexcept
    Check if two objects have the same shape.
    Definition xshape.hpp:112
    +
    bool has_shape(const E &e, std::initializer_list< S > shape) noexcept
    Check if an object has a certain shape.
    Definition xshape.hpp:130
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + + + + +
    Compute a layout based on a layout and a shape type.
    Definition xshape.hpp:264
    + + +
    +
    + + + + diff --git a/xslice_8hpp_source.html b/xslice_8hpp_source.html new file mode 100644 index 000000000..cc0c4d8f3 --- /dev/null +++ b/xslice_8hpp_source.html @@ -0,0 +1,1758 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xslice.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xslice.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_SLICE_HPP
    +
    11#define XTENSOR_SLICE_HPP
    +
    12
    +
    13#include <cstddef>
    +
    14#include <map>
    +
    15#include <type_traits>
    +
    16#include <utility>
    +
    17
    +
    18#include <xtl/xtype_traits.hpp>
    +
    19
    +
    20#include "xstorage.hpp"
    +
    21#include "xtensor_config.hpp"
    +
    22#include "xutils.hpp"
    +
    23
    +
    24#ifndef XTENSOR_CONSTEXPR
    +
    25#if (defined(_MSC_VER) || __GNUC__ < 8)
    +
    26#define XTENSOR_CONSTEXPR inline
    +
    27#define XTENSOR_GLOBAL_CONSTEXPR static const
    +
    28#else
    +
    29#define XTENSOR_CONSTEXPR constexpr
    +
    30#define XTENSOR_GLOBAL_CONSTEXPR constexpr
    +
    31#endif
    +
    32#endif
    +
    33
    +
    34namespace xt
    +
    35{
    +
    36
    +
    37 /**********************
    +
    38 * xslice declaration *
    +
    39 **********************/
    +
    40
    +
    41 template <class D>
    +
    +
    42 class xslice
    +
    43 {
    +
    44 public:
    +
    45
    +
    46 using derived_type = D;
    +
    47
    +
    48 derived_type& derived_cast() noexcept;
    +
    49 const derived_type& derived_cast() const noexcept;
    +
    50
    +
    51 protected:
    +
    52
    +
    53 xslice() = default;
    +
    54 ~xslice() = default;
    +
    55
    +
    56 xslice(const xslice&) = default;
    +
    57 xslice& operator=(const xslice&) = default;
    +
    58
    +
    59 xslice(xslice&&) = default;
    +
    60 xslice& operator=(xslice&&) = default;
    +
    61 };
    +
    +
    62
    +
    63 template <class S>
    +
    64 using is_xslice = std::is_base_of<xslice<S>, S>;
    +
    65
    +
    66 template <class E, class R = void>
    +
    67 using disable_xslice = typename std::enable_if<!is_xslice<E>::value, R>::type;
    +
    68
    +
    69 template <class... E>
    +
    70 using has_xslice = xtl::disjunction<is_xslice<E>...>;
    +
    71
    +
    72 /**************
    +
    73 * slice tags *
    +
    74 **************/
    +
    75
    +
    76#define DEFINE_TAG_CONVERSION(NAME) \
    +
    77 template <class T> \
    +
    78 XTENSOR_CONSTEXPR NAME convert() const noexcept \
    +
    79 { \
    +
    80 return NAME(); \
    +
    81 }
    +
    82
    +
    +
    83 struct xall_tag
    +
    84 {
    +
    85 DEFINE_TAG_CONVERSION(xall_tag)
    +
    86 };
    +
    +
    87
    +
    + +
    89 {
    +
    90 DEFINE_TAG_CONVERSION(xnewaxis_tag)
    +
    91 };
    +
    +
    92
    +
    + +
    94 {
    +
    95 DEFINE_TAG_CONVERSION(xellipsis_tag)
    +
    96 };
    +
    +
    97
    +
    98#undef DEFINE_TAG_CONVERSION
    +
    99
    +
    100 /**********************
    +
    101 * xrange declaration *
    +
    102 **********************/
    +
    103
    +
    104 template <class T>
    +
    +
    105 class xrange : public xslice<xrange<T>>
    +
    106 {
    +
    107 public:
    +
    108
    +
    109 using size_type = T;
    +
    110 using self_type = xrange<T>;
    +
    111
    +
    112 xrange() = default;
    +
    113 xrange(size_type start_val, size_type stop_val) noexcept;
    +
    114
    +
    115 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    116 operator xrange<S>() const noexcept;
    +
    117
    +
    118 // Same as implicit conversion operator but more convenient to call
    +
    119 // from a variant visitor
    +
    120 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    121 xrange<S> convert() const noexcept;
    +
    122
    +
    123 size_type operator()(size_type i) const noexcept;
    +
    124
    +
    125 size_type size() const noexcept;
    +
    126 size_type step_size() const noexcept;
    +
    127 size_type step_size(std::size_t i, std::size_t n = 1) const noexcept;
    +
    128 size_type revert_index(std::size_t i) const noexcept;
    +
    129
    +
    130 bool contains(size_type i) const noexcept;
    +
    131
    +
    132 bool operator==(const self_type& rhs) const noexcept;
    +
    133 bool operator!=(const self_type& rhs) const noexcept;
    +
    134
    +
    135 private:
    +
    136
    +
    137 size_type m_start;
    +
    138 size_type m_size;
    +
    139
    +
    140 template <class S>
    +
    141 friend class xrange;
    +
    142 };
    +
    +
    143
    +
    144 /******************************
    +
    145 * xstepped_range declaration *
    +
    146 ******************************/
    +
    147
    +
    148 template <class T>
    +
    +
    149 class xstepped_range : public xslice<xstepped_range<T>>
    +
    150 {
    +
    151 public:
    +
    152
    +
    153 using size_type = T;
    + +
    155
    +
    156 xstepped_range() = default;
    +
    157 xstepped_range(size_type start_val, size_type stop_val, size_type step) noexcept;
    +
    158
    +
    159 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    160 operator xstepped_range<S>() const noexcept;
    +
    161
    +
    162 // Same as implicit conversion operator but more convenient to call
    +
    163 // from a variant visitor
    +
    164 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    165 xstepped_range<S> convert() const noexcept;
    +
    166
    +
    167 size_type operator()(size_type i) const noexcept;
    +
    168
    +
    169 size_type size() const noexcept;
    +
    170 size_type step_size() const noexcept;
    +
    171 size_type step_size(std::size_t i, std::size_t n = 1) const noexcept;
    +
    172 size_type revert_index(std::size_t i) const noexcept;
    +
    173
    +
    174 bool contains(size_type i) const noexcept;
    +
    175
    +
    176 bool operator==(const self_type& rhs) const noexcept;
    +
    177 bool operator!=(const self_type& rhs) const noexcept;
    +
    178
    +
    179 private:
    +
    180
    +
    181 size_type m_start;
    +
    182 size_type m_size;
    +
    183 size_type m_step;
    +
    184
    +
    185 template <class S>
    +
    186 friend class xstepped_range;
    +
    187 };
    +
    +
    188
    +
    189 /********************
    +
    190 * xall declaration *
    +
    191 ********************/
    +
    192
    +
    193 template <class T>
    +
    +
    194 class xall : public xslice<xall<T>>
    +
    195 {
    +
    196 public:
    +
    197
    +
    198 using size_type = T;
    +
    199 using self_type = xall<T>;
    +
    200
    +
    201 xall() = default;
    +
    202 explicit xall(size_type size) noexcept;
    +
    203
    +
    204 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    205 operator xall<S>() const noexcept;
    +
    206
    +
    207 // Same as implicit conversion operator but more convenient to call
    +
    208 // from a variant visitor
    +
    209 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    210 xall<S> convert() const noexcept;
    +
    211
    +
    212 size_type operator()(size_type i) const noexcept;
    +
    213
    +
    214 size_type size() const noexcept;
    +
    215 size_type step_size() const noexcept;
    +
    216 size_type step_size(std::size_t i, std::size_t n = 1) const noexcept;
    +
    217 size_type revert_index(std::size_t i) const noexcept;
    +
    218
    +
    219 bool contains(size_type i) const noexcept;
    +
    220
    +
    221 bool operator==(const self_type& rhs) const noexcept;
    +
    222 bool operator!=(const self_type& rhs) const noexcept;
    +
    223
    +
    224 private:
    +
    225
    +
    226 size_type m_size;
    +
    227 };
    +
    +
    228
    +
    +
    234 inline auto all() noexcept
    +
    235 {
    +
    236 return xall_tag();
    +
    237 }
    +
    +
    238
    +
    +
    255 inline auto ellipsis() noexcept
    +
    256 {
    +
    257 return xellipsis_tag();
    +
    258 }
    +
    +
    259
    +
    260 /************************
    +
    261 * xnewaxis declaration *
    +
    262 ************************/
    +
    263
    +
    264 template <class T>
    +
    +
    265 class xnewaxis : public xslice<xnewaxis<T>>
    +
    266 {
    +
    267 public:
    +
    268
    +
    269 using size_type = T;
    +
    270 using self_type = xnewaxis<T>;
    +
    271
    +
    272 xnewaxis() = default;
    +
    273
    +
    274 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    275 operator xnewaxis<S>() const noexcept;
    +
    276
    +
    277 // Same as implicit conversion operator but more convenient to call
    +
    278 // from a variant visitor
    +
    279 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    280 xnewaxis<S> convert() const noexcept;
    +
    281
    +
    282 size_type operator()(size_type i) const noexcept;
    +
    283
    +
    284 size_type size() const noexcept;
    +
    285 size_type step_size() const noexcept;
    +
    286 size_type step_size(std::size_t i, std::size_t n = 1) const noexcept;
    +
    287 size_type revert_index(std::size_t i) const noexcept;
    +
    288
    +
    289 bool contains(size_type i) const noexcept;
    +
    290
    +
    291 bool operator==(const self_type& rhs) const noexcept;
    +
    292 bool operator!=(const self_type& rhs) const noexcept;
    +
    293 };
    +
    +
    294
    +
    +
    300 inline auto newaxis() noexcept
    +
    301 {
    +
    302 return xnewaxis_tag();
    +
    303 }
    +
    +
    304
    +
    305 /***************************
    +
    306 * xkeep_slice declaration *
    +
    307 ***************************/
    +
    308
    +
    309 template <class T>
    +
    310 class xkeep_slice;
    +
    311
    +
    312 namespace detail
    +
    313 {
    +
    314 template <class T>
    +
    315 struct is_xkeep_slice : std::false_type
    +
    316 {
    +
    317 };
    +
    318
    +
    319 template <class T>
    +
    320 struct is_xkeep_slice<xkeep_slice<T>> : std::true_type
    +
    321 {
    +
    322 };
    +
    323
    +
    324 template <class T>
    +
    325 using disable_xkeep_slice_t = std::enable_if_t<!is_xkeep_slice<std::decay_t<T>>::value, void>;
    +
    326
    +
    327 template <class T>
    +
    328 using enable_xkeep_slice_t = std::enable_if_t<is_xkeep_slice<std::decay_t<T>>::value, void>;
    +
    329 }
    +
    330
    +
    331 template <class T>
    +
    +
    332 class xkeep_slice : public xslice<xkeep_slice<T>>
    +
    333 {
    +
    334 public:
    +
    335
    + +
    337 using size_type = typename container_type::value_type;
    + +
    339
    +
    340 template <class C, typename = detail::disable_xkeep_slice_t<C>>
    +
    341 explicit xkeep_slice(C& cont);
    +
    342 explicit xkeep_slice(container_type&& cont);
    +
    343
    +
    344 template <class S>
    +
    345 xkeep_slice(std::initializer_list<S> t);
    +
    346
    +
    347 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    348 operator xkeep_slice<S>() const noexcept;
    +
    349
    +
    350 // Same as implicit conversion operator but more convenient to call
    +
    351 // from a variant visitor
    +
    352 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    353 xkeep_slice<S> convert() const noexcept;
    +
    354
    +
    355 size_type operator()(size_type i) const noexcept;
    +
    356 size_type size() const noexcept;
    +
    357
    +
    358 void normalize(std::size_t s);
    +
    359
    +
    360 size_type step_size(std::size_t i, std::size_t n = 1) const noexcept;
    +
    361 size_type revert_index(std::size_t i) const;
    +
    362
    +
    363 bool contains(size_type i) const noexcept;
    +
    364
    +
    365 bool operator==(const self_type& rhs) const noexcept;
    +
    366 bool operator!=(const self_type& rhs) const noexcept;
    +
    367
    +
    368 private:
    +
    369
    +
    370 xkeep_slice() = default;
    +
    371
    +
    372 container_type m_indices;
    +
    373 container_type m_raw_indices;
    +
    374
    +
    375 template <class S>
    +
    376 friend class xkeep_slice;
    +
    377 };
    +
    +
    378
    +
    379 namespace detail
    +
    380 {
    +
    381 template <class T>
    +
    382 using disable_integral_keep = std::enable_if_t<
    +
    383 !xtl::is_integral<std::decay_t<T>>::value,
    + +
    385
    +
    386 template <class T, class R>
    +
    387 using enable_integral_keep = std::enable_if_t<xtl::is_integral<T>::value, xkeep_slice<R>>;
    +
    388 }
    +
    389
    +
    404 template <class T>
    +
    +
    405 inline detail::disable_integral_keep<T> keep(T&& indices)
    +
    406 {
    +
    407 return xkeep_slice<typename std::decay_t<T>::value_type>(std::forward<T>(indices));
    +
    408 }
    +
    +
    409
    +
    410 template <class R = std::ptrdiff_t, class T>
    +
    411 inline detail::enable_integral_keep<T, R> keep(T i)
    +
    412 {
    +
    413 using slice_type = xkeep_slice<R>;
    +
    414 using container_type = typename slice_type::container_type;
    +
    415 container_type tmp = {static_cast<R>(i)};
    +
    416 return slice_type(std::move(tmp));
    +
    417 }
    +
    418
    +
    419 template <class R = std::ptrdiff_t, class Arg0, class Arg1, class... Args>
    +
    420 inline xkeep_slice<R> keep(Arg0 i0, Arg1 i1, Args... args)
    +
    421 {
    +
    422 using slice_type = xkeep_slice<R>;
    +
    423 using container_type = typename slice_type::container_type;
    +
    424 container_type tmp = {static_cast<R>(i0), static_cast<R>(i1), static_cast<R>(args)...};
    +
    425 return slice_type(std::move(tmp));
    +
    426 }
    +
    427
    +
    428 /***************************
    +
    429 * xdrop_slice declaration *
    +
    430 ***************************/
    +
    431
    +
    432 template <class T>
    +
    433 class xdrop_slice;
    +
    434
    +
    435 namespace detail
    +
    436 {
    +
    437 template <class T>
    +
    438 struct is_xdrop_slice : std::false_type
    +
    439 {
    +
    440 };
    +
    441
    +
    442 template <class T>
    +
    443 struct is_xdrop_slice<xdrop_slice<T>> : std::true_type
    +
    444 {
    +
    445 };
    +
    446
    +
    447 template <class T>
    +
    448 using disable_xdrop_slice_t = std::enable_if_t<!is_xdrop_slice<std::decay_t<T>>::value, void>;
    +
    449
    +
    450 template <class T>
    +
    451 using enable_xdrop_slice_t = std::enable_if_t<is_xdrop_slice<std::decay_t<T>>::value, void>;
    +
    452 }
    +
    453
    +
    454 template <class T>
    +
    +
    455 class xdrop_slice : public xslice<xdrop_slice<T>>
    +
    456 {
    +
    457 public:
    +
    458
    + +
    460 using size_type = typename container_type::value_type;
    + +
    462
    +
    463 template <class C, typename = detail::disable_xdrop_slice_t<C>>
    +
    464 explicit xdrop_slice(C& cont);
    +
    465 explicit xdrop_slice(container_type&& cont);
    +
    466
    +
    467 template <class S>
    +
    468 xdrop_slice(std::initializer_list<S> t);
    +
    469
    +
    470 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    471 operator xdrop_slice<S>() const noexcept;
    +
    472
    +
    473 // Same as implicit conversion operator but more convenient to call
    +
    474 // from a variant visitor
    +
    475 template <class S, typename = std::enable_if_t<std::is_convertible<S, T>::value, void>>
    +
    476 xdrop_slice<S> convert() const noexcept;
    +
    477
    +
    478 size_type operator()(size_type i) const noexcept;
    +
    479 size_type size() const noexcept;
    +
    480
    +
    481 void normalize(std::size_t s);
    +
    482
    +
    483 size_type step_size(std::size_t i, std::size_t n = 1) const noexcept;
    +
    484 size_type revert_index(std::size_t i) const;
    +
    485
    +
    486 bool contains(size_type i) const noexcept;
    +
    487
    +
    488 bool operator==(const self_type& rhs) const noexcept;
    +
    489 bool operator!=(const self_type& rhs) const noexcept;
    +
    490
    +
    491 private:
    +
    492
    +
    493 xdrop_slice() = default;
    +
    494
    +
    495 container_type m_indices;
    +
    496 container_type m_raw_indices;
    +
    497 std::map<size_type, size_type> m_inc;
    +
    498 size_type m_size;
    +
    499
    +
    500 template <class S>
    +
    501 friend class xdrop_slice;
    +
    502 };
    +
    +
    503
    +
    504 namespace detail
    +
    505 {
    +
    506 template <class T>
    +
    507 using disable_integral_drop = std::enable_if_t<
    +
    508 !xtl::is_integral<std::decay_t<T>>::value,
    + +
    510
    +
    511 template <class T, class R>
    +
    512 using enable_integral_drop = std::enable_if_t<xtl::is_integral<T>::value, xdrop_slice<R>>;
    +
    513 }
    +
    514
    +
    528 template <class T>
    +
    +
    529 inline detail::disable_integral_drop<T> drop(T&& indices)
    +
    530 {
    +
    531 return xdrop_slice<typename std::decay_t<T>::value_type>(std::forward<T>(indices));
    +
    532 }
    +
    +
    533
    +
    534 template <class R = std::ptrdiff_t, class T>
    +
    535 inline detail::enable_integral_drop<T, R> drop(T i)
    +
    536 {
    +
    537 using slice_type = xdrop_slice<R>;
    +
    538 using container_type = typename slice_type::container_type;
    +
    539 container_type tmp = {static_cast<R>(i)};
    +
    540 return slice_type(std::move(tmp));
    +
    541 }
    +
    542
    +
    543 template <class R = std::ptrdiff_t, class Arg0, class Arg1, class... Args>
    +
    544 inline xdrop_slice<R> drop(Arg0 i0, Arg1 i1, Args... args)
    +
    545 {
    +
    546 using slice_type = xdrop_slice<R>;
    +
    547 using container_type = typename slice_type::container_type;
    +
    548 container_type tmp = {static_cast<R>(i0), static_cast<R>(i1), static_cast<R>(args)...};
    +
    549 return slice_type(std::move(tmp));
    +
    550 }
    +
    551
    +
    552 /******************************
    +
    553 * xrange_adaptor declaration *
    +
    554 ******************************/
    +
    555
    +
    556 template <class A, class B = A, class C = A>
    +
    + +
    558 {
    +
    559 xrange_adaptor(A start_val, B stop_val, C step)
    +
    560 : m_start(start_val)
    +
    561 , m_stop(stop_val)
    +
    562 , m_step(step)
    +
    563 {
    +
    564 }
    +
    565
    +
    566 template <class MI = A, class MA = B, class STEP = C>
    +
    567 inline std::enable_if_t<
    +
    568 xtl::is_integral<MI>::value && xtl::is_integral<MA>::value && xtl::is_integral<STEP>::value,
    + +
    570 get(std::size_t size) const
    +
    571 {
    +
    572 return get_stepped_range(m_start, m_stop, m_step, size);
    +
    573 }
    +
    574
    +
    575 template <class MI = A, class MA = B, class STEP = C>
    +
    576 inline std::enable_if_t<
    +
    577 !xtl::is_integral<MI>::value && xtl::is_integral<MA>::value && xtl::is_integral<STEP>::value,
    + +
    579 get(std::size_t size) const
    +
    580 {
    +
    581 return get_stepped_range(m_step > 0 ? 0 : static_cast<std::ptrdiff_t>(size) - 1, m_stop, m_step, size);
    +
    582 }
    +
    583
    +
    584 template <class MI = A, class MA = B, class STEP = C>
    +
    585 inline std::enable_if_t<
    +
    586 xtl::is_integral<MI>::value && !xtl::is_integral<MA>::value && xtl::is_integral<STEP>::value,
    + +
    588 get(std::size_t size) const
    +
    589 {
    +
    590 auto sz = static_cast<std::ptrdiff_t>(size);
    +
    591 return get_stepped_range(m_start, m_step > 0 ? sz : -(sz + 1), m_step, size);
    +
    592 }
    +
    593
    +
    594 template <class MI = A, class MA = B, class STEP = C>
    +
    595 inline std::enable_if_t<
    +
    596 xtl::is_integral<MI>::value && xtl::is_integral<MA>::value && !xtl::is_integral<STEP>::value,
    + +
    598 get(std::size_t size) const
    +
    599 {
    +
    600 return xrange<std::ptrdiff_t>(normalize(m_start, size), normalize(m_stop, size));
    +
    601 }
    +
    602
    +
    603 template <class MI = A, class MA = B, class STEP = C>
    +
    604 inline std::enable_if_t<
    +
    605 !xtl::is_integral<MI>::value && !xtl::is_integral<MA>::value && xtl::is_integral<STEP>::value,
    + +
    607 get(std::size_t size) const
    +
    608 {
    +
    609 std::ptrdiff_t start = m_step >= 0 ? 0 : static_cast<std::ptrdiff_t>(size) - 1;
    +
    610 std::ptrdiff_t stop = m_step >= 0 ? static_cast<std::ptrdiff_t>(size) : -1;
    +
    611 return xstepped_range<std::ptrdiff_t>(start, stop, m_step);
    +
    612 }
    +
    613
    +
    614 template <class MI = A, class MA = B, class STEP = C>
    +
    615 inline std::enable_if_t<
    +
    616 xtl::is_integral<MI>::value && !xtl::is_integral<MA>::value && !xtl::is_integral<STEP>::value,
    + +
    618 get(std::size_t size) const
    +
    619 {
    +
    620 return xrange<std::ptrdiff_t>(normalize(m_start, size), static_cast<std::ptrdiff_t>(size));
    +
    621 }
    +
    622
    +
    623 template <class MI = A, class MA = B, class STEP = C>
    +
    624 inline std::enable_if_t<
    +
    625 !xtl::is_integral<MI>::value && xtl::is_integral<MA>::value && !xtl::is_integral<STEP>::value,
    + +
    627 get(std::size_t size) const
    +
    628 {
    +
    629 return xrange<std::ptrdiff_t>(0, normalize(m_stop, size));
    +
    630 }
    +
    631
    +
    632 template <class MI = A, class MA = B, class STEP = C>
    +
    633 inline std::enable_if_t<
    +
    634 !xtl::is_integral<MI>::value && !xtl::is_integral<MA>::value && !xtl::is_integral<STEP>::value,
    + +
    636 get(std::size_t size) const
    +
    637 {
    +
    638 return xall<std::ptrdiff_t>(static_cast<std::ptrdiff_t>(size));
    +
    639 }
    +
    640
    +
    641 A start() const
    +
    642 {
    +
    643 return m_start;
    +
    644 }
    +
    645
    +
    646 B stop() const
    +
    647 {
    +
    648 return m_stop;
    +
    649 }
    +
    650
    +
    651 C step() const
    +
    652 {
    +
    653 return m_step;
    +
    654 }
    +
    655
    +
    656 private:
    +
    657
    +
    658 static auto normalize(std::ptrdiff_t val, std::size_t ssize)
    +
    659 {
    +
    660 std::ptrdiff_t size = static_cast<std::ptrdiff_t>(ssize);
    +
    661 val = (val >= 0) ? val : val + size;
    +
    662 return (std::max)(std::ptrdiff_t(0), (std::min)(size, val));
    +
    663 }
    +
    664
    +
    665 static auto
    +
    666 get_stepped_range(std::ptrdiff_t start, std::ptrdiff_t stop, std::ptrdiff_t step, std::size_t ssize)
    +
    667 {
    +
    668 std::ptrdiff_t size = static_cast<std::ptrdiff_t>(ssize);
    +
    669 start = (start >= 0) ? start : start + size;
    +
    670 stop = (stop >= 0) ? stop : stop + size;
    +
    671
    +
    672 if (step > 0)
    +
    673 {
    +
    674 start = (std::max)(std::ptrdiff_t(0), (std::min)(size, start));
    +
    675 stop = (std::max)(std::ptrdiff_t(0), (std::min)(size, stop));
    +
    676 }
    +
    677 else
    +
    678 {
    +
    679 start = (std::max)(std::ptrdiff_t(-1), (std::min)(size - 1, start));
    +
    680 stop = (std::max)(std::ptrdiff_t(-1), (std::min)(size - 1, stop));
    +
    681 }
    +
    682
    +
    683 return xstepped_range<std::ptrdiff_t>(start, stop, step);
    +
    684 }
    +
    685
    +
    686 A m_start;
    +
    687 B m_stop;
    +
    688 C m_step;
    +
    689 };
    +
    +
    690
    +
    691 /*******************************
    +
    692 * Placeholders and rangemaker *
    +
    693 *******************************/
    +
    694
    +
    695 namespace placeholders
    +
    696 {
    +
    697 // xtensor universal placeholder
    +
    698 struct xtuph
    +
    699 {
    +
    700 };
    +
    701
    +
    702 template <class... Args>
    +
    703 struct rangemaker
    +
    704 {
    +
    705 std::ptrdiff_t rng[3]; // = { 0, 0, 0 };
    +
    706 };
    +
    707
    +
    708 XTENSOR_CONSTEXPR xtuph get_tuph_or_val(std::ptrdiff_t /*val*/, std::true_type)
    +
    709 {
    +
    710 return xtuph();
    +
    711 }
    +
    712
    +
    713 XTENSOR_CONSTEXPR std::ptrdiff_t get_tuph_or_val(std::ptrdiff_t val, std::false_type)
    +
    714 {
    +
    715 return val;
    +
    716 }
    +
    717
    +
    718 template <class A, class B, class C>
    +
    719 struct rangemaker<A, B, C>
    +
    720 {
    +
    721 XTENSOR_CONSTEXPR operator xrange_adaptor<A, B, C>()
    +
    722 {
    +
    723 return xrange_adaptor<A, B, C>(
    +
    724 {get_tuph_or_val(rng[0], std::is_same<A, xtuph>()),
    +
    725 get_tuph_or_val(rng[1], std::is_same<B, xtuph>()),
    +
    726 get_tuph_or_val(rng[2], std::is_same<C, xtuph>())}
    +
    727 );
    +
    728 }
    +
    729
    +
    730 std::ptrdiff_t rng[3]; // = { 0, 0, 0 };
    +
    731 };
    +
    732
    +
    733 template <class A, class B>
    +
    734 struct rangemaker<A, B>
    +
    735 {
    +
    736 XTENSOR_CONSTEXPR operator xrange_adaptor<A, B, xt::placeholders::xtuph>()
    +
    737 {
    +
    738 return xrange_adaptor<A, B, xt::placeholders::xtuph>(
    +
    739 {get_tuph_or_val(rng[0], std::is_same<A, xtuph>()),
    +
    740 get_tuph_or_val(rng[1], std::is_same<B, xtuph>()),
    +
    741 xtuph()}
    +
    742 );
    +
    743 }
    +
    744
    +
    745 std::ptrdiff_t rng[3]; // = { 0, 0, 0 };
    +
    746 };
    +
    747
    +
    748 template <class... OA>
    +
    749 XTENSOR_CONSTEXPR auto operator|(const rangemaker<OA...>& rng, const std::ptrdiff_t& t)
    +
    750 {
    +
    751 auto nrng = rangemaker<OA..., std::ptrdiff_t>({rng.rng[0], rng.rng[1], rng.rng[2]});
    +
    752 nrng.rng[sizeof...(OA)] = t;
    +
    753 return nrng;
    +
    754 }
    +
    755
    +
    756 template <class... OA>
    +
    757 XTENSOR_CONSTEXPR auto operator|(const rangemaker<OA...>& rng, const xt::placeholders::xtuph& /*t*/)
    +
    758 {
    +
    759 auto nrng = rangemaker<OA..., xt::placeholders::xtuph>({rng.rng[0], rng.rng[1], rng.rng[2]});
    +
    760 return nrng;
    +
    761 }
    +
    762
    +
    763 XTENSOR_GLOBAL_CONSTEXPR xtuph _{};
    +
    764 XTENSOR_GLOBAL_CONSTEXPR rangemaker<> _r = rangemaker<>({0, 0, 0});
    +
    765 XTENSOR_GLOBAL_CONSTEXPR xall_tag _a{};
    +
    766 XTENSOR_GLOBAL_CONSTEXPR xnewaxis_tag _n{};
    +
    767 XTENSOR_GLOBAL_CONSTEXPR xellipsis_tag _e{};
    +
    768 }
    +
    769
    +
    770 inline auto xnone()
    +
    771 {
    +
    772 return placeholders::xtuph();
    +
    773 }
    +
    774
    +
    775 namespace detail
    +
    776 {
    +
    777 template <class T, class E = void>
    +
    778 struct cast_if_integer
    +
    779 {
    +
    780 using type = T;
    +
    781
    +
    782 type operator()(T t)
    +
    783 {
    +
    784 return t;
    +
    785 }
    +
    786 };
    +
    787
    +
    788 template <class T>
    +
    789 struct cast_if_integer<T, std::enable_if_t<xtl::is_integral<T>::value>>
    +
    790 {
    +
    791 using type = std::ptrdiff_t;
    +
    792
    +
    793 type operator()(T t)
    +
    794 {
    +
    795 return static_cast<type>(t);
    +
    796 }
    +
    797 };
    +
    798
    +
    799 template <class T>
    +
    800 using cast_if_integer_t = typename cast_if_integer<T>::type;
    +
    801 }
    +
    802
    +
    817 template <class A, class B>
    +
    +
    818 inline auto range(A start_val, B stop_val)
    +
    819 {
    +
    820 return xrange_adaptor<detail::cast_if_integer_t<A>, detail::cast_if_integer_t<B>, placeholders::xtuph>(
    +
    821 detail::cast_if_integer<A>{}(start_val),
    +
    822 detail::cast_if_integer<B>{}(stop_val),
    +
    823 placeholders::xtuph()
    +
    824 );
    +
    825 }
    +
    +
    826
    +
    838 template <class A, class B, class C>
    +
    +
    839 inline auto range(A start_val, B stop_val, C step)
    +
    840 {
    +
    841 return xrange_adaptor<detail::cast_if_integer_t<A>, detail::cast_if_integer_t<B>, detail::cast_if_integer_t<C>>(
    +
    842 detail::cast_if_integer<A>{}(start_val),
    +
    843 detail::cast_if_integer<B>{}(stop_val),
    +
    844 detail::cast_if_integer<C>{}(step)
    +
    845 );
    +
    846 }
    +
    +
    847
    +
    848 /******************************************************
    +
    849 * homogeneous get_size for integral types and slices *
    +
    850 ******************************************************/
    +
    851
    +
    852 template <class S>
    +
    853 inline disable_xslice<S, std::size_t> get_size(const S&) noexcept
    +
    854 {
    +
    855 return 1;
    +
    856 }
    +
    857
    +
    858 template <class S>
    +
    859 inline auto get_size(const xslice<S>& slice) noexcept
    +
    860 {
    +
    861 return slice.derived_cast().size();
    +
    862 }
    +
    863
    +
    864 /*******************************************************
    +
    865 * homogeneous step_size for integral types and slices *
    +
    866 *******************************************************/
    +
    867
    +
    868 template <class S>
    +
    869 inline disable_xslice<S, std::size_t> step_size(const S&, std::size_t) noexcept
    +
    870 {
    +
    871 return 0;
    +
    872 }
    +
    873
    +
    874 template <class S>
    +
    875 inline disable_xslice<S, std::size_t> step_size(const S&, std::size_t, std::size_t) noexcept
    +
    876 {
    +
    877 return 0;
    +
    878 }
    +
    879
    +
    880 template <class S>
    +
    881 inline auto step_size(const xslice<S>& slice, std::size_t idx) noexcept
    +
    882 {
    +
    883 return slice.derived_cast().step_size(idx);
    +
    884 }
    +
    885
    +
    886 template <class S>
    +
    887 inline auto step_size(const xslice<S>& slice, std::size_t idx, std::size_t n) noexcept
    +
    888 {
    +
    889 return slice.derived_cast().step_size(idx, n);
    +
    890 }
    +
    891
    +
    892 /*********************************************
    +
    893 * homogeneous value for integral and slices *
    +
    894 *********************************************/
    +
    895
    +
    896 template <class S, class I>
    +
    897 inline disable_xslice<S, std::size_t> value(const S& s, I) noexcept
    +
    898 {
    +
    899 return static_cast<std::size_t>(s);
    +
    900 }
    +
    901
    +
    902 template <class S, class I>
    +
    903 inline auto value(const xslice<S>& slice, I i) noexcept
    +
    904 {
    +
    905 using ST = typename S::size_type;
    +
    906 return slice.derived_cast()(static_cast<ST>(i));
    +
    907 }
    +
    908
    +
    909 /****************************************
    +
    910 * homogeneous get_slice_implementation *
    +
    911 ****************************************/
    +
    912
    +
    913 namespace detail
    +
    914 {
    +
    915 template <class T>
    +
    916 struct slice_implementation_getter
    +
    917 {
    +
    918 template <class E, class SL>
    +
    919 inline decltype(auto) operator()(E& e, SL&& slice, std::size_t index) const
    +
    920 {
    +
    921 return get_slice(e, std::forward<SL>(slice), index, xtl::is_signed<std::decay_t<SL>>());
    +
    922 }
    +
    923
    +
    924 private:
    +
    925
    +
    926 template <class E, class SL>
    +
    927 inline decltype(auto) get_slice(E&, SL&& slice, std::size_t, std::false_type) const
    +
    928 {
    +
    929 return std::forward<SL>(slice);
    +
    930 }
    +
    931
    +
    932 template <class E, class SL>
    +
    933 inline decltype(auto) get_slice(E& e, SL&& slice, std::size_t index, std::true_type) const
    +
    934 {
    +
    935 using int_type = std::decay_t<SL>;
    +
    936 return slice < int_type(0) ? slice + static_cast<std::ptrdiff_t>(e.shape(index))
    +
    937 : std::ptrdiff_t(slice);
    +
    938 }
    +
    939 };
    +
    940
    +
    941 struct keep_drop_getter
    +
    942 {
    +
    943 template <class E, class SL>
    +
    944 inline decltype(auto) operator()(E& e, SL&& slice, std::size_t index) const
    +
    945 {
    +
    946 slice.normalize(e.shape()[index]);
    +
    947 return std::forward<SL>(slice);
    +
    948 }
    +
    949
    +
    950 template <class E, class SL>
    +
    951 inline auto operator()(E& e, const SL& slice, std::size_t index) const
    +
    952 {
    +
    953 return this->operator()(e, SL(slice), index);
    +
    954 }
    +
    955 };
    +
    956
    +
    957 template <class T>
    +
    958 struct slice_implementation_getter<xkeep_slice<T>> : keep_drop_getter
    +
    959 {
    +
    960 };
    +
    961
    +
    962 template <class T>
    +
    963 struct slice_implementation_getter<xdrop_slice<T>> : keep_drop_getter
    +
    964 {
    +
    965 };
    +
    966
    +
    967 template <>
    +
    968 struct slice_implementation_getter<xall_tag>
    +
    969 {
    +
    970 template <class E, class SL>
    +
    971 inline auto operator()(E& e, SL&&, std::size_t index) const
    +
    972 {
    +
    973 return xall<typename E::size_type>(e.shape()[index]);
    +
    974 }
    +
    975 };
    +
    976
    +
    977 template <>
    +
    978 struct slice_implementation_getter<xnewaxis_tag>
    +
    979 {
    +
    980 template <class E, class SL>
    +
    981 inline auto operator()(E&, SL&&, std::size_t) const
    +
    982 {
    +
    983 return xnewaxis<typename E::size_type>();
    +
    984 }
    +
    985 };
    +
    986
    +
    987 template <class A, class B, class C>
    +
    988 struct slice_implementation_getter<xrange_adaptor<A, B, C>>
    +
    989 {
    +
    990 template <class E, class SL>
    +
    991 inline auto operator()(E& e, SL&& adaptor, std::size_t index) const
    +
    992 {
    +
    993 return adaptor.get(e.shape()[index]);
    +
    994 }
    +
    995 };
    +
    996 }
    +
    997
    +
    998 template <class E, class SL>
    +
    999 inline auto get_slice_implementation(E& e, SL&& slice, std::size_t index)
    +
    1000 {
    +
    1001 detail::slice_implementation_getter<std::decay_t<SL>> getter;
    +
    1002 return getter(e, std::forward<SL>(slice), index);
    +
    1003 }
    +
    1004
    +
    1005 /******************************
    +
    1006 * homogeneous get_slice_type *
    +
    1007 ******************************/
    +
    1008
    +
    1009 namespace detail
    +
    1010 {
    +
    1011 template <class E, class SL>
    +
    1012 struct get_slice_type_impl
    +
    1013 {
    +
    1014 using type = SL;
    +
    1015 };
    +
    1016
    +
    1017 template <class E>
    +
    1018 struct get_slice_type_impl<E, xall_tag>
    +
    1019 {
    +
    1020 using type = xall<typename E::size_type>;
    +
    1021 };
    +
    1022
    +
    1023 template <class E>
    +
    1024 struct get_slice_type_impl<E, xnewaxis_tag>
    +
    1025 {
    +
    1026 using type = xnewaxis<typename E::size_type>;
    +
    1027 };
    +
    1028
    +
    1029 template <class E, class A, class B, class C>
    +
    1030 struct get_slice_type_impl<E, xrange_adaptor<A, B, C>>
    +
    1031 {
    +
    1032 using type = decltype(xrange_adaptor<A, B, C>(A(), B(), C()).get(0));
    +
    1033 };
    +
    1034 }
    +
    1035
    +
    1036 template <class E, class SL>
    +
    1037 using get_slice_type = typename detail::get_slice_type_impl<E, std::remove_reference_t<SL>>::type;
    +
    1038
    +
    1039 /*************************
    +
    1040 * xslice implementation *
    +
    1041 *************************/
    +
    1042
    +
    1043 template <class D>
    +
    1044 inline auto xslice<D>::derived_cast() noexcept -> derived_type&
    +
    1045 {
    +
    1046 return *static_cast<derived_type*>(this);
    +
    1047 }
    +
    1048
    +
    1049 template <class D>
    +
    1050 inline auto xslice<D>::derived_cast() const noexcept -> const derived_type&
    +
    1051 {
    +
    1052 return *static_cast<const derived_type*>(this);
    +
    1053 }
    +
    1054
    +
    1055 /*************************
    +
    1056 * xrange implementation *
    +
    1057 *************************/
    +
    1058
    +
    1059 template <class T>
    +
    1060 inline xrange<T>::xrange(size_type start_val, size_type stop_val) noexcept
    +
    1061 : m_start(start_val)
    +
    1062 , m_size(stop_val > start_val ? stop_val - start_val : 0)
    +
    1063 {
    +
    1064 }
    +
    1065
    +
    1066 template <class T>
    +
    1067 template <class S, typename>
    +
    1068 inline xrange<T>::operator xrange<S>() const noexcept
    +
    1069 {
    +
    1070 xrange<S> ret;
    +
    1071 ret.m_start = static_cast<S>(m_start);
    +
    1072 ret.m_size = static_cast<S>(m_size);
    +
    1073 return ret;
    +
    1074 }
    +
    1075
    +
    1076 template <class T>
    +
    1077 template <class S, typename>
    +
    1078 inline xrange<S> xrange<T>::convert() const noexcept
    +
    1079 {
    +
    1080 return xrange<S>(*this);
    +
    1081 }
    +
    1082
    +
    1083 template <class T>
    +
    1084 inline auto xrange<T>::operator()(size_type i) const noexcept -> size_type
    +
    1085 {
    +
    1086 return m_start + i;
    +
    1087 }
    +
    1088
    +
    1089 template <class T>
    +
    1090 inline auto xrange<T>::size() const noexcept -> size_type
    +
    1091 {
    +
    1092 return m_size;
    +
    1093 }
    +
    1094
    +
    1095 template <class T>
    +
    1096 inline auto xrange<T>::step_size() const noexcept -> size_type
    +
    1097 {
    +
    1098 return 1;
    +
    1099 }
    +
    1100
    +
    1101 template <class T>
    +
    1102 inline auto xrange<T>::step_size(std::size_t /*i*/, std::size_t n) const noexcept -> size_type
    +
    1103 {
    +
    1104 return static_cast<size_type>(n);
    +
    1105 }
    +
    1106
    +
    1107 template <class T>
    +
    1108 inline auto xrange<T>::revert_index(std::size_t i) const noexcept -> size_type
    +
    1109 {
    +
    1110 return i - m_start;
    +
    1111 }
    +
    1112
    +
    1113 template <class T>
    +
    1114 inline bool xrange<T>::contains(size_type i) const noexcept
    +
    1115 {
    +
    1116 return i >= m_start && i < m_start + m_size;
    +
    1117 }
    +
    1118
    +
    1119 template <class T>
    +
    1120 inline bool xrange<T>::operator==(const self_type& rhs) const noexcept
    +
    1121 {
    +
    1122 return (m_start == rhs.m_start) && (m_size == rhs.m_size);
    +
    1123 }
    +
    1124
    +
    1125 template <class T>
    +
    1126 inline bool xrange<T>::operator!=(const self_type& rhs) const noexcept
    +
    1127 {
    +
    1128 return !(*this == rhs);
    +
    1129 }
    +
    1130
    +
    1131 /********************************
    +
    1132 * xtepped_range implementation *
    +
    1133 ********************************/
    +
    1134
    +
    1135 template <class T>
    +
    1136 inline xstepped_range<T>::xstepped_range(size_type start_val, size_type stop_val, size_type step) noexcept
    +
    1137 : m_start(start_val)
    +
    1138 , m_size(size_type(0))
    +
    1139 , m_step(step)
    +
    1140 {
    +
    1141 size_type n = stop_val - start_val;
    +
    1142 m_size = n / step + (((n < 0) ^ (step > 0)) && (n % step));
    +
    1143 }
    +
    1144
    +
    1145 template <class T>
    +
    1146 template <class S, typename>
    +
    1147 inline xstepped_range<T>::operator xstepped_range<S>() const noexcept
    +
    1148 {
    +
    1149 xstepped_range<S> ret;
    +
    1150 ret.m_start = static_cast<S>(m_start);
    +
    1151 ret.m_size = static_cast<S>(m_size);
    +
    1152 ret.m_step = static_cast<S>(m_step);
    +
    1153 return ret;
    +
    1154 }
    +
    1155
    +
    1156 template <class T>
    +
    1157 template <class S, typename>
    +
    1158 inline xstepped_range<S> xstepped_range<T>::convert() const noexcept
    +
    1159 {
    +
    1160 return xstepped_range<S>(*this);
    +
    1161 }
    +
    1162
    +
    1163 template <class T>
    +
    1164 inline auto xstepped_range<T>::operator()(size_type i) const noexcept -> size_type
    +
    1165 {
    +
    1166 return m_start + i * m_step;
    +
    1167 }
    +
    1168
    +
    1169 template <class T>
    +
    1170 inline auto xstepped_range<T>::size() const noexcept -> size_type
    +
    1171 {
    +
    1172 return m_size;
    +
    1173 }
    +
    1174
    +
    1175 template <class T>
    +
    1176 inline auto xstepped_range<T>::step_size() const noexcept -> size_type
    +
    1177 {
    +
    1178 return m_step;
    +
    1179 }
    +
    1180
    +
    1181 template <class T>
    +
    1182 inline auto xstepped_range<T>::step_size(std::size_t /*i*/, std::size_t n) const noexcept -> size_type
    +
    1183 {
    +
    1184 return m_step * static_cast<size_type>(n);
    +
    1185 }
    +
    1186
    +
    1187 template <class T>
    +
    1188 inline auto xstepped_range<T>::revert_index(std::size_t i) const noexcept -> size_type
    +
    1189 {
    +
    1190 return (i - m_start) / m_step;
    +
    1191 }
    +
    1192
    +
    1193 template <class T>
    +
    1194 inline bool xstepped_range<T>::contains(size_type i) const noexcept
    +
    1195 {
    +
    1196 return i >= m_start && i < m_start + m_size * m_step && ((i - m_start) % m_step == 0);
    +
    1197 }
    +
    1198
    +
    1199 template <class T>
    +
    1200 inline bool xstepped_range<T>::operator==(const self_type& rhs) const noexcept
    +
    1201 {
    +
    1202 return (m_start == rhs.m_start) && (m_size == rhs.m_size) && (m_step == rhs.m_step);
    +
    1203 }
    +
    1204
    +
    1205 template <class T>
    +
    1206 inline bool xstepped_range<T>::operator!=(const self_type& rhs) const noexcept
    +
    1207 {
    +
    1208 return !(*this == rhs);
    +
    1209 }
    +
    1210
    +
    1211 /***********************
    +
    1212 * xall implementation *
    +
    1213 ***********************/
    +
    1214
    +
    1215 template <class T>
    +
    1216 inline xall<T>::xall(size_type size) noexcept
    +
    1217 : m_size(size)
    +
    1218 {
    +
    1219 }
    +
    1220
    +
    1221 template <class T>
    +
    1222 template <class S, typename>
    +
    1223 inline xall<T>::operator xall<S>() const noexcept
    +
    1224 {
    +
    1225 return xall<S>(static_cast<S>(m_size));
    +
    1226 }
    +
    1227
    +
    1228 template <class T>
    +
    1229 template <class S, typename>
    +
    1230 inline xall<S> xall<T>::convert() const noexcept
    +
    1231 {
    +
    1232 return xall<S>(*this);
    +
    1233 }
    +
    1234
    +
    1235 template <class T>
    +
    1236 inline auto xall<T>::operator()(size_type i) const noexcept -> size_type
    +
    1237 {
    +
    1238 return i;
    +
    1239 }
    +
    1240
    +
    1241 template <class T>
    +
    1242 inline auto xall<T>::size() const noexcept -> size_type
    +
    1243 {
    +
    1244 return m_size;
    +
    1245 }
    +
    1246
    +
    1247 template <class T>
    +
    1248 inline auto xall<T>::step_size() const noexcept -> size_type
    +
    1249 {
    +
    1250 return 1;
    +
    1251 }
    +
    1252
    +
    1253 template <class T>
    +
    1254 inline auto xall<T>::step_size(std::size_t /*i*/, std::size_t n) const noexcept -> size_type
    +
    1255 {
    +
    1256 return static_cast<size_type>(n);
    +
    1257 }
    +
    1258
    +
    1259 template <class T>
    +
    1260 inline auto xall<T>::revert_index(std::size_t i) const noexcept -> size_type
    +
    1261 {
    +
    1262 return i;
    +
    1263 }
    +
    1264
    +
    1265 template <class T>
    +
    1266 inline bool xall<T>::contains(size_type i) const noexcept
    +
    1267 {
    +
    1268 return i < m_size;
    +
    1269 }
    +
    1270
    +
    1271 template <class T>
    +
    1272 inline bool xall<T>::operator==(const self_type& rhs) const noexcept
    +
    1273 {
    +
    1274 return m_size == rhs.m_size;
    +
    1275 }
    +
    1276
    +
    1277 template <class T>
    +
    1278 inline bool xall<T>::operator!=(const self_type& rhs) const noexcept
    +
    1279 {
    +
    1280 return !(*this == rhs);
    +
    1281 }
    +
    1282
    +
    1283 /***************************
    +
    1284 * xnewaxis implementation *
    +
    1285 ***************************/
    +
    1286
    +
    1287 template <class T>
    +
    1288 template <class S, typename>
    +
    1289 inline xnewaxis<T>::operator xnewaxis<S>() const noexcept
    +
    1290 {
    +
    1291 return xnewaxis<S>();
    +
    1292 }
    +
    1293
    +
    1294 template <class T>
    +
    1295 template <class S, typename>
    +
    1296 inline xnewaxis<S> xnewaxis<T>::convert() const noexcept
    +
    1297 {
    +
    1298 return xnewaxis<S>(*this);
    +
    1299 }
    +
    1300
    +
    1301 template <class T>
    +
    1302 inline auto xnewaxis<T>::operator()(size_type) const noexcept -> size_type
    +
    1303 {
    +
    1304 return 0;
    +
    1305 }
    +
    1306
    +
    1307 template <class T>
    +
    1308 inline auto xnewaxis<T>::size() const noexcept -> size_type
    +
    1309 {
    +
    1310 return 1;
    +
    1311 }
    +
    1312
    +
    1313 template <class T>
    +
    1314 inline auto xnewaxis<T>::step_size() const noexcept -> size_type
    +
    1315 {
    +
    1316 return 0;
    +
    1317 }
    +
    1318
    +
    1319 template <class T>
    +
    1320 inline auto xnewaxis<T>::step_size(std::size_t /*i*/, std::size_t /*n*/) const noexcept -> size_type
    +
    1321 {
    +
    1322 return 0;
    +
    1323 }
    +
    1324
    +
    1325 template <class T>
    +
    1326 inline auto xnewaxis<T>::revert_index(std::size_t i) const noexcept -> size_type
    +
    1327 {
    +
    1328 return i;
    +
    1329 }
    +
    1330
    +
    1331 template <class T>
    +
    1332 inline bool xnewaxis<T>::contains(size_type i) const noexcept
    +
    1333 {
    +
    1334 return i == 0;
    +
    1335 }
    +
    1336
    +
    1337 template <class T>
    +
    1338 inline bool xnewaxis<T>::operator==(const self_type& /*rhs*/) const noexcept
    +
    1339 {
    +
    1340 return true;
    +
    1341 }
    +
    1342
    +
    1343 template <class T>
    +
    1344 inline bool xnewaxis<T>::operator!=(const self_type& /*rhs*/) const noexcept
    +
    1345 {
    +
    1346 return true;
    +
    1347 }
    +
    1348
    +
    1349 /******************************
    +
    1350 * xkeep_slice implementation *
    +
    1351 ******************************/
    +
    1352
    +
    1353 template <class T>
    +
    1354 template <class C, typename>
    +
    1355 inline xkeep_slice<T>::xkeep_slice(C& cont)
    +
    1356 : m_raw_indices(cont.begin(), cont.end())
    +
    1357 {
    +
    1358 }
    +
    1359
    +
    1360 template <class T>
    +
    1361 inline xkeep_slice<T>::xkeep_slice(container_type&& cont)
    +
    1362 : m_raw_indices(std::move(cont))
    +
    1363 {
    +
    1364 }
    +
    1365
    +
    1366 template <class T>
    +
    1367 template <class S>
    +
    1368 inline xkeep_slice<T>::xkeep_slice(std::initializer_list<S> t)
    +
    1369 : m_raw_indices(t.size())
    +
    1370 {
    +
    1371 std::transform(
    +
    1372 t.begin(),
    +
    1373 t.end(),
    +
    1374 m_raw_indices.begin(),
    +
    1375 [](auto t)
    +
    1376 {
    +
    1377 return static_cast<size_type>(t);
    +
    1378 }
    +
    1379 );
    +
    1380 }
    +
    1381
    +
    1382 template <class T>
    +
    1383 template <class S, typename>
    +
    1384 inline xkeep_slice<T>::operator xkeep_slice<S>() const noexcept
    +
    1385 {
    +
    1386 xkeep_slice<S> ret;
    +
    1387 using us_type = typename container_type::size_type;
    +
    1388 us_type sz = static_cast<us_type>(size());
    +
    1389 ret.m_raw_indices.resize(sz);
    +
    1390 ret.m_indices.resize(sz);
    +
    1391 std::transform(
    +
    1392 m_raw_indices.cbegin(),
    +
    1393 m_raw_indices.cend(),
    +
    1394 ret.m_raw_indices.begin(),
    +
    1395 [](const T& val)
    +
    1396 {
    +
    1397 return static_cast<S>(val);
    +
    1398 }
    +
    1399 );
    +
    1400 std::transform(
    +
    1401 m_indices.cbegin(),
    +
    1402 m_indices.cend(),
    +
    1403 ret.m_indices.begin(),
    +
    1404 [](const T& val)
    +
    1405 {
    +
    1406 return static_cast<S>(val);
    +
    1407 }
    +
    1408 );
    +
    1409 return ret;
    +
    1410 }
    +
    1411
    +
    1412 template <class T>
    +
    1413 template <class S, typename>
    +
    1414 inline xkeep_slice<S> xkeep_slice<T>::convert() const noexcept
    +
    1415 {
    +
    1416 return xkeep_slice<S>(*this);
    +
    1417 }
    +
    1418
    +
    1419 template <class T>
    +
    1420 inline void xkeep_slice<T>::normalize(std::size_t shape)
    +
    1421 {
    +
    1422 m_indices.resize(m_raw_indices.size());
    +
    1423 std::size_t sz = m_indices.size();
    +
    1424 for (std::size_t i = 0; i < sz; ++i)
    +
    1425 {
    +
    1426 m_indices[i] = m_raw_indices[i] < 0 ? static_cast<size_type>(shape) + m_raw_indices[i]
    +
    1427 : m_raw_indices[i];
    +
    1428 }
    +
    1429 }
    +
    1430
    +
    1431 template <class T>
    +
    1432 inline auto xkeep_slice<T>::operator()(size_type i) const noexcept -> size_type
    +
    1433 {
    +
    1434 return m_indices.size() == size_type(1) ? m_indices.front() : m_indices[static_cast<std::size_t>(i)];
    +
    1435 }
    +
    1436
    +
    1437 template <class T>
    +
    1438 inline auto xkeep_slice<T>::size() const noexcept -> size_type
    +
    1439 {
    +
    1440 return static_cast<size_type>(m_raw_indices.size());
    +
    1441 }
    +
    1442
    +
    1443 template <class T>
    +
    1444 inline auto xkeep_slice<T>::step_size(std::size_t i, std::size_t n) const noexcept -> size_type
    +
    1445 {
    +
    1446 if (m_indices.size() == 1)
    +
    1447 {
    +
    1448 return 0;
    +
    1449 }
    +
    1450 if (i + n >= m_indices.size())
    +
    1451 {
    +
    1452 return m_indices.back() - m_indices[i] + 1;
    +
    1453 }
    +
    1454 else
    +
    1455 {
    +
    1456 return m_indices[i + n] - m_indices[i];
    +
    1457 }
    +
    1458 }
    +
    1459
    +
    1460 template <class T>
    +
    1461 inline auto xkeep_slice<T>::revert_index(std::size_t i) const -> size_type
    +
    1462 {
    +
    1463 auto it = std::find(m_indices.begin(), m_indices.end(), i);
    +
    1464 if (it != m_indices.end())
    +
    1465 {
    +
    1466 return std::distance(m_indices.begin(), it);
    +
    1467 }
    +
    1468 else
    +
    1469 {
    +
    1470 XTENSOR_THROW(std::runtime_error, "Index i (" + std::to_string(i) + ") not in indices of islice.");
    +
    1471 }
    +
    1472 }
    +
    1473
    +
    1474 template <class T>
    +
    1475 inline bool xkeep_slice<T>::contains(size_type i) const noexcept
    +
    1476 {
    +
    1477 return (std::find(m_indices.begin(), m_indices.end(), i) == m_indices.end()) ? false : true;
    +
    1478 }
    +
    1479
    +
    1480 template <class T>
    +
    1481 inline bool xkeep_slice<T>::operator==(const self_type& rhs) const noexcept
    +
    1482 {
    +
    1483 return m_indices == rhs.m_indices;
    +
    1484 }
    +
    1485
    +
    1486 template <class T>
    +
    1487 inline bool xkeep_slice<T>::operator!=(const self_type& rhs) const noexcept
    +
    1488 {
    +
    1489 return !(*this == rhs);
    +
    1490 }
    +
    1491
    +
    1492 /******************************
    +
    1493 * xdrop_slice implementation *
    +
    1494 ******************************/
    +
    1495
    +
    1496 template <class T>
    +
    1497 template <class C, typename>
    +
    1498 inline xdrop_slice<T>::xdrop_slice(C& cont)
    +
    1499 : m_raw_indices(cont.begin(), cont.end())
    +
    1500 {
    +
    1501 }
    +
    1502
    +
    1503 template <class T>
    +
    1504 inline xdrop_slice<T>::xdrop_slice(container_type&& cont)
    +
    1505 : m_raw_indices(std::move(cont))
    +
    1506 {
    +
    1507 }
    +
    1508
    +
    1509 template <class T>
    +
    1510 template <class S>
    +
    1511 inline xdrop_slice<T>::xdrop_slice(std::initializer_list<S> t)
    +
    1512 : m_raw_indices(t.size())
    +
    1513 {
    +
    1514 std::transform(
    +
    1515 t.begin(),
    +
    1516 t.end(),
    +
    1517 m_raw_indices.begin(),
    +
    1518 [](auto t)
    +
    1519 {
    +
    1520 return static_cast<size_type>(t);
    +
    1521 }
    +
    1522 );
    +
    1523 }
    +
    1524
    +
    1525 template <class T>
    +
    1526 template <class S, typename>
    +
    1527 inline xdrop_slice<T>::operator xdrop_slice<S>() const noexcept
    +
    1528 {
    +
    1529 xdrop_slice<S> ret;
    +
    1530 ret.m_raw_indices.resize(m_raw_indices.size());
    +
    1531 ret.m_indices.resize(m_indices.size());
    +
    1532 std::transform(
    +
    1533 m_raw_indices.cbegin(),
    +
    1534 m_raw_indices.cend(),
    +
    1535 ret.m_raw_indices.begin(),
    +
    1536 [](const T& val)
    +
    1537 {
    +
    1538 return static_cast<S>(val);
    +
    1539 }
    +
    1540 );
    +
    1541 std::transform(
    +
    1542 m_indices.cbegin(),
    +
    1543 m_indices.cend(),
    +
    1544 ret.m_indices.begin(),
    +
    1545 [](const T& val)
    +
    1546 {
    +
    1547 return static_cast<S>(val);
    +
    1548 }
    +
    1549 );
    +
    1550 std::transform(
    +
    1551 m_inc.cbegin(),
    +
    1552 m_inc.cend(),
    +
    1553 std::inserter(ret.m_inc, ret.m_inc.begin()),
    +
    1554 [](const auto& val)
    +
    1555 {
    +
    1556 return std::make_pair(static_cast<S>(val.first), static_cast<S>(val.second));
    +
    1557 }
    +
    1558 );
    +
    1559 ret.m_size = static_cast<S>(m_size);
    +
    1560 return ret;
    +
    1561 }
    +
    1562
    +
    1563 template <class T>
    +
    1564 template <class S, typename>
    +
    1565 inline xdrop_slice<S> xdrop_slice<T>::convert() const noexcept
    +
    1566 {
    +
    1567 return xdrop_slice<S>(*this);
    +
    1568 }
    +
    1569
    +
    1570 template <class T>
    +
    1571 inline void xdrop_slice<T>::normalize(std::size_t shape)
    +
    1572 {
    +
    1573 m_size = static_cast<size_type>(shape - m_raw_indices.size());
    +
    1574
    +
    1575 m_indices.resize(m_raw_indices.size());
    +
    1576 std::size_t sz = m_indices.size();
    +
    1577 for (std::size_t i = 0; i < sz; ++i)
    +
    1578 {
    +
    1579 m_indices[i] = m_raw_indices[i] < 0 ? static_cast<size_type>(shape) + m_raw_indices[i]
    +
    1580 : m_raw_indices[i];
    +
    1581 }
    +
    1582 size_type cum = size_type(0);
    +
    1583 size_type prev_cum = cum;
    +
    1584 for (std::size_t i = 0; i < sz; ++i)
    +
    1585 {
    +
    1586 std::size_t ind = i;
    +
    1587 size_type d = m_indices[i];
    +
    1588 while (i + 1 < sz && m_indices[i + 1] == m_indices[i] + 1)
    +
    1589 {
    +
    1590 ++i;
    +
    1591 }
    +
    1592 cum += (static_cast<size_type>(i) - static_cast<size_type>(ind)) + 1;
    +
    1593 m_inc[d - prev_cum] = cum;
    +
    1594 prev_cum = cum;
    +
    1595 }
    +
    1596 }
    +
    1597
    +
    1598 template <class T>
    +
    1599 inline auto xdrop_slice<T>::operator()(size_type i) const noexcept -> size_type
    +
    1600 {
    +
    1601 if (m_inc.empty() || i < m_inc.begin()->first)
    +
    1602 {
    +
    1603 return i;
    +
    1604 }
    +
    1605 else
    +
    1606 {
    +
    1607 auto iter = --m_inc.upper_bound(i);
    +
    1608 return i + iter->second;
    +
    1609 }
    +
    1610 }
    +
    1611
    +
    1612 template <class T>
    +
    1613 inline auto xdrop_slice<T>::size() const noexcept -> size_type
    +
    1614 {
    +
    1615 return m_size;
    +
    1616 }
    +
    1617
    +
    1618 template <class T>
    +
    1619 inline auto xdrop_slice<T>::step_size(std::size_t i, std::size_t n) const noexcept -> size_type
    +
    1620 {
    +
    1621 if (i + n >= static_cast<std::size_t>(m_size))
    +
    1622 {
    +
    1623 return (*this)(static_cast<size_type>(m_size - 1)) - (*this)(static_cast<size_type>(i)) + 1;
    +
    1624 }
    +
    1625 else
    +
    1626 {
    +
    1627 return (*this)(static_cast<size_type>(i + n)) - (*this)(static_cast<size_type>(i));
    +
    1628 }
    +
    1629 }
    +
    1630
    +
    1631 template <class T>
    +
    1632 inline auto xdrop_slice<T>::revert_index(std::size_t i) const -> size_type
    +
    1633 {
    +
    1634 if (i < m_inc.begin()->first)
    +
    1635 {
    +
    1636 return i;
    +
    1637 }
    +
    1638 else
    +
    1639 {
    +
    1640 auto iter = --m_inc.lower_bound(i);
    +
    1641 auto check = iter->first + iter->second;
    +
    1642 if (check > i)
    +
    1643 {
    +
    1644 --iter;
    +
    1645 }
    +
    1646 return i - iter->second;
    +
    1647 }
    +
    1648 }
    +
    1649
    +
    1650 template <class T>
    +
    1651 inline bool xdrop_slice<T>::contains(size_type i) const noexcept
    +
    1652 {
    +
    1653 return (std::find(m_indices.begin(), m_indices.end(), i) == m_indices.end()) ? true : false;
    +
    1654 }
    +
    1655
    +
    1656 template <class T>
    +
    1657 inline bool xdrop_slice<T>::operator==(const self_type& rhs) const noexcept
    +
    1658 {
    +
    1659 return m_indices == rhs.m_indices;
    +
    1660 }
    +
    1661
    +
    1662 template <class T>
    +
    1663 inline bool xdrop_slice<T>::operator!=(const self_type& rhs) const noexcept
    +
    1664 {
    +
    1665 return !(*this == rhs);
    +
    1666 }
    +
    1667}
    +
    1668
    +
    1669#undef XTENSOR_CONSTEXPR
    +
    1670
    +
    1671#endif
    + + + + + + + + +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto newaxis() noexcept
    Returns a slice representing a new axis of length one, to be used as an argument of view function.
    Definition xslice.hpp:300
    +
    auto ellipsis() noexcept
    Returns a slice representing all remaining dimensions, and selecting all in these dimensions.
    Definition xslice.hpp:255
    +
    detail::disable_integral_keep< T > keep(T &&indices)
    Create a non-contigous slice from a container of indices to keep.
    Definition xslice.hpp:405
    +
    detail::disable_integral_drop< T > drop(T &&indices)
    Create a non-contigous slice from a container of indices to drop.
    Definition xslice.hpp:529
    + + + + +
    +
    + + + + diff --git a/xsort_8hpp_source.html b/xsort_8hpp_source.html new file mode 100644 index 000000000..ff7d42ab7 --- /dev/null +++ b/xsort_8hpp_source.html @@ -0,0 +1,1292 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xsort.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xsort.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_SORT_HPP
    +
    11#define XTENSOR_SORT_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cmath>
    +
    15#include <iterator>
    +
    16#include <utility>
    +
    17
    +
    18#include <xtl/xcompare.hpp>
    +
    19
    +
    20#include "xadapt.hpp"
    +
    21#include "xarray.hpp"
    +
    22#include "xeval.hpp"
    +
    23#include "xindex_view.hpp"
    +
    24#include "xmanipulation.hpp"
    +
    25#include "xmath.hpp"
    +
    26#include "xslice.hpp" // for xnone
    +
    27#include "xtensor.hpp"
    +
    28#include "xtensor_config.hpp"
    +
    29#include "xtensor_forward.hpp"
    +
    30#include "xview.hpp"
    +
    31
    +
    32namespace xt
    +
    33{
    +
    41 namespace detail
    +
    42 {
    +
    43 template <class T>
    +
    44 std::ptrdiff_t adjust_secondary_stride(std::ptrdiff_t stride, T shape)
    +
    45 {
    +
    46 return stride != 0 ? stride : static_cast<std::ptrdiff_t>(shape);
    +
    47 }
    +
    48
    +
    49 template <class E>
    +
    50 inline std::ptrdiff_t get_secondary_stride(const E& ev)
    +
    51 {
    +
    52 if (ev.layout() == layout_type::row_major)
    +
    53 {
    +
    54 return adjust_secondary_stride(ev.strides()[ev.dimension() - 2], *(ev.shape().end() - 1));
    +
    55 }
    +
    56
    +
    57 return adjust_secondary_stride(ev.strides()[1], *(ev.shape().begin()));
    +
    58 }
    +
    59
    +
    60 template <class E>
    +
    61 inline std::size_t leading_axis_n_iters(const E& ev)
    +
    62 {
    +
    63 if (ev.layout() == layout_type::row_major)
    +
    64 {
    +
    65 return std::accumulate(
    +
    66 ev.shape().begin(),
    +
    67 ev.shape().end() - 1,
    +
    68 std::size_t(1),
    +
    69 std::multiplies<>()
    +
    70 );
    +
    71 }
    +
    72 return std::accumulate(ev.shape().begin() + 1, ev.shape().end(), std::size_t(1), std::multiplies<>());
    +
    73 }
    +
    74
    +
    75 template <class E, class F>
    +
    76 inline void call_over_leading_axis(E& ev, F&& fct)
    +
    77 {
    +
    78 XTENSOR_ASSERT(ev.dimension() >= 2);
    +
    79
    +
    80 const std::size_t n_iters = leading_axis_n_iters(ev);
    +
    81 const std::ptrdiff_t secondary_stride = get_secondary_stride(ev);
    +
    82
    +
    83 const auto begin = ev.data();
    +
    84 const auto end = begin + n_iters * secondary_stride;
    +
    85 for (auto iter = begin; iter != end; iter += secondary_stride)
    +
    86 {
    +
    87 fct(iter, iter + secondary_stride);
    +
    88 }
    +
    89 }
    +
    90
    +
    91 template <class E1, class E2, class F>
    +
    92 inline void call_over_leading_axis(E1& e1, E2& e2, F&& fct)
    +
    93 {
    +
    94 XTENSOR_ASSERT(e1.dimension() >= 2);
    +
    95 XTENSOR_ASSERT(e1.dimension() == e2.dimension());
    +
    96
    +
    97 const std::size_t n_iters = leading_axis_n_iters(e1);
    +
    98 std::ptrdiff_t const secondary_stride1 = get_secondary_stride(e1);
    +
    99 std::ptrdiff_t const secondary_stride2 = get_secondary_stride(e2);
    +
    100 XTENSOR_ASSERT(secondary_stride1 == secondary_stride2);
    +
    101
    +
    102 const auto begin1 = e1.data();
    +
    103 const auto end1 = begin1 + n_iters * secondary_stride1;
    +
    104 const auto begin2 = e2.data();
    +
    105 const auto end2 = begin2 + n_iters * secondary_stride2;
    +
    106 auto iter1 = begin1;
    +
    107 auto iter2 = begin2;
    +
    108 for (; (iter1 != end1) && (iter2 != end2); iter1 += secondary_stride1, iter2 += secondary_stride2)
    +
    109 {
    +
    110 fct(iter1, iter1 + secondary_stride1, iter2, iter2 + secondary_stride2);
    +
    111 }
    +
    112 }
    +
    113
    +
    114 template <class E>
    +
    115 inline std::size_t leading_axis(const E& e)
    +
    116 {
    +
    117 if (e.layout() == layout_type::row_major)
    +
    118 {
    +
    119 return e.dimension() - 1;
    +
    120 }
    +
    121 else if (e.layout() == layout_type::column_major)
    +
    122 {
    +
    123 return 0;
    +
    124 }
    +
    125 XTENSOR_THROW(std::runtime_error, "Layout not supported.");
    +
    126 }
    +
    127
    +
    128 // get permutations to transpose and reverse-transpose array
    +
    129 inline std::pair<dynamic_shape<std::size_t>, dynamic_shape<std::size_t>>
    +
    130 get_permutations(std::size_t dim, std::size_t ax, layout_type layout)
    +
    131 {
    +
    132 dynamic_shape<std::size_t> permutation(dim);
    +
    133 std::iota(permutation.begin(), permutation.end(), std::size_t(0));
    +
    134 permutation.erase(permutation.begin() + std::ptrdiff_t(ax));
    +
    135
    +
    136 if (layout == layout_type::row_major)
    +
    137 {
    +
    138 permutation.push_back(ax);
    +
    139 }
    +
    140 else
    +
    141 {
    +
    142 permutation.insert(permutation.begin(), ax);
    +
    143 }
    +
    144
    +
    145 // TODO find a more clever way to get reverse permutation?
    +
    146 dynamic_shape<std::size_t> reverse_permutation;
    +
    147 for (std::size_t i = 0; i < dim; ++i)
    +
    148 {
    +
    149 auto it = std::find(permutation.begin(), permutation.end(), i);
    +
    150 reverse_permutation.push_back(std::size_t(std::distance(permutation.begin(), it)));
    +
    151 }
    +
    152
    +
    153 return std::make_pair(std::move(permutation), std::move(reverse_permutation));
    +
    154 }
    +
    155
    +
    156 template <class R, class E, class F>
    +
    157 inline R map_axis(const E& e, std::ptrdiff_t axis, F&& lambda)
    +
    158 {
    +
    159 if (e.dimension() == 1)
    +
    160 {
    +
    161 R res = e;
    +
    162 lambda(res.begin(), res.end());
    +
    163 return res;
    +
    164 }
    +
    165
    +
    166 std::size_t const ax = normalize_axis(e.dimension(), axis);
    +
    167 if (ax == detail::leading_axis(e))
    +
    168 {
    +
    169 R res = e;
    +
    170 detail::call_over_leading_axis(res, std::forward<F>(lambda));
    +
    171 return res;
    +
    172 }
    +
    173
    +
    174 dynamic_shape<std::size_t> permutation, reverse_permutation;
    +
    175 std::tie(permutation, reverse_permutation) = get_permutations(e.dimension(), ax, e.layout());
    +
    176 R res = transpose(e, permutation);
    +
    177 detail::call_over_leading_axis(res, std::forward<F>(lambda));
    +
    178 res = transpose(res, reverse_permutation);
    +
    179 return res;
    +
    180 }
    +
    181
    +
    182 template <class VT>
    +
    183 struct flatten_sort_result_type_impl
    +
    184 {
    +
    185 using type = VT;
    +
    186 };
    +
    187
    +
    188 template <class VT, std::size_t N, layout_type L>
    +
    189 struct flatten_sort_result_type_impl<xtensor<VT, N, L>>
    +
    190 {
    +
    191 using type = xtensor<VT, 1, L>;
    +
    192 };
    +
    193
    +
    194 template <class VT, class S, layout_type L>
    +
    195 struct flatten_sort_result_type_impl<xtensor_fixed<VT, S, L>>
    +
    196 {
    +
    197 using type = xtensor_fixed<VT, xshape<fixed_compute_size<S>::value>, L>;
    +
    198 };
    +
    199
    +
    200 template <class VT>
    +
    201 struct flatten_sort_result_type : flatten_sort_result_type_impl<common_tensor_type_t<VT>>
    +
    202 {
    +
    203 };
    +
    204
    +
    205 template <class VT>
    +
    206 using flatten_sort_result_type_t = typename flatten_sort_result_type<VT>::type;
    +
    207
    +
    208 template <class E, class R = flatten_sort_result_type_t<E>>
    +
    209 inline auto flat_sort_impl(const xexpression<E>& e)
    +
    210 {
    +
    211 const auto& de = e.derived_cast();
    +
    212 R ev;
    +
    213 ev.resize({static_cast<typename R::shape_type::value_type>(de.size())});
    +
    214
    +
    215 std::copy(de.cbegin(), de.cend(), ev.begin());
    +
    216 std::sort(ev.begin(), ev.end());
    +
    217
    +
    218 return ev;
    +
    219 }
    +
    220 }
    +
    221
    +
    222 template <class E>
    +
    223 inline auto sort(const xexpression<E>& e, placeholders::xtuph /*t*/)
    +
    224 {
    +
    225 return detail::flat_sort_impl(e);
    +
    226 }
    +
    227
    +
    228 namespace detail
    +
    229 {
    +
    230 template <class T>
    +
    231 struct sort_eval_type
    +
    232 {
    +
    233 using type = typename T::temporary_type;
    +
    234 };
    +
    235
    +
    236 template <class T, std::size_t... I, layout_type L>
    +
    237 struct sort_eval_type<xtensor_fixed<T, fixed_shape<I...>, L>>
    +
    238 {
    +
    239 using type = xtensor<T, sizeof...(I), L>;
    +
    240 };
    +
    241 }
    +
    242
    +
    254 template <class E>
    +
    +
    255 inline auto sort(const xexpression<E>& e, std::ptrdiff_t axis = -1)
    +
    256 {
    +
    257 using eval_type = typename detail::sort_eval_type<E>::type;
    +
    258
    +
    259 return detail::map_axis<eval_type>(
    +
    260 e.derived_cast(),
    +
    261 axis,
    +
    262 [](auto begin, auto end)
    +
    263 {
    +
    264 std::sort(begin, end);
    +
    265 }
    +
    266 );
    +
    267 }
    +
    +
    268
    +
    269 /*****************************
    +
    270 * Implementation of argsort *
    +
    271 *****************************/
    +
    272
    +
    +
    278 enum class sorting_method
    +
    279 {
    +
    284 quick,
    +
    289 stable,
    +
    290 };
    +
    +
    291
    +
    292 namespace detail
    +
    293 {
    +
    294 template <class ConstRandomIt, class RandomIt, class Compare, class Method>
    +
    295 inline void argsort_iter(
    +
    296 ConstRandomIt data_begin,
    +
    297 ConstRandomIt data_end,
    +
    298 RandomIt idx_begin,
    +
    299 RandomIt idx_end,
    +
    300 Compare comp,
    +
    301 Method method
    +
    302 )
    +
    303 {
    +
    304 XTENSOR_ASSERT(std::distance(data_begin, data_end) >= 0);
    +
    305 XTENSOR_ASSERT(std::distance(idx_begin, idx_end) == std::distance(data_begin, data_end));
    +
    306 (void) idx_end; // TODO(C++17) [[maybe_unused]] only used in assertion.
    +
    307
    +
    308 std::iota(idx_begin, idx_end, 0);
    +
    309 switch (method)
    +
    310 {
    + +
    312 {
    +
    313 std::sort(
    +
    314 idx_begin,
    +
    315 idx_end,
    +
    316 [&](const auto i, const auto j)
    +
    317 {
    +
    318 return comp(*(data_begin + i), *(data_begin + j));
    +
    319 }
    +
    320 );
    +
    321 }
    + +
    323 {
    +
    324 std::stable_sort(
    +
    325 idx_begin,
    +
    326 idx_end,
    +
    327 [&](const auto i, const auto j)
    +
    328 {
    +
    329 return comp(*(data_begin + i), *(data_begin + j));
    +
    330 }
    +
    331 );
    +
    332 }
    +
    333 }
    +
    334 }
    +
    335
    +
    336 template <class ConstRandomIt, class RandomIt, class Method>
    +
    337 inline void
    +
    338 argsort_iter(ConstRandomIt data_begin, ConstRandomIt data_end, RandomIt idx_begin, RandomIt idx_end, Method method)
    +
    339 {
    +
    340 return argsort_iter(
    +
    341 std::move(data_begin),
    +
    342 std::move(data_end),
    +
    343 std::move(idx_begin),
    +
    344 std::move(idx_end),
    +
    345 [](const auto& x, const auto& y) -> bool
    +
    346 {
    +
    347 return x < y;
    +
    348 },
    +
    349 method
    +
    350 );
    +
    351 }
    +
    352
    +
    353 template <class VT, class T>
    +
    354 struct rebind_value_type
    +
    355 {
    +
    356 using type = xarray<VT, xt::layout_type::dynamic>;
    +
    357 };
    +
    358
    +
    359 template <class VT, class EC, layout_type L>
    +
    360 struct rebind_value_type<VT, xarray<EC, L>>
    +
    361 {
    +
    362 using type = xarray<VT, L>;
    +
    363 };
    +
    364
    +
    365 template <class VT, class EC, std::size_t N, layout_type L>
    +
    366 struct rebind_value_type<VT, xtensor<EC, N, L>>
    +
    367 {
    +
    368 using type = xtensor<VT, N, L>;
    +
    369 };
    +
    370
    +
    371 template <class VT, class ET, class S, layout_type L>
    +
    372 struct rebind_value_type<VT, xtensor_fixed<ET, S, L>>
    +
    373 {
    +
    374 using type = xtensor_fixed<VT, S, L>;
    +
    375 };
    +
    376
    +
    377 template <class VT, class T>
    +
    378 struct flatten_rebind_value_type
    +
    379 {
    +
    380 using type = typename rebind_value_type<VT, T>::type;
    +
    381 };
    +
    382
    +
    383 template <class VT, class EC, std::size_t N, layout_type L>
    +
    384 struct flatten_rebind_value_type<VT, xtensor<EC, N, L>>
    +
    385 {
    +
    386 using type = xtensor<VT, 1, L>;
    +
    387 };
    +
    388
    +
    389 template <class VT, class ET, class S, layout_type L>
    +
    390 struct flatten_rebind_value_type<VT, xtensor_fixed<ET, S, L>>
    +
    391 {
    +
    392 using type = xtensor_fixed<VT, xshape<fixed_compute_size<S>::value>, L>;
    +
    393 };
    +
    394
    +
    395 template <class T>
    +
    396 struct argsort_result_type
    +
    397 {
    +
    398 using type = typename rebind_value_type<typename T::temporary_type::size_type, typename T::temporary_type>::type;
    +
    399 };
    +
    400
    +
    401 template <class T>
    +
    402 struct linear_argsort_result_type
    +
    403 {
    +
    404 using type = typename flatten_rebind_value_type<
    +
    405 typename T::temporary_type::size_type,
    +
    406 typename T::temporary_type>::type;
    +
    407 };
    +
    408
    +
    409 template <class E, class R = typename detail::linear_argsort_result_type<E>::type, class Method>
    +
    410 inline auto flatten_argsort_impl(const xexpression<E>& e, Method method)
    +
    411 {
    +
    412 const auto& de = e.derived_cast();
    +
    413
    +
    414 auto cit = de.template begin<layout_type::row_major>();
    +
    415 using const_iterator = decltype(cit);
    +
    416 auto ad = xiterator_adaptor<const_iterator, const_iterator>(cit, cit, de.size());
    +
    417
    +
    418 using result_type = R;
    +
    419 result_type result;
    +
    420 result.resize({de.size()});
    +
    421
    +
    422 detail::argsort_iter(de.cbegin(), de.cend(), result.begin(), result.end(), method);
    +
    423
    +
    424 return result;
    +
    425 }
    +
    426 }
    +
    427
    +
    428 template <class E>
    +
    429 inline auto
    +
    430 argsort(const xexpression<E>& e, placeholders::xtuph /*t*/, sorting_method method = sorting_method::quick)
    +
    431 {
    +
    432 return detail::flatten_argsort_impl(e, method);
    +
    433 }
    +
    434
    +
    450 template <class E>
    +
    451 inline auto
    +
    +
    452 argsort(const xexpression<E>& e, std::ptrdiff_t axis = -1, sorting_method method = sorting_method::quick)
    +
    453 {
    +
    454 using eval_type = typename detail::sort_eval_type<E>::type;
    +
    455 using result_type = typename detail::argsort_result_type<eval_type>::type;
    +
    456
    +
    457 const auto& de = e.derived_cast();
    +
    458
    +
    459 std::size_t ax = normalize_axis(de.dimension(), axis);
    +
    460
    +
    461 if (de.dimension() == 1)
    +
    462 {
    +
    463 return detail::flatten_argsort_impl<E, result_type>(e, method);
    +
    464 }
    +
    465
    +
    466 const auto argsort = [&method](auto res_begin, auto res_end, auto ev_begin, auto ev_end)
    +
    467 {
    +
    468 detail::argsort_iter(ev_begin, ev_end, res_begin, res_end, method);
    +
    469 };
    +
    470
    +
    471 if (ax == detail::leading_axis(de))
    +
    472 {
    +
    473 result_type res = result_type::from_shape(de.shape());
    +
    474 detail::call_over_leading_axis(res, de, argsort);
    +
    475 return res;
    +
    476 }
    +
    477
    +
    478 dynamic_shape<std::size_t> permutation, reverse_permutation;
    +
    479 std::tie(permutation, reverse_permutation) = detail::get_permutations(de.dimension(), ax, de.layout());
    +
    480 eval_type ev = transpose(de, permutation);
    +
    481 result_type res = result_type::from_shape(ev.shape());
    +
    482 detail::call_over_leading_axis(res, ev, argsort);
    +
    483 res = transpose(res, reverse_permutation);
    +
    484 return res;
    +
    485 }
    +
    +
    486
    +
    487 /************************************************
    +
    488 * Implementation of partition and argpartition *
    +
    489 ************************************************/
    +
    490
    +
    491 namespace detail
    +
    492 {
    +
    504 template <class RandomIt, class Iter, class Compare>
    +
    505 inline void
    +
    506 partition_iter(RandomIt data_begin, RandomIt data_end, Iter kth_begin, Iter kth_end, Compare comp)
    +
    507 {
    +
    508 XTENSOR_ASSERT(std::distance(data_begin, data_end) >= 0);
    +
    509 XTENSOR_ASSERT(std::distance(kth_begin, kth_end) >= 0);
    +
    510
    +
    511 using idx_type = typename std::iterator_traits<Iter>::value_type;
    +
    512
    +
    513 idx_type k_last = static_cast<idx_type>(std::distance(data_begin, data_end));
    +
    514 for (; kth_begin != kth_end; ++kth_begin)
    +
    515 {
    +
    516 std::nth_element(data_begin, data_begin + *kth_begin, data_begin + k_last, std::move(comp));
    +
    517 k_last = *kth_begin;
    +
    518 }
    +
    519 }
    +
    520
    +
    521 template <class RandomIt, class Iter>
    +
    522 inline void partition_iter(RandomIt data_begin, RandomIt data_end, Iter kth_begin, Iter kth_end)
    +
    523 {
    +
    524 return partition_iter(
    +
    525 std::move(data_begin),
    +
    526 std::move(data_end),
    +
    527 std::move(kth_begin),
    +
    528 std::move(kth_end),
    +
    529 [](const auto& x, const auto& y) -> bool
    +
    530 {
    +
    531 return x < y;
    +
    532 }
    +
    533 );
    +
    534 }
    +
    535 }
    +
    536
    +
    564 template <
    +
    565 class E,
    +
    566 class C,
    +
    567 class R = detail::flatten_sort_result_type_t<E>,
    +
    568 class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    +
    +
    569 inline R partition(const xexpression<E>& e, C kth_container, placeholders::xtuph /*ax*/)
    +
    570 {
    +
    571 const auto& de = e.derived_cast();
    +
    572
    +
    573 R ev = R::from_shape({de.size()});
    +
    574 std::sort(kth_container.begin(), kth_container.end());
    +
    575
    +
    576 std::copy(de.linear_cbegin(), de.linear_cend(), ev.linear_begin()); // flatten
    +
    577
    +
    578 detail::partition_iter(ev.linear_begin(), ev.linear_end(), kth_container.rbegin(), kth_container.rend());
    +
    579
    +
    580 return ev;
    +
    581 }
    +
    +
    582
    +
    583 template <class E, class I, std::size_t N, class R = detail::flatten_sort_result_type_t<E>>
    +
    584 inline R partition(const xexpression<E>& e, const I (&kth_container)[N], placeholders::xtuph tag)
    +
    585 {
    +
    586 return partition(
    +
    587 e,
    +
    588 xtl::forward_sequence<std::array<std::size_t, N>, decltype(kth_container)>(kth_container),
    +
    589 tag
    +
    590 );
    +
    591 }
    +
    592
    +
    593 template <class E, class R = detail::flatten_sort_result_type_t<E>>
    +
    594 inline R partition(const xexpression<E>& e, std::size_t kth, placeholders::xtuph tag)
    +
    595 {
    +
    596 return partition(e, std::array<std::size_t, 1>({kth}), tag);
    +
    597 }
    +
    598
    +
    599 template <class E, class C, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    +
    600 inline auto partition(const xexpression<E>& e, C kth_container, std::ptrdiff_t axis = -1)
    +
    601 {
    +
    602 using eval_type = typename detail::sort_eval_type<E>::type;
    +
    603
    +
    604 std::sort(kth_container.begin(), kth_container.end());
    +
    605
    +
    606 return detail::map_axis<eval_type>(
    +
    607 e.derived_cast(),
    +
    608 axis,
    +
    609 [&kth_container](auto begin, auto end)
    +
    610 {
    +
    611 detail::partition_iter(begin, end, kth_container.rbegin(), kth_container.rend());
    +
    612 }
    +
    613 );
    +
    614 }
    +
    615
    +
    616 template <class E, class T, std::size_t N>
    +
    617 inline auto partition(const xexpression<E>& e, const T (&kth_container)[N], std::ptrdiff_t axis = -1)
    +
    618 {
    +
    619 return partition(
    +
    620 e,
    +
    621 xtl::forward_sequence<std::array<std::size_t, N>, decltype(kth_container)>(kth_container),
    +
    622 axis
    +
    623 );
    +
    624 }
    +
    625
    +
    626 template <class E>
    +
    627 inline auto partition(const xexpression<E>& e, std::size_t kth, std::ptrdiff_t axis = -1)
    +
    628 {
    +
    629 return partition(e, std::array<std::size_t, 1>({kth}), axis);
    +
    630 }
    +
    631
    +
    659 template <
    +
    660 class E,
    +
    661 class C,
    +
    662 class R = typename detail::linear_argsort_result_type<typename detail::sort_eval_type<E>::type>::type,
    +
    663 class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    +
    +
    664 inline R argpartition(const xexpression<E>& e, C kth_container, placeholders::xtuph)
    +
    665 {
    +
    666 using eval_type = typename detail::sort_eval_type<E>::type;
    +
    667 using result_type = typename detail::linear_argsort_result_type<eval_type>::type;
    +
    668
    +
    669 const auto& de = e.derived_cast();
    +
    670
    +
    671 result_type res = result_type::from_shape({de.size()});
    +
    672
    +
    673 std::sort(kth_container.begin(), kth_container.end());
    +
    674
    +
    675 std::iota(res.linear_begin(), res.linear_end(), 0);
    +
    676
    +
    677 detail::partition_iter(
    +
    678 res.linear_begin(),
    +
    679 res.linear_end(),
    +
    680 kth_container.rbegin(),
    +
    681 kth_container.rend(),
    +
    682 [&de](std::size_t a, std::size_t b)
    +
    683 {
    +
    684 return de[a] < de[b];
    +
    685 }
    +
    686 );
    +
    687
    +
    688 return res;
    +
    689 }
    +
    +
    690
    +
    691 template <class E, class I, std::size_t N>
    +
    692 inline auto argpartition(const xexpression<E>& e, const I (&kth_container)[N], placeholders::xtuph tag)
    +
    693 {
    +
    694 return argpartition(
    +
    695 e,
    +
    696 xtl::forward_sequence<std::array<std::size_t, N>, decltype(kth_container)>(kth_container),
    +
    697 tag
    +
    698 );
    +
    699 }
    +
    700
    +
    701 template <class E>
    +
    702 inline auto argpartition(const xexpression<E>& e, std::size_t kth, placeholders::xtuph tag)
    +
    703 {
    +
    704 return argpartition(e, std::array<std::size_t, 1>({kth}), tag);
    +
    705 }
    +
    706
    +
    707 template <class E, class C, class = std::enable_if_t<!xtl::is_integral<C>::value, int>>
    +
    708 inline auto argpartition(const xexpression<E>& e, C kth_container, std::ptrdiff_t axis = -1)
    +
    709 {
    +
    710 using eval_type = typename detail::sort_eval_type<E>::type;
    +
    711 using result_type = typename detail::argsort_result_type<eval_type>::type;
    +
    712
    +
    713 const auto& de = e.derived_cast();
    +
    714
    +
    715 if (de.dimension() == 1)
    +
    716 {
    +
    717 return argpartition<E, C, result_type>(e, std::forward<C>(kth_container), xnone());
    +
    718 }
    +
    719
    +
    720 std::sort(kth_container.begin(), kth_container.end());
    +
    721 const auto argpartition_w_kth =
    +
    722 [&kth_container](auto res_begin, auto res_end, auto ev_begin, auto /*ev_end*/)
    +
    723 {
    +
    724 std::iota(res_begin, res_end, 0);
    +
    725 detail::partition_iter(
    +
    726 res_begin,
    +
    727 res_end,
    +
    728 kth_container.rbegin(),
    +
    729 kth_container.rend(),
    +
    730 [&ev_begin](auto const& i, auto const& j)
    +
    731 {
    +
    732 return *(ev_begin + i) < *(ev_begin + j);
    +
    733 }
    +
    734 );
    +
    735 };
    +
    736
    +
    737 std::size_t const ax = normalize_axis(de.dimension(), axis);
    +
    738 if (ax == detail::leading_axis(de))
    +
    739 {
    +
    740 result_type res = result_type::from_shape(de.shape());
    +
    741 detail::call_over_leading_axis(res, de, argpartition_w_kth);
    +
    742 return res;
    +
    743 }
    +
    744
    +
    745 dynamic_shape<std::size_t> permutation, reverse_permutation;
    +
    746 std::tie(permutation, reverse_permutation) = detail::get_permutations(de.dimension(), ax, de.layout());
    +
    747 eval_type ev = transpose(de, permutation);
    +
    748 result_type res = result_type::from_shape(ev.shape());
    +
    749 detail::call_over_leading_axis(res, ev, argpartition_w_kth);
    +
    750 res = transpose(res, reverse_permutation);
    +
    751 return res;
    +
    752 }
    +
    753
    +
    754 template <class E, class I, std::size_t N>
    +
    755 inline auto argpartition(const xexpression<E>& e, const I (&kth_container)[N], std::ptrdiff_t axis = -1)
    +
    756 {
    +
    757 return argpartition(
    +
    758 e,
    +
    759 xtl::forward_sequence<std::array<std::size_t, N>, decltype(kth_container)>(kth_container),
    +
    760 axis
    +
    761 );
    +
    762 }
    +
    763
    +
    764 template <class E>
    +
    765 inline auto argpartition(const xexpression<E>& e, std::size_t kth, std::ptrdiff_t axis = -1)
    +
    766 {
    +
    767 return argpartition(e, std::array<std::size_t, 1>({kth}), axis);
    +
    768 }
    +
    769
    +
    770 /******************
    +
    771 * xt::quantile *
    +
    772 ******************/
    +
    773
    +
    774 namespace detail
    +
    775 {
    +
    776 template <class S, class I, class K, class O>
    +
    777 inline void select_indices_impl(
    +
    778 const S& shape,
    +
    779 const I& indices,
    +
    780 std::size_t axis,
    +
    781 std::size_t current_dim,
    +
    782 const K& current_index,
    +
    783 O& out
    +
    784 )
    +
    785 {
    +
    786 using id_t = typename K::value_type;
    +
    787 if ((current_dim < shape.size() - 1) && (current_dim == axis))
    +
    788 {
    +
    789 for (auto i : indices)
    +
    790 {
    +
    791 auto idx = current_index;
    +
    792 idx[current_dim] = i;
    +
    793 select_indices_impl(shape, indices, axis, current_dim + 1, idx, out);
    +
    794 }
    +
    795 }
    +
    796 else if ((current_dim < shape.size() - 1) && (current_dim != axis))
    +
    797 {
    +
    798 for (id_t i = 0; xtl::cmp_less(i, shape[current_dim]); ++i)
    +
    799 {
    +
    800 auto idx = current_index;
    +
    801 idx[current_dim] = i;
    +
    802 select_indices_impl(shape, indices, axis, current_dim + 1, idx, out);
    +
    803 }
    +
    804 }
    +
    805 else if ((current_dim == shape.size() - 1) && (current_dim == axis))
    +
    806 {
    +
    807 for (auto i : indices)
    +
    808 {
    +
    809 auto idx = current_index;
    +
    810 idx[current_dim] = i;
    +
    811 out.push_back(std::move(idx));
    +
    812 }
    +
    813 }
    +
    814 else if ((current_dim == shape.size() - 1) && (current_dim != axis))
    +
    815 {
    +
    816 for (id_t i = 0; xtl::cmp_less(i, shape[current_dim]); ++i)
    +
    817 {
    +
    818 auto idx = current_index;
    +
    819 idx[current_dim] = i;
    +
    820 out.push_back(std::move(idx));
    +
    821 }
    +
    822 }
    +
    823 }
    +
    824
    +
    825 template <class S, class I>
    +
    826 inline auto select_indices(const S& shape, const I& indices, std::size_t axis)
    +
    827 {
    +
    828 using index_type = get_strides_t<S>;
    +
    829 auto out = std::vector<index_type>();
    +
    830 select_indices_impl(shape, indices, axis, 0, xtl::make_sequence<index_type>(shape.size()), out);
    +
    831 return out;
    +
    832 }
    +
    833
    +
    834 // TODO remove when fancy index views are implemented
    +
    835 // Poor man's indexing along a single axis as in NumPy a[:, [1, 3, 4]]
    +
    836 template <class E, class I>
    +
    837 inline auto fancy_indexing(E&& e, const I& indices, std::ptrdiff_t axis)
    +
    838 {
    +
    839 std::size_t const ax = normalize_axis(e.dimension(), axis);
    +
    840 using shape_t = get_strides_t<typename std::decay_t<E>::shape_type>;
    +
    841 auto shape = xtl::forward_sequence<shape_t, decltype(e.shape())>(e.shape());
    +
    842 shape[ax] = indices.size();
    +
    843 return reshape_view(
    +
    844 index_view(std::forward<E>(e), select_indices(e.shape(), indices, ax)),
    +
    845 std::move(shape)
    +
    846 );
    +
    847 }
    +
    848
    +
    849 template <class T, class I, class P>
    +
    850 inline auto quantile_kth_gamma(std::size_t n, const P& probas, T alpha, T beta)
    +
    851 {
    +
    852 const auto m = alpha + probas * (T(1) - alpha - beta);
    +
    853 // Evaluting since reused a lot
    +
    854 const auto p_n_m = eval(probas * static_cast<T>(n) + m - 1);
    +
    855 // Previous (virtual) index, may be out of bounds
    +
    856 const auto j = floor(p_n_m);
    +
    857 const auto j_jp1 = concatenate(xtuple(j, j + 1));
    +
    858 // Both interpolation indices, k and k+1
    +
    859 const auto k_kp1 = xt::cast<std::size_t>(clip(j_jp1, T(0), T(n - 1)));
    +
    860 // Both interpolation coefficients, 1-gamma and gamma
    +
    861 const auto omg_g = concatenate(xtuple(T(1) - (p_n_m - j), p_n_m - j));
    +
    862 return std::make_pair(eval(k_kp1), eval(omg_g));
    +
    863 }
    +
    864
    +
    865 // TODO should implement unsqueeze rather
    +
    866 template <class S>
    +
    867 inline auto unsqueeze_shape(const S& shape, std::size_t axis)
    +
    868 {
    +
    869 XTENSOR_ASSERT(axis <= shape.size());
    +
    870 auto new_shape = xtl::forward_sequence<xt::svector<std::size_t>, decltype(shape)>(shape);
    +
    871 new_shape.insert(new_shape.begin() + axis, 1);
    +
    872 return new_shape;
    +
    873 }
    +
    874 }
    +
    875
    +
    905 template <class T = double, class E, class P>
    +
    +
    906 inline auto quantile(E&& e, const P& probas, std::ptrdiff_t axis, T alpha, T beta)
    +
    907 {
    +
    908 XTENSOR_ASSERT(all(0. <= probas));
    +
    909 XTENSOR_ASSERT(all(probas <= 1.));
    +
    910 XTENSOR_ASSERT(0. <= alpha);
    +
    911 XTENSOR_ASSERT(alpha <= 1.);
    +
    912 XTENSOR_ASSERT(0. <= beta);
    +
    913 XTENSOR_ASSERT(beta <= 1.);
    +
    914
    +
    915 using tmp_shape_t = get_strides_t<typename std::decay_t<E>::shape_type>;
    +
    916 using id_t = typename tmp_shape_t::value_type;
    +
    917
    +
    918 std::size_t const ax = normalize_axis(e.dimension(), axis);
    +
    919 std::size_t const n = e.shape()[ax];
    +
    920 auto kth_gamma = detail::quantile_kth_gamma<T, id_t, P>(n, probas, alpha, beta);
    +
    921
    +
    922 // Select relevant values for computing interpolating quantiles
    +
    923 auto e_partition = xt::partition(std::forward<E>(e), kth_gamma.first, ax);
    +
    924 auto e_kth = detail::fancy_indexing(std::move(e_partition), std::move(kth_gamma.first), ax);
    +
    925
    +
    926 // Reshape interpolation coefficients
    +
    927 auto gm1_g_shape = xtl::make_sequence<tmp_shape_t>(e.dimension(), 1);
    +
    928 gm1_g_shape[ax] = kth_gamma.second.size();
    +
    929 auto gm1_g_reshaped = reshape_view(std::move(kth_gamma.second), std::move(gm1_g_shape));
    +
    930
    +
    931 // Compute interpolation
    +
    932 // TODO(C++20) use (and create) xt::lerp in C++
    +
    933 auto e_kth_g = std::move(e_kth) * std::move(gm1_g_reshaped);
    +
    934 // Reshape pairwise interpolate for suming along new axis
    +
    935 auto e_kth_g_shape = detail::unsqueeze_shape(e_kth_g.shape(), ax);
    +
    936 e_kth_g_shape[ax] = 2;
    +
    937 e_kth_g_shape[ax + 1] /= 2;
    +
    938 auto quantiles = xt::sum(reshape_view(std::move(e_kth_g), std::move(e_kth_g_shape)), ax);
    +
    939 // Cannot do a transpose on a non-strided expression so we have to eval
    +
    940 return moveaxis(eval(std::move(quantiles)), ax, 0);
    +
    941 }
    +
    +
    942
    +
    943 // Static proba array overload
    +
    944 template <class T = double, class E, std::size_t N>
    +
    945 inline auto quantile(E&& e, const T (&probas)[N], std::ptrdiff_t axis, T alpha, T beta)
    +
    946 {
    +
    947 return quantile(std::forward<E>(e), adapt(probas, {N}), axis, alpha, beta);
    +
    948 }
    +
    949
    +
    959 template <class T = double, class E, class P>
    +
    +
    960 inline auto quantile(E&& e, const P& probas, T alpha, T beta)
    +
    961 {
    +
    962 return quantile(xt::ravel(std::forward<E>(e)), probas, 0, alpha, beta);
    +
    963 }
    +
    +
    964
    +
    965 // Static proba array overload
    +
    966 template <class T = double, class E, std::size_t N>
    +
    967 inline auto quantile(E&& e, const T (&probas)[N], T alpha, T beta)
    +
    968 {
    +
    969 return quantile(std::forward<E>(e), adapt(probas, {N}), alpha, beta);
    +
    970 }
    +
    971
    +
    + +
    984 {
    + +
    988 hazen,
    +
    990 weibull,
    +
    992 linear,
    + + +
    997 };
    +
    +
    998
    +
    1008 template <class T = double, class E, class P>
    +
    1009 inline auto
    +
    +
    1010 quantile(E&& e, const P& probas, std::ptrdiff_t axis, quantile_method method = quantile_method::linear)
    +
    1011 {
    +
    1012 T alpha = 0.;
    +
    1013 T beta = 0.;
    +
    1014 switch (method)
    +
    1015 {
    + +
    1017 {
    +
    1018 alpha = 0.;
    +
    1019 beta = 1.;
    +
    1020 break;
    +
    1021 }
    + +
    1023 {
    +
    1024 alpha = 0.5;
    +
    1025 beta = 0.5;
    +
    1026 break;
    +
    1027 }
    + +
    1029 {
    +
    1030 alpha = 0.;
    +
    1031 beta = 0.;
    +
    1032 break;
    +
    1033 }
    + +
    1035 {
    +
    1036 alpha = 1.;
    +
    1037 beta = 1.;
    +
    1038 break;
    +
    1039 }
    + +
    1041 {
    +
    1042 alpha = 1. / 3.;
    +
    1043 beta = 1. / 3.;
    +
    1044 break;
    +
    1045 }
    + +
    1047 {
    +
    1048 alpha = 3. / 8.;
    +
    1049 beta = 3. / 8.;
    +
    1050 break;
    +
    1051 }
    +
    1052 }
    +
    1053 return quantile(std::forward<E>(e), probas, axis, alpha, beta);
    +
    1054 }
    +
    +
    1055
    +
    1056 // Static proba array overload
    +
    1057 template <class T = double, class E, std::size_t N>
    +
    1058 inline auto
    +
    1059 quantile(E&& e, const T (&probas)[N], std::ptrdiff_t axis, quantile_method method = quantile_method::linear)
    +
    1060 {
    +
    1061 return quantile(std::forward<E>(e), adapt(probas, {N}), axis, method);
    +
    1062 }
    +
    1063
    +
    1075 template <class T = double, class E, class P>
    +
    +
    1076 inline auto quantile(E&& e, const P& probas, quantile_method method = quantile_method::linear)
    +
    1077 {
    +
    1078 return quantile(xt::ravel(std::forward<E>(e)), probas, 0, method);
    +
    1079 }
    +
    +
    1080
    +
    1081 // Static proba array overload
    +
    1082 template <class T = double, class E, std::size_t N>
    +
    1083 inline auto quantile(E&& e, const T (&probas)[N], quantile_method method = quantile_method::linear)
    +
    1084 {
    +
    1085 return quantile(std::forward<E>(e), adapt(probas, {N}), method);
    +
    1086 }
    +
    1087
    +
    1088 /****************
    +
    1089 * xt::median *
    +
    1090 ****************/
    +
    1091
    +
    1092 template <class E>
    +
    1093 inline typename std::decay_t<E>::value_type median(E&& e)
    +
    1094 {
    +
    1095 using value_type = typename std::decay_t<E>::value_type;
    +
    1096 auto sz = e.size();
    +
    1097 if (sz % 2 == 0)
    +
    1098 {
    +
    1099 std::size_t szh = sz / 2; // integer floor div
    +
    1100 std::array<std::size_t, 2> kth = {szh - 1, szh};
    +
    1101 auto values = xt::partition(xt::flatten(e), kth);
    +
    1102 return (values[kth[0]] + values[kth[1]]) / value_type(2);
    +
    1103 }
    +
    1104 else
    +
    1105 {
    +
    1106 std::array<std::size_t, 1> kth = {(sz - 1) / 2};
    +
    1107 auto values = xt::partition(xt::flatten(e), kth);
    +
    1108 return values[kth[0]];
    +
    1109 }
    +
    1110 }
    +
    1111
    +
    1125 template <class E>
    +
    +
    1126 inline auto median(E&& e, std::ptrdiff_t axis)
    +
    1127 {
    +
    1128 std::size_t ax = normalize_axis(e.dimension(), axis);
    +
    1129 std::size_t sz = e.shape()[ax];
    +
    1130 xstrided_slice_vector sv(e.dimension(), xt::all());
    +
    1131
    +
    1132 if (sz % 2 == 0)
    +
    1133 {
    +
    1134 std::size_t szh = sz / 2; // integer floor div
    +
    1135 std::array<std::size_t, 2> kth = {szh - 1, szh};
    +
    1136 auto values = xt::partition(std::forward<E>(e), kth, static_cast<ptrdiff_t>(ax));
    +
    1137 sv[ax] = xt::range(szh - 1, szh + 1);
    +
    1138 return xt::mean(xt::strided_view(std::move(values), std::move(sv)), {ax});
    +
    1139 }
    +
    1140 else
    +
    1141 {
    +
    1142 std::size_t szh = (sz - 1) / 2;
    +
    1143 std::array<std::size_t, 1> kth = {(sz - 1) / 2};
    +
    1144 auto values = xt::partition(std::forward<E>(e), kth, static_cast<ptrdiff_t>(ax));
    +
    1145 sv[ax] = xt::range(szh, szh + 1);
    +
    1146 return xt::mean(xt::strided_view(std::move(values), std::move(sv)), {ax});
    +
    1147 }
    +
    1148 }
    +
    +
    1149
    +
    1150 namespace detail
    +
    1151 {
    +
    1152 template <class T>
    +
    1153 struct argfunc_result_type
    +
    1154 {
    +
    1155 using type = xarray<std::size_t>;
    +
    1156 };
    +
    1157
    +
    1158 template <class T, std::size_t N>
    +
    1159 struct argfunc_result_type<xtensor<T, N>>
    +
    1160 {
    +
    1161 using type = xtensor<std::size_t, N - 1>;
    +
    1162 };
    +
    1163
    +
    1164 template <layout_type L, class E, class F>
    +
    1165 inline typename argfunc_result_type<E>::type arg_func_impl(const E& e, std::size_t axis, F&& cmp)
    +
    1166 {
    +
    1167 using eval_type = typename detail::sort_eval_type<E>::type;
    +
    1168 using value_type = typename E::value_type;
    +
    1169 using result_type = typename argfunc_result_type<E>::type;
    +
    1170 using result_shape_type = typename result_type::shape_type;
    +
    1171
    +
    1172 if (e.dimension() == 1)
    +
    1173 {
    +
    1174 auto begin = e.template begin<L>();
    +
    1175 auto end = e.template end<L>();
    +
    1176 std::size_t i = static_cast<std::size_t>(std::distance(begin, std::min_element(begin, end)));
    +
    1177 return xtensor<size_t, 0>{i};
    +
    1178 }
    +
    1179
    +
    1180 result_shape_type alt_shape;
    +
    1181 xt::resize_container(alt_shape, e.dimension() - 1);
    +
    1182
    +
    1183 // Excluding copy, copy all of shape except for axis
    +
    1184 std::copy(e.shape().cbegin(), e.shape().cbegin() + std::ptrdiff_t(axis), alt_shape.begin());
    +
    1185 std::copy(
    +
    1186 e.shape().cbegin() + std::ptrdiff_t(axis) + 1,
    +
    1187 e.shape().cend(),
    +
    1188 alt_shape.begin() + std::ptrdiff_t(axis)
    +
    1189 );
    +
    1190
    +
    1191 result_type result = result_type::from_shape(std::move(alt_shape));
    +
    1192 auto result_iter = result.template begin<L>();
    +
    1193
    +
    1194 auto arg_func_lambda = [&result_iter, &cmp](auto begin, auto end)
    +
    1195 {
    +
    1196 std::size_t idx = 0;
    +
    1197 value_type val = *begin;
    +
    1198 ++begin;
    +
    1199 for (std::size_t i = 1; begin != end; ++begin, ++i)
    +
    1200 {
    +
    1201 if (cmp(*begin, val))
    +
    1202 {
    +
    1203 val = *begin;
    +
    1204 idx = i;
    +
    1205 }
    +
    1206 }
    +
    1207 *result_iter = idx;
    +
    1208 ++result_iter;
    +
    1209 };
    +
    1210
    +
    1211 if (axis != detail::leading_axis(e))
    +
    1212 {
    +
    1213 dynamic_shape<std::size_t> permutation, reverse_permutation;
    +
    1214 std::tie(
    +
    1215 permutation,
    +
    1216 reverse_permutation
    +
    1217 ) = detail::get_permutations(e.dimension(), axis, e.layout());
    +
    1218
    +
    1219 // note: creating copy
    +
    1220 eval_type input = transpose(e, permutation);
    +
    1221 detail::call_over_leading_axis(input, arg_func_lambda);
    +
    1222 return result;
    +
    1223 }
    +
    1224 else
    +
    1225 {
    +
    1226 auto&& input = eval(e);
    +
    1227 detail::call_over_leading_axis(input, arg_func_lambda);
    +
    1228 return result;
    +
    1229 }
    +
    1230 }
    +
    1231 }
    +
    1232
    +
    1233 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E>
    +
    1234 inline auto argmin(const xexpression<E>& e)
    +
    1235 {
    +
    1236 using value_type = typename E::value_type;
    +
    1237 auto&& ed = eval(e.derived_cast());
    +
    1238 auto begin = ed.template begin<L>();
    +
    1239 auto end = ed.template end<L>();
    +
    1240 std::size_t i = static_cast<std::size_t>(std::distance(begin, std::min_element(begin, end)));
    +
    1241 return xtensor<size_t, 0>{i};
    +
    1242 }
    +
    1243
    +
    1254 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E>
    +
    +
    1255 inline auto argmin(const xexpression<E>& e, std::ptrdiff_t axis)
    +
    1256 {
    +
    1257 using value_type = typename E::value_type;
    +
    1258 auto&& ed = eval(e.derived_cast());
    +
    1259 std::size_t ax = normalize_axis(ed.dimension(), axis);
    +
    1260 return detail::arg_func_impl<L>(ed, ax, std::less<value_type>());
    +
    1261 }
    +
    +
    1262
    +
    1263 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E>
    +
    1264 inline auto argmax(const xexpression<E>& e)
    +
    1265 {
    +
    1266 using value_type = typename E::value_type;
    +
    1267 auto&& ed = eval(e.derived_cast());
    +
    1268 auto begin = ed.template begin<L>();
    +
    1269 auto end = ed.template end<L>();
    +
    1270 std::size_t i = static_cast<std::size_t>(std::distance(begin, std::max_element(begin, end)));
    +
    1271 return xtensor<size_t, 0>{i};
    +
    1272 }
    +
    1273
    +
    1285 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E>
    +
    +
    1286 inline auto argmax(const xexpression<E>& e, std::ptrdiff_t axis)
    +
    1287 {
    +
    1288 using value_type = typename E::value_type;
    +
    1289 auto&& ed = eval(e.derived_cast());
    +
    1290 std::size_t ax = normalize_axis(ed.dimension(), axis);
    +
    1291 return detail::arg_func_impl<L>(ed, ax, std::greater<value_type>());
    +
    1292 }
    +
    +
    1293
    +
    1301 template <class E>
    +
    +
    1302 inline auto unique(const xexpression<E>& e)
    +
    1303 {
    +
    1304 auto sorted = sort(e, xnone());
    +
    1305 auto end = std::unique(sorted.begin(), sorted.end());
    +
    1306 std::size_t sz = static_cast<std::size_t>(std::distance(sorted.begin(), end));
    +
    1307 // TODO check if we can shrink the vector without reallocation
    +
    1308 using value_type = typename E::value_type;
    +
    1309 auto result = xtensor<value_type, 1>::from_shape({sz});
    +
    1310 std::copy(sorted.begin(), end, result.begin());
    +
    1311 return result;
    +
    1312 }
    +
    +
    1313
    +
    1322 template <class E1, class E2>
    +
    +
    1323 inline auto setdiff1d(const xexpression<E1>& ar1, const xexpression<E2>& ar2)
    +
    1324 {
    +
    1325 using value_type = typename E1::value_type;
    +
    1326
    +
    1327 auto unique1 = unique(ar1);
    +
    1328 auto unique2 = unique(ar2);
    +
    1329
    +
    1330 auto tmp = xtensor<value_type, 1>::from_shape({unique1.size()});
    +
    1331
    +
    1332 auto end = std::set_difference(unique1.begin(), unique1.end(), unique2.begin(), unique2.end(), tmp.begin());
    +
    1333
    +
    1334 std::size_t sz = static_cast<std::size_t>(std::distance(tmp.begin(), end));
    +
    1335
    +
    1336 auto result = xtensor<value_type, 1>::from_shape({sz});
    +
    1337
    +
    1338 std::copy(tmp.begin(), end, result.begin());
    +
    1339
    +
    1340 return result;
    +
    1341 }
    +
    +
    1342}
    +
    1343
    +
    1344#endif
    + +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    auto clip(E1 &&e1, E2 &&lo, E3 &&hi) noexcept -> detail::xfunction_type_t< math::clamp_fun, E1, E2, E3 >
    Clip values between hi and lo.
    Definition xmath.hpp:814
    +
    auto floor(E &&e) noexcept -> detail::xfunction_type_t< math::floor_fun, E >
    floor function.
    Definition xmath.hpp:1591
    +
    auto sum(E &&e, X &&axes, EVS es=EVS())
    Sum of elements over given axes.
    Definition xmath.hpp:1840
    +
    auto mean(E &&e, X &&axes, EVS es=EVS())
    Mean of elements over given axes.
    Definition xmath.hpp:1934
    +
    auto adapt(C &&container, const SC &shape, layout_type l=L)
    Constructs:
    +
    auto eval(T &&t) -> std::enable_if_t< detail::is_container< std::decay_t< T > >::value, T && >
    Force evaluation of xexpression.
    Definition xeval.hpp:46
    +
    auto flatten(E &&e)
    Return a flatten view of the given expression.
    +
    auto moveaxis(E &&e, std::ptrdiff_t src, std::ptrdiff_t dest)
    Return a new expression with an axis move to a new position.
    +
    auto ravel(E &&e)
    Return a flatten view of the given expression.
    +
    auto transpose(E &&e) noexcept
    Returns a transpose view by reversing the dimensions of xexpression e.
    +
    quantile_method
    Quantile interpolation method.
    Definition xsort.hpp:984
    +
    auto unique(const xexpression< E > &e)
    Find unique elements of a xexpression.
    Definition xsort.hpp:1302
    +
    R partition(const xexpression< E > &e, C kth_container, placeholders::xtuph)
    Partially sort xexpression.
    Definition xsort.hpp:569
    +
    auto quantile(E &&e, const P &probas, std::ptrdiff_t axis, T alpha, T beta)
    Compute quantiles over the given axis.
    Definition xsort.hpp:906
    +
    auto setdiff1d(const xexpression< E1 > &ar1, const xexpression< E2 > &ar2)
    Find the set difference of two xexpressions.
    Definition xsort.hpp:1323
    +
    R argpartition(const xexpression< E > &e, C kth_container, placeholders::xtuph)
    Partially sort arguments.
    Definition xsort.hpp:664
    +
    @ weibull
    Method 6 of (Hyndman and Fan, 1996) with alpha=0 and beta=0.
    +
    @ interpolated_inverted_cdf
    Method 4 of (Hyndman and Fan, 1996) with alpha=0 and beta=1.
    +
    @ linear
    Method 7 of (Hyndman and Fan, 1996) with alpha=1 and beta=1.
    +
    @ normal_unbiased
    Method 9 of (Hyndman and Fan, 1996) with alpha=3/8 and beta=3/8.
    +
    @ median_unbiased
    Method 8 of (Hyndman and Fan, 1996) with alpha=1/3 and beta=1/3.
    +
    @ hazen
    Method 5 of (Hyndman and Fan, 1996) with alpha=1/2 and beta=1/2.
    +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    xarray_container< uvector< T, A >, L, xt::svector< typename uvector< T, A >::size_type, 4, SA, true > > xarray
    Alias template on xarray_container with default parameters for data container type and shape / stride...
    +
    auto concatenate(std::tuple< CT... > &&t, std::size_t axis=0)
    Concatenates xexpressions along axis.
    Definition xbuilder.hpp:784
    +
    xtensor_container< uvector< T, A >, N, L > xtensor
    Alias template on xtensor_container with default parameters for data container type.
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    xfixed_container< T, FSH, L, Sharable > xtensor_fixed
    Alias template on xfixed_container with default parameters for layout type.
    +
    auto index_view(E &&e, I &&indices) noexcept
    creates an indexview from a container of indices.
    +
    sorting_method
    Sorting method.
    Definition xsort.hpp:279
    +
    @ quick
    Faster method but with no guarantee on preservation of order of equal elements https://en....
    +
    @ stable
    Slower method but with guarantee on preservation of order of equal elements https://en....
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    +
    auto xtuple(Types &&... args)
    Creates tuples from arguments for concatenate and stack.
    Definition xbuilder.hpp:661
    +
    +
    + + + + diff --git a/xstorage_8hpp_source.html b/xstorage_8hpp_source.html new file mode 100644 index 000000000..bb4ec9d72 --- /dev/null +++ b/xstorage_8hpp_source.html @@ -0,0 +1,2107 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xstorage.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xstorage.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_STORAGE_HPP
    +
    11#define XTENSOR_STORAGE_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <functional>
    +
    16#include <initializer_list>
    +
    17#include <iterator>
    +
    18#include <memory>
    +
    19#include <type_traits>
    +
    20
    +
    21#include "xexception.hpp"
    +
    22#include "xtensor_config.hpp"
    +
    23#include "xtensor_simd.hpp"
    +
    24#include "xutils.hpp"
    +
    25
    +
    26namespace xt
    +
    27{
    +
    28
    +
    29 namespace detail
    +
    30 {
    +
    31 template <class It>
    +
    32 using require_input_iter = typename std::enable_if<
    +
    33 std::is_convertible<typename std::iterator_traits<It>::iterator_category, std::input_iterator_tag>::value>::type;
    +
    34 }
    +
    35
    +
    36 template <class C>
    +
    +
    37 struct is_contiguous_container : std::true_type
    +
    38 {
    +
    39 };
    +
    +
    40
    +
    41 template <class T, class A = std::allocator<T>>
    +
    +
    42 class uvector
    +
    43 {
    +
    44 public:
    +
    45
    +
    46 using allocator_type = A;
    +
    47
    +
    48 using value_type = typename std::allocator_traits<A>::value_type;
    +
    49 using reference = value_type&;
    +
    50 using const_reference = const value_type&;
    +
    51 using pointer = typename std::allocator_traits<A>::pointer;
    +
    52 using const_pointer = typename std::allocator_traits<A>::const_pointer;
    +
    53
    +
    54 using size_type = typename std::allocator_traits<A>::size_type;
    +
    55 using difference_type = typename std::allocator_traits<A>::difference_type;
    +
    56
    +
    57 using iterator = pointer;
    +
    58 using const_iterator = const_pointer;
    +
    59 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    60 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    61
    +
    62 uvector() noexcept;
    +
    63 explicit uvector(const allocator_type& alloc) noexcept;
    +
    64 explicit uvector(size_type count, const allocator_type& alloc = allocator_type());
    +
    65 uvector(size_type count, const_reference value, const allocator_type& alloc = allocator_type());
    +
    66
    +
    67 template <class InputIt, class = detail::require_input_iter<InputIt>>
    +
    68 uvector(InputIt first, InputIt last, const allocator_type& alloc = allocator_type());
    +
    69
    +
    70 uvector(std::initializer_list<T> init, const allocator_type& alloc = allocator_type());
    +
    71
    +
    72 ~uvector();
    +
    73
    +
    74 uvector(const uvector& rhs);
    +
    75 uvector(const uvector& rhs, const allocator_type& alloc);
    +
    76 uvector& operator=(const uvector&);
    +
    77
    +
    78 uvector(uvector&& rhs) noexcept;
    +
    79 uvector(uvector&& rhs, const allocator_type& alloc) noexcept;
    +
    80 uvector& operator=(uvector&& rhs) noexcept;
    +
    81
    +
    82 allocator_type get_allocator() const noexcept;
    +
    83
    +
    84 bool empty() const noexcept;
    +
    85 size_type size() const noexcept;
    +
    86 void resize(size_type size);
    +
    87 size_type max_size() const noexcept;
    +
    88 void reserve(size_type new_cap);
    +
    89 size_type capacity() const noexcept;
    +
    90 void shrink_to_fit();
    +
    91 void clear();
    +
    92
    +
    93 reference operator[](size_type i);
    +
    94 const_reference operator[](size_type i) const;
    +
    95
    +
    96 reference at(size_type i);
    +
    97 const_reference at(size_type i) const;
    +
    98
    +
    99 reference front();
    +
    100 const_reference front() const;
    +
    101
    +
    102 reference back();
    +
    103 const_reference back() const;
    +
    104
    +
    105 pointer data() noexcept;
    +
    106 const_pointer data() const noexcept;
    +
    107
    +
    108 iterator begin() noexcept;
    +
    109 iterator end() noexcept;
    +
    110
    +
    111 const_iterator begin() const noexcept;
    +
    112 const_iterator end() const noexcept;
    +
    113
    +
    114 const_iterator cbegin() const noexcept;
    +
    115 const_iterator cend() const noexcept;
    +
    116
    +
    117 reverse_iterator rbegin() noexcept;
    +
    118 reverse_iterator rend() noexcept;
    +
    119
    +
    120 const_reverse_iterator rbegin() const noexcept;
    +
    121 const_reverse_iterator rend() const noexcept;
    +
    122
    +
    123 const_reverse_iterator crbegin() const noexcept;
    +
    124 const_reverse_iterator crend() const noexcept;
    +
    125
    +
    126 void swap(uvector& rhs) noexcept;
    +
    127
    +
    128 private:
    +
    129
    +
    130 template <class I>
    +
    131 void init_data(I first, I last);
    +
    132
    +
    133 void resize_impl(size_type new_size);
    +
    134
    +
    135 allocator_type m_allocator;
    +
    136
    +
    137 // Storing a pair of pointers is more efficient for iterating than
    +
    138 // storing a pointer to the beginning and the size of the container
    +
    139 pointer p_begin;
    +
    140 pointer p_end;
    +
    141 };
    +
    +
    142
    +
    143 template <class T, class A>
    +
    144 bool operator==(const uvector<T, A>& lhs, const uvector<T, A>& rhs);
    +
    145
    +
    146 template <class T, class A>
    +
    147 bool operator!=(const uvector<T, A>& lhs, const uvector<T, A>& rhs);
    +
    148
    +
    149 template <class T, class A>
    +
    150 bool operator<(const uvector<T, A>& lhs, const uvector<T, A>& rhs);
    +
    151
    +
    152 template <class T, class A>
    +
    153 bool operator<=(const uvector<T, A>& lhs, const uvector<T, A>& rhs);
    +
    154
    +
    155 template <class T, class A>
    +
    156 bool operator>(const uvector<T, A>& lhs, const uvector<T, A>& rhs);
    +
    157
    +
    158 template <class T, class A>
    +
    159 bool operator>=(const uvector<T, A>& lhs, const uvector<T, A>& rhs);
    +
    160
    +
    161 template <class T, class A>
    +
    162 void swap(uvector<T, A>& lhs, uvector<T, A>& rhs) noexcept;
    +
    163
    +
    164 /**************************
    +
    165 * uvector implementation *
    +
    166 **************************/
    +
    167
    +
    168 namespace detail
    +
    169 {
    +
    170 template <class A>
    +
    171 inline typename std::allocator_traits<A>::pointer
    +
    172 safe_init_allocate(A& alloc, typename std::allocator_traits<A>::size_type size)
    +
    173 {
    +
    174 using traits = std::allocator_traits<A>;
    +
    175 using pointer = typename traits::pointer;
    +
    176 using value_type = typename traits::value_type;
    +
    177 pointer res = alloc.allocate(size);
    +
    178 if (!xtrivially_default_constructible<value_type>::value)
    +
    179 {
    +
    180 for (pointer p = res; p != res + size; ++p)
    +
    181 {
    +
    182 traits::construct(alloc, p, value_type());
    +
    183 }
    +
    184 }
    +
    185 return res;
    +
    186 }
    +
    187
    +
    188 template <class A>
    +
    189 inline void safe_destroy_deallocate(
    +
    190 A& alloc,
    +
    191 typename std::allocator_traits<A>::pointer ptr,
    +
    192 typename std::allocator_traits<A>::size_type size
    +
    193 )
    +
    194 {
    +
    195 using traits = std::allocator_traits<A>;
    +
    196 using pointer = typename traits::pointer;
    +
    197 using value_type = typename traits::value_type;
    +
    198 if (ptr != nullptr)
    +
    199 {
    +
    200 if (!xtrivially_default_constructible<value_type>::value)
    +
    201 {
    +
    202 for (pointer p = ptr; p != ptr + size; ++p)
    +
    203 {
    +
    204 traits::destroy(alloc, p);
    +
    205 }
    +
    206 }
    +
    207 traits::deallocate(alloc, ptr, size);
    +
    208 }
    +
    209 }
    +
    210 }
    +
    211
    +
    212 template <class T, class A>
    +
    213 template <class I>
    +
    214 inline void uvector<T, A>::init_data(I first, I last)
    +
    215 {
    +
    216 size_type size = static_cast<size_type>(std::distance(first, last));
    +
    217 if (size != size_type(0))
    +
    218 {
    +
    219 p_begin = m_allocator.allocate(size);
    +
    220 std::uninitialized_copy(first, last, p_begin);
    +
    221 p_end = p_begin + size;
    +
    222 }
    +
    223 }
    +
    224
    +
    225 template <class T, class A>
    +
    226 inline void uvector<T, A>::resize_impl(size_type new_size)
    +
    227 {
    +
    228 size_type old_size = size();
    +
    229 pointer old_begin = p_begin;
    +
    230 if (new_size != old_size)
    +
    231 {
    +
    232 p_begin = detail::safe_init_allocate(m_allocator, new_size);
    +
    233 p_end = p_begin + new_size;
    +
    234 detail::safe_destroy_deallocate(m_allocator, old_begin, old_size);
    +
    235 }
    +
    236 }
    +
    237
    +
    238 template <class T, class A>
    +
    239 inline uvector<T, A>::uvector() noexcept
    +
    240 : uvector(allocator_type())
    +
    241 {
    +
    242 }
    +
    243
    +
    244 template <class T, class A>
    +
    245 inline uvector<T, A>::uvector(const allocator_type& alloc) noexcept
    +
    246 : m_allocator(alloc)
    +
    247 , p_begin(nullptr)
    +
    248 , p_end(nullptr)
    +
    249 {
    +
    250 }
    +
    251
    +
    252 template <class T, class A>
    +
    253 inline uvector<T, A>::uvector(size_type count, const allocator_type& alloc)
    +
    254 : m_allocator(alloc)
    +
    255 , p_begin(nullptr)
    +
    256 , p_end(nullptr)
    +
    257 {
    +
    258 if (count != 0)
    +
    259 {
    +
    260 p_begin = detail::safe_init_allocate(m_allocator, count);
    +
    261 p_end = p_begin + count;
    +
    262 }
    +
    263 }
    +
    264
    +
    265 template <class T, class A>
    +
    266 inline uvector<T, A>::uvector(size_type count, const_reference value, const allocator_type& alloc)
    +
    267 : m_allocator(alloc)
    +
    268 , p_begin(nullptr)
    +
    269 , p_end(nullptr)
    +
    270 {
    +
    271 if (count != 0)
    +
    272 {
    +
    273 p_begin = m_allocator.allocate(count);
    +
    274 p_end = p_begin + count;
    +
    275 std::uninitialized_fill(p_begin, p_end, value);
    +
    276 }
    +
    277 }
    +
    278
    +
    279 template <class T, class A>
    +
    280 template <class InputIt, class>
    +
    281 inline uvector<T, A>::uvector(InputIt first, InputIt last, const allocator_type& alloc)
    +
    282 : m_allocator(alloc)
    +
    283 , p_begin(nullptr)
    +
    284 , p_end(nullptr)
    +
    285 {
    +
    286 init_data(first, last);
    +
    287 }
    +
    288
    +
    289 template <class T, class A>
    +
    290 inline uvector<T, A>::uvector(std::initializer_list<T> init, const allocator_type& alloc)
    +
    291 : m_allocator(alloc)
    +
    292 , p_begin(nullptr)
    +
    293 , p_end(nullptr)
    +
    294 {
    +
    295 init_data(init.begin(), init.end());
    +
    296 }
    +
    297
    +
    298 template <class T, class A>
    +
    299 inline uvector<T, A>::~uvector()
    +
    300 {
    +
    301 detail::safe_destroy_deallocate(m_allocator, p_begin, size());
    +
    302 p_begin = nullptr;
    +
    303 p_end = nullptr;
    +
    304 }
    +
    305
    +
    306 template <class T, class A>
    +
    307 inline uvector<T, A>::uvector(const uvector& rhs)
    +
    308 : m_allocator(
    +
    309 std::allocator_traits<allocator_type>::select_on_container_copy_construction(rhs.get_allocator())
    +
    310 )
    +
    311 , p_begin(nullptr)
    +
    312 , p_end(nullptr)
    +
    313 {
    +
    314 init_data(rhs.p_begin, rhs.p_end);
    +
    315 }
    +
    316
    +
    317 template <class T, class A>
    +
    318 inline uvector<T, A>::uvector(const uvector& rhs, const allocator_type& alloc)
    +
    319 : m_allocator(alloc)
    +
    320 , p_begin(nullptr)
    +
    321 , p_end(nullptr)
    +
    322 {
    +
    323 init_data(rhs.p_begin, rhs.p_end);
    +
    324 }
    +
    325
    +
    326 template <class T, class A>
    +
    327 inline uvector<T, A>& uvector<T, A>::operator=(const uvector& rhs)
    +
    328 {
    +
    329 // No copy and swap idiom here due to performance issues
    +
    330 if (this != &rhs)
    +
    331 {
    +
    332 m_allocator = std::allocator_traits<allocator_type>::select_on_container_copy_construction(
    +
    333 rhs.get_allocator()
    +
    334 );
    +
    335 resize_impl(rhs.size());
    +
    336 if (xtrivially_default_constructible<value_type>::value)
    +
    337 {
    +
    338 std::uninitialized_copy(rhs.p_begin, rhs.p_end, p_begin);
    +
    339 }
    +
    340 else
    +
    341 {
    +
    342 std::copy(rhs.p_begin, rhs.p_end, p_begin);
    +
    343 }
    +
    344 }
    +
    345 return *this;
    +
    346 }
    +
    347
    +
    348 template <class T, class A>
    +
    349 inline uvector<T, A>::uvector(uvector&& rhs) noexcept
    +
    350 : m_allocator(std::move(rhs.m_allocator))
    +
    351 , p_begin(rhs.p_begin)
    +
    352 , p_end(rhs.p_end)
    +
    353 {
    +
    354 rhs.p_begin = nullptr;
    +
    355 rhs.p_end = nullptr;
    +
    356 }
    +
    357
    +
    358 template <class T, class A>
    +
    359 inline uvector<T, A>::uvector(uvector&& rhs, const allocator_type& alloc) noexcept
    +
    360 : m_allocator(alloc)
    +
    361 , p_begin(rhs.p_begin)
    +
    362 , p_end(rhs.p_end)
    +
    363 {
    +
    364 rhs.p_begin = nullptr;
    +
    365 rhs.p_end = nullptr;
    +
    366 }
    +
    367
    +
    368 template <class T, class A>
    +
    369 inline uvector<T, A>& uvector<T, A>::operator=(uvector&& rhs) noexcept
    +
    370 {
    +
    371 using std::swap;
    +
    372 uvector tmp(std::move(rhs));
    +
    373 swap(p_begin, tmp.p_begin);
    +
    374 swap(p_end, tmp.p_end);
    +
    375 return *this;
    +
    376 }
    +
    377
    +
    378 template <class T, class A>
    +
    379 inline auto uvector<T, A>::get_allocator() const noexcept -> allocator_type
    +
    380 {
    +
    381 return allocator_type(m_allocator);
    +
    382 }
    +
    383
    +
    384 template <class T, class A>
    +
    385 inline bool uvector<T, A>::empty() const noexcept
    +
    386 {
    +
    387 return size() == size_type(0);
    +
    388 }
    +
    389
    +
    390 template <class T, class A>
    +
    391 inline auto uvector<T, A>::size() const noexcept -> size_type
    +
    392 {
    +
    393 return static_cast<size_type>(p_end - p_begin);
    +
    394 }
    +
    395
    +
    396 template <class T, class A>
    +
    397 inline void uvector<T, A>::resize(size_type size)
    +
    398 {
    +
    399 resize_impl(size);
    +
    400 }
    +
    401
    +
    402 template <class T, class A>
    +
    403 inline auto uvector<T, A>::max_size() const noexcept -> size_type
    +
    404 {
    +
    405 return m_allocator.max_size();
    +
    406 }
    +
    407
    +
    408 template <class T, class A>
    +
    409 inline void uvector<T, A>::reserve(size_type /*new_cap*/)
    +
    410 {
    +
    411 }
    +
    412
    +
    413 template <class T, class A>
    +
    414 inline auto uvector<T, A>::capacity() const noexcept -> size_type
    +
    415 {
    +
    416 return size();
    +
    417 }
    +
    418
    +
    419 template <class T, class A>
    +
    420 inline void uvector<T, A>::shrink_to_fit()
    +
    421 {
    +
    422 }
    +
    423
    +
    424 template <class T, class A>
    +
    425 inline void uvector<T, A>::clear()
    +
    426 {
    +
    427 resize(size_type(0));
    +
    428 }
    +
    429
    +
    430 template <class T, class A>
    +
    431 inline auto uvector<T, A>::operator[](size_type i) -> reference
    +
    432 {
    +
    433 return p_begin[i];
    +
    434 }
    +
    435
    +
    436 template <class T, class A>
    +
    437 inline auto uvector<T, A>::operator[](size_type i) const -> const_reference
    +
    438 {
    +
    439 return p_begin[i];
    +
    440 }
    +
    441
    +
    442 template <class T, class A>
    +
    443 inline auto uvector<T, A>::at(size_type i) -> reference
    +
    444 {
    +
    445 if (i >= size())
    +
    446 {
    +
    447 XTENSOR_THROW(std::out_of_range, "Out of range in uvector access");
    +
    448 }
    +
    449 return this->operator[](i);
    +
    450 }
    +
    451
    +
    452 template <class T, class A>
    +
    453 inline auto uvector<T, A>::at(size_type i) const -> const_reference
    +
    454 {
    +
    455 if (i >= size())
    +
    456 {
    +
    457 XTENSOR_THROW(std::out_of_range, "Out of range in uvector access");
    +
    458 }
    +
    459 return this->operator[](i);
    +
    460 }
    +
    461
    +
    462 template <class T, class A>
    +
    463 inline auto uvector<T, A>::front() -> reference
    +
    464 {
    +
    465 return p_begin[0];
    +
    466 }
    +
    467
    +
    468 template <class T, class A>
    +
    469 inline auto uvector<T, A>::front() const -> const_reference
    +
    470 {
    +
    471 return p_begin[0];
    +
    472 }
    +
    473
    +
    474 template <class T, class A>
    +
    475 inline auto uvector<T, A>::back() -> reference
    +
    476 {
    +
    477 return *(p_end - 1);
    +
    478 }
    +
    479
    +
    480 template <class T, class A>
    +
    481 inline auto uvector<T, A>::back() const -> const_reference
    +
    482 {
    +
    483 return *(p_end - 1);
    +
    484 }
    +
    485
    +
    486 template <class T, class A>
    +
    487 inline auto uvector<T, A>::data() noexcept -> pointer
    +
    488 {
    +
    489 return p_begin;
    +
    490 }
    +
    491
    +
    492 template <class T, class A>
    +
    493 inline auto uvector<T, A>::data() const noexcept -> const_pointer
    +
    494 {
    +
    495 return p_begin;
    +
    496 }
    +
    497
    +
    498 template <class T, class A>
    +
    499 inline auto uvector<T, A>::begin() noexcept -> iterator
    +
    500 {
    +
    501 return p_begin;
    +
    502 }
    +
    503
    +
    504 template <class T, class A>
    +
    505 inline auto uvector<T, A>::end() noexcept -> iterator
    +
    506 {
    +
    507 return p_end;
    +
    508 }
    +
    509
    +
    510 template <class T, class A>
    +
    511 inline auto uvector<T, A>::begin() const noexcept -> const_iterator
    +
    512 {
    +
    513 return p_begin;
    +
    514 }
    +
    515
    +
    516 template <class T, class A>
    +
    517 inline auto uvector<T, A>::end() const noexcept -> const_iterator
    +
    518 {
    +
    519 return p_end;
    +
    520 }
    +
    521
    +
    522 template <class T, class A>
    +
    523 inline auto uvector<T, A>::cbegin() const noexcept -> const_iterator
    +
    524 {
    +
    525 return begin();
    +
    526 }
    +
    527
    +
    528 template <class T, class A>
    +
    529 inline auto uvector<T, A>::cend() const noexcept -> const_iterator
    +
    530 {
    +
    531 return end();
    +
    532 }
    +
    533
    +
    534 template <class T, class A>
    +
    535 inline auto uvector<T, A>::rbegin() noexcept -> reverse_iterator
    +
    536 {
    +
    537 return reverse_iterator(end());
    +
    538 }
    +
    539
    +
    540 template <class T, class A>
    +
    541 inline auto uvector<T, A>::rend() noexcept -> reverse_iterator
    +
    542 {
    +
    543 return reverse_iterator(begin());
    +
    544 }
    +
    545
    +
    546 template <class T, class A>
    +
    547 inline auto uvector<T, A>::rbegin() const noexcept -> const_reverse_iterator
    +
    548 {
    +
    549 return const_reverse_iterator(end());
    +
    550 }
    +
    551
    +
    552 template <class T, class A>
    +
    553 inline auto uvector<T, A>::rend() const noexcept -> const_reverse_iterator
    +
    554 {
    +
    555 return const_reverse_iterator(begin());
    +
    556 }
    +
    557
    +
    558 template <class T, class A>
    +
    559 inline auto uvector<T, A>::crbegin() const noexcept -> const_reverse_iterator
    +
    560 {
    +
    561 return rbegin();
    +
    562 }
    +
    563
    +
    564 template <class T, class A>
    +
    565 inline auto uvector<T, A>::crend() const noexcept -> const_reverse_iterator
    +
    566 {
    +
    567 return rend();
    +
    568 }
    +
    569
    +
    570 template <class T, class A>
    +
    571 inline void uvector<T, A>::swap(uvector<T, A>& rhs) noexcept
    +
    572 {
    +
    573 using std::swap;
    +
    574 swap(m_allocator, rhs.m_allocator);
    +
    575 swap(p_begin, rhs.p_begin);
    +
    576 swap(p_end, rhs.p_end);
    +
    577 }
    +
    578
    +
    579 template <class T, class A>
    +
    580 inline bool operator==(const uvector<T, A>& lhs, const uvector<T, A>& rhs)
    +
    581 {
    +
    582 return lhs.size() == rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin());
    +
    583 }
    +
    584
    +
    585 template <class T, class A>
    +
    586 inline bool operator!=(const uvector<T, A>& lhs, const uvector<T, A>& rhs)
    +
    587 {
    +
    588 return !(lhs == rhs);
    +
    589 }
    +
    590
    +
    591 template <class T, class A>
    +
    592 inline bool operator<(const uvector<T, A>& lhs, const uvector<T, A>& rhs)
    +
    593 {
    +
    594 return std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
    +
    595 }
    +
    596
    +
    597 template <class T, class A>
    +
    598 inline bool operator<=(const uvector<T, A>& lhs, const uvector<T, A>& rhs)
    +
    599 {
    +
    600 return !(lhs > rhs);
    +
    601 }
    +
    602
    +
    603 template <class T, class A>
    +
    604 inline bool operator>(const uvector<T, A>& lhs, const uvector<T, A>& rhs)
    +
    605 {
    +
    606 return rhs < lhs;
    +
    607 }
    +
    608
    +
    609 template <class T, class A>
    +
    610 inline bool operator>=(const uvector<T, A>& lhs, const uvector<T, A>& rhs)
    +
    611 {
    +
    612 return !(lhs < rhs);
    +
    613 }
    +
    614
    +
    615 template <class T, class A>
    +
    616 inline void swap(uvector<T, A>& lhs, uvector<T, A>& rhs) noexcept
    +
    617 {
    +
    618 lhs.swap(rhs);
    +
    619 }
    +
    620
    +
    621 /**************************
    +
    622 * svector implementation *
    +
    623 **************************/
    +
    624
    +
    625 namespace detail
    +
    626 {
    +
    627 template <class T>
    +
    628 struct allocator_alignment
    +
    629 {
    +
    630 static constexpr std::size_t value = 0;
    +
    631 };
    +
    632
    +
    633 template <class T, std::size_t A>
    +
    634 struct allocator_alignment<xt_simd::aligned_allocator<T, A>>
    +
    635 {
    +
    636 static constexpr std::size_t value = A;
    +
    637 };
    +
    638 }
    +
    639
    +
    640 template <class T, std::size_t N = 4, class A = std::allocator<T>, bool Init = true>
    +
    + +
    642 {
    +
    643 public:
    +
    644
    + +
    646 using allocator_type = A;
    +
    647 using size_type = typename std::allocator_traits<A>::size_type;
    +
    648 using value_type = typename std::allocator_traits<A>::value_type;
    +
    649 using pointer = typename std::allocator_traits<A>::pointer;
    +
    650 using const_pointer = typename std::allocator_traits<A>::const_pointer;
    +
    651 using reference = value_type&;
    +
    652 using const_reference = const value_type&;
    +
    653 using difference_type = typename std::allocator_traits<A>::difference_type;
    +
    654
    +
    655 using iterator = pointer;
    +
    656 using const_iterator = const_pointer;
    +
    657 using reverse_iterator = std::reverse_iterator<iterator>;
    +
    658 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    659
    +
    660#if defined(_MSC_VER) && _MSC_VER < 1910
    +
    661 static constexpr std::size_t alignment = detail::allocator_alignment<A>::value;
    +
    662#else
    +
    663 static constexpr std::size_t alignment = detail::allocator_alignment<A>::value != 0
    +
    664 ? detail::allocator_alignment<A>::value
    +
    665 : alignof(T);
    +
    666#endif
    +
    667
    +
    668 svector() noexcept;
    +
    669 ~svector();
    +
    670
    +
    671 explicit svector(const allocator_type& alloc) noexcept;
    +
    672 explicit svector(size_type n, const allocator_type& alloc = allocator_type());
    +
    673 svector(size_type n, const value_type& v, const allocator_type& alloc = allocator_type());
    +
    674 svector(std::initializer_list<T> il, const allocator_type& alloc = allocator_type());
    +
    675
    +
    676 svector(const std::vector<T>& vec);
    +
    677
    +
    678 template <class IT, class = detail::require_input_iter<IT>>
    +
    679 svector(IT begin, IT end, const allocator_type& alloc = allocator_type());
    +
    680
    +
    681 template <std::size_t N2, bool I2, class = std::enable_if_t<N != N2, void>>
    +
    682 explicit svector(const svector<T, N2, A, I2>& rhs);
    +
    683
    +
    684 svector& operator=(const svector& rhs);
    +
    685 svector& operator=(svector&& rhs) noexcept(std::is_nothrow_move_assignable<value_type>::value);
    +
    686 svector& operator=(const std::vector<T>& rhs);
    +
    687 svector& operator=(std::initializer_list<T> il);
    +
    688
    +
    689 template <std::size_t N2, bool I2, class = std::enable_if_t<N != N2, void>>
    +
    690 svector& operator=(const svector<T, N2, A, I2>& rhs);
    +
    691
    +
    692 svector(const svector& other);
    +
    693 svector(svector&& other) noexcept(std::is_nothrow_move_constructible<value_type>::value);
    +
    694
    +
    695 void assign(size_type n, const value_type& v);
    +
    696
    +
    697 template <class V>
    +
    698 void assign(std::initializer_list<V> il);
    +
    699
    +
    700 template <class IT>
    +
    701 void assign(IT other_begin, IT other_end);
    +
    702
    +
    703 reference operator[](size_type idx);
    +
    704 const_reference operator[](size_type idx) const;
    +
    705
    +
    706 reference at(size_type idx);
    +
    707 const_reference at(size_type idx) const;
    +
    708
    +
    709 pointer data();
    +
    710 const_pointer data() const;
    +
    711
    +
    712 void push_back(const T& elt);
    +
    713 void push_back(T&& elt);
    +
    714 void pop_back();
    +
    715
    +
    716 iterator begin();
    +
    717 const_iterator begin() const;
    +
    718 const_iterator cbegin() const;
    +
    719 iterator end();
    +
    720 const_iterator end() const;
    +
    721 const_iterator cend() const;
    +
    722
    +
    723 reverse_iterator rbegin();
    +
    724 const_reverse_iterator rbegin() const;
    +
    725 const_reverse_iterator crbegin() const;
    +
    726 reverse_iterator rend();
    +
    727 const_reverse_iterator rend() const;
    +
    728 const_reverse_iterator crend() const;
    +
    729
    +
    730 bool empty() const;
    +
    731 size_type size() const;
    +
    732 void resize(size_type n);
    +
    733 size_type max_size() const noexcept;
    +
    734 size_type capacity() const;
    +
    735 void reserve(size_type n);
    +
    736 void shrink_to_fit();
    +
    737 void clear();
    +
    738
    +
    739 reference front();
    +
    740 const_reference front() const;
    +
    741 reference back();
    +
    742 const_reference back() const;
    +
    743
    +
    744 bool on_stack();
    +
    745
    +
    746 iterator erase(const_iterator cit);
    +
    747 iterator erase(const_iterator cfirst, const_iterator clast);
    +
    748
    +
    749 iterator insert(const_iterator it, const T& elt);
    +
    750
    +
    751 template <class It>
    +
    752 iterator insert(const_iterator pos, It first, It last);
    +
    753
    +
    754 iterator insert(const_iterator pos, std::initializer_list<T> l);
    +
    755
    +
    756 template <std::size_t ON, class OA, bool InitA>
    +
    757 void swap(svector<T, ON, OA, InitA>& rhs);
    +
    758
    +
    759 allocator_type get_allocator() const noexcept;
    +
    760
    +
    761 private:
    +
    762
    +
    763 A m_allocator;
    +
    764
    +
    765 T* m_begin = std::begin(m_data);
    +
    766 T* m_end = std::begin(m_data);
    +
    767 T* m_capacity = std::end(m_data);
    +
    768
    +
    769 // stack allocated memory
    +
    770 alignas(alignment) T m_data[N > 0 ? N : 1];
    +
    771
    +
    772 void grow(size_type min_capacity = 0);
    +
    773 void destroy_range(T* begin, T* end);
    +
    774 };
    +
    +
    775
    +
    776 template <class T, std::size_t N, class A, bool Init>
    + +
    778 {
    +
    779 if (!on_stack())
    +
    780 {
    +
    781 detail::safe_destroy_deallocate(m_allocator, m_begin, static_cast<std::size_t>(m_capacity - m_begin));
    +
    782 }
    +
    783 }
    +
    784
    +
    785 template <class T, std::size_t N, class A, bool Init>
    +
    786 inline svector<T, N, A, Init>::svector() noexcept
    +
    787 : svector(allocator_type())
    +
    788 {
    +
    789 }
    +
    790
    +
    791 template <class T, std::size_t N, class A, bool Init>
    +
    792 inline svector<T, N, A, Init>::svector(const allocator_type& alloc) noexcept
    +
    793 : m_allocator(alloc)
    +
    794 {
    +
    795 }
    +
    796
    +
    797 template <class T, std::size_t N, class A, bool Init>
    +
    798 inline svector<T, N, A, Init>::svector(size_type n, const allocator_type& alloc)
    +
    799 : m_allocator(alloc)
    +
    800 {
    +
    801 if (Init)
    +
    802 {
    +
    803 assign(n, T(0));
    +
    804 }
    +
    805 else
    +
    806 {
    +
    807 resize(n);
    +
    808 }
    +
    809 }
    +
    810
    +
    811 template <class T, std::size_t N, class A, bool Init>
    +
    812 template <class IT, class>
    +
    813 inline svector<T, N, A, Init>::svector(IT begin, IT end, const allocator_type& alloc)
    +
    814 : m_allocator(alloc)
    +
    815 {
    +
    816 assign(begin, end);
    +
    817 }
    +
    818
    +
    819 template <class T, std::size_t N, class A, bool Init>
    +
    820 template <std::size_t N2, bool I2, class>
    +
    821 inline svector<T, N, A, Init>::svector(const svector<T, N2, A, I2>& rhs)
    +
    822 : m_allocator(rhs.get_allocator())
    +
    823 {
    +
    824 assign(rhs.begin(), rhs.end());
    +
    825 }
    +
    826
    +
    827 template <class T, std::size_t N, class A, bool Init>
    +
    828 inline svector<T, N, A, Init>::svector(const std::vector<T>& vec)
    +
    829 {
    +
    830 assign(vec.begin(), vec.end());
    +
    831 }
    +
    832
    +
    833 template <class T, std::size_t N, class A, bool Init>
    +
    834 inline svector<T, N, A, Init>::svector(size_type n, const value_type& v, const allocator_type& alloc)
    +
    835 : m_allocator(alloc)
    +
    836 {
    +
    837 assign(n, v);
    +
    838 }
    +
    839
    +
    840 template <class T, std::size_t N, class A, bool Init>
    +
    841 inline svector<T, N, A, Init>::svector(std::initializer_list<T> il, const allocator_type& alloc)
    +
    842 : m_allocator(alloc)
    +
    843 {
    +
    844 assign(il.begin(), il.end());
    +
    845 }
    +
    846
    +
    847 template <class T, std::size_t N, class A, bool Init>
    +
    848 inline svector<T, N, A, Init>& svector<T, N, A, Init>::operator=(const svector& rhs)
    +
    849 {
    +
    850 assign(rhs.begin(), rhs.end());
    +
    851 return *this;
    +
    852 }
    +
    853
    +
    854 template <class T, std::size_t N, class A, bool Init>
    +
    855 inline svector<T, N, A, Init>& svector<T, N, A, Init>::operator=(svector&& rhs
    +
    856 ) noexcept(std::is_nothrow_move_assignable<value_type>::value)
    +
    857 {
    +
    858 assign(rhs.begin(), rhs.end());
    +
    859 return *this;
    +
    860 }
    +
    861
    +
    862 template <class T, std::size_t N, class A, bool Init>
    +
    863 inline svector<T, N, A, Init>& svector<T, N, A, Init>::operator=(const std::vector<T>& rhs)
    +
    864 {
    +
    865 m_allocator = std::allocator_traits<allocator_type>::select_on_container_copy_construction(
    +
    866 rhs.get_allocator()
    +
    867 );
    +
    868 assign(rhs.begin(), rhs.end());
    +
    869 return *this;
    +
    870 }
    +
    871
    +
    872 template <class T, std::size_t N, class A, bool Init>
    +
    873 inline svector<T, N, A, Init>& svector<T, N, A, Init>::operator=(std::initializer_list<T> il)
    +
    874 {
    +
    875 return operator=(self_type(il));
    +
    876 }
    +
    877
    +
    878 template <class T, std::size_t N, class A, bool Init>
    +
    879 template <std::size_t N2, bool I2, class>
    +
    880 inline svector<T, N, A, Init>& svector<T, N, A, Init>::operator=(const svector<T, N2, A, I2>& rhs)
    +
    881 {
    +
    882 m_allocator = std::allocator_traits<allocator_type>::select_on_container_copy_construction(
    +
    883 rhs.get_allocator()
    +
    884 );
    +
    885 assign(rhs.begin(), rhs.end());
    +
    886 return *this;
    +
    887 }
    +
    888
    +
    889 template <class T, std::size_t N, class A, bool Init>
    +
    890 inline svector<T, N, A, Init>::svector(const svector& rhs)
    +
    891 : m_allocator(
    +
    892 std::allocator_traits<allocator_type>::select_on_container_copy_construction(rhs.get_allocator())
    +
    893 )
    +
    894 {
    +
    895 assign(rhs.begin(), rhs.end());
    +
    896 }
    +
    897
    +
    898 template <class T, std::size_t N, class A, bool Init>
    +
    899 inline svector<T, N, A, Init>::svector(svector&& rhs
    +
    900 ) noexcept(std::is_nothrow_move_constructible<value_type>::value)
    +
    901 {
    +
    902 this->swap(rhs);
    +
    903 }
    +
    904
    +
    905 template <class T, std::size_t N, class A, bool Init>
    +
    906 inline void svector<T, N, A, Init>::assign(size_type n, const value_type& v)
    +
    907 {
    +
    908 if (n > N && n > capacity())
    +
    909 {
    +
    910 grow(n);
    +
    911 }
    +
    912 m_end = m_begin + n;
    +
    913 std::fill(begin(), end(), v);
    +
    914 }
    +
    915
    +
    916 template <class T, std::size_t N, class A, bool Init>
    +
    917 template <class V>
    +
    918 inline void svector<T, N, A, Init>::assign(std::initializer_list<V> il)
    +
    919 {
    +
    920 assign(il.begin(), il.end());
    +
    921 }
    +
    922
    +
    923 template <class T, std::size_t N, class A, bool Init>
    +
    924 template <class IT>
    +
    925 inline void svector<T, N, A, Init>::assign(IT other_begin, IT other_end)
    +
    926 {
    +
    927 std::size_t size = static_cast<std::size_t>(other_end - other_begin);
    +
    928 if (size > N && size > capacity())
    +
    929 {
    +
    930 grow(size);
    +
    931 }
    +
    932 std::uninitialized_copy(other_begin, other_end, m_begin);
    +
    933 m_end = m_begin + size;
    +
    934 }
    +
    935
    +
    936 template <class T, std::size_t N, class A, bool Init>
    +
    937 inline auto svector<T, N, A, Init>::operator[](size_type idx) -> reference
    +
    938 {
    +
    939 return m_begin[idx];
    +
    940 }
    +
    941
    +
    942 template <class T, std::size_t N, class A, bool Init>
    +
    943 inline auto svector<T, N, A, Init>::operator[](size_type idx) const -> const_reference
    +
    944 {
    +
    945 return m_begin[idx];
    +
    946 }
    +
    947
    +
    948 template <class T, std::size_t N, class A, bool Init>
    +
    949 inline auto svector<T, N, A, Init>::at(size_type idx) -> reference
    +
    950 {
    +
    951 if (idx >= size())
    +
    952 {
    +
    953 XTENSOR_THROW(std::out_of_range, "Out of range in svector access");
    +
    954 }
    +
    955 return this->operator[](idx);
    +
    956 }
    +
    957
    +
    958 template <class T, std::size_t N, class A, bool Init>
    +
    959 inline auto svector<T, N, A, Init>::at(size_type idx) const -> const_reference
    +
    960 {
    +
    961 if (idx >= size())
    +
    962 {
    +
    963 XTENSOR_THROW(std::out_of_range, "Out of range in svector access");
    +
    964 }
    +
    965 return this->operator[](idx);
    +
    966 }
    +
    967
    +
    968 template <class T, std::size_t N, class A, bool Init>
    +
    969 inline auto svector<T, N, A, Init>::data() -> pointer
    +
    970 {
    +
    971 return m_begin;
    +
    972 }
    +
    973
    +
    974 template <class T, std::size_t N, class A, bool Init>
    +
    975 inline auto svector<T, N, A, Init>::data() const -> const_pointer
    +
    976 {
    +
    977 return m_begin;
    +
    978 }
    +
    979
    +
    980 template <class T, std::size_t N, class A, bool Init>
    +
    981 void svector<T, N, A, Init>::resize(size_type n)
    +
    982 {
    +
    983 if (n > N && n > capacity())
    +
    984 {
    +
    985 grow(n);
    +
    986 }
    +
    987 size_type old_size = size();
    +
    988 m_end = m_begin + n;
    +
    989 if (Init && old_size < size())
    +
    990 {
    +
    991 std::fill(begin() + old_size, end(), T());
    +
    992 }
    +
    993 }
    +
    994
    +
    995 template <class T, std::size_t N, class A, bool Init>
    +
    996 inline auto svector<T, N, A, Init>::max_size() const noexcept -> size_type
    +
    997 {
    +
    998 return m_allocator.max_size();
    +
    999 }
    +
    1000
    +
    1001 template <class T, std::size_t N, class A, bool Init>
    +
    1002 inline auto svector<T, N, A, Init>::capacity() const -> size_type
    +
    1003 {
    +
    1004 return static_cast<std::size_t>(m_capacity - m_begin);
    +
    1005 }
    +
    1006
    +
    1007 template <class T, std::size_t N, class A, bool Init>
    +
    1008 inline void svector<T, N, A, Init>::reserve(size_type n)
    +
    1009 {
    +
    1010 if (n > N && n > capacity())
    +
    1011 {
    +
    1012 grow(n);
    +
    1013 }
    +
    1014 }
    +
    1015
    +
    1016 template <class T, std::size_t N, class A, bool Init>
    +
    1017 inline void svector<T, N, A, Init>::shrink_to_fit()
    +
    1018 {
    +
    1019 // No op for now
    +
    1020 }
    +
    1021
    +
    1022 template <class T, std::size_t N, class A, bool Init>
    +
    1023 inline void svector<T, N, A, Init>::clear()
    +
    1024 {
    +
    1025 resize(size_type(0));
    +
    1026 }
    +
    1027
    +
    1028 template <class T, std::size_t N, class A, bool Init>
    +
    1029 void svector<T, N, A, Init>::push_back(const T& elt)
    +
    1030 {
    +
    1031 if (m_end >= m_capacity)
    +
    1032 {
    +
    1033 grow();
    +
    1034 }
    +
    1035 *(m_end++) = elt;
    +
    1036 }
    +
    1037
    +
    1038 template <class T, std::size_t N, class A, bool Init>
    +
    1039 void svector<T, N, A, Init>::push_back(T&& elt)
    +
    1040 {
    +
    1041 if (m_end >= m_capacity)
    +
    1042 {
    +
    1043 grow();
    +
    1044 }
    +
    1045 *(m_end++) = std::move(elt);
    +
    1046 }
    +
    1047
    +
    1048 template <class T, std::size_t N, class A, bool Init>
    +
    1049 void svector<T, N, A, Init>::pop_back()
    +
    1050 {
    +
    1051 --m_end;
    +
    1052 }
    +
    1053
    +
    1054 template <class T, std::size_t N, class A, bool Init>
    +
    1055 inline auto svector<T, N, A, Init>::begin() -> iterator
    +
    1056 {
    +
    1057 return m_begin;
    +
    1058 }
    +
    1059
    +
    1060 template <class T, std::size_t N, class A, bool Init>
    +
    1061 inline auto svector<T, N, A, Init>::begin() const -> const_iterator
    +
    1062 {
    +
    1063 return m_begin;
    +
    1064 }
    +
    1065
    +
    1066 template <class T, std::size_t N, class A, bool Init>
    +
    1067 inline auto svector<T, N, A, Init>::cbegin() const -> const_iterator
    +
    1068 {
    +
    1069 return m_begin;
    +
    1070 }
    +
    1071
    +
    1072 template <class T, std::size_t N, class A, bool Init>
    +
    1073 inline auto svector<T, N, A, Init>::end() -> iterator
    +
    1074 {
    +
    1075 return m_end;
    +
    1076 }
    +
    1077
    +
    1078 template <class T, std::size_t N, class A, bool Init>
    +
    1079 inline auto svector<T, N, A, Init>::end() const -> const_iterator
    +
    1080 {
    +
    1081 return m_end;
    +
    1082 }
    +
    1083
    +
    1084 template <class T, std::size_t N, class A, bool Init>
    +
    1085 inline auto svector<T, N, A, Init>::cend() const -> const_iterator
    +
    1086 {
    +
    1087 return m_end;
    +
    1088 }
    +
    1089
    +
    1090 template <class T, std::size_t N, class A, bool Init>
    +
    1091 inline auto svector<T, N, A, Init>::rbegin() -> reverse_iterator
    +
    1092 {
    +
    1093 return reverse_iterator(m_end);
    +
    1094 }
    +
    1095
    +
    1096 template <class T, std::size_t N, class A, bool Init>
    +
    1097 inline auto svector<T, N, A, Init>::rbegin() const -> const_reverse_iterator
    +
    1098 {
    +
    1099 return const_reverse_iterator(m_end);
    +
    1100 }
    +
    1101
    +
    1102 template <class T, std::size_t N, class A, bool Init>
    +
    1103 inline auto svector<T, N, A, Init>::crbegin() const -> const_reverse_iterator
    +
    1104 {
    +
    1105 return const_reverse_iterator(m_end);
    +
    1106 }
    +
    1107
    +
    1108 template <class T, std::size_t N, class A, bool Init>
    +
    1109 inline auto svector<T, N, A, Init>::rend() -> reverse_iterator
    +
    1110 {
    +
    1111 return reverse_iterator(m_begin);
    +
    1112 }
    +
    1113
    +
    1114 template <class T, std::size_t N, class A, bool Init>
    +
    1115 inline auto svector<T, N, A, Init>::rend() const -> const_reverse_iterator
    +
    1116 {
    +
    1117 return const_reverse_iterator(m_begin);
    +
    1118 }
    +
    1119
    +
    1120 template <class T, std::size_t N, class A, bool Init>
    +
    1121 inline auto svector<T, N, A, Init>::crend() const -> const_reverse_iterator
    +
    1122 {
    +
    1123 return const_reverse_iterator(m_begin);
    +
    1124 }
    +
    1125
    +
    1126 template <class T, std::size_t N, class A, bool Init>
    +
    1127 inline auto svector<T, N, A, Init>::size() const -> size_type
    +
    1128 {
    +
    1129 return static_cast<size_type>(m_end - m_begin);
    +
    1130 }
    +
    1131
    +
    1132 template <class T, std::size_t N, class A, bool Init>
    +
    1133 inline auto svector<T, N, A, Init>::empty() const -> bool
    +
    1134 {
    +
    1135 return m_begin == m_end;
    +
    1136 }
    +
    1137
    +
    1138 template <class T, std::size_t N, class A, bool Init>
    +
    1139 inline auto svector<T, N, A, Init>::front() -> reference
    +
    1140 {
    +
    1141 XTENSOR_ASSERT(!empty());
    +
    1142 return m_begin[0];
    +
    1143 }
    +
    1144
    +
    1145 template <class T, std::size_t N, class A, bool Init>
    +
    1146 inline auto svector<T, N, A, Init>::front() const -> const_reference
    +
    1147 {
    +
    1148 XTENSOR_ASSERT(!empty());
    +
    1149 return m_begin[0];
    +
    1150 }
    +
    1151
    +
    1152 template <class T, std::size_t N, class A, bool Init>
    +
    1153 inline auto svector<T, N, A, Init>::back() -> reference
    +
    1154 {
    +
    1155 XTENSOR_ASSERT(!empty());
    +
    1156 return m_end[-1];
    +
    1157 }
    +
    1158
    +
    1159 template <class T, std::size_t N, class A, bool Init>
    +
    1160 inline auto svector<T, N, A, Init>::back() const -> const_reference
    +
    1161 {
    +
    1162 XTENSOR_ASSERT(!empty());
    +
    1163 return m_end[-1];
    +
    1164 }
    +
    1165
    +
    1166 template <class T, std::size_t N, class A, bool Init>
    +
    1167 inline auto svector<T, N, A, Init>::on_stack() -> bool
    +
    1168 {
    +
    1169 return m_begin == &m_data[0];
    +
    1170 }
    +
    1171
    +
    1172 template <class T, std::size_t N, class A, bool Init>
    +
    1173 inline auto svector<T, N, A, Init>::get_allocator() const noexcept -> allocator_type
    +
    1174 {
    +
    1175 return m_allocator;
    +
    1176 }
    +
    1177
    +
    1178 template <class T, std::size_t N, class A, bool Init>
    +
    1179 inline auto svector<T, N, A, Init>::erase(const_iterator cit) -> iterator
    +
    1180 {
    +
    1181 auto it = const_cast<pointer>(cit);
    +
    1182 iterator ret_val = it;
    +
    1183 std::move(it + 1, m_end, it);
    +
    1184 --m_end;
    +
    1185 return ret_val;
    +
    1186 }
    +
    1187
    +
    1188 template <class T, std::size_t N, class A, bool Init>
    +
    1189 inline auto svector<T, N, A, Init>::erase(const_iterator cfirst, const_iterator clast) -> iterator
    +
    1190 {
    +
    1191 auto first = const_cast<pointer>(cfirst);
    +
    1192 auto last = const_cast<pointer>(clast);
    +
    1193 if (last == m_end)
    +
    1194 {
    +
    1195 m_end = first;
    +
    1196 return first;
    +
    1197 }
    +
    1198
    +
    1199 iterator new_end = std::move(last, m_end, first);
    +
    1200 m_end = new_end;
    +
    1201 return first;
    +
    1202 }
    +
    1203
    +
    1204 template <class T, std::size_t N, class A, bool Init>
    +
    1205 inline auto svector<T, N, A, Init>::insert(const_iterator cit, const T& elt) -> iterator
    +
    1206 {
    +
    1207 auto it = const_cast<pointer>(cit);
    +
    1208 if (it == m_end)
    +
    1209 {
    +
    1210 push_back(elt);
    +
    1211 return m_end - 1;
    +
    1212 }
    +
    1213
    +
    1214 if (m_end >= m_capacity)
    +
    1215 {
    +
    1216 std::ptrdiff_t elt_no = it - m_begin;
    +
    1217 grow();
    +
    1218 it = m_begin + elt_no;
    +
    1219 }
    +
    1220
    +
    1221 (*m_end) = back();
    +
    1222 std::move_backward(it, m_end - 1, m_end);
    +
    1223 ++m_end;
    +
    1224
    +
    1225 // Update ref if element moved
    +
    1226 const T* elt_ptr = &elt;
    +
    1227 bool cond = it <= elt_ptr && elt_ptr < m_end;
    +
    1228 // More complicated than incrementing elt_ptr, but this avoids
    +
    1229 // false positive array-bounds warning on GCC 10
    +
    1230 const T* src_ptr = cond ? it + (elt_ptr - it) + std::ptrdiff_t(1) : elt_ptr;
    +
    1231 *it = *src_ptr;
    +
    1232 return it;
    +
    1233 }
    +
    1234
    +
    1235 template <class T, std::size_t N, class A, bool Init>
    +
    1236 template <class It>
    +
    1237 inline auto svector<T, N, A, Init>::insert(const_iterator pos, It first, It last) -> iterator
    +
    1238 {
    +
    1239 auto it = const_cast<pointer>(pos);
    +
    1240 difference_type n = std::distance(first, last);
    +
    1241 if (n > 0)
    +
    1242 {
    +
    1243 if (n > m_capacity - m_end)
    +
    1244 {
    +
    1245 std::ptrdiff_t elt_no = it - m_begin;
    +
    1246 grow(static_cast<size_t>((m_capacity - m_begin) + n));
    +
    1247 it = m_begin + elt_no;
    +
    1248 }
    +
    1249
    +
    1250 std::move_backward(it, m_end, m_end + n);
    +
    1251 m_end += n;
    +
    1252 std::copy(first, last, it);
    +
    1253 }
    +
    1254 return it;
    +
    1255 }
    +
    1256
    +
    1257 template <class T, std::size_t N, class A, bool Init>
    +
    1258 inline auto svector<T, N, A, Init>::insert(const_iterator pos, std::initializer_list<T> l) -> iterator
    +
    1259 {
    +
    1260 return insert(pos, l.begin(), l.end());
    +
    1261 }
    +
    1262
    +
    1263 template <class T, std::size_t N, class A, bool Init>
    +
    1264 inline void svector<T, N, A, Init>::destroy_range(T* begin, T* end)
    +
    1265 {
    +
    1266 if (!xtrivially_default_constructible<T>::value)
    +
    1267 {
    +
    1268 while (begin != end)
    +
    1269 {
    +
    1270 --end;
    +
    1271 end->~T();
    +
    1272 }
    +
    1273 }
    +
    1274 }
    +
    1275
    +
    1276 template <class T, std::size_t N, class A, bool Init>
    +
    1277 template <std::size_t ON, class OA, bool InitA>
    +
    1278 inline void svector<T, N, A, Init>::swap(svector<T, ON, OA, InitA>& rhs)
    +
    1279 {
    +
    1280 using std::swap;
    +
    1281 if (this == &rhs)
    +
    1282 {
    +
    1283 return;
    +
    1284 }
    +
    1285
    +
    1286 // We can only avoid copying elements if neither vector is small.
    +
    1287 if (!this->on_stack() && !rhs.on_stack())
    +
    1288 {
    +
    1289 swap(this->m_begin, rhs.m_begin);
    +
    1290 swap(this->m_end, rhs.m_end);
    +
    1291 swap(this->m_capacity, rhs.m_capacity);
    +
    1292 return;
    +
    1293 }
    +
    1294
    +
    1295 size_type rhs_old_size = rhs.size();
    +
    1296 size_type old_size = this->size();
    +
    1297
    +
    1298 if (rhs_old_size > old_size)
    +
    1299 {
    +
    1300 this->resize(rhs_old_size);
    +
    1301 }
    +
    1302 else if (old_size > rhs_old_size)
    +
    1303 {
    +
    1304 rhs.resize(old_size);
    +
    1305 }
    +
    1306
    +
    1307 // Swap the shared elements.
    +
    1308 size_type min_size = (std::min)(old_size, rhs_old_size);
    +
    1309 for (size_type i = 0; i < min_size; ++i)
    +
    1310 {
    +
    1311 swap((*this)[i], rhs[i]);
    +
    1312 }
    +
    1313
    +
    1314 // Copy over the extra elts.
    +
    1315 if (old_size > rhs_old_size)
    +
    1316 {
    +
    1317 std::copy(this->begin() + min_size, this->end(), rhs.begin() + min_size);
    +
    1318 this->destroy_range(this->begin() + min_size, this->end());
    +
    1319 this->m_end = this->begin() + min_size;
    +
    1320 }
    +
    1321 else if (rhs_old_size > old_size)
    +
    1322 {
    +
    1323 std::copy(rhs.begin() + min_size, rhs.end(), this->begin() + min_size);
    +
    1324 this->destroy_range(rhs.begin() + min_size, rhs.end());
    +
    1325 rhs.m_end = rhs.begin() + min_size;
    +
    1326 }
    +
    1327 }
    +
    1328
    +
    1329 template <class T, std::size_t N, class A, bool Init>
    +
    1330 inline void svector<T, N, A, Init>::grow(size_type min_capacity)
    +
    1331 {
    +
    1332 size_type current_size = size();
    +
    1333 size_type new_capacity = 2 * current_size + 1; // Always grow.
    +
    1334 if (new_capacity < min_capacity)
    +
    1335 {
    +
    1336 new_capacity = min_capacity;
    +
    1337 }
    +
    1338
    +
    1339 T* new_alloc;
    +
    1340 // is data stack allocated?
    +
    1341 if (m_begin == &m_data[0])
    +
    1342 {
    +
    1343 new_alloc = m_allocator.allocate(new_capacity);
    +
    1344 std::uninitialized_copy(m_begin, m_end, new_alloc);
    +
    1345 }
    +
    1346 else
    +
    1347 {
    +
    1348 // If this wasn't grown from the inline copy, grow the allocated space.
    +
    1349 new_alloc = m_allocator.allocate(new_capacity);
    +
    1350 std::uninitialized_copy(m_begin, m_end, new_alloc);
    +
    1351 m_allocator.deallocate(m_begin, std::size_t(m_capacity - m_begin));
    +
    1352 }
    +
    1353 XTENSOR_ASSERT(new_alloc);
    +
    1354
    +
    1355 m_end = new_alloc + current_size;
    +
    1356 m_begin = new_alloc;
    +
    1357 m_capacity = new_alloc + new_capacity;
    +
    1358 }
    +
    1359
    +
    1360 template <class T, std::size_t N, class A, bool Init>
    +
    1361 inline bool operator==(const std::vector<T>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1362 {
    +
    1363 return lhs.size() == rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin());
    +
    1364 }
    +
    1365
    +
    1366 template <class T, std::size_t N, class A, bool Init>
    +
    1367 inline bool operator==(const svector<T, N, A, Init>& lhs, const std::vector<T>& rhs)
    +
    1368 {
    +
    1369 return lhs.size() == rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin());
    +
    1370 }
    +
    1371
    +
    1372 template <class T, std::size_t N, class A, bool Init>
    +
    1373 inline bool operator==(const svector<T, N, A, Init>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1374 {
    +
    1375 return lhs.size() == rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin());
    +
    1376 }
    +
    1377
    +
    1378 template <class T, std::size_t N, class A, bool Init>
    +
    1379 inline bool operator!=(const svector<T, N, A, Init>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1380 {
    +
    1381 return !(lhs == rhs);
    +
    1382 }
    +
    1383
    +
    1384 template <class T, std::size_t N, class A, bool Init>
    +
    1385 inline bool operator<(const svector<T, N, A, Init>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1386 {
    +
    1387 return std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
    +
    1388 }
    +
    1389
    +
    1390 template <class T, std::size_t N, class A, bool Init>
    +
    1391 inline bool operator<=(const svector<T, N, A, Init>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1392 {
    +
    1393 return !(lhs > rhs);
    +
    1394 }
    +
    1395
    +
    1396 template <class T, std::size_t N, class A, bool Init>
    +
    1397 inline bool operator>(const svector<T, N, A, Init>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1398 {
    +
    1399 return rhs < lhs;
    +
    1400 }
    +
    1401
    +
    1402 template <class T, std::size_t N, class A, bool Init>
    +
    1403 inline bool operator>=(const svector<T, N, A, Init>& lhs, const svector<T, N, A, Init>& rhs)
    +
    1404 {
    +
    1405 return !(lhs < rhs);
    +
    1406 }
    +
    1407
    +
    1408 template <class T, std::size_t N, class A, bool Init>
    +
    1409 inline void swap(svector<T, N, A, Init>& lhs, svector<T, N, A, Init>& rhs) noexcept
    +
    1410 {
    +
    1411 lhs.swap(rhs);
    +
    1412 }
    +
    1413
    +
    1414 template <class X, class T, std::size_t N, class A, bool B>
    +
    +
    1415 struct rebind_container<X, svector<T, N, A, B>>
    +
    1416 {
    +
    1417 using traits = std::allocator_traits<A>;
    +
    1418 using allocator = typename traits::template rebind_alloc<X>;
    + +
    1420 };
    +
    +
    1421
    +
    1428 template <class T, std::size_t N, std::size_t Align = XTENSOR_SELECT_ALIGN(T)>
    +
    +
    1429 class alignas(Align) aligned_array : public std::array<T, N>
    +
    1430 {
    +
    1431 public:
    +
    1432
    +
    1433 // Note: this is for alignment detection. The allocator serves no other purpose than
    +
    1434 // that of a trait here.
    +
    1435 using allocator_type = std::conditional_t<Align != 0, xt_simd::aligned_allocator<T, Align>, std::allocator<T>>;
    +
    1436 };
    +
    +
    1437
    +
    1438#if defined(_MSC_VER)
    +
    1439#define XTENSOR_CONST
    +
    1440#else
    +
    1441#define XTENSOR_CONST const
    +
    1442#endif
    +
    1443
    +
    1444#if defined(__GNUC__) && __GNUC__ < 5 && !defined(__clang__)
    +
    1445#define GCC4_FALLBACK
    +
    1446
    +
    1447 namespace const_array_detail
    +
    1448 {
    +
    1449 template <class T, std::size_t N>
    +
    1450 struct array_traits
    +
    1451 {
    +
    1452 using storage_type = T[N];
    +
    1453
    +
    1454 static constexpr T& ref(const storage_type& t, std::size_t n) noexcept
    +
    1455 {
    +
    1456 return const_cast<T&>(t[n]);
    +
    1457 }
    +
    1458
    +
    1459 static constexpr T* ptr(const storage_type& t) noexcept
    +
    1460 {
    +
    1461 return const_cast<T*>(t);
    +
    1462 }
    +
    1463 };
    +
    1464
    +
    1465 template <class T>
    +
    1466 struct array_traits<T, 0>
    +
    1467 {
    +
    1468 struct empty
    +
    1469 {
    +
    1470 };
    +
    1471
    +
    1472 using storage_type = empty;
    +
    1473
    +
    1474 static constexpr T& ref(const storage_type& /*t*/, std::size_t /*n*/) noexcept
    +
    1475 {
    +
    1476 return *static_cast<T*>(nullptr);
    +
    1477 }
    +
    1478
    +
    1479 static constexpr T* ptr(const storage_type& /*t*/) noexcept
    +
    1480 {
    +
    1481 return nullptr;
    +
    1482 }
    +
    1483 };
    +
    1484 }
    +
    1485#endif
    +
    1486
    +
    1491 template <class T, std::size_t N>
    +
    + +
    1493 {
    +
    1494 using size_type = std::size_t;
    +
    1495 using value_type = T;
    +
    1496 using pointer = value_type*;
    +
    1497 using const_pointer = const value_type*;
    +
    1498 using reference = value_type&;
    +
    1499 using const_reference = const value_type&;
    +
    1500 using difference_type = std::ptrdiff_t;
    +
    1501 using iterator = pointer;
    +
    1502 using const_iterator = const_pointer;
    +
    1503
    +
    1504 using reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    1505 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    +
    1506
    +
    1507 constexpr const_reference operator[](std::size_t idx) const
    +
    1508 {
    +
    1509#ifdef GCC4_FALLBACK
    +
    1510 return const_array_detail::array_traits<T, N>::ref(m_data, idx);
    +
    1511#else
    +
    1512 return m_data[idx];
    +
    1513#endif
    +
    1514 }
    +
    1515
    +
    1516 constexpr const_iterator begin() const noexcept
    +
    1517 {
    +
    1518 return cbegin();
    +
    1519 }
    +
    1520
    +
    1521 constexpr const_iterator end() const noexcept
    +
    1522 {
    +
    1523 return cend();
    +
    1524 }
    +
    1525
    +
    1526 constexpr const_iterator cbegin() const noexcept
    +
    1527 {
    +
    1528 return data();
    +
    1529 }
    +
    1530
    +
    1531 constexpr const_iterator cend() const noexcept
    +
    1532 {
    +
    1533 return data() + N;
    +
    1534 }
    +
    1535
    +
    1536 // TODO make constexpr once C++17 arrives
    +
    1537 reverse_iterator rbegin() const noexcept
    +
    1538 {
    +
    1539 return crbegin();
    +
    1540 }
    +
    1541
    +
    1542 reverse_iterator rend() const noexcept
    +
    1543 {
    +
    1544 return crend();
    +
    1545 }
    +
    1546
    +
    1547 const_reverse_iterator crbegin() const noexcept
    +
    1548 {
    +
    1549 return const_reverse_iterator(end());
    +
    1550 }
    +
    1551
    +
    1552 const_reverse_iterator crend() const noexcept
    +
    1553 {
    +
    1554 return const_reverse_iterator(begin());
    +
    1555 }
    +
    1556
    +
    1557 constexpr const_pointer data() const noexcept
    +
    1558 {
    +
    1559#ifdef GCC4_FALLBACK
    +
    1560 return const_array_detail::array_traits<T, N>::ptr(m_data);
    +
    1561#else
    +
    1562 return m_data;
    +
    1563#endif
    +
    1564 }
    +
    1565
    +
    1566 constexpr const_reference front() const noexcept
    +
    1567 {
    +
    1568#ifdef GCC4_FALLBACK
    +
    1569 return const_array_detail::array_traits<T, N>::ref(m_data, 0);
    +
    1570#else
    +
    1571 return m_data[0];
    +
    1572#endif
    +
    1573 }
    +
    1574
    +
    1575 constexpr const_reference back() const noexcept
    +
    1576 {
    +
    1577#ifdef GCC4_FALLBACK
    +
    1578 return N ? const_array_detail::array_traits<T, N>::ref(m_data, N - 1)
    +
    1579 : const_array_detail::array_traits<T, N>::ref(m_data, 0);
    +
    1580#else
    +
    1581 return m_data[size() - 1];
    +
    1582#endif
    +
    1583 }
    +
    1584
    +
    1585 constexpr bool empty() const noexcept
    +
    1586 {
    +
    1587 return size() == size_type(0);
    +
    1588 }
    +
    1589
    +
    1590 constexpr size_type size() const noexcept
    +
    1591 {
    +
    1592 return N;
    +
    1593 }
    +
    1594
    +
    1595#ifdef GCC4_FALLBACK
    +
    1596 XTENSOR_CONST typename const_array_detail::array_traits<T, N>::storage_type m_data;
    +
    1597#else
    +
    1598 XTENSOR_CONST T m_data[N > 0 ? N : 1];
    +
    1599#endif
    +
    1600 };
    +
    +
    1601
    +
    1602#undef GCC4_FALLBACK
    +
    1603
    +
    1604 template <class T, std::size_t N>
    +
    1605 inline bool operator==(const const_array<T, N>& lhs, const const_array<T, N>& rhs)
    +
    1606 {
    +
    1607 return std::equal(lhs.cbegin(), lhs.cend(), rhs.cbegin());
    +
    1608 }
    +
    1609
    +
    1610 template <class T, std::size_t N>
    +
    1611 inline bool operator!=(const const_array<T, N>& lhs, const const_array<T, N>& rhs)
    +
    1612 {
    +
    1613 return !(lhs == rhs);
    +
    1614 }
    +
    1615
    +
    1616 template <class T, std::size_t N>
    +
    1617 inline bool operator<(const const_array<T, N>& lhs, const const_array<T, N>& rhs)
    +
    1618 {
    +
    1619 return std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
    +
    1620 }
    +
    1621
    +
    1622 template <class T, std::size_t N>
    +
    1623 inline bool operator<=(const const_array<T, N>& lhs, const const_array<T, N>& rhs)
    +
    1624 {
    +
    1625 return !(lhs > rhs);
    +
    1626 }
    +
    1627
    +
    1628 template <class T, std::size_t N>
    +
    1629 inline bool operator>(const const_array<T, N>& lhs, const const_array<T, N>& rhs)
    +
    1630 {
    +
    1631 return rhs < lhs;
    +
    1632 }
    +
    1633
    +
    1634 template <class T, std::size_t N>
    +
    1635 inline bool operator>=(const const_array<T, N>& lhs, const const_array<T, N>& rhs)
    +
    1636 {
    +
    1637 return !(lhs < rhs);
    +
    1638 }
    +
    1639
    +
    1640// Workaround for rebind_container problems on GCC 8 with C++17 enabled
    +
    1641#if defined(__GNUC__) && __GNUC__ > 6 && !defined(__clang__) && __cplusplus >= 201703L
    +
    1642 template <class X, class T, std::size_t N>
    +
    1643 struct rebind_container<X, aligned_array<T, N>>
    +
    1644 {
    +
    1645 using type = aligned_array<X, N>;
    +
    1646 };
    +
    1647
    +
    1648 template <class X, class T, std::size_t N>
    +
    1649 struct rebind_container<X, const_array<T, N>>
    +
    1650 {
    +
    1651 using type = const_array<X, N>;
    +
    1652 };
    +
    1653#endif
    +
    1654
    +
    1660 template <std::size_t... X>
    +
    + +
    1662 {
    +
    1663 public:
    +
    1664
    +
    1665#if defined(_MSC_VER)
    +
    1666 using cast_type = std::array<std::size_t, sizeof...(X)>;
    +
    1667#define XTENSOR_FIXED_SHAPE_CONSTEXPR inline
    +
    1668#else
    +
    1669 using cast_type = const_array<std::size_t, sizeof...(X)>;
    +
    1670#define XTENSOR_FIXED_SHAPE_CONSTEXPR constexpr
    +
    1671#endif
    +
    1672 using value_type = std::size_t;
    +
    1673 using size_type = std::size_t;
    +
    1674 using const_iterator = typename cast_type::const_iterator;
    +
    1675
    +
    1676 static constexpr std::size_t size()
    +
    1677 {
    +
    1678 return sizeof...(X);
    +
    1679 }
    +
    1680
    +
    1681 template <std::size_t idx>
    +
    1682 static constexpr auto get()
    +
    1683 {
    +
    1684 using tmp_cast_type = std::array<std::size_t, sizeof...(X)>;
    +
    1685 return std::get<idx>(tmp_cast_type{X...});
    +
    1686 }
    +
    1687
    +
    1688 XTENSOR_FIXED_SHAPE_CONSTEXPR operator cast_type() const
    +
    1689 {
    +
    1690 return cast_type({X...});
    +
    1691 }
    +
    1692
    +
    1693 XTENSOR_FIXED_SHAPE_CONSTEXPR auto begin() const
    +
    1694 {
    +
    1695 return m_array.begin();
    +
    1696 }
    +
    1697
    +
    1698 XTENSOR_FIXED_SHAPE_CONSTEXPR auto end() const
    +
    1699 {
    +
    1700 return m_array.end();
    +
    1701 }
    +
    1702
    +
    1703 auto rbegin() const
    +
    1704 {
    +
    1705 return m_array.rbegin();
    +
    1706 }
    +
    1707
    +
    1708 auto rend() const
    +
    1709 {
    +
    1710 return m_array.rend();
    +
    1711 }
    +
    1712
    +
    1713 XTENSOR_FIXED_SHAPE_CONSTEXPR auto cbegin() const
    +
    1714 {
    +
    1715 return m_array.cbegin();
    +
    1716 }
    +
    1717
    +
    1718 XTENSOR_FIXED_SHAPE_CONSTEXPR auto cend() const
    +
    1719 {
    +
    1720 return m_array.cend();
    +
    1721 }
    +
    1722
    +
    1723 XTENSOR_FIXED_SHAPE_CONSTEXPR std::size_t operator[](std::size_t idx) const
    +
    1724 {
    +
    1725 return m_array[idx];
    +
    1726 }
    +
    1727
    +
    1728 XTENSOR_FIXED_SHAPE_CONSTEXPR bool empty() const
    +
    1729 {
    +
    1730 return sizeof...(X) == 0;
    +
    1731 }
    +
    1732
    +
    1733 private:
    +
    1734
    +
    1735 XTENSOR_CONSTEXPR_ENHANCED_STATIC cast_type m_array = cast_type({X...});
    +
    1736 };
    +
    +
    1737
    +
    1738#ifdef XTENSOR_HAS_CONSTEXPR_ENHANCED
    +
    1739 template <std::size_t... X>
    +
    1740 constexpr typename fixed_shape<X...>::cast_type fixed_shape<X...>::m_array;
    +
    1741#endif
    +
    1742
    +
    1743#undef XTENSOR_FIXED_SHAPE_CONSTEXPR
    +
    1744
    +
    1745 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End = -1>
    +
    + +
    1747 {
    +
    1748 public:
    +
    1749
    +
    1750 using value_type = typename E::value_type;
    +
    1751 using reference = typename E::reference;
    +
    1752 using const_reference = typename E::const_reference;
    +
    1753 using pointer = typename E::pointer;
    +
    1754 using const_pointer = typename E::const_pointer;
    +
    1755
    +
    1756 using size_type = typename E::size_type;
    +
    1757 using difference_type = typename E::difference_type;
    +
    1758
    +
    1759 using iterator = typename E::iterator;
    +
    1760 using const_iterator = typename E::const_iterator;
    +
    1761 using reverse_iterator = typename E::reverse_iterator;
    +
    1762 using const_reverse_iterator = typename E::const_reverse_iterator;
    +
    1763
    +
    1764 explicit sequence_view(const E& container);
    +
    1765
    +
    1766 template <std::ptrdiff_t OS, std::ptrdiff_t OE>
    +
    1767 explicit sequence_view(const sequence_view<E, OS, OE>& other);
    +
    1768
    +
    1769 template <class T, class R = decltype(std::declval<T>().begin())>
    +
    1770 operator T() const;
    +
    1771
    +
    1772 bool empty() const;
    +
    1773 size_type size() const;
    +
    1774 const_reference operator[](std::size_t idx) const;
    +
    1775
    +
    1776 const_iterator end() const;
    +
    1777 const_iterator begin() const;
    +
    1778 const_iterator cend() const;
    +
    1779 const_iterator cbegin() const;
    +
    1780
    +
    1781 const_reverse_iterator rend() const;
    +
    1782 const_reverse_iterator rbegin() const;
    +
    1783 const_reverse_iterator crend() const;
    +
    1784 const_reverse_iterator crbegin() const;
    +
    1785
    +
    1786 const_reference front() const;
    +
    1787 const_reference back() const;
    +
    1788
    +
    1789 const E& storage() const;
    +
    1790
    +
    1791 private:
    +
    1792
    +
    1793 const E& m_sequence;
    +
    1794 };
    +
    +
    1795
    +
    1796 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    + +
    1798 : m_sequence(container)
    +
    1799 {
    +
    1800 }
    +
    1801
    +
    1802 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1803 template <std::ptrdiff_t OS, std::ptrdiff_t OE>
    +
    1804 sequence_view<E, Start, End>::sequence_view(const sequence_view<E, OS, OE>& other)
    +
    1805 : m_sequence(other.storage())
    +
    1806 {
    +
    1807 }
    +
    1808
    +
    1809 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1810 template <class T, class R>
    +
    1811 sequence_view<E, Start, End>::operator T() const
    +
    1812 {
    +
    1813 T ret = xtl::make_sequence<T>(this->size());
    +
    1814 std::copy(this->cbegin(), this->cend(), ret.begin());
    +
    1815 return ret;
    +
    1816 }
    +
    1817
    +
    1818 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1819 bool sequence_view<E, Start, End>::empty() const
    +
    1820 {
    +
    1821 return size() == size_type(0);
    +
    1822 }
    +
    1823
    +
    1824 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1825 auto sequence_view<E, Start, End>::size() const -> size_type
    +
    1826 {
    +
    1827 if (End == -1)
    +
    1828 {
    +
    1829 return m_sequence.size() - static_cast<size_type>(Start);
    +
    1830 }
    +
    1831 else
    +
    1832 {
    +
    1833 return static_cast<size_type>(End - Start);
    +
    1834 }
    +
    1835 }
    +
    1836
    +
    1837 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1838 auto sequence_view<E, Start, End>::operator[](std::size_t idx) const -> const_reference
    +
    1839 {
    +
    1840 return m_sequence[idx + static_cast<std::size_t>(Start)];
    +
    1841 }
    +
    1842
    +
    1843 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1844 auto sequence_view<E, Start, End>::end() const -> const_iterator
    +
    1845 {
    +
    1846 if (End != -1)
    +
    1847 {
    +
    1848 return m_sequence.begin() + End;
    +
    1849 }
    +
    1850 else
    +
    1851 {
    +
    1852 return m_sequence.end();
    +
    1853 }
    +
    1854 }
    +
    1855
    +
    1856 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1857 auto sequence_view<E, Start, End>::begin() const -> const_iterator
    +
    1858 {
    +
    1859 return m_sequence.begin() + Start;
    +
    1860 }
    +
    1861
    +
    1862 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1863 auto sequence_view<E, Start, End>::cend() const -> const_iterator
    +
    1864 {
    +
    1865 return end();
    +
    1866 }
    +
    1867
    +
    1868 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1869 auto sequence_view<E, Start, End>::cbegin() const -> const_iterator
    +
    1870 {
    +
    1871 return begin();
    +
    1872 }
    +
    1873
    +
    1874 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1875 auto sequence_view<E, Start, End>::rend() const -> const_reverse_iterator
    +
    1876 {
    +
    1877 return const_reverse_iterator(begin());
    +
    1878 }
    +
    1879
    +
    1880 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1881 auto sequence_view<E, Start, End>::rbegin() const -> const_reverse_iterator
    +
    1882 {
    +
    1883 return const_reverse_iterator(end());
    +
    1884 }
    +
    1885
    +
    1886 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1887 auto sequence_view<E, Start, End>::crend() const -> const_reverse_iterator
    +
    1888 {
    +
    1889 return rend();
    +
    1890 }
    +
    1891
    +
    1892 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1893 auto sequence_view<E, Start, End>::crbegin() const -> const_reverse_iterator
    +
    1894 {
    +
    1895 return rbegin();
    +
    1896 }
    +
    1897
    +
    1898 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1899 auto sequence_view<E, Start, End>::front() const -> const_reference
    +
    1900 {
    +
    1901 return *(m_sequence.begin() + Start);
    +
    1902 }
    +
    1903
    +
    1904 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1905 auto sequence_view<E, Start, End>::back() const -> const_reference
    +
    1906 {
    +
    1907 if (End == -1)
    +
    1908 {
    +
    1909 return m_sequence.back();
    +
    1910 }
    +
    1911 else
    +
    1912 {
    +
    1913 return m_sequence[static_cast<std::size_t>(End - 1)];
    +
    1914 }
    +
    1915 }
    +
    1916
    +
    1917 template <class E, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1918 const E& sequence_view<E, Start, End>::storage() const
    +
    1919 {
    +
    1920 return m_sequence;
    +
    1921 }
    +
    1922
    +
    1923 template <class T, std::ptrdiff_t TB, std::ptrdiff_t TE>
    +
    1924 inline bool operator==(const sequence_view<T, TB, TE>& lhs, const sequence_view<T, TB, TE>& rhs)
    +
    1925 {
    +
    1926 return lhs.size() == rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin());
    +
    1927 }
    +
    1928
    +
    1929 template <class T, std::ptrdiff_t TB, std::ptrdiff_t TE>
    +
    1930 inline bool operator!=(const sequence_view<T, TB, TE>& lhs, const sequence_view<T, TB, TE>& rhs)
    +
    1931 {
    +
    1932 return !(lhs == rhs);
    +
    1933 }
    +
    1934}
    +
    1935
    +
    1936/******************************
    +
    1937 * std::tuple_size extensions *
    +
    1938 ******************************/
    +
    1939
    +
    1940// The C++ standard defines tuple_size as a class, however
    +
    1941// G++ 8 C++ library does define it as a struct hence we get
    +
    1942// clang warnings here
    +
    1943
    +
    1944// Do not remove space between "#" and "pragma". This is required for CRAN checks.
    +
    1945// clang-format off
    +
    1946#if defined(__clang__)
    +
    1947 # pragma clang diagnostic push
    +
    1948 # pragma clang diagnostic ignored "-Wmismatched-tags"
    +
    1949#endif
    +
    1950// clang-format on
    +
    1951
    +
    1952namespace std
    +
    1953{
    +
    1954 template <class T, std::size_t N>
    +
    1955 class tuple_size<xt::const_array<T, N>> : public integral_constant<std::size_t, N>
    +
    1956 {
    +
    1957 };
    +
    1958
    +
    1959 template <std::size_t... N>
    +
    1960 class tuple_size<xt::fixed_shape<N...>> : public integral_constant<std::size_t, sizeof...(N)>
    +
    1961 {
    +
    1962 };
    +
    1963
    +
    1964 template <class T, std::ptrdiff_t Start, std::ptrdiff_t End>
    +
    1965 class tuple_size<xt::sequence_view<T, Start, End>>
    +
    1966 : public integral_constant<std::size_t, std::size_t(End - Start)>
    +
    1967 {
    +
    1968 };
    +
    1969
    +
    1970 // Undefine tuple size for not-known sequence view size
    +
    1971 template <class T, std::ptrdiff_t Start>
    +
    1972 class tuple_size<xt::sequence_view<T, Start, -1>>;
    +
    1973}
    +
    1974
    +
    1975// Do not remove space between "#" and "pragma". This is required for CRAN checks.
    +
    1976// clang-format off
    +
    1977#if defined(__clang__)
    +
    1978 # pragma clang diagnostic pop
    +
    1979#endif
    +
    1980// clang-format on
    +
    1981
    +
    1982#undef XTENSOR_CONST
    +
    1983
    +
    1984#endif
    +
    This array class is modeled after std::array but adds optional alignment through a template parameter...
    +
    Fixed shape implementation for compile time defined arrays.
    + + + +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    +
    xarray< T, L > empty(const S &shape)
    Create a xcontainer (xarray, xtensor or xtensor_fixed) with uninitialized values of with value_type T...
    Definition xbuilder.hpp:89
    +
    A std::array like class with all member function (except reverse iterators) as constexpr.
    + + +
    +
    + + + + diff --git a/xstrided__view_8hpp_source.html b/xstrided__view_8hpp_source.html new file mode 100644 index 000000000..48073f52c --- /dev/null +++ b/xstrided__view_8hpp_source.html @@ -0,0 +1,958 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xstrided_view.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xstrided_view.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_STRIDED_VIEW_HPP
    +
    11#define XTENSOR_STRIDED_VIEW_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <cstddef>
    +
    15#include <tuple>
    +
    16#include <type_traits>
    +
    17#include <utility>
    +
    18
    +
    19#include <xtl/xsequence.hpp>
    +
    20#include <xtl/xvariant.hpp>
    +
    21
    +
    22#include "xexpression.hpp"
    +
    23#include "xiterable.hpp"
    +
    24#include "xlayout.hpp"
    +
    25#include "xsemantic.hpp"
    +
    26#include "xstorage.hpp"
    +
    27#include "xstrided_view_base.hpp"
    +
    28#include "xutils.hpp"
    +
    29
    +
    30namespace xt
    +
    31{
    +
    32 /***************************
    +
    33 * xstrided_view extension *
    +
    34 ***************************/
    +
    35
    +
    36 namespace extension
    +
    37 {
    +
    38 template <class Tag, class CT, class S, layout_type L, class FST>
    + +
    40
    +
    41 template <class CT, class S, layout_type L, class FST>
    +
    + +
    43 {
    + +
    45 };
    +
    +
    46
    +
    47 template <class CT, class S, layout_type L, class FST>
    +
    +
    48 struct xstrided_view_base : xstrided_view_base_impl<xexpression_tag_t<CT>, CT, S, L, FST>
    +
    49 {
    +
    50 };
    +
    +
    51
    +
    52 template <class CT, class S, layout_type L, class FST>
    +
    53 using xstrided_view_base_t = typename xstrided_view_base<CT, S, L, FST>::type;
    +
    54 }
    +
    55
    +
    56 template <layout_type L1, layout_type L2, class T>
    +
    + +
    58 {
    +
    59 using type = std::conditional_t<L1 == L2 && L1 != layout_type::dynamic, xcontiguous_iterable<T>, xiterable<T>>;
    +
    60 };
    +
    +
    61
    +
    62 template <layout_type L1, layout_type L2, class T>
    +
    63 using select_iterable_base_t = typename select_iterable_base<L1, L2, T>::type;
    +
    64
    +
    65
    +
    66 template <class CT, class S, layout_type L, class FST>
    +
    67 class xstrided_view;
    +
    68
    +
    69 template <class CT, class S, layout_type L, class FST>
    +
    + +
    71 {
    +
    72 using xexpression_type = std::decay_t<CT>;
    +
    73 using undecay_expression = CT;
    +
    74 using reference = inner_reference_t<undecay_expression>;
    +
    75 using const_reference = typename xexpression_type::const_reference;
    +
    76 using size_type = typename xexpression_type::size_type;
    +
    77 using shape_type = std::decay_t<S>;
    +
    78 using undecay_shape = S;
    +
    79 using storage_getter = FST;
    +
    80 using inner_storage_type = typename storage_getter::type;
    +
    81 using temporary_type = typename detail::xtype_for_shape<
    +
    82 S>::template type<typename xexpression_type::value_type, xexpression_type::static_layout>;
    +
    83 using storage_type = std::remove_reference_t<inner_storage_type>;
    +
    84 static constexpr layout_type layout = L;
    +
    85 };
    +
    +
    86
    +
    87 template <class CT, class S, layout_type L, class FST>
    +
    +
    88 struct xiterable_inner_types<xstrided_view<CT, S, L, FST>>
    +
    89 {
    +
    90 using inner_shape_type = std::decay_t<S>;
    +
    91 using inner_strides_type = get_strides_t<inner_shape_type>;
    +
    92 using inner_backstrides_type_type = inner_strides_type;
    +
    93
    +
    94 using const_stepper = std::conditional_t<
    + + + +
    98
    +
    99 using stepper = std::conditional_t<
    + + + +
    103 };
    +
    +
    104
    +
    105 template <class CT, class S, layout_type L, class FST, class RHS>
    +
    +
    106 struct can_assign<xstrided_view<CT, S, L, FST>, RHS> : can_assign<CT, RHS>
    +
    107 {
    +
    108 };
    +
    +
    109
    +
    110 /*****************
    +
    111 * xstrided_view *
    +
    112 *****************/
    +
    113
    +
    128 template <class CT, class S, layout_type L = layout_type::dynamic, class FST = detail::flat_storage_getter<CT, XTENSOR_DEFAULT_TRAVERSAL>>
    +
    + +
    130 : public xview_semantic<xstrided_view<CT, S, L, FST>>,
    +
    131 public select_iterable_base_t<L, std::decay_t<CT>::static_layout, xstrided_view<CT, S, L, FST>>,
    +
    132 private xstrided_view_base<xstrided_view<CT, S, L, FST>>,
    +
    133 public extension::xstrided_view_base_t<CT, S, L, FST>
    +
    134 {
    +
    135 public:
    +
    136
    + + + +
    140 using extension_base = extension::xstrided_view_base_t<CT, S, L, FST>;
    +
    141 using expression_tag = typename extension_base::expression_tag;
    +
    142
    +
    143 using xexpression_type = typename base_type::xexpression_type;
    +
    144 using base_type::is_const;
    +
    145
    +
    146 using value_type = typename base_type::value_type;
    +
    147 using reference = typename base_type::reference;
    +
    148 using const_reference = typename base_type::const_reference;
    +
    149 using pointer = typename base_type::pointer;
    +
    150 using const_pointer = typename base_type::const_pointer;
    +
    151 using size_type = typename base_type::size_type;
    +
    152 using difference_type = typename base_type::difference_type;
    +
    153
    +
    154 using inner_storage_type = typename base_type::inner_storage_type;
    +
    155 using storage_type = typename base_type::storage_type;
    +
    156 using linear_iterator = typename storage_type::iterator;
    +
    157 using const_linear_iterator = typename storage_type::const_iterator;
    +
    158 using reverse_linear_iterator = std::reverse_iterator<linear_iterator>;
    +
    159 using const_reverse_linear_iterator = std::reverse_iterator<const_linear_iterator>;
    +
    160
    +
    161 using iterable_base = select_iterable_base_t<L, xexpression_type::static_layout, self_type>;
    +
    162 using inner_shape_type = typename base_type::inner_shape_type;
    +
    163 using inner_strides_type = typename base_type::inner_strides_type;
    +
    164 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    165 using shape_type = typename base_type::shape_type;
    +
    166 using strides_type = typename base_type::strides_type;
    +
    167 using backstrides_type = typename base_type::backstrides_type;
    +
    168
    +
    169 using stepper = typename iterable_base::stepper;
    +
    170 using const_stepper = typename iterable_base::const_stepper;
    +
    171
    +
    172 using base_type::contiguous_layout;
    +
    173 using base_type::static_layout;
    +
    174
    +
    175 using temporary_type = typename xcontainer_inner_types<self_type>::temporary_type;
    +
    176 using base_index_type = xindex_type_t<shape_type>;
    +
    177
    +
    178 using data_alignment = xt_simd::container_alignment_t<storage_type>;
    +
    179 using simd_type = xt_simd::simd_type<value_type>;
    +
    180 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    181 using bool_load_type = typename base_type::bool_load_type;
    +
    182
    +
    183 template <class CTA, class SA>
    +
    +
    184 xstrided_view(CTA&& e, SA&& shape, strides_type&& strides, std::size_t offset, layout_type layout) noexcept;
    +
    185
    +
    186 xstrided_view(const xstrided_view& rhs) = default;
    +
    187
    +
    188 self_type& operator=(const self_type&);
    +
    189
    +
    190 template <class E>
    +
    191 self_type& operator=(const xexpression<E>& e);
    +
    192
    +
    193 template <class E>
    +
    194 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    195
    + + +
    198 using base_type::is_contiguous;
    +
    199 using base_type::layout;
    +
    200 using base_type::shape;
    +
    201 using base_type::size;
    +
    202 using base_type::strides;
    +
    203
    +
    204 using base_type::operator();
    +
    205 using base_type::at;
    +
    206 using base_type::unchecked;
    +
    207 using base_type::operator[];
    +
    208 using base_type::data;
    + +
    210 using base_type::element;
    + +
    212 using base_type::storage;
    +
    213
    + + +
    216
    +
    217 template <class T>
    +
    +
    218 void fill(const T& value);
    +
    219
    +
    220 linear_iterator linear_begin();
    +
    221 linear_iterator linear_end();
    +
    222 const_linear_iterator linear_begin() const;
    +
    223 const_linear_iterator linear_end() const;
    +
    224 const_linear_iterator linear_cbegin() const;
    +
    225 const_linear_iterator linear_cend() const;
    +
    226
    +
    227 reverse_linear_iterator linear_rbegin();
    +
    228 reverse_linear_iterator linear_rend();
    +
    229 const_reverse_linear_iterator linear_rbegin() const;
    +
    230 const_reverse_linear_iterator linear_rend() const;
    +
    231 const_reverse_linear_iterator linear_crbegin() const;
    +
    232 const_reverse_linear_iterator linear_crend() const;
    +
    233
    +
    234 template <class ST, class STEP = stepper>
    +
    235 disable_indexed_stepper_t<STEP> stepper_begin(const ST& shape);
    +
    236 template <class ST, class STEP = stepper>
    +
    237 disable_indexed_stepper_t<STEP> stepper_end(const ST& shape, layout_type l);
    +
    238
    +
    239 template <class ST, class STEP = stepper>
    +
    240 enable_indexed_stepper_t<STEP> stepper_begin(const ST& shape);
    +
    241 template <class ST, class STEP = stepper>
    +
    242 enable_indexed_stepper_t<STEP> stepper_end(const ST& shape, layout_type l);
    +
    243
    +
    244 template <class ST, class STEP = const_stepper>
    +
    245 disable_indexed_stepper_t<STEP> stepper_begin(const ST& shape) const;
    +
    246 template <class ST, class STEP = const_stepper>
    +
    247 disable_indexed_stepper_t<STEP> stepper_end(const ST& shape, layout_type l) const;
    +
    248
    +
    249 template <class ST, class STEP = const_stepper>
    +
    250 enable_indexed_stepper_t<STEP> stepper_begin(const ST& shape) const;
    +
    251 template <class ST, class STEP = const_stepper>
    +
    252 enable_indexed_stepper_t<STEP> stepper_end(const ST& shape, layout_type l) const;
    +
    253
    +
    254 template <class requested_type>
    +
    255 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    256
    +
    257 template <class T, class R>
    +
    258 using enable_simd_interface = std::enable_if_t<has_simd_interface<T>::value && L != layout_type::dynamic, R>;
    +
    259
    +
    260 template <class align, class simd, class T = xexpression_type>
    +
    261 enable_simd_interface<T, void> store_simd(size_type i, const simd& e);
    +
    262 template <
    +
    263 class align,
    +
    264 class requested_type = value_type,
    + +
    266 class T = xexpression_type>
    +
    267 enable_simd_interface<T, simd_return_type<requested_type>> load_simd(size_type i) const;
    +
    268
    +
    269 reference data_element(size_type i);
    +
    270 const_reference data_element(size_type i) const;
    +
    271
    +
    272 reference flat(size_type i);
    +
    273 const_reference flat(size_type i) const;
    +
    274
    +
    275 using container_iterator = std::
    +
    276 conditional_t<is_const, typename storage_type::const_iterator, typename storage_type::iterator>;
    +
    277 using const_container_iterator = typename storage_type::const_iterator;
    +
    278
    +
    279 template <class E>
    + +
    281
    +
    282 template <class E>
    +
    283 rebind_t<E> build_view(E&& e) const;
    +
    284
    +
    285 private:
    +
    286
    +
    287 container_iterator data_xbegin() noexcept;
    +
    288 const_container_iterator data_xbegin() const noexcept;
    +
    289 container_iterator data_xend(layout_type l, size_type offset) noexcept;
    +
    290 const_container_iterator data_xend(layout_type l, size_type offset) const noexcept;
    +
    291
    +
    292 template <class It>
    +
    293 It data_xbegin_impl(It begin) const noexcept;
    +
    294
    +
    295 template <class It>
    +
    296 It data_xend_impl(It end, layout_type l, size_type offset) const noexcept;
    +
    297
    +
    298 void assign_temporary_impl(temporary_type&& tmp);
    +
    299
    +
    300 using base_type::set_offset;
    +
    301
    +
    302 template <class C>
    +
    303 friend class xstepper;
    +
    304 friend class xview_semantic<self_type>;
    +
    305 friend class xaccessible<self_type>;
    +
    306 friend class xconst_accessible<self_type>;
    +
    307 template <class D>
    +
    308 friend class xaxis_iterator;
    +
    309 template <class D>
    +
    310 friend class xaxis_slice_iterator;
    +
    311 };
    +
    312
    +
    313 /**************************
    +
    314 * xstrided_view builders *
    +
    315 **************************/
    +
    316
    +
    317 template <class T>
    +
    318 using xstrided_slice = xtl::variant<
    +
    319 T,
    +
    320
    +
    321 xrange_adaptor<placeholders::xtuph, T, T>,
    +
    322 xrange_adaptor<T, placeholders::xtuph, T>,
    +
    323 xrange_adaptor<T, T, placeholders::xtuph>,
    +
    324
    +
    325 xrange_adaptor<T, placeholders::xtuph, placeholders::xtuph>,
    +
    326 xrange_adaptor<placeholders::xtuph, T, placeholders::xtuph>,
    +
    327 xrange_adaptor<placeholders::xtuph, placeholders::xtuph, T>,
    +
    328
    +
    329 xrange_adaptor<T, T, T>,
    +
    330 xrange_adaptor<placeholders::xtuph, placeholders::xtuph, placeholders::xtuph>,
    +
    331
    +
    332 xrange<T>,
    + +
    334
    +
    335 xall_tag,
    + + +
    338
    +
    343 using xstrided_slice_vector = std::vector<xstrided_slice<std::ptrdiff_t>>;
    +
    344
    +
    345 template <layout_type L = layout_type::dynamic, class E, class S, class X>
    +
    346 auto strided_view(E&& e, S&& shape, X&& stride, std::size_t offset = 0, layout_type layout = L) noexcept;
    +
    347
    +
    348 template <class E>
    +
    349 auto strided_view(E&& e, const xstrided_slice_vector& slices);
    +
    350
    +
    351 /********************************
    +
    352 * xstrided_view implementation *
    +
    353 ********************************/
    +
    354
    +
    368 template <class CT, class S, layout_type L, class FST>
    +
    369 template <class CTA, class SA>
    +
    +
    370 inline xstrided_view<CT, S, L, FST>::xstrided_view(
    +
    371 CTA&& e,
    +
    372 SA&& shape,
    +
    373 strides_type&& strides,
    +
    374 std::size_t offset,
    + +
    376 ) noexcept
    +
    377 : base_type(std::forward<CTA>(e), std::forward<SA>(shape), std::move(strides), offset, layout)
    +
    378 {
    +
    379 }
    +
    +
    380
    +
    382
    +
    383 template <class CT, class S, layout_type L, class FST>
    +
    384 inline auto xstrided_view<CT, S, L, FST>::operator=(const self_type& rhs) -> self_type&
    +
    385 {
    +
    386 temporary_type tmp(rhs);
    +
    387 return this->assign_temporary(std::move(tmp));
    +
    388 }
    +
    389
    +
    397 template <class CT, class S, layout_type L, class FST>
    +
    398 template <class E>
    +
    + +
    400 {
    +
    401 return semantic_base::operator=(e);
    +
    402 }
    +
    +
    403
    +
    405
    +
    406 template <class CT, class S, layout_type L, class FST>
    +
    407 template <class E>
    +
    408 inline auto xstrided_view<CT, S, L, FST>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    409 {
    +
    410 this->fill(e);
    +
    411 return *this;
    +
    412 }
    +
    413
    +
    414 namespace xstrided_view_detail
    +
    415 {
    +
    416 template <class V, class T>
    +
    417 inline void run_assign_temporary_impl(V& v, const T& t, std::true_type /* enable strided assign */)
    +
    418 {
    +
    419 strided_loop_assigner<true>::run(v, t);
    +
    420 }
    +
    421
    +
    422 template <class V, class T>
    +
    423 inline void
    +
    424 run_assign_temporary_impl(V& v, const T& t, std::false_type /* fallback to iterator assign */)
    +
    425 {
    +
    426 std::copy(t.cbegin(), t.cend(), v.begin());
    +
    427 }
    +
    428 }
    +
    429
    +
    430 template <class CT, class S, layout_type L, class FST>
    +
    431 inline void xstrided_view<CT, S, L, FST>::assign_temporary_impl(temporary_type&& tmp)
    +
    432 {
    +
    433 constexpr bool
    +
    434 fast_assign = xassign_traits<xstrided_view<CT, S, L, FST>, temporary_type>::simd_strided_assign();
    +
    435 xstrided_view_detail::run_assign_temporary_impl(*this, tmp, std::integral_constant<bool, fast_assign>{});
    +
    436 }
    +
    437
    +
    442
    +
    447 template <class CT, class S, layout_type L, class FST>
    +
    448 template <class T>
    +
    +
    449 inline void xstrided_view<CT, S, L, FST>::fill(const T& value)
    +
    450 {
    + +
    452 {
    +
    453 std::fill(this->linear_begin(), this->linear_end(), value);
    +
    454 }
    +
    455 else
    +
    456 {
    +
    457 std::fill(this->begin(), this->end(), value);
    +
    458 }
    +
    459 }
    +
    +
    +
    460
    +
    462
    +
    463 template <class CT, class S, layout_type L, class FST>
    +
    464 inline auto xstrided_view<CT, S, L, FST>::data_element(size_type i) -> reference
    +
    465 {
    +
    466 return storage()[i];
    +
    467 }
    +
    468
    +
    469 template <class CT, class S, layout_type L, class FST>
    +
    470 inline auto xstrided_view<CT, S, L, FST>::data_element(size_type i) const -> const_reference
    +
    471 {
    +
    472 return storage()[i];
    +
    473 }
    +
    474
    +
    475 template <class CT, class S, layout_type L, class FST>
    +
    476 inline auto xstrided_view<CT, S, L, FST>::flat(size_type i) -> reference
    +
    477 {
    +
    478 return storage()[i];
    +
    479 }
    +
    480
    +
    481 template <class CT, class S, layout_type L, class FST>
    +
    482 inline auto xstrided_view<CT, S, L, FST>::flat(size_type i) const -> const_reference
    +
    483 {
    +
    484 return storage()[i];
    +
    485 }
    +
    486
    +
    487 template <class CT, class S, layout_type L, class FST>
    +
    488 inline auto xstrided_view<CT, S, L, FST>::linear_begin() -> linear_iterator
    +
    489 {
    +
    490 return this->storage().begin() + static_cast<std::ptrdiff_t>(data_offset());
    +
    491 }
    +
    492
    +
    493 template <class CT, class S, layout_type L, class FST>
    +
    494 inline auto xstrided_view<CT, S, L, FST>::linear_end() -> linear_iterator
    +
    495 {
    +
    496 return this->storage().begin() + static_cast<std::ptrdiff_t>(data_offset() + size());
    +
    497 }
    +
    498
    +
    499 template <class CT, class S, layout_type L, class FST>
    +
    500 inline auto xstrided_view<CT, S, L, FST>::linear_begin() const -> const_linear_iterator
    +
    501 {
    +
    502 return this->linear_cbegin();
    +
    503 }
    +
    504
    +
    505 template <class CT, class S, layout_type L, class FST>
    +
    506 inline auto xstrided_view<CT, S, L, FST>::linear_end() const -> const_linear_iterator
    +
    507 {
    +
    508 return this->linear_cend();
    +
    509 }
    +
    510
    +
    511 template <class CT, class S, layout_type L, class FST>
    +
    512 inline auto xstrided_view<CT, S, L, FST>::linear_cbegin() const -> const_linear_iterator
    +
    513 {
    +
    514 return this->storage().cbegin() + static_cast<std::ptrdiff_t>(data_offset());
    +
    515 }
    +
    516
    +
    517 template <class CT, class S, layout_type L, class FST>
    +
    518 inline auto xstrided_view<CT, S, L, FST>::linear_cend() const -> const_linear_iterator
    +
    519 {
    +
    520 return this->storage().cbegin() + static_cast<std::ptrdiff_t>(data_offset() + size());
    +
    521 }
    +
    522
    +
    523 template <class CT, class S, layout_type L, class FST>
    +
    524 inline auto xstrided_view<CT, S, L, FST>::linear_rbegin() -> reverse_linear_iterator
    +
    525 {
    +
    526 return reverse_linear_iterator(this->linear_begin());
    +
    527 }
    +
    528
    +
    529 template <class CT, class S, layout_type L, class FST>
    +
    530 inline auto xstrided_view<CT, S, L, FST>::linear_rend() -> reverse_linear_iterator
    +
    531 {
    +
    532 return reverse_linear_iterator(this->linear_end());
    +
    533 }
    +
    534
    +
    535 template <class CT, class S, layout_type L, class FST>
    +
    536 inline auto xstrided_view<CT, S, L, FST>::linear_rbegin() const -> const_reverse_linear_iterator
    +
    537 {
    +
    538 return this->linear_crbegin();
    +
    539 }
    +
    540
    +
    541 template <class CT, class S, layout_type L, class FST>
    +
    542 inline auto xstrided_view<CT, S, L, FST>::linear_rend() const -> const_reverse_linear_iterator
    +
    543 {
    +
    544 return this->linear_crend();
    +
    545 }
    +
    546
    +
    547 template <class CT, class S, layout_type L, class FST>
    +
    548 inline auto xstrided_view<CT, S, L, FST>::linear_crbegin() const -> const_reverse_linear_iterator
    +
    549 {
    +
    550 return const_reverse_linear_iterator(this->linear_cbegin());
    +
    551 }
    +
    552
    +
    553 template <class CT, class S, layout_type L, class FST>
    +
    554 inline auto xstrided_view<CT, S, L, FST>::linear_crend() const -> const_reverse_linear_iterator
    +
    555 {
    +
    556 return const_reverse_linear_iterator(this->linear_cend());
    +
    557 }
    +
    558
    +
    559 /***************
    +
    560 * stepper api *
    +
    561 ***************/
    +
    562
    +
    563 template <class CT, class S, layout_type L, class FST>
    +
    564 template <class ST, class STEP>
    +
    565 inline auto xstrided_view<CT, S, L, FST>::stepper_begin(const ST& shape) -> disable_indexed_stepper_t<STEP>
    +
    566 {
    +
    567 size_type offset = shape.size() - dimension();
    +
    568 return stepper(this, data_xbegin(), offset);
    +
    569 }
    +
    570
    +
    571 template <class CT, class S, layout_type L, class FST>
    +
    572 template <class ST, class STEP>
    +
    573 inline auto xstrided_view<CT, S, L, FST>::stepper_end(const ST& shape, layout_type l)
    +
    574 -> disable_indexed_stepper_t<STEP>
    +
    575 {
    +
    576 size_type offset = shape.size() - dimension();
    +
    577 return stepper(this, data_xend(l, offset), offset);
    +
    578 }
    +
    579
    +
    580 template <class CT, class S, layout_type L, class FST>
    +
    581 template <class ST, class STEP>
    +
    582 inline auto xstrided_view<CT, S, L, FST>::stepper_begin(const ST& shape) -> enable_indexed_stepper_t<STEP>
    +
    583 {
    +
    584 size_type offset = shape.size() - dimension();
    +
    585 return stepper(this, offset);
    +
    586 }
    +
    587
    +
    588 template <class CT, class S, layout_type L, class FST>
    +
    589 template <class ST, class STEP>
    +
    590 inline auto xstrided_view<CT, S, L, FST>::stepper_end(const ST& shape, layout_type /*l*/)
    +
    591 -> enable_indexed_stepper_t<STEP>
    +
    592 {
    +
    593 size_type offset = shape.size() - dimension();
    +
    594 return stepper(this, offset, true);
    +
    595 }
    +
    596
    +
    597 template <class CT, class S, layout_type L, class FST>
    +
    598 template <class ST, class STEP>
    +
    599 inline auto xstrided_view<CT, S, L, FST>::stepper_begin(const ST& shape) const
    +
    600 -> disable_indexed_stepper_t<STEP>
    +
    601 {
    +
    602 size_type offset = shape.size() - dimension();
    +
    603 return const_stepper(this, data_xbegin(), offset);
    +
    604 }
    +
    605
    +
    606 template <class CT, class S, layout_type L, class FST>
    +
    607 template <class ST, class STEP>
    +
    608 inline auto xstrided_view<CT, S, L, FST>::stepper_end(const ST& shape, layout_type l) const
    +
    609 -> disable_indexed_stepper_t<STEP>
    +
    610 {
    +
    611 size_type offset = shape.size() - dimension();
    +
    612 return const_stepper(this, data_xend(l, offset), offset);
    +
    613 }
    +
    614
    +
    615 template <class CT, class S, layout_type L, class FST>
    +
    616 template <class ST, class STEP>
    +
    617 inline auto xstrided_view<CT, S, L, FST>::stepper_begin(const ST& shape) const
    +
    618 -> enable_indexed_stepper_t<STEP>
    +
    619 {
    +
    620 size_type offset = shape.size() - dimension();
    +
    621 return const_stepper(this, offset);
    +
    622 }
    +
    623
    +
    624 template <class CT, class S, layout_type L, class FST>
    +
    625 template <class ST, class STEP>
    +
    626 inline auto xstrided_view<CT, S, L, FST>::stepper_end(const ST& shape, layout_type /*l*/) const
    +
    627 -> enable_indexed_stepper_t<STEP>
    +
    628 {
    +
    629 size_type offset = shape.size() - dimension();
    +
    630 return const_stepper(this, offset, true);
    +
    631 }
    +
    632
    +
    633 template <class CT, class S, layout_type L, class FST>
    +
    634 template <class It>
    +
    635 inline It xstrided_view<CT, S, L, FST>::data_xbegin_impl(It begin) const noexcept
    +
    636 {
    +
    637 return begin + static_cast<std::ptrdiff_t>(this->data_offset());
    +
    638 }
    +
    639
    +
    640 template <class CT, class S, layout_type L, class FST>
    +
    641 template <class It>
    +
    642 inline It
    +
    643 xstrided_view<CT, S, L, FST>::data_xend_impl(It begin, layout_type l, size_type offset) const noexcept
    +
    644 {
    +
    645 return strided_data_end(*this, begin + std::ptrdiff_t(this->data_offset()), l, offset);
    +
    646 }
    +
    647
    +
    648 template <class CT, class S, layout_type L, class FST>
    +
    649 inline auto xstrided_view<CT, S, L, FST>::data_xbegin() noexcept -> container_iterator
    +
    650 {
    +
    651 return data_xbegin_impl(this->storage().begin());
    +
    652 }
    +
    653
    +
    654 template <class CT, class S, layout_type L, class FST>
    +
    655 inline auto xstrided_view<CT, S, L, FST>::data_xbegin() const noexcept -> const_container_iterator
    +
    656 {
    +
    657 return data_xbegin_impl(this->storage().cbegin());
    +
    658 }
    +
    659
    +
    660 template <class CT, class S, layout_type L, class FST>
    +
    661 inline auto xstrided_view<CT, S, L, FST>::data_xend(layout_type l, size_type offset) noexcept
    +
    662 -> container_iterator
    +
    663 {
    +
    664 return data_xend_impl(this->storage().begin(), l, offset);
    +
    665 }
    +
    666
    +
    667 template <class CT, class S, layout_type L, class FST>
    +
    668 inline auto xstrided_view<CT, S, L, FST>::data_xend(layout_type l, size_type offset) const noexcept
    +
    669 -> const_container_iterator
    +
    670 {
    +
    671 return data_xend_impl(this->storage().cbegin(), l, offset);
    +
    672 }
    +
    673
    +
    674 template <class CT, class S, layout_type L, class FST>
    +
    675 template <class alignment, class simd, class T>
    +
    676 inline auto xstrided_view<CT, S, L, FST>::store_simd(size_type i, const simd& e)
    +
    677 -> enable_simd_interface<T, void>
    +
    678 {
    +
    679 using align_mode = driven_align_mode_t<alignment, data_alignment>;
    +
    680 xt_simd::store_as(&(storage()[i]), e, align_mode());
    +
    681 }
    +
    682
    +
    683 template <class CT, class S, layout_type L, class FST>
    +
    684 template <class alignment, class requested_type, std::size_t N, class T>
    +
    685 inline auto xstrided_view<CT, S, L, FST>::load_simd(size_type i) const
    +
    686 -> enable_simd_interface<T, simd_return_type<requested_type>>
    +
    687 {
    +
    688 using align_mode = driven_align_mode_t<alignment, data_alignment>;
    +
    689 return xt_simd::load_as<requested_type>(&(storage()[i]), align_mode());
    +
    690 }
    +
    691
    +
    692 template <class CT, class S, layout_type L, class FST>
    +
    693 template <class E>
    +
    694 inline auto xstrided_view<CT, S, L, FST>::build_view(E&& e) const -> rebind_t<E>
    +
    695 {
    +
    696 inner_shape_type sh(this->shape());
    +
    697 inner_strides_type str(this->strides());
    +
    698 return rebind_t<E>(
    +
    699 std::forward<E>(e),
    +
    700 std::move(sh),
    +
    701 std::move(str),
    + +
    703 this->layout()
    +
    704 );
    +
    705 }
    +
    706
    +
    707 /*****************************************
    +
    708 * xstrided_view builders implementation *
    +
    709 *****************************************/
    +
    710
    +
    727 template <layout_type L, class E, class S, class X>
    +
    +
    728 inline auto strided_view(E&& e, S&& shape, X&& strides, std::size_t offset, layout_type layout) noexcept
    +
    729 {
    +
    730 using view_type = xstrided_view<xclosure_t<E>, S, L>;
    +
    731 return view_type(std::forward<E>(e), std::forward<S>(shape), std::forward<X>(strides), offset, layout);
    +
    732 }
    +
    +
    733
    +
    734 namespace detail
    +
    735 {
    +
    736 struct no_adj_strides_policy
    +
    737 {
    +
    738 protected:
    +
    739
    +
    740 inline void resize(std::size_t)
    +
    741 {
    +
    742 }
    +
    743
    +
    744 inline void set_fake_slice(std::size_t)
    +
    745 {
    +
    746 }
    +
    747
    +
    748 template <class ST, class S>
    +
    749 bool fill_args(
    +
    750 const xstrided_slice_vector& /*slices*/,
    +
    751 std::size_t /*sl_idx*/,
    +
    752 std::size_t /*i*/,
    +
    753 std::size_t /*old_shape*/,
    +
    754 const ST& /*old_stride*/,
    +
    755 S& /*shape*/,
    +
    756 get_strides_t<S>& /*strides*/
    +
    757 )
    +
    758 {
    +
    759 return false;
    +
    760 }
    +
    761 };
    +
    762 }
    +
    763
    +
    789 template <class E>
    +
    +
    790 inline auto strided_view(E&& e, const xstrided_slice_vector& slices)
    +
    791 {
    +
    792 detail::strided_view_args<detail::no_adj_strides_policy> args;
    +
    793 args.fill_args(
    +
    794 e.shape(),
    +
    795 detail::get_strides<XTENSOR_DEFAULT_TRAVERSAL>(e),
    +
    796 detail::get_offset<XTENSOR_DEFAULT_TRAVERSAL>(e),
    +
    797 e.layout(),
    +
    798 slices
    +
    799 );
    +
    800 using view_type = xstrided_view<xclosure_t<E>, decltype(args.new_shape)>;
    +
    801 return view_type(
    +
    802 std::forward<E>(e),
    +
    803 std::move(args.new_shape),
    +
    804 std::move(args.new_strides),
    +
    805 args.new_offset,
    +
    806 args.new_layout
    +
    807 );
    +
    808 }
    +
    +
    809
    +
    810 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E, class S>
    +
    811 inline auto reshape_view(E&& e, S&& shape)
    +
    812 {
    +
    813 static_assert(
    + +
    815 "traversal has to be row or column major"
    +
    816 );
    +
    817
    +
    818 using shape_type = std::decay_t<S>;
    +
    819 get_strides_t<shape_type> strides;
    +
    820
    +
    821 xt::resize_container(strides, shape.size());
    + +
    823 constexpr auto computed_layout = std::decay_t<E>::static_layout == L ? L : layout_type::dynamic;
    +
    824 using view_type = xstrided_view<
    +
    825 xclosure_t<E>,
    +
    826 shape_type,
    +
    827 computed_layout,
    +
    828 detail::flat_adaptor_getter<xclosure_t<E>, L>>;
    +
    829 return view_type(std::forward<E>(e), std::forward<S>(shape), std::move(strides), 0, e.layout());
    +
    830 }
    +
    831
    +
    845 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E, class S>
    +
    +
    846 inline auto reshape_view(E&& e, S&& shape, layout_type /*order*/)
    +
    847 {
    +
    848 return reshape_view<L>(std::forward<E>(e), std::forward<S>(shape));
    +
    849 }
    +
    +
    850
    +
    851 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E, class I, std::size_t N>
    +
    852 inline auto reshape_view(E&& e, const I (&shape)[N], layout_type order)
    +
    853 {
    +
    854 using shape_type = std::array<std::size_t, N>;
    +
    855 return reshape_view<L>(std::forward<E>(e), xtl::forward_sequence<shape_type, decltype(shape)>(shape), order);
    +
    856 }
    +
    857
    +
    858 template <layout_type L = XTENSOR_DEFAULT_TRAVERSAL, class E, class I, std::size_t N>
    +
    859 inline auto reshape_view(E&& e, const I (&shape)[N])
    +
    860 {
    +
    861 using shape_type = std::array<std::size_t, N>;
    +
    862 return reshape_view<L>(std::forward<E>(e), xtl::forward_sequence<shape_type, decltype(shape)>(shape));
    +
    863 }
    +
    864}
    +
    865
    +
    866#endif
    +
    +
    +
    Base class for implementation of common expression access methods.
    +
    Class for iteration over (N-1)-dimensional slices, where N is the dimension of the underlying express...
    +
    Class for iteration over one-dimensional slices.
    +
    Base class for implementation of common expression constant access methods.
    +
    size_type size() const noexcept
    Returns the size of the expression.
    +
    size_type dimension() const noexcept
    Returns the number of dimensions of the expression.
    +
    Base class for xexpressions.
    + +
    Base class for multidimensional iterable expressions.
    + + + + +
    layout_type layout() const noexcept
    Returns the layout of the xtrided_view_base.
    +
    bool has_linear_assign(const O &strides) const noexcept
    Checks whether the xstrided_view_base can be linearly assigned to an expression with the specified st...
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the xtrided_view_base.
    +
    bool broadcast_shape(O &shape, bool reuse_cache=false) const
    Broadcast the shape of the view to the specified parameter.
    +
    const inner_backstrides_type & backstrides() const noexcept
    Returns the backstrides of the xtrided_view_base.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xtrided_view_base.
    +
    size_type data_offset() const noexcept
    Returns the offset to the first element in the view.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the view.
    +
    xexpression_type & expression() noexcept
    Returns a reference to the underlying expression of the view.
    +
    View of an xexpression using strides.
    +
    layout_type layout() const noexcept
    Returns the layout of the xtrided_view_base.
    +
    void fill(const T &value)
    Fills the view with the given value.
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the xtrided_view_base.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xtrided_view_base.
    +
    size_type data_offset() const noexcept
    Returns the offset to the first element in the view.
    +
    xstrided_view(CTA &&e, SA &&shape, strides_type &&strides, std::size_t offset, layout_type layout) noexcept
    Constructs an xstrided_view.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the view.
    +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    derived_type & assign_temporary(temporary_type &&)
    Assigns the temporary tmp to *this.
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    std::vector< xstrided_slice< std::ptrdiff_t > > xstrided_slice_vector
    vector of slices used to build a xstrided_view
    +
    auto strided_view(E &&e, S &&shape, X &&stride, std::size_t offset=0, layout_type layout=L) noexcept
    Construct a strided view from an xexpression, shape, strides and offset.
    + + + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xstrided__view__base_8hpp_source.html b/xstrided__view__base_8hpp_source.html new file mode 100644 index 000000000..6ec74677f --- /dev/null +++ b/xstrided__view__base_8hpp_source.html @@ -0,0 +1,1053 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xstrided_view_base.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xstrided_view_base.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_STRIDED_VIEW_BASE_HPP
    +
    11#define XTENSOR_STRIDED_VIEW_BASE_HPP
    +
    12
    +
    13#include <type_traits>
    +
    14
    +
    15#include <xtl/xsequence.hpp>
    +
    16#include <xtl/xvariant.hpp>
    +
    17
    +
    18#include "xaccessible.hpp"
    +
    19#include "xslice.hpp"
    +
    20#include "xstrides.hpp"
    +
    21#include "xtensor_config.hpp"
    +
    22#include "xtensor_forward.hpp"
    +
    23#include "xutils.hpp"
    +
    24
    +
    25namespace xt
    +
    26{
    +
    27 namespace detail
    +
    28 {
    +
    29 template <class CT, layout_type L>
    +
    30 class flat_expression_adaptor
    +
    31 {
    +
    32 public:
    +
    33
    +
    34 using xexpression_type = std::decay_t<CT>;
    +
    35 using shape_type = typename xexpression_type::shape_type;
    +
    36 using inner_strides_type = get_strides_t<shape_type>;
    +
    37 using index_type = inner_strides_type;
    +
    38 using size_type = typename xexpression_type::size_type;
    +
    39 using value_type = typename xexpression_type::value_type;
    +
    40 using const_reference = typename xexpression_type::const_reference;
    +
    41 using reference = std::conditional_t<
    +
    42 std::is_const<std::remove_reference_t<CT>>::value,
    +
    43 typename xexpression_type::const_reference,
    +
    44 typename xexpression_type::reference>;
    +
    45
    +
    46 using iterator = decltype(std::declval<std::remove_reference_t<CT>>().template begin<L>());
    +
    47 using const_iterator = decltype(std::declval<std::decay_t<CT>>().template cbegin<L>());
    +
    48 using reverse_iterator = decltype(std::declval<std::remove_reference_t<CT>>().template rbegin<L>());
    +
    49 using const_reverse_iterator = decltype(std::declval<std::decay_t<CT>>().template crbegin<L>());
    +
    50
    +
    51 explicit flat_expression_adaptor(CT* e);
    +
    52
    +
    53 template <class FST>
    +
    54 flat_expression_adaptor(CT* e, FST&& strides);
    +
    55
    +
    56 void update_pointer(CT* ptr) const;
    +
    57
    +
    58 size_type size() const;
    +
    59 reference operator[](size_type idx);
    +
    60 const_reference operator[](size_type idx) const;
    +
    61
    +
    62 iterator begin();
    +
    63 iterator end();
    +
    64 const_iterator begin() const;
    +
    65 const_iterator end() const;
    +
    66 const_iterator cbegin() const;
    +
    67 const_iterator cend() const;
    +
    68
    +
    69 private:
    +
    70
    +
    71 static index_type& get_index();
    +
    72
    +
    73 mutable CT* m_e;
    +
    74 inner_strides_type m_strides;
    +
    75 size_type m_size;
    +
    76 };
    +
    77
    +
    78 template <class T>
    +
    79 struct is_flat_expression_adaptor : std::false_type
    +
    80 {
    +
    81 };
    +
    82
    +
    83 template <class CT, layout_type L>
    +
    84 struct is_flat_expression_adaptor<flat_expression_adaptor<CT, L>> : std::true_type
    +
    85 {
    +
    86 };
    +
    87
    +
    88 template <class E, class ST>
    +
    89 struct provides_data_interface
    +
    90 : xtl::conjunction<has_data_interface<std::decay_t<E>>, xtl::negation<is_flat_expression_adaptor<ST>>>
    +
    91 {
    +
    92 };
    +
    93 }
    +
    94
    +
    95 template <class D>
    +
    + +
    97 {
    +
    98 public:
    +
    99
    + + +
    102 using xexpression_type = typename inner_types::xexpression_type;
    +
    103 using undecay_expression = typename inner_types::undecay_expression;
    +
    104 static constexpr bool is_const = std::is_const<std::remove_reference_t<undecay_expression>>::value;
    +
    105
    +
    106 using value_type = typename xexpression_type::value_type;
    +
    107 using reference = typename inner_types::reference;
    +
    108 using const_reference = typename inner_types::const_reference;
    +
    109 using pointer = std::
    +
    110 conditional_t<is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer>;
    +
    111 using const_pointer = typename xexpression_type::const_pointer;
    +
    112 using size_type = typename inner_types::size_type;
    +
    113 using difference_type = typename xexpression_type::difference_type;
    +
    114
    +
    115 using storage_getter = typename inner_types::storage_getter;
    +
    116 using inner_storage_type = typename inner_types::inner_storage_type;
    +
    117 using storage_type = std::remove_reference_t<inner_storage_type>;
    +
    118
    +
    119 using shape_type = typename inner_types::shape_type;
    +
    120 using strides_type = get_strides_t<shape_type>;
    +
    121 using backstrides_type = strides_type;
    +
    122
    +
    123 using inner_shape_type = shape_type;
    +
    124 using inner_strides_type = strides_type;
    +
    125 using inner_backstrides_type = backstrides_type;
    +
    126
    +
    127 using undecay_shape = typename inner_types::undecay_shape;
    +
    128
    +
    129 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    130 using bool_load_type = typename xexpression_type::bool_load_type;
    +
    131
    +
    132 static constexpr layout_type static_layout = inner_types::layout;
    +
    133 static constexpr bool contiguous_layout = static_layout != layout_type::dynamic
    +
    134 && xexpression_type::contiguous_layout;
    +
    135
    +
    136 template <class CTA, class SA>
    +
    137 xstrided_view_base(CTA&& e, SA&& shape, strides_type&& strides, size_type offset, layout_type layout) noexcept;
    +
    138
    + +
    140
    + +
    142
    +
    +
    143 const inner_shape_type& shape() const noexcept;
    +
    +
    144 const inner_strides_type& strides() const noexcept;
    +
    +
    145 const inner_backstrides_type& backstrides() const noexcept;
    +
    +
    146 layout_type layout() const noexcept;
    +
    147 bool is_contiguous() const noexcept;
    +
    148 using base_type::shape;
    +
    149
    +
    150 reference operator()();
    +
    151 const_reference operator()() const;
    +
    152
    +
    153 template <class... Args>
    +
    154 reference operator()(Args... args);
    +
    155
    +
    156 template <class... Args>
    +
    157 const_reference operator()(Args... args) const;
    +
    158
    +
    159 template <class... Args>
    +
    160 reference unchecked(Args... args);
    +
    161
    +
    162 template <class... Args>
    +
    163 const_reference unchecked(Args... args) const;
    +
    164
    +
    165 template <class It>
    +
    166 reference element(It first, It last);
    +
    167
    +
    168 template <class It>
    +
    169 const_reference element(It first, It last) const;
    +
    170
    +
    +
    171 storage_type& storage() noexcept;
    +
    +
    172 const storage_type& storage() const noexcept;
    +
    173
    +
    174 template <class E = xexpression_type, class ST = storage_type>
    +
    175 std::enable_if_t<detail::provides_data_interface<E, ST>::value, pointer> data() noexcept;
    +
    176 template <class E = xexpression_type, class ST = storage_type>
    +
    177 std::enable_if_t<detail::provides_data_interface<E, ST>::value, const_pointer> data() const noexcept;
    +
    +
    178 size_type data_offset() const noexcept;
    +
    179
    +
    +
    180 xexpression_type& expression() noexcept;
    +
    +
    181 const xexpression_type& expression() const noexcept;
    +
    182
    +
    183 template <class O>
    +
    +
    184 bool broadcast_shape(O& shape, bool reuse_cache = false) const;
    +
    185
    +
    186 template <class O>
    +
    +
    187 bool has_linear_assign(const O& strides) const noexcept;
    +
    188
    +
    189 protected:
    +
    190
    +
    191 using offset_type = typename strides_type::value_type;
    +
    192
    +
    193 template <class... Args>
    +
    194 offset_type compute_index(Args... args) const;
    +
    195
    +
    +
    196 template <class... Args>
    +
    197 offset_type compute_unchecked_index(Args... args) const;
    +
    198
    +
    +
    199 template <class It>
    +
    +
    200 offset_type compute_element_index(It first, It last) const;
    +
    201
    +
    +
    202 void set_offset(size_type offset);
    +
    203
    +
    204 private:
    +
    205
    +
    +
    206 undecay_expression m_e;
    +
    207 inner_storage_type m_storage;
    +
    +
    208 inner_shape_type m_shape;
    +
    +
    209 inner_strides_type m_strides;
    +
    +
    210 inner_backstrides_type m_backstrides;
    +
    +
    211 size_type m_offset;
    +
    +
    212 layout_type m_layout;
    +
    213 };
    +
    + +
    +
    215 /***************************
    +
    216 * flat_expression_adaptor *
    +
    217 ***************************/
    +
    218
    +
    219 namespace detail
    +
    220 {
    +
    221 template <class CT>
    +
    222 struct inner_storage_getter
    +
    223 {
    +
    224 using type = decltype(std::declval<CT>().storage());
    +
    225 using reference = std::add_lvalue_reference_t<CT>;
    +
    226
    +
    227 template <class E>
    +
    228 using rebind_t = inner_storage_getter<E>;
    +
    229
    +
    230 static decltype(auto) get_flat_storage(reference e)
    +
    231 {
    +
    232 return e.storage();
    +
    233 }
    +
    234
    +
    235 static auto get_offset(reference e)
    +
    236 {
    +
    237 return e.data_offset();
    +
    238 }
    +
    239
    +
    240 static decltype(auto) get_strides(reference e)
    +
    241 {
    +
    242 return e.strides();
    +
    243 }
    +
    244 };
    +
    245
    +
    246 template <class CT, layout_type L>
    +
    247 struct flat_adaptor_getter
    +
    248 {
    +
    249 using type = flat_expression_adaptor<std::remove_reference_t<CT>, L>;
    +
    250 using reference = std::add_lvalue_reference_t<CT>;
    +
    251
    +
    252 template <class E>
    +
    253 using rebind_t = flat_adaptor_getter<E, L>;
    +
    254
    +
    255 static type get_flat_storage(reference e)
    +
    256 {
    +
    257 // moved to addressof because ampersand on xview returns a closure pointer
    +
    258 return type(std::addressof(e));
    +
    259 }
    +
    260
    +
    261 static auto get_offset(reference)
    +
    262 {
    +
    263 return typename std::decay_t<CT>::size_type(0);
    +
    264 }
    +
    265
    +
    266 static auto get_strides(reference e)
    +
    267 {
    + +
    269 strides.resize(e.shape().size());
    +
    270 compute_strides(e.shape(), L, strides);
    +
    271 return strides;
    +
    272 }
    +
    273 };
    +
    274
    +
    275 template <class CT, layout_type L>
    +
    276 using flat_storage_getter = std::conditional_t<
    + +
    278 inner_storage_getter<CT>,
    +
    279 flat_adaptor_getter<CT, L>>;
    +
    280
    +
    281 template <layout_type L, class E>
    +
    282 inline auto get_offset(E& e)
    +
    283 {
    +
    284 return flat_storage_getter<E, L>::get_offset(e);
    +
    285 }
    +
    286
    +
    287 template <layout_type L, class E>
    +
    288 inline decltype(auto) get_strides(E& e)
    +
    289 {
    +
    290 return flat_storage_getter<E, L>::get_strides(e);
    +
    291 }
    +
    292 }
    +
    293
    +
    294 /*************************************
    +
    295 * xstrided_view_base implementation *
    +
    296 *************************************/
    +
    297
    +
    311 template <class D>
    +
    312 template <class CTA, class SA>
    +
    + +
    314 CTA&& e,
    +
    315 SA&& shape,
    +
    316 strides_type&& strides,
    +
    317 size_type offset,
    + +
    319 ) noexcept
    +
    320 : m_e(std::forward<CTA>(e))
    +
    321 ,
    +
    322 // m_storage(detail::get_flat_storage<undecay_expression>(m_e)),
    +
    323 m_storage(storage_getter::get_flat_storage(m_e))
    +
    324 , m_shape(std::forward<SA>(shape))
    +
    325 , m_strides(std::move(strides))
    +
    326 , m_offset(offset)
    +
    327 , m_layout(layout)
    +
    328 {
    +
    329 m_backstrides = xtl::make_sequence<backstrides_type>(m_shape.size(), 0);
    +
    330 adapt_strides(m_shape, m_strides, m_backstrides);
    +
    331 }
    +
    +
    332
    +
    333 namespace detail
    +
    334 {
    +
    335 template <class T, class S>
    +
    336 auto& copy_move_storage(T& expr, const S& /*storage*/)
    +
    337 {
    +
    338 return expr.storage();
    +
    339 }
    +
    340
    +
    341 template <class T, class E, layout_type L>
    +
    342 auto copy_move_storage(T& expr, const detail::flat_expression_adaptor<E, L>& storage)
    +
    343 {
    +
    344 detail::flat_expression_adaptor<E, L> new_storage = storage; // copy storage
    +
    345 new_storage.update_pointer(std::addressof(expr));
    +
    346 return new_storage;
    +
    347 }
    +
    348 }
    +
    349
    +
    350 template <class D>
    +
    351 inline xstrided_view_base<D>::xstrided_view_base(xstrided_view_base&& rhs)
    +
    352 : base_type(std::move(rhs))
    +
    353 , m_e(std::forward<undecay_expression>(rhs.m_e))
    +
    354 , m_storage(detail::copy_move_storage(m_e, rhs.m_storage))
    +
    355 , m_shape(std::move(rhs.m_shape))
    +
    356 , m_strides(std::move(rhs.m_strides))
    +
    357 , m_backstrides(std::move(rhs.m_backstrides))
    +
    358 , m_offset(std::move(rhs.m_offset))
    +
    359 , m_layout(std::move(rhs.m_layout))
    +
    360 {
    +
    361 }
    +
    362
    +
    363 template <class D>
    +
    364 inline xstrided_view_base<D>::xstrided_view_base(const xstrided_view_base& rhs)
    +
    365 : base_type(rhs)
    +
    366 , m_e(rhs.m_e)
    +
    367 , m_storage(detail::copy_move_storage(m_e, rhs.m_storage))
    +
    368 , m_shape(rhs.m_shape)
    +
    369 , m_strides(rhs.m_strides)
    +
    370 , m_backstrides(rhs.m_backstrides)
    +
    371 , m_offset(rhs.m_offset)
    +
    372 , m_layout(rhs.m_layout)
    +
    373 {
    +
    374 }
    +
    375
    +
    377
    +
    385 template <class D>
    +
    +
    386 inline auto xstrided_view_base<D>::shape() const noexcept -> const inner_shape_type&
    +
    387 {
    +
    388 return m_shape;
    +
    389 }
    +
    +
    390
    +
    394 template <class D>
    +
    +
    395 inline auto xstrided_view_base<D>::strides() const noexcept -> const inner_strides_type&
    +
    396 {
    +
    397 return m_strides;
    +
    398 }
    +
    +
    399
    +
    403 template <class D>
    +
    +
    404 inline auto xstrided_view_base<D>::backstrides() const noexcept -> const inner_backstrides_type&
    +
    405 {
    +
    406 return m_backstrides;
    +
    407 }
    +
    +
    408
    +
    412 template <class D>
    +
    +
    413 inline auto xstrided_view_base<D>::layout() const noexcept -> layout_type
    +
    414 {
    +
    415 return m_layout;
    +
    416 }
    +
    +
    417
    +
    418 template <class D>
    +
    419 inline bool xstrided_view_base<D>::is_contiguous() const noexcept
    +
    420 {
    +
    421 return m_layout != layout_type::dynamic && m_e.is_contiguous();
    +
    422 }
    +
    423
    +
    425
    +
    430 template <class D>
    +
    431 inline auto xstrided_view_base<D>::operator()() -> reference
    +
    432 {
    +
    433 return m_storage[static_cast<size_type>(m_offset)];
    +
    434 }
    +
    435
    +
    436 template <class D>
    +
    437 inline auto xstrided_view_base<D>::operator()() const -> const_reference
    +
    438 {
    +
    439 return m_storage[static_cast<size_type>(m_offset)];
    +
    440 }
    +
    441
    +
    448 template <class D>
    +
    449 template <class... Args>
    +
    +
    450 inline auto xstrided_view_base<D>::operator()(Args... args) -> reference
    +
    451 {
    +
    452 XTENSOR_TRY(check_index(shape(), args...));
    +
    453 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    454 offset_type index = compute_index(args...);
    +
    455 return m_storage[static_cast<size_type>(index)];
    +
    456 }
    +
    +
    457
    +
    464 template <class D>
    +
    465 template <class... Args>
    +
    +
    466 inline auto xstrided_view_base<D>::operator()(Args... args) const -> const_reference
    +
    467 {
    +
    468 XTENSOR_TRY(check_index(shape(), args...));
    +
    469 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    470 offset_type index = compute_index(args...);
    +
    471 return m_storage[static_cast<size_type>(index)];
    +
    472 }
    +
    +
    473
    +
    493 template <class D>
    +
    494 template <class... Args>
    +
    +
    495 inline auto xstrided_view_base<D>::unchecked(Args... args) -> reference
    +
    496 {
    +
    497 offset_type index = compute_unchecked_index(args...);
    +
    498 return m_storage[static_cast<size_type>(index)];
    +
    499 }
    +
    +
    500
    +
    520 template <class D>
    +
    521 template <class... Args>
    +
    +
    522 inline auto xstrided_view_base<D>::unchecked(Args... args) const -> const_reference
    +
    523 {
    +
    524 offset_type index = compute_unchecked_index(args...);
    +
    525 return m_storage[static_cast<size_type>(index)];
    +
    526 }
    +
    +
    527
    +
    535 template <class D>
    +
    536 template <class It>
    +
    +
    537 inline auto xstrided_view_base<D>::element(It first, It last) -> reference
    +
    538 {
    +
    539 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    540 return m_storage[static_cast<size_type>(compute_element_index(first, last))];
    +
    541 }
    +
    +
    542
    +
    550 template <class D>
    +
    551 template <class It>
    +
    +
    552 inline auto xstrided_view_base<D>::element(It first, It last) const -> const_reference
    +
    553 {
    +
    554 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    555 return m_storage[static_cast<size_type>(compute_element_index(first, last))];
    +
    556 }
    +
    +
    557
    +
    561 template <class D>
    +
    +
    562 inline auto xstrided_view_base<D>::storage() noexcept -> storage_type&
    +
    563 {
    +
    564 return m_storage;
    +
    565 }
    +
    +
    566
    +
    570 template <class D>
    +
    +
    571 inline auto xstrided_view_base<D>::storage() const noexcept -> const storage_type&
    +
    572 {
    +
    573 return m_storage;
    +
    574 }
    +
    +
    575
    +
    580 template <class D>
    +
    581 template <class E, class ST>
    +
    +
    582 inline auto xstrided_view_base<D>::data() noexcept
    +
    583 -> std::enable_if_t<detail::provides_data_interface<E, ST>::value, pointer>
    +
    584 {
    +
    585 return m_e.data();
    +
    586 }
    +
    +
    587
    +
    592 template <class D>
    +
    593 template <class E, class ST>
    +
    +
    594 inline auto xstrided_view_base<D>::data() const noexcept
    +
    595 -> std::enable_if_t<detail::provides_data_interface<E, ST>::value, const_pointer>
    +
    596 {
    +
    597 return m_e.data();
    +
    598 }
    +
    +
    599
    +
    603 template <class D>
    +
    +
    604 inline auto xstrided_view_base<D>::data_offset() const noexcept -> size_type
    +
    605 {
    +
    606 return m_offset;
    +
    607 }
    +
    +
    608
    +
    612 template <class D>
    +
    +
    613 inline auto xstrided_view_base<D>::expression() noexcept -> xexpression_type&
    +
    614 {
    +
    615 return m_e;
    +
    616 }
    +
    +
    617
    +
    621 template <class D>
    +
    +
    622 inline auto xstrided_view_base<D>::expression() const noexcept -> const xexpression_type&
    +
    623 {
    +
    624 return m_e;
    +
    625 }
    +
    +
    626
    +
    628
    +
    639 template <class D>
    +
    640 template <class O>
    +
    +
    641 inline bool xstrided_view_base<D>::broadcast_shape(O& shape, bool) const
    +
    642 {
    +
    643 return xt::broadcast_shape(m_shape, shape);
    +
    644 }
    +
    +
    645
    +
    651 template <class D>
    +
    652 template <class O>
    +
    +
    653 inline bool xstrided_view_base<D>::has_linear_assign(const O& str) const noexcept
    +
    654 {
    +
    655 return has_data_interface<xexpression_type>::value && str.size() == strides().size()
    +
    656 && std::equal(str.cbegin(), str.cend(), strides().begin());
    +
    657 }
    +
    +
    +
    658
    +
    660
    +
    661 template <class D>
    +
    662 template <class... Args>
    +
    663 inline auto xstrided_view_base<D>::compute_index(Args... args) const -> offset_type
    +
    664 {
    +
    665 return static_cast<offset_type>(m_offset)
    +
    666 + xt::data_offset<offset_type>(strides(), static_cast<offset_type>(args)...);
    +
    667 }
    +
    668
    +
    669 template <class D>
    +
    670 template <class... Args>
    +
    671 inline auto xstrided_view_base<D>::compute_unchecked_index(Args... args) const -> offset_type
    +
    672 {
    +
    673 return static_cast<offset_type>(m_offset)
    +
    674 + xt::unchecked_data_offset<offset_type>(strides(), static_cast<offset_type>(args)...);
    +
    675 }
    +
    676
    +
    677 template <class D>
    +
    678 template <class It>
    +
    679 inline auto xstrided_view_base<D>::compute_element_index(It first, It last) const -> offset_type
    +
    680 {
    +
    681 return static_cast<offset_type>(m_offset) + xt::element_offset<offset_type>(strides(), first, last);
    +
    682 }
    +
    683
    +
    684 template <class D>
    +
    685 void xstrided_view_base<D>::set_offset(size_type offset)
    +
    686 {
    +
    687 m_offset = offset;
    +
    688 }
    +
    689
    +
    690 /******************************************
    +
    691 * flat_expression_adaptor implementation *
    +
    692 ******************************************/
    +
    693
    +
    694 namespace detail
    +
    695 {
    +
    696 template <class CT, layout_type L>
    +
    697 inline flat_expression_adaptor<CT, L>::flat_expression_adaptor(CT* e)
    +
    698 : m_e(e)
    +
    699 {
    +
    700 resize_container(get_index(), m_e->dimension());
    +
    701 resize_container(m_strides, m_e->dimension());
    +
    702 m_size = compute_size(m_e->shape());
    +
    703 compute_strides(m_e->shape(), L, m_strides);
    +
    704 }
    +
    705
    +
    706 template <class CT, layout_type L>
    +
    707 template <class FST>
    +
    708 inline flat_expression_adaptor<CT, L>::flat_expression_adaptor(CT* e, FST&& strides)
    +
    709 : m_e(e)
    +
    710 , m_strides(xtl::forward_sequence<inner_strides_type, FST>(strides))
    +
    711 {
    +
    712 resize_container(get_index(), m_e->dimension());
    +
    713 m_size = m_e->size();
    +
    714 }
    +
    715
    +
    716 template <class CT, layout_type L>
    +
    717 inline void flat_expression_adaptor<CT, L>::update_pointer(CT* ptr) const
    +
    718 {
    +
    719 m_e = ptr;
    +
    720 }
    +
    721
    +
    722 template <class CT, layout_type L>
    +
    723 inline auto flat_expression_adaptor<CT, L>::size() const -> size_type
    +
    724 {
    +
    725 return m_size;
    +
    726 }
    +
    727
    +
    728 template <class CT, layout_type L>
    +
    729 inline auto flat_expression_adaptor<CT, L>::operator[](size_type idx) -> reference
    +
    730 {
    +
    731 auto i = static_cast<typename index_type::value_type>(idx);
    +
    732 get_index() = detail::unravel_noexcept(i, m_strides, L);
    +
    733 return m_e->element(get_index().cbegin(), get_index().cend());
    +
    734 }
    +
    735
    +
    736 template <class CT, layout_type L>
    +
    737 inline auto flat_expression_adaptor<CT, L>::operator[](size_type idx) const -> const_reference
    +
    738 {
    +
    739 auto i = static_cast<typename index_type::value_type>(idx);
    +
    740 get_index() = detail::unravel_noexcept(i, m_strides, L);
    +
    741 return m_e->element(get_index().cbegin(), get_index().cend());
    +
    742 }
    +
    743
    +
    744 template <class CT, layout_type L>
    +
    745 inline auto flat_expression_adaptor<CT, L>::begin() -> iterator
    +
    746 {
    +
    747 return m_e->template begin<L>();
    +
    748 }
    +
    749
    +
    750 template <class CT, layout_type L>
    +
    751 inline auto flat_expression_adaptor<CT, L>::end() -> iterator
    +
    752 {
    +
    753 return m_e->template end<L>();
    +
    754 }
    +
    755
    +
    756 template <class CT, layout_type L>
    +
    757 inline auto flat_expression_adaptor<CT, L>::begin() const -> const_iterator
    +
    758 {
    +
    759 return m_e->template cbegin<L>();
    +
    760 }
    +
    761
    +
    762 template <class CT, layout_type L>
    +
    763 inline auto flat_expression_adaptor<CT, L>::end() const -> const_iterator
    +
    764 {
    +
    765 return m_e->template cend<L>();
    +
    766 }
    +
    767
    +
    768 template <class CT, layout_type L>
    +
    769 inline auto flat_expression_adaptor<CT, L>::cbegin() const -> const_iterator
    +
    770 {
    +
    771 return m_e->template cbegin<L>();
    +
    772 }
    +
    773
    +
    774 template <class CT, layout_type L>
    +
    775 inline auto flat_expression_adaptor<CT, L>::cend() const -> const_iterator
    +
    776 {
    +
    777 return m_e->template cend<L>();
    +
    778 }
    +
    779
    +
    780 template <class CT, layout_type L>
    +
    781 inline auto flat_expression_adaptor<CT, L>::get_index() -> index_type&
    +
    782 {
    +
    783 thread_local static index_type index;
    +
    784 return index;
    +
    785 }
    +
    786 }
    +
    787
    +
    788 /**********************************
    +
    789 * Builder helpers implementation *
    +
    790 **********************************/
    +
    791
    +
    792 namespace detail
    +
    793 {
    +
    794 template <class S>
    +
    795 struct slice_getter_impl
    +
    796 {
    +
    797 const S& m_shape;
    +
    798 mutable std::size_t idx;
    +
    799 using array_type = std::array<std::ptrdiff_t, 3>;
    +
    800
    +
    801 explicit slice_getter_impl(const S& shape)
    +
    802 : m_shape(shape)
    +
    803 , idx(0)
    +
    804 {
    +
    805 }
    +
    806
    +
    807 template <class T>
    +
    808 array_type operator()(const T& /*t*/) const
    +
    809 {
    +
    810 return array_type{{0, 0, 0}};
    +
    811 }
    +
    812
    +
    813 template <class A, class B, class C>
    +
    814 array_type operator()(const xrange_adaptor<A, B, C>& range) const
    +
    815 {
    +
    816 auto sl = range.get(static_cast<std::size_t>(m_shape[idx]));
    +
    817 return array_type({sl(0), sl.size(), sl.step_size()});
    +
    818 }
    +
    819
    +
    820 template <class T>
    +
    821 array_type operator()(const xrange<T>& range) const
    +
    822 {
    +
    823 return array_type({range(T(0)), range.size(), T(1)});
    +
    824 }
    +
    825
    +
    826 template <class T>
    +
    827 array_type operator()(const xstepped_range<T>& range) const
    +
    828 {
    +
    829 return array_type({range(T(0)), range.size(), range.step_size(T(0))});
    +
    830 }
    +
    831 };
    +
    832
    +
    833 template <class adj_strides_policy>
    +
    834 struct strided_view_args : adj_strides_policy
    +
    835 {
    +
    836 using base_type = adj_strides_policy;
    +
    837
    +
    838 template <class S, class ST, class V>
    +
    839 void
    +
    840 fill_args(const S& shape, ST&& old_strides, std::size_t base_offset, layout_type layout, const V& slices)
    +
    841 {
    +
    842 // Compute dimension
    +
    843 std::size_t dimension = shape.size(), n_newaxis = 0, n_add_all = 0;
    +
    844 std::ptrdiff_t dimension_check = static_cast<std::ptrdiff_t>(shape.size());
    +
    845
    +
    846 bool has_ellipsis = false;
    +
    847 for (const auto& el : slices)
    +
    848 {
    +
    849 if (xtl::get_if<xt::xnewaxis_tag>(&el) != nullptr)
    +
    850 {
    +
    851 ++dimension;
    +
    852 ++n_newaxis;
    +
    853 }
    +
    854 else if (xtl::get_if<std::ptrdiff_t>(&el) != nullptr)
    +
    855 {
    +
    856 --dimension;
    +
    857 --dimension_check;
    +
    858 }
    +
    859 else if (xtl::get_if<xt::xellipsis_tag>(&el) != nullptr)
    +
    860 {
    +
    861 if (has_ellipsis == true)
    +
    862 {
    +
    863 XTENSOR_THROW(std::runtime_error, "Ellipsis can only appear once.");
    +
    864 }
    +
    865 has_ellipsis = true;
    +
    866 }
    +
    867 else
    +
    868 {
    +
    869 --dimension_check;
    +
    870 }
    +
    871 }
    +
    872
    +
    873 if (dimension_check < 0)
    +
    874 {
    +
    875 XTENSOR_THROW(std::runtime_error, "Too many slices for view.");
    +
    876 }
    +
    877
    +
    878 if (has_ellipsis)
    +
    879 {
    +
    880 // replace ellipsis with N * xt::all
    +
    881 // remove -1 because of the ellipsis slize itself
    +
    882 n_add_all = shape.size() - (slices.size() - 1 - n_newaxis);
    +
    883 }
    +
    884
    +
    885 // Compute strided view
    +
    886 new_offset = base_offset;
    +
    887 new_shape.resize(dimension);
    +
    888 new_strides.resize(dimension);
    +
    889 base_type::resize(dimension);
    +
    890
    +
    891 auto old_shape = shape;
    +
    892 using old_strides_value_type = typename std::decay_t<ST>::value_type;
    +
    893
    +
    894 std::ptrdiff_t axis_skip = 0;
    +
    895 std::size_t idx = 0, i = 0, i_ax = 0;
    +
    896
    +
    897 auto slice_getter = detail::slice_getter_impl<S>(shape);
    +
    898
    +
    899 for (; i < slices.size(); ++i)
    +
    900 {
    +
    901 i_ax = static_cast<std::size_t>(static_cast<std::ptrdiff_t>(i) - axis_skip);
    +
    902 auto ptr = xtl::get_if<std::ptrdiff_t>(&slices[i]);
    +
    903 if (ptr != nullptr)
    +
    904 {
    +
    905 auto slice0 = static_cast<old_strides_value_type>(*ptr);
    +
    906 new_offset += static_cast<std::size_t>(slice0 * old_strides[i_ax]);
    +
    907 }
    +
    908 else if (xtl::get_if<xt::xnewaxis_tag>(&slices[i]) != nullptr)
    +
    909 {
    +
    910 new_shape[idx] = 1;
    +
    911 base_type::set_fake_slice(idx);
    +
    912 ++axis_skip, ++idx;
    +
    913 }
    +
    914 else if (xtl::get_if<xt::xellipsis_tag>(&slices[i]) != nullptr)
    +
    915 {
    +
    916 for (std::size_t j = 0; j < n_add_all; ++j)
    +
    917 {
    +
    918 new_shape[idx] = old_shape[i_ax];
    +
    919 new_strides[idx] = old_strides[i_ax];
    +
    920 base_type::set_fake_slice(idx);
    +
    921 ++idx, ++i_ax;
    +
    922 }
    +
    923 axis_skip = axis_skip - static_cast<std::ptrdiff_t>(n_add_all) + 1;
    +
    924 }
    +
    925 else if (xtl::get_if<xt::xall_tag>(&slices[i]) != nullptr)
    +
    926 {
    +
    927 new_shape[idx] = old_shape[i_ax];
    +
    928 new_strides[idx] = old_strides[i_ax];
    +
    929 base_type::set_fake_slice(idx);
    +
    930 ++idx;
    +
    931 }
    +
    932 else if (base_type::fill_args(slices, i, idx, old_shape[i_ax], old_strides[i_ax], new_shape, new_strides))
    +
    933 {
    +
    934 ++idx;
    +
    935 }
    +
    936 else
    +
    937 {
    +
    938 slice_getter.idx = i_ax;
    +
    939 auto info = xtl::visit(slice_getter, slices[i]);
    +
    940 new_offset += static_cast<std::size_t>(info[0] * old_strides[i_ax]);
    +
    941 new_shape[idx] = static_cast<std::size_t>(info[1]);
    +
    942 new_strides[idx] = info[2] * old_strides[i_ax];
    +
    943 base_type::set_fake_slice(idx);
    +
    944 ++idx;
    +
    945 }
    +
    946 }
    +
    947
    +
    948 i_ax = static_cast<std::size_t>(static_cast<std::ptrdiff_t>(i) - axis_skip);
    +
    949 for (; i_ax < old_shape.size(); ++i_ax, ++idx)
    +
    950 {
    +
    951 new_shape[idx] = old_shape[i_ax];
    +
    952 new_strides[idx] = old_strides[i_ax];
    +
    953 base_type::set_fake_slice(idx);
    +
    954 }
    +
    955
    +
    956 new_layout = do_strides_match(new_shape, new_strides, layout, true) ? layout
    +
    957 : layout_type::dynamic;
    +
    958 }
    +
    959
    +
    960 using shape_type = dynamic_shape<std::size_t>;
    +
    961 shape_type new_shape;
    +
    962 using strides_type = dynamic_shape<std::ptrdiff_t>;
    +
    963 strides_type new_strides;
    +
    964 std::size_t new_offset;
    +
    965 layout_type new_layout;
    +
    966 };
    +
    967 }
    +
    968}
    +
    969
    +
    970#endif
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    Base class for implementation of common expression access methods.
    + +
    layout_type layout() const noexcept
    Returns the layout of the xtrided_view_base.
    +
    xstrided_view_base(CTA &&e, SA &&shape, strides_type &&strides, size_type offset, layout_type layout) noexcept
    Constructs an xstrided_view_base.
    +
    bool has_linear_assign(const O &strides) const noexcept
    Checks whether the xstrided_view_base can be linearly assigned to an expression with the specified st...
    +
    const inner_strides_type & strides() const noexcept
    Returns the strides of the xtrided_view_base.
    +
    bool broadcast_shape(O &shape, bool reuse_cache=false) const
    Broadcast the shape of the view to the specified parameter.
    +
    const inner_backstrides_type & backstrides() const noexcept
    Returns the backstrides of the xtrided_view_base.
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the xtrided_view_base.
    +
    size_type data_offset() const noexcept
    Returns the offset to the first element in the view.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the view.
    +
    xexpression_type & expression() noexcept
    Returns a reference to the underlying expression of the view.
    +
    View of an xexpression using strides.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the view.
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto range(A start_val, B stop_val)
    Select a range from start_val to stop_val (excluded).
    Definition xslice.hpp:818
    +
    layout_type
    Definition xlayout.hpp:24
    + + + + +
    +
    + + + + diff --git a/xstrides_8hpp_source.html b/xstrides_8hpp_source.html new file mode 100644 index 000000000..b6e3f36d8 --- /dev/null +++ b/xstrides_8hpp_source.html @@ -0,0 +1,988 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xstrides.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xstrides.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_STRIDES_HPP
    +
    11#define XTENSOR_STRIDES_HPP
    +
    12
    +
    13#include <cstddef>
    +
    14#include <functional>
    +
    15#include <limits>
    +
    16#include <numeric>
    +
    17
    +
    18#include <xtl/xsequence.hpp>
    +
    19
    +
    20#include "xexception.hpp"
    +
    21#include "xshape.hpp"
    +
    22#include "xtensor_config.hpp"
    +
    23#include "xtensor_forward.hpp"
    +
    24
    +
    25namespace xt
    +
    26{
    +
    27
    +
    28 template <class shape_type>
    +
    29 std::size_t compute_size(const shape_type& shape) noexcept;
    +
    30
    +
    35 /***************
    +
    36 * data offset *
    +
    37 ***************/
    +
    38
    +
    39 template <class offset_type, class S>
    +
    40 offset_type data_offset(const S& strides) noexcept;
    +
    41
    +
    65 template <class offset_type, class S, class Arg, class... Args>
    +
    66 offset_type data_offset(const S& strides, Arg arg, Args... args) noexcept;
    +
    67
    +
    68 template <class offset_type, layout_type L = layout_type::dynamic, class S, class... Args>
    +
    69 offset_type unchecked_data_offset(const S& strides, Args... args) noexcept;
    +
    70
    +
    71 template <class offset_type, class S, class It>
    +
    72 offset_type element_offset(const S& strides, It first, It last) noexcept;
    +
    73
    +
    74 /*******************
    +
    75 * strides builder *
    +
    76 *******************/
    +
    77
    +
    87 template <layout_type L = layout_type::dynamic, class shape_type, class strides_type>
    +
    88 std::size_t compute_strides(const shape_type& shape, layout_type l, strides_type& strides);
    +
    89
    +
    90 template <layout_type L = layout_type::dynamic, class shape_type, class strides_type, class backstrides_type>
    +
    91 std::size_t
    +
    92 compute_strides(const shape_type& shape, layout_type l, strides_type& strides, backstrides_type& backstrides);
    +
    93
    +
    94 template <class shape_type, class strides_type>
    +
    95 void adapt_strides(const shape_type& shape, strides_type& strides) noexcept;
    +
    96
    +
    97 template <class shape_type, class strides_type, class backstrides_type>
    +
    98 void adapt_strides(const shape_type& shape, strides_type& strides, backstrides_type& backstrides) noexcept;
    +
    99
    +
    100 /*****************
    +
    101 * unravel_index *
    +
    102 *****************/
    +
    103
    +
    104 template <class S>
    +
    105 S unravel_from_strides(typename S::value_type index, const S& strides, layout_type l = layout_type::row_major);
    +
    106
    +
    107 template <class S>
    +
    108 get_strides_t<S>
    +
    109 unravel_index(typename S::value_type index, const S& shape, layout_type l = layout_type::row_major);
    +
    110
    +
    111 template <class S, class T>
    +
    112 std::vector<get_strides_t<S>>
    +
    113 unravel_indices(const T& indices, const S& shape, layout_type l = layout_type::row_major);
    +
    114
    +
    115 /***********************
    +
    116 * broadcast functions *
    +
    117 ***********************/
    +
    118
    +
    119 template <class S, class size_type>
    +
    120 S uninitialized_shape(size_type size);
    +
    121
    +
    122 template <class S1, class S2>
    +
    123 bool broadcast_shape(const S1& input, S2& output);
    +
    124
    +
    125 template <class S1, class S2>
    +
    126 bool broadcastable(const S1& s1, S2& s2);
    +
    127
    +
    128 /*************************
    +
    129 * check strides overlap *
    +
    130 *************************/
    +
    131
    +
    132 template <layout_type L>
    + +
    134
    +
    135 /**********************************
    +
    136 * check bounds, without throwing *
    +
    137 **********************************/
    +
    138
    +
    147 template <class S, class... Args>
    +
    148 bool in_bounds(const S& shape, Args&... args);
    +
    149
    +
    150 /********************************
    +
    151 * apply periodicity to indices *
    +
    152 *******************************/
    +
    153
    +
    162 template <class S, class... Args>
    +
    163 void normalize_periodic(const S& shape, Args&... args);
    +
    164
    +
    165 /********************************************
    +
    166 * utility functions for strided containers *
    +
    167 ********************************************/
    +
    168
    +
    169 template <class C, class It, class size_type>
    +
    170 It strided_data_end(const C& c, It begin, layout_type l, size_type offset)
    +
    171 {
    +
    172 using difference_type = typename std::iterator_traits<It>::difference_type;
    +
    173 if (c.dimension() == 0)
    +
    174 {
    +
    175 ++begin;
    +
    176 }
    +
    177 else
    +
    178 {
    +
    179 for (std::size_t i = 0; i != c.dimension(); ++i)
    +
    180 {
    +
    181 begin += c.strides()[i] * difference_type(c.shape()[i] - 1);
    +
    182 }
    +
    183 if (l == layout_type::row_major)
    +
    184 {
    +
    185 begin += c.strides().back();
    +
    186 }
    +
    187 else
    +
    188 {
    +
    189 if (offset == 0)
    +
    190 {
    +
    191 begin += c.strides().front();
    +
    192 }
    +
    193 }
    +
    194 }
    +
    195 return begin;
    +
    196 }
    +
    197
    +
    198 /***********
    +
    199 * strides *
    +
    200 ***********/
    +
    201
    +
    202 namespace detail
    +
    203 {
    +
    204 template <class return_type, class S, class T, class D>
    +
    205 inline return_type compute_stride_impl(layout_type layout, const S& shape, T axis, D default_stride)
    +
    206 {
    +
    207 if (layout == layout_type::row_major)
    +
    208 {
    +
    209 return std::accumulate(
    +
    210 shape.cbegin() + axis + 1,
    +
    211 shape.cend(),
    +
    212 static_cast<return_type>(1),
    +
    213 std::multiplies<return_type>()
    +
    214 );
    +
    215 }
    +
    216 if (layout == layout_type::column_major)
    +
    217 {
    +
    218 return std::accumulate(
    +
    219 shape.cbegin(),
    +
    220 shape.cbegin() + axis,
    +
    221 static_cast<return_type>(1),
    +
    222 std::multiplies<return_type>()
    +
    223 );
    +
    224 }
    +
    225 return default_stride;
    +
    226 }
    +
    227 }
    +
    228
    +
    +
    233 enum class stride_type
    +
    234 {
    +
    235 internal = 0,
    +
    236 normal = 1,
    +
    237 bytes = 2,
    +
    238 };
    +
    +
    239
    +
    247 template <class E>
    +
    +
    248 inline auto strides(const E& e, stride_type type = stride_type::normal) noexcept
    +
    249 {
    +
    250 using strides_type = typename E::strides_type;
    +
    251 using return_type = typename strides_type::value_type;
    +
    252 strides_type ret = e.strides();
    +
    253 auto shape = e.shape();
    +
    254
    +
    255 if (type == stride_type::internal)
    +
    256 {
    +
    257 return ret;
    +
    258 }
    +
    259
    +
    260 for (std::size_t i = 0; i < ret.size(); ++i)
    +
    261 {
    +
    262 if (shape[i] == 1)
    +
    263 {
    +
    264 ret[i] = detail::compute_stride_impl<return_type>(e.layout(), shape, i, ret[i]);
    +
    265 }
    +
    266 }
    +
    267
    +
    268 if (type == stride_type::bytes)
    +
    269 {
    +
    270 return_type f = static_cast<return_type>(sizeof(typename E::value_type));
    +
    271 std::for_each(
    +
    272 ret.begin(),
    +
    273 ret.end(),
    +
    274 [f](auto& c)
    +
    275 {
    +
    276 c *= f;
    +
    277 }
    +
    278 );
    +
    279 }
    +
    280
    +
    281 return ret;
    +
    282 }
    +
    +
    283
    +
    291 template <class E>
    +
    +
    292 inline auto strides(const E& e, std::size_t axis, stride_type type = stride_type::normal) noexcept
    +
    293 {
    +
    294 using strides_type = typename E::strides_type;
    +
    295 using return_type = typename strides_type::value_type;
    +
    296
    +
    297 return_type ret = e.strides()[axis];
    +
    298
    +
    299 if (type == stride_type::internal)
    +
    300 {
    +
    301 return ret;
    +
    302 }
    +
    303
    +
    304 if (ret == 0)
    +
    305 {
    +
    306 if (e.shape(axis) == 1)
    +
    307 {
    +
    308 ret = detail::compute_stride_impl<return_type>(e.layout(), e.shape(), axis, ret);
    +
    309 }
    +
    310 }
    +
    311
    +
    312 if (type == stride_type::bytes)
    +
    313 {
    +
    314 return_type f = static_cast<return_type>(sizeof(typename E::value_type));
    +
    315 ret *= f;
    +
    316 }
    +
    317
    +
    318 return ret;
    +
    319 }
    +
    +
    320
    +
    321 /******************
    +
    322 * Implementation *
    +
    323 ******************/
    +
    324
    +
    325 namespace detail
    +
    326 {
    +
    327 template <class shape_type>
    +
    328 inline std::size_t compute_size_impl(const shape_type& shape, std::true_type /* is signed */)
    +
    329 {
    +
    330 using size_type = std::decay_t<typename shape_type::value_type>;
    +
    331 return static_cast<std::size_t>(std::abs(
    +
    332 std::accumulate(shape.cbegin(), shape.cend(), size_type(1), std::multiplies<size_type>())
    +
    333 ));
    +
    334 }
    +
    335
    +
    336 template <class shape_type>
    +
    337 inline std::size_t compute_size_impl(const shape_type& shape, std::false_type /* is not signed */)
    +
    338 {
    +
    339 using size_type = std::decay_t<typename shape_type::value_type>;
    +
    340 return static_cast<std::size_t>(
    +
    341 std::accumulate(shape.cbegin(), shape.cend(), size_type(1), std::multiplies<size_type>())
    +
    342 );
    +
    343 }
    +
    344 }
    +
    345
    +
    346 template <class shape_type>
    +
    347 inline std::size_t compute_size(const shape_type& shape) noexcept
    +
    348 {
    +
    349 return detail::compute_size_impl(
    +
    350 shape,
    +
    351 xtl::is_signed<std::decay_t<typename std::decay_t<shape_type>::value_type>>()
    +
    352 );
    +
    353 }
    +
    354
    +
    355 namespace detail
    +
    356 {
    +
    357
    +
    358 template <std::size_t dim, class S>
    +
    359 inline auto raw_data_offset(const S&) noexcept
    +
    360 {
    +
    361 using strides_value_type = std::decay_t<decltype(std::declval<S>()[0])>;
    +
    362 return strides_value_type(0);
    +
    363 }
    +
    364
    +
    365 template <std::size_t dim, class S>
    +
    366 inline auto raw_data_offset(const S&, missing_type) noexcept
    +
    367 {
    +
    368 using strides_value_type = std::decay_t<decltype(std::declval<S>()[0])>;
    +
    369 return strides_value_type(0);
    +
    370 }
    +
    371
    +
    372 template <std::size_t dim, class S, class Arg, class... Args>
    +
    373 inline auto raw_data_offset(const S& strides, Arg arg, Args... args) noexcept
    +
    374 {
    +
    375 return static_cast<std::ptrdiff_t>(arg) * strides[dim] + raw_data_offset<dim + 1>(strides, args...);
    +
    376 }
    +
    377
    +
    378 template <layout_type L, std::ptrdiff_t static_dim>
    +
    379 struct layout_data_offset
    +
    380 {
    +
    381 template <std::size_t dim, class S, class Arg, class... Args>
    +
    382 inline static auto run(const S& strides, Arg arg, Args... args) noexcept
    +
    383 {
    +
    384 return raw_data_offset<dim>(strides, arg, args...);
    +
    385 }
    +
    386 };
    +
    387
    +
    388 template <std::ptrdiff_t static_dim>
    +
    389 struct layout_data_offset<layout_type::row_major, static_dim>
    +
    390 {
    +
    391 using self_type = layout_data_offset<layout_type::row_major, static_dim>;
    +
    392
    +
    393 template <std::size_t dim, class S, class Arg>
    +
    394 inline static auto run(const S& strides, Arg arg) noexcept
    +
    395 {
    +
    396 if (std::ptrdiff_t(dim) + 1 == static_dim)
    +
    397 {
    +
    398 return arg;
    +
    399 }
    +
    400 else
    +
    401 {
    +
    402 return arg * strides[dim];
    +
    403 }
    +
    404 }
    +
    405
    +
    406 template <std::size_t dim, class S, class Arg, class... Args>
    +
    407 inline static auto run(const S& strides, Arg arg, Args... args) noexcept
    +
    408 {
    +
    409 return arg * strides[dim] + self_type::template run<dim + 1>(strides, args...);
    +
    410 }
    +
    411 };
    +
    412
    +
    413 template <std::ptrdiff_t static_dim>
    +
    414 struct layout_data_offset<layout_type::column_major, static_dim>
    +
    415 {
    +
    416 using self_type = layout_data_offset<layout_type::column_major, static_dim>;
    +
    417
    +
    418 template <std::size_t dim, class S, class Arg>
    +
    419 inline static auto run(const S& strides, Arg arg) noexcept
    +
    420 {
    +
    421 if (dim == 0)
    +
    422 {
    +
    423 return arg;
    +
    424 }
    +
    425 else
    +
    426 {
    +
    427 return arg * strides[dim];
    +
    428 }
    +
    429 }
    +
    430
    +
    431 template <std::size_t dim, class S, class Arg, class... Args>
    +
    432 inline static auto run(const S& strides, Arg arg, Args... args) noexcept
    +
    433 {
    +
    434 if (dim == 0)
    +
    435 {
    +
    436 return arg + self_type::template run<dim + 1>(strides, args...);
    +
    437 }
    +
    438 else
    +
    439 {
    +
    440 return arg * strides[dim] + self_type::template run<dim + 1>(strides, args...);
    +
    441 }
    +
    442 }
    +
    443 };
    +
    444 }
    +
    445
    +
    446 template <class offset_type, class S>
    +
    447 inline offset_type data_offset(const S&) noexcept
    +
    448 {
    +
    449 return offset_type(0);
    +
    450 }
    +
    451
    +
    452 template <class offset_type, class S, class Arg, class... Args>
    +
    +
    453 inline offset_type data_offset(const S& strides, Arg arg, Args... args) noexcept
    +
    454 {
    +
    455 constexpr std::size_t nargs = sizeof...(Args) + 1;
    +
    456 if (nargs == strides.size())
    +
    457 {
    +
    458 // Correct number of arguments: iterate
    +
    459 return static_cast<offset_type>(detail::raw_data_offset<0>(strides, arg, args...));
    +
    460 }
    +
    461 else if (nargs > strides.size())
    +
    462 {
    +
    463 // Too many arguments: drop the first
    +
    464 return data_offset<offset_type, S>(strides, args...);
    +
    465 }
    +
    466 else if (detail::last_type_is_missing<Args...>)
    +
    467 {
    +
    468 // Too few arguments & last argument xt::missing: postfix index with zeros
    +
    469 return static_cast<offset_type>(detail::raw_data_offset<0>(strides, arg, args...));
    +
    470 }
    +
    471 else
    +
    472 {
    +
    473 // Too few arguments: right to left scalar product
    +
    474 auto view = strides.cend() - nargs;
    +
    475 return static_cast<offset_type>(detail::raw_data_offset<0>(view, arg, args...));
    +
    476 }
    +
    477 }
    +
    +
    478
    +
    479 template <class offset_type, layout_type L, class S, class... Args>
    +
    480 inline offset_type unchecked_data_offset(const S& strides, Args... args) noexcept
    +
    481 {
    +
    482 return static_cast<offset_type>(
    +
    483 detail::layout_data_offset<L, static_dimension<S>::value>::template run<0>(strides.cbegin(), args...)
    +
    484 );
    +
    485 }
    +
    486
    +
    487 template <class offset_type, class S, class It>
    +
    488 inline offset_type element_offset(const S& strides, It first, It last) noexcept
    +
    489 {
    +
    490 using difference_type = typename std::iterator_traits<It>::difference_type;
    +
    491 auto size = static_cast<difference_type>(
    +
    492 (std::min)(static_cast<typename S::size_type>(std::distance(first, last)), strides.size())
    +
    493 );
    +
    494 return std::inner_product(last - size, last, strides.cend() - size, offset_type(0));
    +
    495 }
    +
    496
    +
    497 namespace detail
    +
    498 {
    +
    499 template <class shape_type, class strides_type, class bs_ptr>
    +
    500 inline void adapt_strides(
    +
    501 const shape_type& shape,
    +
    502 strides_type& strides,
    +
    503 bs_ptr backstrides,
    +
    504 typename strides_type::size_type i
    +
    505 ) noexcept
    +
    506 {
    +
    507 if (shape[i] == 1)
    +
    508 {
    +
    509 strides[i] = 0;
    +
    510 }
    +
    511 (*backstrides)[i] = strides[i] * std::ptrdiff_t(shape[i] - 1);
    +
    512 }
    +
    513
    +
    514 template <class shape_type, class strides_type>
    +
    515 inline void adapt_strides(
    +
    516 const shape_type& shape,
    +
    517 strides_type& strides,
    +
    518 std::nullptr_t,
    +
    519 typename strides_type::size_type i
    +
    520 ) noexcept
    +
    521 {
    +
    522 if (shape[i] == 1)
    +
    523 {
    +
    524 strides[i] = 0;
    +
    525 }
    +
    526 }
    +
    527
    +
    528 template <layout_type L, class shape_type, class strides_type, class bs_ptr>
    +
    529 inline std::size_t
    +
    530 compute_strides(const shape_type& shape, layout_type l, strides_type& strides, bs_ptr bs)
    +
    531 {
    +
    532 using strides_value_type = typename std::decay_t<strides_type>::value_type;
    +
    533 strides_value_type data_size = 1;
    +
    534
    +
    535#if defined(_MSC_VER) && (1931 <= _MSC_VER)
    +
    536 // Workaround MSVC compiler optimization bug, xtensor#2568
    +
    537 if (0 == shape.size())
    +
    538 {
    +
    539 return static_cast<std::size_t>(data_size);
    +
    540 }
    +
    541#endif
    +
    542
    + +
    544 {
    +
    545 for (std::size_t i = shape.size(); i != 0; --i)
    +
    546 {
    +
    547 strides[i - 1] = data_size;
    +
    548 data_size = strides[i - 1] * static_cast<strides_value_type>(shape[i - 1]);
    +
    549 adapt_strides(shape, strides, bs, i - 1);
    +
    550 }
    +
    551 }
    +
    552 else
    +
    553 {
    +
    554 for (std::size_t i = 0; i < shape.size(); ++i)
    +
    555 {
    +
    556 strides[i] = data_size;
    +
    557 data_size = strides[i] * static_cast<strides_value_type>(shape[i]);
    +
    558 adapt_strides(shape, strides, bs, i);
    +
    559 }
    +
    560 }
    +
    561 return static_cast<std::size_t>(data_size);
    +
    562 }
    +
    563 }
    +
    564
    +
    565 template <layout_type L, class shape_type, class strides_type>
    +
    +
    566 inline std::size_t compute_strides(const shape_type& shape, layout_type l, strides_type& strides)
    +
    567 {
    +
    568 return detail::compute_strides<L>(shape, l, strides, nullptr);
    +
    569 }
    +
    +
    570
    +
    571 template <layout_type L, class shape_type, class strides_type, class backstrides_type>
    +
    572 inline std::size_t
    +
    573 compute_strides(const shape_type& shape, layout_type l, strides_type& strides, backstrides_type& backstrides)
    +
    574 {
    +
    575 return detail::compute_strides<L>(shape, l, strides, &backstrides);
    +
    576 }
    +
    577
    +
    578 template <class T1, class T2>
    +
    579 inline bool
    +
    580 stride_match_condition(const T1& stride, const T2& shape, const T1& data_size, bool zero_strides)
    +
    581 {
    +
    582 return (shape == T2(1) && stride == T1(0) && zero_strides) || (stride == data_size);
    +
    583 }
    +
    584
    +
    585 // zero_strides should be true when strides are set to 0 if the corresponding dimensions are 1
    +
    586 template <class shape_type, class strides_type>
    +
    587 inline bool
    +
    588 do_strides_match(const shape_type& shape, const strides_type& strides, layout_type l, bool zero_strides)
    +
    589 {
    +
    590 using value_type = typename strides_type::value_type;
    +
    591 value_type data_size = 1;
    +
    592 if (l == layout_type::row_major)
    +
    593 {
    +
    594 for (std::size_t i = strides.size(); i != 0; --i)
    +
    595 {
    +
    596 if (!stride_match_condition(strides[i - 1], shape[i - 1], data_size, zero_strides))
    +
    597 {
    +
    598 return false;
    +
    599 }
    +
    600 data_size *= static_cast<value_type>(shape[i - 1]);
    +
    601 }
    +
    602 return true;
    +
    603 }
    +
    604 else if (l == layout_type::column_major)
    +
    605 {
    +
    606 for (std::size_t i = 0; i < strides.size(); ++i)
    +
    607 {
    +
    608 if (!stride_match_condition(strides[i], shape[i], data_size, zero_strides))
    +
    609 {
    +
    610 return false;
    +
    611 }
    +
    612 data_size *= static_cast<value_type>(shape[i]);
    +
    613 }
    +
    614 return true;
    +
    615 }
    +
    616 else
    +
    617 {
    +
    618 return false;
    +
    619 }
    +
    620 }
    +
    621
    +
    622 template <class shape_type, class strides_type>
    +
    623 inline void adapt_strides(const shape_type& shape, strides_type& strides) noexcept
    +
    624 {
    +
    625 for (typename shape_type::size_type i = 0; i < shape.size(); ++i)
    +
    626 {
    +
    627 detail::adapt_strides(shape, strides, nullptr, i);
    +
    628 }
    +
    629 }
    +
    630
    +
    631 template <class shape_type, class strides_type, class backstrides_type>
    +
    632 inline void
    +
    633 adapt_strides(const shape_type& shape, strides_type& strides, backstrides_type& backstrides) noexcept
    +
    634 {
    +
    635 for (typename shape_type::size_type i = 0; i < shape.size(); ++i)
    +
    636 {
    +
    637 detail::adapt_strides(shape, strides, &backstrides, i);
    +
    638 }
    +
    639 }
    +
    640
    +
    641 namespace detail
    +
    642 {
    +
    643 template <class S>
    +
    644 inline S unravel_noexcept(typename S::value_type idx, const S& strides, layout_type l) noexcept
    +
    645 {
    +
    646 using value_type = typename S::value_type;
    +
    647 using size_type = typename S::size_type;
    +
    648 S result = xtl::make_sequence<S>(strides.size(), 0);
    +
    649 if (l == layout_type::row_major)
    +
    650 {
    +
    651 for (size_type i = 0; i < strides.size(); ++i)
    +
    652 {
    +
    653 value_type str = strides[i];
    +
    654 value_type quot = str != 0 ? idx / str : 0;
    +
    655 idx = str != 0 ? idx % str : idx;
    +
    656 result[i] = quot;
    +
    657 }
    +
    658 }
    +
    659 else
    +
    660 {
    +
    661 for (size_type i = strides.size(); i != 0; --i)
    +
    662 {
    +
    663 value_type str = strides[i - 1];
    +
    664 value_type quot = str != 0 ? idx / str : 0;
    +
    665 idx = str != 0 ? idx % str : idx;
    +
    666 result[i - 1] = quot;
    +
    667 }
    +
    668 }
    +
    669 return result;
    +
    670 }
    +
    671 }
    +
    672
    +
    673 template <class S>
    +
    674 inline S unravel_from_strides(typename S::value_type index, const S& strides, layout_type l)
    +
    675 {
    + +
    677 {
    +
    678 XTENSOR_THROW(std::runtime_error, "unravel_index: dynamic layout not supported");
    +
    679 }
    +
    680 return detail::unravel_noexcept(index, strides, l);
    +
    681 }
    +
    682
    +
    683 template <class S, class T>
    +
    684 inline get_value_type_t<T> ravel_from_strides(const T& index, const S& strides)
    +
    685 {
    +
    686 return element_offset<get_value_type_t<T>>(strides, index.begin(), index.end());
    +
    687 }
    +
    688
    +
    689 template <class S>
    +
    690 inline get_strides_t<S> unravel_index(typename S::value_type index, const S& shape, layout_type l)
    +
    691 {
    +
    692 using strides_type = get_strides_t<S>;
    +
    693 using strides_value_type = typename strides_type::value_type;
    +
    694 strides_type strides = xtl::make_sequence<strides_type>(shape.size(), 0);
    +
    695 compute_strides(shape, l, strides);
    +
    696 return unravel_from_strides(static_cast<strides_value_type>(index), strides, l);
    +
    697 }
    +
    698
    +
    699 template <class S, class T>
    +
    700 inline std::vector<get_strides_t<S>> unravel_indices(const T& idx, const S& shape, layout_type l)
    +
    701 {
    +
    702 using strides_type = get_strides_t<S>;
    +
    703 using strides_value_type = typename strides_type::value_type;
    +
    704 strides_type strides = xtl::make_sequence<strides_type>(shape.size(), 0);
    +
    705 compute_strides(shape, l, strides);
    +
    706 std::vector<get_strides_t<S>> out(idx.size());
    +
    707 auto out_iter = out.begin();
    +
    708 auto idx_iter = idx.begin();
    +
    709 for (; out_iter != out.end(); ++out_iter, ++idx_iter)
    +
    710 {
    +
    711 *out_iter = unravel_from_strides(static_cast<strides_value_type>(*idx_iter), strides, l);
    +
    712 }
    +
    713 return out;
    +
    714 }
    +
    715
    +
    716 template <class S, class T>
    +
    717 inline get_value_type_t<T> ravel_index(const T& index, const S& shape, layout_type l)
    +
    718 {
    +
    719 using strides_type = get_strides_t<S>;
    +
    720 strides_type strides = xtl::make_sequence<strides_type>(shape.size(), 0);
    +
    721 compute_strides(shape, l, strides);
    +
    722 return ravel_from_strides(index, strides);
    +
    723 }
    +
    724
    +
    725 template <class S, class stype>
    +
    726 inline S uninitialized_shape(stype size)
    +
    727 {
    +
    728 using value_type = typename S::value_type;
    +
    729 using size_type = typename S::size_type;
    +
    730 return xtl::make_sequence<S>(static_cast<size_type>(size), std::numeric_limits<value_type>::max());
    +
    731 }
    +
    732
    +
    733 template <class S1, class S2>
    +
    734 inline bool broadcast_shape(const S1& input, S2& output)
    +
    735 {
    +
    736 bool trivial_broadcast = (input.size() == output.size());
    +
    737 // Indices are faster than reverse iterators
    +
    738 using value_type = typename S2::value_type;
    +
    739 auto output_index = output.size();
    +
    740 auto input_index = input.size();
    +
    741
    +
    742 if (output_index < input_index)
    +
    743 {
    +
    744 throw_broadcast_error(output, input);
    +
    745 }
    +
    746 for (; input_index != 0; --input_index, --output_index)
    +
    747 {
    +
    748 // First case: output = (MAX, MAX, ...., MAX)
    +
    749 // output is a new shape that has not been through
    +
    750 // the broadcast process yet; broadcast is trivial
    +
    751 if (output[output_index - 1] == std::numeric_limits<value_type>::max())
    +
    752 {
    +
    753 output[output_index - 1] = static_cast<value_type>(input[input_index - 1]);
    +
    754 }
    +
    755 // Second case: output has been initialized to 1. Broadcast is trivial
    +
    756 // only if input is 1 to.
    +
    757 else if (output[output_index - 1] == 1)
    +
    758 {
    +
    759 output[output_index - 1] = static_cast<value_type>(input[input_index - 1]);
    +
    760 trivial_broadcast = trivial_broadcast && (input[input_index - 1] == 1);
    +
    761 }
    +
    762 // Third case: output has been initialized to something different from 1.
    +
    763 // if input is 1, then the broadcast is not trivial
    +
    764 else if (input[input_index - 1] == 1)
    +
    765 {
    +
    766 trivial_broadcast = false;
    +
    767 }
    +
    768 // Last case: input and output must have the same value, else
    +
    769 // shape are not compatible and an exception is thrown
    +
    770 else if (static_cast<value_type>(input[input_index - 1]) != output[output_index - 1])
    +
    771 {
    +
    772 throw_broadcast_error(output, input);
    +
    773 }
    +
    774 }
    +
    775 return trivial_broadcast;
    +
    776 }
    +
    777
    +
    778 template <class S1, class S2>
    +
    779 inline bool broadcastable(const S1& src_shape, const S2& dst_shape)
    +
    780 {
    +
    781 auto src_iter = src_shape.crbegin();
    +
    782 auto dst_iter = dst_shape.crbegin();
    +
    783 bool res = dst_shape.size() >= src_shape.size();
    +
    784 for (; src_iter != src_shape.crend() && res; ++src_iter, ++dst_iter)
    +
    785 {
    +
    786 res = (static_cast<std::size_t>(*src_iter) == static_cast<std::size_t>(*dst_iter))
    +
    787 || (*src_iter == 1);
    +
    788 }
    +
    789 return res;
    +
    790 }
    +
    791
    +
    792 template <>
    +
    + +
    794 {
    +
    795 template <class S1, class S2>
    +
    796 static std::size_t get(const S1& s1, const S2& s2)
    +
    797 {
    +
    798 using value_type = typename S1::value_type;
    +
    799 // Indices are faster than reverse iterators
    +
    800 auto s1_index = s1.size();
    +
    801 auto s2_index = s2.size();
    +
    802
    +
    803 for (; s2_index != 0; --s1_index, --s2_index)
    +
    804 {
    +
    805 if (static_cast<value_type>(s1[s1_index - 1]) != static_cast<value_type>(s2[s2_index - 1]))
    +
    806 {
    +
    807 break;
    +
    808 }
    +
    809 }
    +
    810 return s1_index;
    +
    811 }
    +
    812 };
    +
    +
    813
    +
    814 template <>
    +
    + +
    816 {
    +
    817 template <class S1, class S2>
    +
    818 static std::size_t get(const S1& s1, const S2& s2)
    +
    819 {
    +
    820 // Indices are faster than reverse iterators
    +
    821 using size_type = typename S1::size_type;
    +
    822 using value_type = typename S1::value_type;
    +
    823 size_type index = 0;
    +
    824
    +
    825 // This check is necessary as column major "broadcasting" is still
    +
    826 // performed in a row major fashion
    +
    827 if (s1.size() != s2.size())
    +
    828 {
    +
    829 return 0;
    +
    830 }
    +
    831
    +
    832 auto size = s2.size();
    +
    833
    +
    834 for (; index < size; ++index)
    +
    835 {
    +
    836 if (static_cast<value_type>(s1[index]) != static_cast<value_type>(s2[index]))
    +
    837 {
    +
    838 break;
    +
    839 }
    +
    840 }
    +
    841 return index;
    +
    842 }
    +
    843 };
    +
    +
    844
    +
    845 namespace detail
    +
    846 {
    +
    847 template <class S, std::size_t dim>
    +
    848 inline bool check_in_bounds_impl(const S&)
    +
    849 {
    +
    850 return true;
    +
    851 }
    +
    852
    +
    853 template <class S, std::size_t dim>
    +
    854 inline bool check_in_bounds_impl(const S&, missing_type)
    +
    855 {
    +
    856 return true;
    +
    857 }
    +
    858
    +
    859 template <class S, std::size_t dim, class T, class... Args>
    +
    860 inline bool check_in_bounds_impl(const S& shape, T& arg, Args&... args)
    +
    861 {
    +
    862 if (sizeof...(Args) + 1 > shape.size())
    +
    863 {
    +
    864 return check_in_bounds_impl<S, dim>(shape, args...);
    +
    865 }
    +
    866 else
    +
    867 {
    +
    868 return arg >= T(0) && arg < static_cast<T>(shape[dim])
    +
    869 && check_in_bounds_impl<S, dim + 1>(shape, args...);
    +
    870 }
    +
    871 }
    +
    872 }
    +
    873
    +
    874 template <class S, class... Args>
    +
    875 inline bool check_in_bounds(const S& shape, Args&... args)
    +
    876 {
    +
    877 return detail::check_in_bounds_impl<S, 0>(shape, args...);
    +
    878 }
    +
    879
    +
    880 namespace detail
    +
    881 {
    +
    882 template <class S, std::size_t dim>
    +
    883 inline void normalize_periodic_impl(const S&)
    +
    884 {
    +
    885 }
    +
    886
    +
    887 template <class S, std::size_t dim>
    +
    888 inline void normalize_periodic_impl(const S&, missing_type)
    +
    889 {
    +
    890 }
    +
    891
    +
    892 template <class S, std::size_t dim, class T, class... Args>
    +
    893 inline void normalize_periodic_impl(const S& shape, T& arg, Args&... args)
    +
    894 {
    +
    895 if (sizeof...(Args) + 1 > shape.size())
    +
    896 {
    +
    897 normalize_periodic_impl<S, dim>(shape, args...);
    +
    898 }
    +
    899 else
    +
    900 {
    +
    901 T n = static_cast<T>(shape[dim]);
    +
    902 arg = (n + (arg % n)) % n;
    +
    903 normalize_periodic_impl<S, dim + 1>(shape, args...);
    +
    904 }
    +
    905 }
    +
    906 }
    +
    907
    +
    908 template <class S, class... Args>
    +
    +
    909 inline void normalize_periodic(const S& shape, Args&... args)
    +
    910 {
    +
    911 check_dimension(shape, args...);
    +
    912 detail::normalize_periodic_impl<S, 0>(shape, args...);
    +
    913 }
    +
    +
    914}
    +
    915
    +
    916#endif
    +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    stride_type
    Choose stride type.
    Definition xstrides.hpp:234
    +
    void normalize_periodic(const S &shape, Args &... args)
    Normalise an index of a periodic array.
    Definition xstrides.hpp:909
    +
    @ bytes
    Normal stride in bytes.
    +
    @ internal
    As used internally (with stride(axis) == 0 if shape(axis) == 1)
    +
    @ normal
    Normal stride corresponding to storage.
    +
    standard mathematical functions for xexpressions
    +
    bool in_bounds(const S &shape, Args &... args)
    Check if the index is within the bounds of the array.
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    + +
    +
    + + + + diff --git a/xtensor_8hpp_source.html b/xtensor_8hpp_source.html new file mode 100644 index 000000000..0d4a64da4 --- /dev/null +++ b/xtensor_8hpp_source.html @@ -0,0 +1,997 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xtensor.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xtensor.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_TENSOR_HPP
    +
    11#define XTENSOR_TENSOR_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cstddef>
    +
    16#include <utility>
    +
    17#include <vector>
    +
    18
    +
    19#include "xbuffer_adaptor.hpp"
    +
    20#include "xcontainer.hpp"
    +
    21#include "xsemantic.hpp"
    +
    22
    +
    23namespace xt
    +
    24{
    +
    25
    +
    26 /***********************
    +
    27 * xtensor declaration *
    +
    28 ***********************/
    +
    29
    +
    30 namespace extension
    +
    31 {
    +
    32 template <class EC, std::size_t N, layout_type L, class Tag>
    + +
    34
    +
    35 template <class EC, std::size_t N, layout_type L>
    +
    + +
    37 {
    + +
    39 };
    +
    +
    40
    +
    41 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    42 using xtensor_container_base_t = typename xtensor_container_base<EC, N, L, Tag>::type;
    +
    43 }
    +
    44
    +
    45 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    47 {
    +
    48 using storage_type = EC;
    +
    49 using reference = inner_reference_t<storage_type>;
    +
    50 using const_reference = typename storage_type::const_reference;
    +
    51 using size_type = typename storage_type::size_type;
    +
    52 using shape_type = std::array<typename storage_type::size_type, N>;
    +
    53 using strides_type = get_strides_t<shape_type>;
    +
    54 using backstrides_type = get_strides_t<shape_type>;
    +
    55 using inner_shape_type = shape_type;
    +
    56 using inner_strides_type = strides_type;
    +
    57 using inner_backstrides_type = backstrides_type;
    + +
    59 static constexpr layout_type layout = L;
    +
    60 };
    +
    +
    61
    +
    62 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    64 : xcontainer_iterable_types<xtensor_container<EC, N, L, Tag>>
    +
    65 {
    +
    66 };
    +
    +
    67
    +
    82 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    83 class xtensor_container : public xstrided_container<xtensor_container<EC, N, L, Tag>>,
    +
    84 public xcontainer_semantic<xtensor_container<EC, N, L, Tag>>,
    +
    85 public extension::xtensor_container_base_t<EC, N, L, Tag>
    +
    86 {
    +
    87 public:
    +
    88
    + + + +
    92 using extension_base = extension::xtensor_container_base_t<EC, N, L, Tag>;
    +
    93 using storage_type = typename base_type::storage_type;
    +
    94 using allocator_type = typename base_type::allocator_type;
    +
    95 using value_type = typename base_type::value_type;
    +
    96 using reference = typename base_type::reference;
    +
    97 using const_reference = typename base_type::const_reference;
    +
    98 using pointer = typename base_type::pointer;
    +
    99 using const_pointer = typename base_type::const_pointer;
    +
    100 using shape_type = typename base_type::shape_type;
    +
    101 using inner_shape_type = typename base_type::inner_shape_type;
    +
    102 using strides_type = typename base_type::strides_type;
    +
    103 using backstrides_type = typename base_type::backstrides_type;
    +
    104 using inner_backstrides_type = typename base_type::inner_backstrides_type;
    +
    105 using inner_strides_type = typename base_type::inner_strides_type;
    +
    106 using temporary_type = typename semantic_base::temporary_type;
    +
    107 using expression_tag = Tag;
    +
    108 static constexpr std::size_t rank = N;
    +
    109
    + +
    111 xtensor_container(nested_initializer_list_t<value_type, N> t);
    +
    112 explicit xtensor_container(const shape_type& shape, layout_type l = L);
    +
    113 explicit xtensor_container(const shape_type& shape, const_reference value, layout_type l = L);
    +
    114 explicit xtensor_container(const shape_type& shape, const strides_type& strides);
    +
    115 explicit xtensor_container(const shape_type& shape, const strides_type& strides, const_reference value);
    +
    116 explicit xtensor_container(storage_type&& storage, inner_shape_type&& shape, inner_strides_type&& strides);
    +
    117
    +
    118 template <class S = shape_type>
    +
    119 static xtensor_container from_shape(S&& s);
    +
    120
    +
    121 ~xtensor_container() = default;
    +
    122
    +
    123 xtensor_container(const xtensor_container&) = default;
    +
    124 xtensor_container& operator=(const xtensor_container&) = default;
    +
    125
    + +
    127 xtensor_container& operator=(xtensor_container&&) = default;
    +
    128
    +
    129 template <class SC>
    + +
    131 template <class SC>
    + +
    133
    +
    134 template <class E>
    + +
    136
    +
    137 template <class E>
    +
    138 xtensor_container& operator=(const xexpression<E>& e);
    +
    139
    +
    140 private:
    +
    141
    +
    142 storage_type m_storage;
    +
    143
    +
    144 storage_type& storage_impl() noexcept;
    +
    145 const storage_type& storage_impl() const noexcept;
    +
    146
    +
    147 friend class xcontainer<xtensor_container<EC, N, L, Tag>>;
    +
    148 };
    +
    +
    149
    +
    150 /*****************************************
    +
    151 * xtensor_container_adaptor declaration *
    +
    152 *****************************************/
    +
    153
    +
    154 namespace extension
    +
    155 {
    +
    156 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    157 struct xtensor_adaptor_base;
    +
    158
    +
    159 template <class EC, std::size_t N, layout_type L>
    +
    160 struct xtensor_adaptor_base<EC, N, L, xtensor_expression_tag>
    +
    161 {
    +
    162 using type = xtensor_empty_base;
    +
    163 };
    +
    164
    +
    165 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    166 using xtensor_adaptor_base_t = typename xtensor_adaptor_base<EC, N, L, Tag>::type;
    +
    167 }
    +
    168
    +
    169 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    171 {
    +
    172 using storage_type = std::remove_reference_t<EC>;
    +
    173 using reference = inner_reference_t<storage_type>;
    +
    174 using const_reference = typename storage_type::const_reference;
    +
    175 using size_type = typename storage_type::size_type;
    +
    176 using shape_type = std::array<typename storage_type::size_type, N>;
    +
    177 using strides_type = get_strides_t<shape_type>;
    +
    178 using backstrides_type = get_strides_t<shape_type>;
    +
    179 using inner_shape_type = shape_type;
    +
    180 using inner_strides_type = strides_type;
    +
    181 using inner_backstrides_type = backstrides_type;
    + +
    183 static constexpr layout_type layout = L;
    +
    184 };
    +
    +
    185
    +
    186 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    188 : xcontainer_iterable_types<xtensor_adaptor<EC, N, L, Tag>>
    +
    189 {
    +
    190 };
    +
    +
    191
    +
    208 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    209 class xtensor_adaptor : public xstrided_container<xtensor_adaptor<EC, N, L, Tag>>,
    +
    210 public xcontainer_semantic<xtensor_adaptor<EC, N, L, Tag>>,
    +
    211 public extension::xtensor_adaptor_base_t<EC, N, L, Tag>
    +
    212 {
    +
    213 public:
    +
    214
    +
    215 using container_closure_type = EC;
    +
    216
    + + + +
    220 using extension_base = extension::xtensor_adaptor_base_t<EC, N, L, Tag>;
    +
    221 using storage_type = typename base_type::storage_type;
    +
    222 using allocator_type = typename base_type::allocator_type;
    +
    223 using shape_type = typename base_type::shape_type;
    +
    224 using strides_type = typename base_type::strides_type;
    +
    225 using backstrides_type = typename base_type::backstrides_type;
    +
    226 using temporary_type = typename semantic_base::temporary_type;
    +
    227 using expression_tag = Tag;
    +
    228 static constexpr std::size_t rank = N;
    +
    229
    +
    230 xtensor_adaptor(storage_type&& storage);
    +
    231 xtensor_adaptor(const storage_type& storage);
    +
    232
    +
    233 template <class D>
    +
    234 xtensor_adaptor(D&& storage, const shape_type& shape, layout_type l = L);
    +
    235
    +
    236 template <class D>
    +
    237 xtensor_adaptor(D&& storage, const shape_type& shape, const strides_type& strides);
    +
    238
    +
    239 ~xtensor_adaptor() = default;
    +
    240
    +
    241 xtensor_adaptor(const xtensor_adaptor&) = default;
    +
    242 xtensor_adaptor& operator=(const xtensor_adaptor&);
    +
    243
    +
    244 xtensor_adaptor(xtensor_adaptor&&) = default;
    +
    245 xtensor_adaptor& operator=(xtensor_adaptor&&);
    +
    246 xtensor_adaptor& operator=(temporary_type&&);
    +
    247
    +
    248 template <class E>
    +
    249 xtensor_adaptor& operator=(const xexpression<E>& e);
    +
    250
    +
    251 template <class P, class S>
    +
    252 void reset_buffer(P&& pointer, S&& size);
    +
    253
    +
    254 private:
    +
    255
    +
    256 container_closure_type m_storage;
    +
    257
    +
    258 storage_type& storage_impl() noexcept;
    +
    259 const storage_type& storage_impl() const noexcept;
    +
    260
    +
    261 friend class xcontainer<xtensor_adaptor<EC, N, L, Tag>>;
    +
    262 };
    +
    +
    263
    +
    264 /****************************
    +
    265 * xtensor_view declaration *
    +
    266 ****************************/
    +
    267
    +
    268 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    269 class xtensor_view;
    +
    270
    +
    271 namespace extension
    +
    272 {
    +
    273 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    274 struct xtensor_view_base;
    +
    275
    +
    276 template <class EC, std::size_t N, layout_type L>
    +
    277 struct xtensor_view_base<EC, N, L, xtensor_expression_tag>
    +
    278 {
    +
    279 using type = xtensor_empty_base;
    +
    280 };
    +
    281
    +
    282 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    283 using xtensor_view_base_t = typename xtensor_view_base<EC, N, L, Tag>::type;
    +
    284 }
    +
    285
    +
    286 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    288 {
    +
    289 using storage_type = std::remove_reference_t<EC>;
    +
    290 using reference = inner_reference_t<storage_type>;
    +
    291 using const_reference = typename storage_type::const_reference;
    +
    292 using size_type = typename storage_type::size_type;
    +
    293 using shape_type = std::array<typename storage_type::size_type, N>;
    +
    294 using strides_type = get_strides_t<shape_type>;
    +
    295 using backstrides_type = get_strides_t<shape_type>;
    +
    296 using inner_shape_type = shape_type;
    +
    297 using inner_strides_type = strides_type;
    +
    298 using inner_backstrides_type = backstrides_type;
    + +
    300 static constexpr layout_type layout = L;
    +
    301 };
    +
    +
    302
    +
    303 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    304 struct xiterable_inner_types<xtensor_view<EC, N, L, Tag>>
    +
    305 : xcontainer_iterable_types<xtensor_view<EC, N, L, Tag>>
    +
    306 {
    +
    307 };
    +
    +
    308
    +
    325 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    326 class xtensor_view : public xstrided_container<xtensor_view<EC, N, L, Tag>>,
    +
    327 public xview_semantic<xtensor_view<EC, N, L, Tag>>,
    +
    328 public extension::xtensor_view_base_t<EC, N, L, Tag>
    +
    329 {
    +
    330 public:
    +
    331
    +
    332 using container_closure_type = EC;
    +
    333
    + + + +
    337 using extension_base = extension::xtensor_adaptor_base_t<EC, N, L, Tag>;
    +
    338 using storage_type = typename base_type::storage_type;
    +
    339 using allocator_type = typename base_type::allocator_type;
    +
    340 using shape_type = typename base_type::shape_type;
    +
    341 using strides_type = typename base_type::strides_type;
    +
    342 using backstrides_type = typename base_type::backstrides_type;
    +
    343 using temporary_type = typename semantic_base::temporary_type;
    +
    344 using expression_tag = Tag;
    +
    345
    +
    346 xtensor_view(storage_type&& storage);
    +
    347 xtensor_view(const storage_type& storage);
    +
    348
    +
    349 template <class D>
    +
    350 xtensor_view(D&& storage, const shape_type& shape, layout_type l = L);
    +
    351
    +
    352 template <class D>
    +
    353 xtensor_view(D&& storage, const shape_type& shape, const strides_type& strides);
    +
    354
    +
    355 ~xtensor_view() = default;
    +
    356
    +
    357 xtensor_view(const xtensor_view&) = default;
    +
    358 xtensor_view& operator=(const xtensor_view&);
    +
    359
    +
    360 xtensor_view(xtensor_view&&) = default;
    +
    361 xtensor_view& operator=(xtensor_view&&);
    +
    362
    +
    363 template <class E>
    +
    364 self_type& operator=(const xexpression<E>& e);
    +
    365
    +
    366 template <class E>
    +
    367 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    368
    +
    369 private:
    +
    370
    +
    371 container_closure_type m_storage;
    +
    372
    +
    373 storage_type& storage_impl() noexcept;
    +
    374 const storage_type& storage_impl() const noexcept;
    +
    375
    +
    376 void assign_temporary_impl(temporary_type&& tmp);
    +
    377
    +
    378 friend class xcontainer<xtensor_view<EC, N, L, Tag>>;
    +
    379 friend class xview_semantic<xtensor_view<EC, N, L, Tag>>;
    +
    380 };
    +
    +
    381
    +
    382 namespace detail
    +
    383 {
    +
    384 template <class V>
    +
    385 struct tensor_view_simd_helper
    +
    386 {
    +
    387 using valid_return_type = detail::has_simd_interface_impl<V, typename V::value_type>;
    +
    388 using valid_reference = std::is_lvalue_reference<typename V::reference>;
    +
    389 static constexpr bool value = valid_return_type::value && valid_reference::value;
    +
    390 using type = std::integral_constant<bool, value>;
    +
    391 };
    +
    392 }
    +
    393
    +
    394 // xtensor_view can be used on pseudo containers, i.e. containers
    +
    395 // whose access operator does not return a reference. Since it
    +
    396 // is not possible to take the address f a temporary, the load_simd
    +
    397 // method implementation leads to a compilation error.
    +
    398 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    399 struct has_simd_interface<xtensor_view<EC, N, L, Tag>>
    +
    400 : detail::tensor_view_simd_helper<xtensor_view<EC, N, L, Tag>>::type
    +
    401 {
    +
    402 };
    +
    +
    403
    +
    404 /************************************
    +
    405 * xtensor_container implementation *
    +
    406 ************************************/
    +
    407
    +
    415 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    417 : base_type()
    +
    418 , m_storage(N == 0 ? 1 : 0, value_type())
    +
    419 {
    +
    420 }
    +
    +
    421
    +
    425 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    426 inline xtensor_container<EC, N, L, Tag>::xtensor_container(nested_initializer_list_t<value_type, N> t)
    +
    427 : base_type()
    +
    428 {
    +
    429 base_type::resize(xt::shape<shape_type>(t), true);
    +
    430 constexpr auto tmp = layout_type::row_major;
    +
    431 L == tmp ? nested_copy(m_storage.begin(), t) : nested_copy(this->template begin<tmp>(), t);
    +
    432 }
    +
    +
    433
    +
    440 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    442 : base_type()
    +
    443 {
    + +
    445 }
    +
    +
    446
    +
    454 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    456 const shape_type& shape,
    +
    457 const_reference value,
    + +
    459 )
    +
    460 : base_type()
    +
    461 {
    + +
    463 std::fill(m_storage.begin(), m_storage.end(), value);
    +
    464 }
    +
    +
    465
    +
    471 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    472 inline xtensor_container<EC, N, L, Tag>::xtensor_container(const shape_type& shape, const strides_type& strides)
    +
    473 : base_type()
    +
    474 {
    + +
    476 }
    +
    +
    477
    +
    485 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    487 const shape_type& shape,
    +
    488 const strides_type& strides,
    +
    489 const_reference value
    +
    490 )
    +
    491 : base_type()
    +
    492 {
    + +
    494 std::fill(m_storage.begin(), m_storage.end(), value);
    +
    495 }
    +
    +
    496
    +
    504 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    506 storage_type&& storage,
    +
    507 inner_shape_type&& shape,
    +
    508 inner_strides_type&& strides
    +
    509 )
    +
    510 : base_type(std::move(shape), std::move(strides))
    +
    511 , m_storage(std::move(storage))
    +
    512 {
    +
    513 }
    +
    +
    514
    +
    515 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    516 template <class SC>
    + +
    518 : base_type(
    +
    519 xtl::forward_sequence<inner_shape_type, decltype(rhs.shape())>(rhs.shape()),
    +
    520 xtl::forward_sequence<inner_strides_type, decltype(rhs.strides())>(rhs.strides()),
    +
    521 xtl::forward_sequence<inner_backstrides_type, decltype(rhs.backstrides())>(rhs.backstrides()),
    +
    522 std::move(rhs.layout())
    +
    523 )
    +
    524 , m_storage(std::move(rhs.storage()))
    +
    525 {
    +
    526 }
    +
    527
    +
    528 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    529 template <class SC>
    +
    530 inline xtensor_container<EC, N, L, Tag>&
    +
    531 xtensor_container<EC, N, L, Tag>::operator=(xarray_container<EC, L, SC, Tag>&& rhs)
    +
    532 {
    +
    533 XTENSOR_ASSERT_MSG(N == rhs.dimension(), "Cannot change dimension of xtensor.");
    +
    534 std::copy(rhs.shape().begin(), rhs.shape().end(), this->shape_impl().begin());
    +
    535 std::copy(rhs.strides().cbegin(), rhs.strides().cend(), this->strides_impl().begin());
    +
    536 std::copy(rhs.backstrides().cbegin(), rhs.backstrides().cend(), this->backstrides_impl().begin());
    +
    537 this->mutable_layout() = std::move(rhs.layout());
    +
    538 m_storage = std::move(std::move(rhs.storage()));
    +
    539 return *this;
    +
    540 }
    +
    541
    +
    542 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    543 template <class S>
    +
    544 inline xtensor_container<EC, N, L, Tag> xtensor_container<EC, N, L, Tag>::from_shape(S&& s)
    +
    545 {
    +
    546 XTENSOR_ASSERT_MSG(s.size() == N, "Cannot change dimension of xtensor.");
    +
    547 shape_type shape = xtl::forward_sequence<shape_type, S>(s);
    +
    548 return self_type(shape);
    +
    549 }
    +
    550
    +
    552
    +
    560 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    561 template <class E>
    +
    + +
    563 : base_type()
    +
    564 {
    +
    565 XTENSOR_ASSERT_MSG(N == e.derived_cast().dimension(), "Cannot change dimension of xtensor.");
    +
    566 // Avoids uninitialized data because of (m_shape == shape) condition
    +
    567 // in resize (called by assign), which is always true when dimension() == 0.
    +
    568 if (e.derived_cast().dimension() == 0)
    +
    569 {
    +
    570 detail::resize_data_container(m_storage, std::size_t(1));
    +
    571 }
    +
    572 semantic_base::assign(e);
    +
    573 }
    +
    +
    574
    +
    578 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    579 template <class E>
    +
    + +
    581 {
    +
    582 return semantic_base::operator=(e);
    +
    583 }
    +
    +
    584
    +
    586
    +
    587 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    588 inline auto xtensor_container<EC, N, L, Tag>::storage_impl() noexcept -> storage_type&
    +
    589 {
    +
    590 return m_storage;
    +
    591 }
    +
    592
    +
    593 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    594 inline auto xtensor_container<EC, N, L, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    595 {
    +
    596 return m_storage;
    +
    597 }
    +
    598
    +
    599 /**********************************
    +
    600 * xtensor_adaptor implementation *
    +
    601 **********************************/
    +
    602
    +
    611 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    + +
    613 : base_type()
    +
    614 , m_storage(std::move(storage))
    +
    615 {
    +
    616 }
    +
    +
    617
    +
    622 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    623 inline xtensor_adaptor<EC, N, L, Tag>::xtensor_adaptor(const storage_type& storage)
    +
    624 : base_type()
    +
    625 , m_storage(storage)
    +
    626 {
    +
    627 }
    +
    +
    628
    +
    636 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    637 template <class D>
    +
    +
    638 inline xtensor_adaptor<EC, N, L, Tag>::xtensor_adaptor(D&& storage, const shape_type& shape, layout_type l)
    +
    639 : base_type()
    +
    640 , m_storage(std::forward<D>(storage))
    +
    641 {
    + +
    643 }
    +
    +
    644
    +
    652 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    653 template <class D>
    +
    + +
    655 D&& storage,
    +
    656 const shape_type& shape,
    +
    657 const strides_type& strides
    +
    658 )
    +
    659 : base_type()
    +
    660 , m_storage(std::forward<D>(storage))
    +
    661 {
    + +
    663 }
    +
    +
    664
    +
    666
    +
    667 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    668 inline auto xtensor_adaptor<EC, N, L, Tag>::operator=(const xtensor_adaptor& rhs) -> self_type&
    +
    669 {
    +
    670 base_type::operator=(rhs);
    +
    671 m_storage = rhs.m_storage;
    +
    672 return *this;
    +
    673 }
    +
    674
    +
    675 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    676 inline auto xtensor_adaptor<EC, N, L, Tag>::operator=(xtensor_adaptor&& rhs) -> self_type&
    +
    677 {
    +
    678 base_type::operator=(std::move(rhs));
    +
    679 m_storage = rhs.m_storage;
    +
    680 return *this;
    +
    681 }
    +
    682
    +
    683 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    684 inline auto xtensor_adaptor<EC, N, L, Tag>::operator=(temporary_type&& rhs) -> self_type&
    +
    685 {
    +
    686 base_type::shape_impl() = std::move(const_cast<shape_type&>(rhs.shape()));
    +
    687 base_type::strides_impl() = std::move(const_cast<strides_type&>(rhs.strides()));
    +
    688 base_type::backstrides_impl() = std::move(const_cast<backstrides_type&>(rhs.backstrides()));
    +
    689 m_storage = std::move(rhs.storage());
    +
    690 return *this;
    +
    691 }
    +
    692
    +
    700 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    701 template <class E>
    +
    + +
    703 {
    +
    704 return semantic_base::operator=(e);
    +
    705 }
    +
    +
    706
    +
    708
    +
    709 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    710 inline auto xtensor_adaptor<EC, N, L, Tag>::storage_impl() noexcept -> storage_type&
    +
    711 {
    +
    712 return m_storage;
    +
    713 }
    +
    714
    +
    715 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    716 inline auto xtensor_adaptor<EC, N, L, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    717 {
    +
    718 return m_storage;
    +
    719 }
    +
    720
    +
    721 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    722 template <class P, class S>
    +
    723 inline void xtensor_adaptor<EC, N, L, Tag>::reset_buffer(P&& pointer, S&& size)
    +
    724 {
    +
    725 return m_storage.reset_data(std::forward<P>(pointer), std::forward<S>(size));
    +
    726 }
    +
    727
    +
    728 /*******************************
    +
    729 * xtensor_view implementation *
    +
    730 *******************************/
    +
    731
    +
    740 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    741 inline xtensor_view<EC, N, L, Tag>::xtensor_view(storage_type&& storage)
    +
    742 : base_type()
    +
    743 , m_storage(std::move(storage))
    +
    744 {
    +
    745 }
    +
    +
    746
    +
    751 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    +
    752 inline xtensor_view<EC, N, L, Tag>::xtensor_view(const storage_type& storage)
    +
    753 : base_type()
    +
    754 , m_storage(storage)
    +
    755 {
    +
    756 }
    +
    +
    757
    +
    765 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    766 template <class D>
    +
    +
    767 inline xtensor_view<EC, N, L, Tag>::xtensor_view(D&& storage, const shape_type& shape, layout_type l)
    +
    768 : base_type()
    +
    769 , m_storage(std::forward<D>(storage))
    +
    770 {
    + +
    772 }
    +
    +
    773
    +
    781 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    782 template <class D>
    +
    +
    783 inline xtensor_view<EC, N, L, Tag>::xtensor_view(D&& storage, const shape_type& shape, const strides_type& strides)
    +
    784 : base_type()
    +
    785 , m_storage(std::forward<D>(storage))
    +
    786 {
    + +
    788 }
    +
    +
    789
    +
    791
    +
    792 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    793 inline auto xtensor_view<EC, N, L, Tag>::operator=(const xtensor_view& rhs) -> self_type&
    +
    794 {
    +
    795 base_type::operator=(rhs);
    +
    796 m_storage = rhs.m_storage;
    +
    797 return *this;
    +
    798 }
    +
    799
    +
    800 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    801 inline auto xtensor_view<EC, N, L, Tag>::operator=(xtensor_view&& rhs) -> self_type&
    +
    802 {
    +
    803 base_type::operator=(std::move(rhs));
    +
    804 m_storage = rhs.m_storage;
    +
    805 return *this;
    +
    806 }
    +
    807
    +
    815 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    816 template <class E>
    +
    + +
    818 {
    +
    819 return semantic_base::operator=(e);
    +
    820 }
    +
    +
    821
    +
    823
    +
    824 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    825 template <class E>
    +
    826 inline auto xtensor_view<EC, N, L, Tag>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    827 {
    +
    828 std::fill(m_storage.begin(), m_storage.end(), e);
    +
    829 return *this;
    +
    830 }
    +
    831
    +
    832 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    833 inline auto xtensor_view<EC, N, L, Tag>::storage_impl() noexcept -> storage_type&
    +
    834 {
    +
    835 return m_storage;
    +
    836 }
    +
    837
    +
    838 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    839 inline auto xtensor_view<EC, N, L, Tag>::storage_impl() const noexcept -> const storage_type&
    +
    840 {
    +
    841 return m_storage;
    +
    842 }
    +
    843
    +
    844 template <class EC, std::size_t N, layout_type L, class Tag>
    +
    845 inline void xtensor_view<EC, N, L, Tag>::assign_temporary_impl(temporary_type&& tmp)
    +
    846 {
    +
    847 std::copy(tmp.cbegin(), tmp.cend(), m_storage.begin());
    +
    848 }
    +
    849
    +
    857 template <class T>
    +
    +
    858 inline auto from_indices(const std::vector<T>& idx)
    +
    859 {
    +
    860 using return_type = xtensor<typename T::value_type, 2>;
    +
    861 using size_type = typename return_type::size_type;
    +
    862
    +
    863 if (idx.size() == 0)
    +
    864 {
    +
    865 return return_type::from_shape({size_type(0), size_type(0)});
    +
    866 }
    +
    867
    +
    868 return_type out = return_type::from_shape({idx.size(), idx[0].size()});
    +
    869
    +
    870 for (size_type i = 0; i < out.shape()[0]; ++i)
    +
    871 {
    +
    872 for (size_type j = 0; j < out.shape()[1]; ++j)
    +
    873 {
    +
    874 out(i, j) = idx[i][j];
    +
    875 }
    +
    876 }
    +
    877
    +
    878 return out;
    +
    879 }
    +
    +
    880
    +
    889 template <class T>
    +
    +
    890 inline auto flatten_indices(const std::vector<T>& idx)
    +
    891 {
    +
    892 auto n = idx.size();
    +
    893 if (n != 0)
    +
    894 {
    +
    895 n *= idx[0].size();
    +
    896 }
    +
    897
    +
    898 using return_type = xtensor<typename T::value_type, 1>;
    +
    899 return_type out = return_type::from_shape({n});
    +
    900 auto iter = out.begin();
    +
    901 for_each(
    +
    902 idx.begin(),
    +
    903 idx.end(),
    +
    904 [&iter](const auto& t)
    +
    905 {
    +
    906 iter = std::copy(t.cbegin(), t.cend(), iter);
    +
    907 }
    +
    908 );
    +
    909
    +
    910 return out;
    +
    911 }
    +
    +
    912
    +
    913 struct ravel_vector_tag;
    +
    914 struct ravel_tensor_tag;
    +
    915
    +
    916 namespace detail
    +
    917 {
    +
    918 template <class C, class Tag>
    +
    919 struct ravel_return_type;
    +
    920
    +
    921 template <class C>
    +
    922 struct ravel_return_type<C, ravel_vector_tag>
    +
    923 {
    +
    924 using index_type = typename C::value_type;
    +
    925 using value_type = typename index_type::value_type;
    +
    926 using type = std::vector<value_type>;
    +
    927
    +
    928 template <class T>
    +
    929 static std::vector<value_type> init(T n)
    +
    930 {
    +
    931 return std::vector<value_type>(n);
    +
    932 }
    +
    933 };
    +
    934
    +
    935 template <class C>
    +
    936 struct ravel_return_type<C, ravel_tensor_tag>
    +
    937 {
    +
    938 using index_type = typename C::value_type;
    +
    939 using value_type = typename index_type::value_type;
    +
    940 using type = xt::xtensor<value_type, 1>;
    +
    941
    +
    942 template <class T>
    +
    943 static xt::xtensor<value_type, 1> init(T n)
    +
    944 {
    +
    945 return xtensor<value_type, 1>::from_shape({n});
    +
    946 }
    +
    947 };
    +
    948 }
    +
    949
    +
    950 template <class C, class Tag>
    +
    951 using ravel_return_type_t = typename detail::ravel_return_type<C, Tag>::type;
    +
    952
    +
    963 template <class Tag = ravel_tensor_tag, class C, class S>
    +
    964 ravel_return_type_t<C, Tag>
    +
    +
    965 ravel_indices(const C& idx, const S& shape, layout_type l = layout_type::row_major)
    +
    966 {
    +
    967 using return_type = typename detail::ravel_return_type<C, Tag>::type;
    +
    968 using value_type = typename detail::ravel_return_type<C, Tag>::value_type;
    +
    969 using strides_type = get_strides_t<S>;
    +
    970 strides_type strides = xtl::make_sequence<strides_type>(shape.size(), 0);
    +
    971 compute_strides(shape, l, strides);
    +
    972 return_type out = detail::ravel_return_type<C, Tag>::init(idx.size());
    +
    973 auto out_iter = out.begin();
    +
    974 auto idx_iter = idx.begin();
    +
    975 for (; out_iter != out.end(); ++out_iter, ++idx_iter)
    +
    976 {
    +
    977 *out_iter = element_offset<value_type>(strides, (*idx_iter).cbegin(), (*idx_iter).cend());
    +
    978 }
    +
    979 return out;
    +
    980 }
    +
    +
    981}
    +
    982
    +
    983#endif
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Implementation of the xsemantic_base interface for dense multidimensional containers.
    +
    Base class for dense multidimensional containers.
    +
    storage_type & storage() noexcept
    Returns a reference to the buffer containing the elements of the container.
    +
    size_type size() const noexcept
    Returns the number of element in the container.
    +
    constexpr const inner_strides_type & strides() const noexcept
    Returns the strides of the container.
    +
    constexpr const inner_shape_type & shape() const noexcept
    Returns the shape of the container.
    +
    Base class for xexpressions.
    +
    derived_type & derived_cast() &noexcept
    Returns a reference to the actual derived type of the xexpression.
    +
    Partial implementation of xcontainer that embeds the strides and the shape.
    +
    void resize(S &&shape, bool force=false)
    Resizes the container.
    +
    Dense multidimensional container adaptor with tensor semantics and fixed dimension.
    Definition xtensor.hpp:212
    +
    xtensor_adaptor(storage_type &&storage)
    Constructs an xtensor_adaptor of the given stl-like container.
    Definition xtensor.hpp:612
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    xtensor_container()
    Allocates an uninitialized xtensor_container that holds 0 elements.
    Definition xtensor.hpp:416
    +
    Dense multidimensional container adaptor with view semantics and fixed dimension.
    Definition xtensor.hpp:329
    +
    xtensor_view(storage_type &&storage)
    Constructs an xtensor_view of the given stl-like container.
    Definition xtensor.hpp:741
    +
    Implementation of the xsemantic_base interface for multidimensional views.
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + +
    auto flatten_indices(const std::vector< T > &idx)
    Converts std::vector<index_type> (returned e.g.
    Definition xtensor.hpp:890
    +
    ravel_return_type_t< C, Tag > ravel_indices(const C &idx, const S &shape, layout_type l=layout_type::row_major)
    Converts std::vector<index_type> (returned e.g.
    Definition xtensor.hpp:965
    +
    auto from_indices(const std::vector< T > &idx)
    Converts std::vector<index_type> (returned e.g.
    Definition xtensor.hpp:858
    + + + + + + + +
    +
    + + + + diff --git a/xtensor__config_8hpp_source.html b/xtensor__config_8hpp_source.html new file mode 100644 index 000000000..b32348712 --- /dev/null +++ b/xtensor__config_8hpp_source.html @@ -0,0 +1,250 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xtensor_config.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xtensor_config.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_CONFIG_HPP
    +
    11#define XTENSOR_CONFIG_HPP
    +
    12
    +
    13#define XTENSOR_VERSION_MAJOR 0
    +
    14#define XTENSOR_VERSION_MINOR 24
    +
    15#define XTENSOR_VERSION_PATCH 7
    +
    16
    +
    17
    +
    18// Define if the library is going to be using exceptions.
    +
    19#if (!defined(__cpp_exceptions) && !defined(__EXCEPTIONS) && !defined(_CPPUNWIND))
    +
    20#undef XTENSOR_DISABLE_EXCEPTIONS
    +
    21#define XTENSOR_DISABLE_EXCEPTIONS
    +
    22#endif
    +
    23
    +
    24// Exception support.
    +
    25#if defined(XTENSOR_DISABLE_EXCEPTIONS)
    +
    26#include <iostream>
    +
    27#define XTENSOR_THROW(_, msg) \
    +
    28 { \
    +
    29 std::cerr << msg << std::endl; \
    +
    30 std::abort(); \
    +
    31 }
    +
    32#else
    +
    33#define XTENSOR_THROW(exception, msg) throw exception(msg)
    +
    34#endif
    +
    35
    +
    36// Workaround for some missing constexpr functionality in MSVC 2015 and MSVC 2017 x86
    +
    37#if defined(_MSC_VER)
    +
    38#define XTENSOR_CONSTEXPR_ENHANCED const
    +
    39// The following must not be defined to const, otherwise
    +
    40// it prevents generation of copy operators of classes
    +
    41// containing XTENSOR_CONSTEXPR_ENHANCED_STATIC members
    +
    42#define XTENSOR_CONSTEXPR_ENHANCED_STATIC
    +
    43#define XTENSOR_CONSTEXPR_RETURN inline
    +
    44#else
    +
    45#define XTENSOR_CONSTEXPR_ENHANCED constexpr
    +
    46#define XTENSOR_CONSTEXPR_RETURN constexpr
    +
    47#define XTENSOR_CONSTEXPR_ENHANCED_STATIC constexpr static
    +
    48#define XTENSOR_HAS_CONSTEXPR_ENHANCED
    +
    49#endif
    +
    50
    +
    51#ifndef XTENSOR_DEFAULT_DATA_CONTAINER
    +
    52#define XTENSOR_DEFAULT_DATA_CONTAINER(T, A) uvector<T, A>
    +
    53#endif
    +
    54
    +
    55#ifndef XTENSOR_DEFAULT_SHAPE_CONTAINER
    +
    56#define XTENSOR_DEFAULT_SHAPE_CONTAINER(T, EA, SA) \
    +
    57 xt::svector<typename XTENSOR_DEFAULT_DATA_CONTAINER(T, EA)::size_type, 4, SA, true>
    +
    58#endif
    +
    59
    +
    60#ifdef XTENSOR_USE_XSIMD
    +
    61#include <xsimd/xsimd.hpp>
    +
    62#define XSIMD_DEFAULT_ALIGNMENT xsimd::default_arch::alignment()
    +
    63#endif
    +
    64
    +
    65
    +
    66#ifndef XTENSOR_DEFAULT_ALLOCATOR
    +
    67#ifdef XTENSOR_ALLOC_TRACKING
    +
    68#ifndef XTENSOR_ALLOC_TRACKING_POLICY
    +
    69#define XTENSOR_ALLOC_TRACKING_POLICY xt::alloc_tracking::policy::print
    +
    70#endif
    +
    71#ifdef XTENSOR_USE_XSIMD
    +
    72#include <xsimd/xsimd.hpp>
    +
    73#define XTENSOR_DEFAULT_ALLOCATOR(T) \
    +
    74 xt::tracking_allocator<T, xsimd::aligned_allocator<T, XSIMD_DEFAULT_ALIGNMENT>, XTENSOR_ALLOC_TRACKING_POLICY>
    +
    75#else
    +
    76#define XTENSOR_DEFAULT_ALLOCATOR(T) \
    +
    77 xt::tracking_allocator<T, std::allocator<T>, XTENSOR_ALLOC_TRACKING_POLICY>
    +
    78#endif
    +
    79#else
    +
    80#ifdef XTENSOR_USE_XSIMD
    +
    81
    +
    82#define XTENSOR_DEFAULT_ALLOCATOR(T) xsimd::aligned_allocator<T, XSIMD_DEFAULT_ALIGNMENT>
    +
    83#else
    +
    84#define XTENSOR_DEFAULT_ALLOCATOR(T) std::allocator<T>
    +
    85#endif
    +
    86#endif
    +
    87#endif
    +
    88
    +
    89#ifndef XTENSOR_DEFAULT_ALIGNMENT
    +
    90#ifdef XTENSOR_USE_XSIMD
    +
    91#define XTENSOR_DEFAULT_ALIGNMENT XSIMD_DEFAULT_ALIGNMENT
    +
    92#else
    +
    93#define XTENSOR_DEFAULT_ALIGNMENT 0
    +
    94#endif
    +
    95#endif
    +
    96
    +
    97#ifndef XTENSOR_DEFAULT_LAYOUT
    +
    98#define XTENSOR_DEFAULT_LAYOUT ::xt::layout_type::row_major
    +
    99#endif
    +
    100
    +
    101#ifndef XTENSOR_DEFAULT_TRAVERSAL
    +
    102#define XTENSOR_DEFAULT_TRAVERSAL ::xt::layout_type::row_major
    +
    103#endif
    +
    104
    +
    105#ifndef XTENSOR_OPENMP_TRESHOLD
    +
    106#define XTENSOR_OPENMP_TRESHOLD 0
    +
    107#endif
    +
    108
    +
    109#ifndef XTENSOR_TBB_THRESHOLD
    +
    110#define XTENSOR_TBB_THRESHOLD 0
    +
    111#endif
    +
    112
    +
    113#ifndef XTENSOR_SELECT_ALIGN
    +
    114#define XTENSOR_SELECT_ALIGN(T) (XTENSOR_DEFAULT_ALIGNMENT != 0 ? XTENSOR_DEFAULT_ALIGNMENT : alignof(T))
    +
    115#endif
    +
    116
    +
    117#ifndef XTENSOR_FIXED_ALIGN
    +
    118#define XTENSOR_FIXED_ALIGN XTENSOR_SELECT_ALIGN(void*)
    +
    119#endif
    +
    120
    +
    121#ifdef IN_DOXYGEN
    +
    122namespace xtl
    +
    123{
    +
    124 template <class... T>
    +
    + +
    126 {
    +
    127 constexpr bool value = true;
    +
    128 };
    +
    +
    129
    +
    130 template <class... C>
    +
    131 using check_concept = std::enable_if_t<conjunction<C...>::value, int>;
    +
    132
    +
    133#define XTL_REQUIRES(...) xtl::check_concept<__VA_ARGS__> = 0
    +
    134}
    +
    135#endif
    +
    136
    +
    137#endif
    + +
    +
    + + + + diff --git a/xtensor__forward_8hpp_source.html b/xtensor__forward_8hpp_source.html new file mode 100644 index 000000000..483d1658c --- /dev/null +++ b/xtensor__forward_8hpp_source.html @@ -0,0 +1,249 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xtensor_forward.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xtensor_forward.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_FORWARD_HPP
    +
    11#define XTENSOR_FORWARD_HPP
    +
    12
    +
    13// This file contains forward declarations and
    +
    14// alias types to solve the problem of circular
    +
    15// includes. It should not contain anything else
    +
    16// and should not bring additional dependencies to
    +
    17// the files that include it. So:
    +
    18// - do NOT define classes of metafunctions here
    +
    19// - do NOT include other headers
    +
    20//
    +
    21// If you need to do so, something is probably
    +
    22// going wrong (either your change, or xtensor
    +
    23// needs to be refactored).
    +
    24
    +
    25#include <memory>
    +
    26#include <vector>
    +
    27
    +
    28#include <xtl/xoptional_sequence.hpp>
    +
    29
    +
    30#include "xlayout.hpp"
    +
    31#include "xtensor_config.hpp"
    +
    32
    +
    33namespace xt
    +
    34{
    +
    35 struct xtensor_expression_tag;
    +
    36 struct xoptional_expression_tag;
    +
    37
    +
    38 template <class C>
    +
    39 struct xcontainer_inner_types;
    +
    40
    +
    41 template <class D>
    +
    42 class xcontainer;
    +
    43
    +
    44 template <class T, class A>
    +
    45 class uvector;
    +
    46
    +
    47 template <class T, std::size_t N, class A, bool Init>
    +
    48 class svector;
    +
    49
    +
    50 template <
    +
    51 class EC,
    +
    52 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    53 class SC = XTENSOR_DEFAULT_SHAPE_CONTAINER(typename EC::value_type, typename EC::allocator_type, std::allocator<typename EC::size_type>),
    +
    54 class Tag = xtensor_expression_tag>
    +
    55 class xarray_container;
    +
    56
    +
    77 template <
    +
    78 class T,
    +
    79 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    80 class A = XTENSOR_DEFAULT_ALLOCATOR(T),
    +
    81 class SA = std::allocator<typename std::vector<T, A>::size_type>>
    +
    82 using xarray = xarray_container<XTENSOR_DEFAULT_DATA_CONTAINER(T, A), L, XTENSOR_DEFAULT_SHAPE_CONTAINER(T, A, SA)>;
    +
    83
    +
    84 template <
    +
    85 class EC,
    +
    86 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    87 class SC = XTENSOR_DEFAULT_SHAPE_CONTAINER(typename EC::value_type, std::allocator<typename EC::size_type>, std::allocator<typename EC::size_type>),
    +
    88 class Tag = xtensor_expression_tag>
    +
    89 class xarray_adaptor;
    +
    90
    +
    101 template <
    +
    102 class T,
    +
    103 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    104 class A = XTENSOR_DEFAULT_ALLOCATOR(T),
    +
    105 class BC = xtl::xdynamic_bitset<std::size_t>,
    +
    106 class SA = std::allocator<typename std::vector<T, A>::size_type>>
    + +
    108 xtl::xoptional_vector<T, A, BC>,
    +
    109 L,
    +
    110 XTENSOR_DEFAULT_SHAPE_CONTAINER(T, A, SA),
    + +
    112
    +
    113 template <class EC, std::size_t N, layout_type L = XTENSOR_DEFAULT_LAYOUT, class Tag = xtensor_expression_tag>
    +
    114 class xtensor_container;
    +
    115
    +
    136 template <class T, std::size_t N, layout_type L = XTENSOR_DEFAULT_LAYOUT, class A = XTENSOR_DEFAULT_ALLOCATOR(T)>
    +
    137 using xtensor = xtensor_container<XTENSOR_DEFAULT_DATA_CONTAINER(T, A), N, L>;
    +
    138
    +
    139 template <class EC, std::size_t N, layout_type L = XTENSOR_DEFAULT_LAYOUT, class Tag = xtensor_expression_tag>
    +
    140 class xtensor_adaptor;
    +
    141
    +
    142 template <class EC, std::size_t N, layout_type L = XTENSOR_DEFAULT_LAYOUT, class Tag = xtensor_expression_tag>
    +
    143 class xtensor_view;
    +
    144
    +
    145 template <std::size_t... N>
    +
    146 class fixed_shape;
    +
    147
    +
    152 template <std::size_t... N>
    +
    153 using xshape = fixed_shape<N...>;
    +
    154
    +
    155 template <class ET, class S, layout_type L = XTENSOR_DEFAULT_LAYOUT, bool Sharable = true, class Tag = xtensor_expression_tag>
    +
    156 class xfixed_container;
    +
    157
    +
    158 template <class ET, class S, layout_type L = XTENSOR_DEFAULT_LAYOUT, bool Sharable = true, class Tag = xtensor_expression_tag>
    +
    159 class xfixed_adaptor;
    +
    160
    +
    181 template <class T, class FSH, layout_type L = XTENSOR_DEFAULT_LAYOUT, bool Sharable = true>
    + +
    183
    +
    194 template <
    +
    195 class T,
    +
    196 std::size_t N,
    +
    197 layout_type L = XTENSOR_DEFAULT_LAYOUT,
    +
    198 class A = XTENSOR_DEFAULT_ALLOCATOR(T),
    +
    199 class BC = xtl::xdynamic_bitset<std::size_t>>
    + +
    201
    +
    202 template <class CT, class... S>
    +
    203 class xview;
    +
    204
    +
    205 template <class F, class... CT>
    +
    206 class xfunction;
    +
    207}
    +
    208
    +
    209#endif
    +
    Fixed shape implementation for compile time defined arrays.
    +
    Dense multidimensional container adaptor with tensor semantic.
    Definition xarray.hpp:217
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Dense multidimensional container adaptor with tensor semantic and fixed dimension.
    Definition xfixed.hpp:448
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xfixed.hpp:298
    +
    Multidimensional function operating on xtensor expressions.
    +
    Dense multidimensional container adaptor with tensor semantics and fixed dimension.
    Definition xtensor.hpp:212
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    Dense multidimensional container adaptor with view semantics and fixed dimension.
    Definition xtensor.hpp:329
    +
    Multidimensional view with tensor semantic.
    Definition xview.hpp:360
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + + +
    +
    + + + + diff --git a/xtensor__simd_8hpp_source.html b/xtensor__simd_8hpp_source.html new file mode 100644 index 000000000..b85f8afef --- /dev/null +++ b/xtensor__simd_8hpp_source.html @@ -0,0 +1,501 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xtensor_simd.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xtensor_simd.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_SIMD_HPP
    +
    11#define XTENSOR_SIMD_HPP
    +
    12
    +
    13#include <vector>
    +
    14
    +
    15#include <xtl/xdynamic_bitset.hpp>
    +
    16
    +
    17#include "xutils.hpp"
    +
    18
    +
    19#ifdef XTENSOR_USE_XSIMD
    +
    20
    +
    21#include <xsimd/xsimd.hpp>
    +
    22// #include <xsimd/memory/xsimd_load_store.hpp>
    +
    23
    +
    24#if defined(_MSV_VER) && (_MSV_VER < 1910)
    +
    25template <class T, class A>
    +
    26inline xsimd::batch_bool<T, A> isnan(const xsimd::batch<T, A>& b)
    +
    27{
    +
    28 return xsimd::isnan(b);
    +
    29}
    +
    30#endif
    +
    31
    +
    32namespace xt_simd
    +
    33{
    +
    34 template <class T, std::size_t A>
    +
    35 using aligned_allocator = xsimd::aligned_allocator<T, A>;
    +
    36
    +
    37 using aligned_mode = xsimd::aligned_mode;
    +
    38 using unaligned_mode = xsimd::unaligned_mode;
    +
    39
    +
    40 template <class A>
    +
    41 using allocator_alignment = xsimd::allocator_alignment<A>;
    +
    42
    +
    43 template <class A>
    +
    44 using allocator_alignment_t = xsimd::allocator_alignment_t<A>;
    +
    45
    +
    46 template <class C>
    +
    47 using container_alignment = xsimd::container_alignment<C>;
    +
    48
    +
    49 template <class C>
    +
    50 using container_alignment_t = xsimd::container_alignment_t<C>;
    +
    51
    +
    52 template <class T>
    +
    53 using simd_traits = xsimd::simd_traits<T>;
    +
    54
    +
    55 template <class T>
    +
    56 using revert_simd_traits = xsimd::revert_simd_traits<T>;
    +
    57
    +
    58 template <class T>
    +
    59 using simd_type = xsimd::simd_type<T>;
    +
    60
    +
    61 template <class T>
    +
    62 using simd_bool_type = xsimd::simd_bool_type<T>;
    +
    63
    +
    64 template <class T>
    +
    65 using revert_simd_type = xsimd::revert_simd_type<T>;
    +
    66
    +
    67 template <class T1, class T2>
    +
    68 using simd_return_type = xsimd::simd_return_type<T1, T2>;
    +
    69
    +
    70 using xsimd::broadcast_as;
    +
    71 using xsimd::get_alignment_offset;
    +
    72 using xsimd::load_as;
    +
    73 using xsimd::select;
    +
    74 using xsimd::store_as;
    +
    75
    +
    76 template <class V>
    +
    77 using is_batch_bool = xsimd::is_batch_bool<V>;
    +
    78
    +
    79 template <class V>
    +
    80 using is_batch_complex = xsimd::is_batch_complex<V>;
    +
    81
    +
    82 template <class T1, class T2>
    +
    83 using simd_condition = xsimd::detail::simd_condition<T1, T2>;
    +
    84}
    +
    85
    +
    86#else // XTENSOR_USE_XSIMD
    +
    87
    +
    88namespace xt_simd
    +
    89{
    +
    90 template <class T, std::size_t A>
    + +
    92
    +
    + +
    94 {
    +
    95 };
    +
    +
    96
    +
    + +
    98 {
    +
    99 };
    +
    +
    100
    +
    101 template <class A>
    +
    + +
    103 {
    +
    104 using type = unaligned_mode;
    +
    105 };
    +
    +
    106
    +
    107 template <class A>
    +
    108 using allocator_alignment_t = typename allocator_alignment<A>::type;
    +
    109
    +
    110 template <class C>
    +
    + +
    112 {
    +
    113 using type = unaligned_mode;
    +
    114 };
    +
    +
    115
    +
    116 template <class C>
    +
    117 using container_alignment_t = typename container_alignment<C>::type;
    +
    118
    +
    119 template <class T>
    +
    + +
    121 {
    +
    122 using type = T;
    +
    123 using bool_type = bool;
    +
    124 using batch_bool = bool;
    +
    125 static constexpr std::size_t size = 1;
    +
    126 };
    +
    +
    127
    +
    128 template <class T>
    +
    + +
    130 {
    +
    131 using type = T;
    +
    132 static constexpr std::size_t size = simd_traits<type>::size;
    +
    133 };
    +
    +
    134
    +
    135 template <class T>
    +
    136 using simd_type = typename simd_traits<T>::type;
    +
    137
    +
    138 template <class T>
    +
    139 using simd_bool_type = typename simd_traits<T>::bool_type;
    +
    140
    +
    141 template <class T>
    +
    142 using revert_simd_type = typename revert_simd_traits<T>::type;
    +
    143
    +
    144 template <class R, class T>
    +
    145 inline simd_type<R> broadcast_as(const T& value)
    +
    146 {
    +
    147 return value;
    +
    148 }
    +
    149
    +
    150 template <class R, class T>
    +
    151 inline simd_type<R> load_as(const T* src, aligned_mode)
    +
    152 {
    +
    153 return *src;
    +
    154 }
    +
    155
    +
    156 template <class R, class T>
    +
    157 inline simd_type<R> load_as(const T* src, unaligned_mode)
    +
    158 {
    +
    159 return *src;
    +
    160 }
    +
    161
    +
    162 template <class R, class T>
    +
    163 inline void store_as(R* dst, const simd_type<T>& src, aligned_mode)
    +
    164 {
    +
    165 *dst = src;
    +
    166 }
    +
    167
    +
    168 template <class R, class T>
    +
    169 inline void store_as(R* dst, const simd_type<T>& src, unaligned_mode)
    +
    170 {
    +
    171 *dst = src;
    +
    172 }
    +
    173
    +
    174 template <class T>
    +
    175 inline T select(bool cond, const T& t1, const T& t2)
    +
    176 {
    +
    177 return cond ? t1 : t2;
    +
    178 }
    +
    179
    +
    180 template <class T>
    +
    181 inline std::size_t get_alignment_offset(const T* /*p*/, std::size_t size, std::size_t /*block_size*/)
    +
    182 {
    +
    183 return size;
    +
    184 }
    +
    185
    +
    186 template <class T1, class T2>
    +
    187 using simd_return_type = simd_type<T2>;
    +
    188
    +
    189 template <class V>
    +
    +
    190 struct is_batch_bool : std::false_type
    +
    191 {
    +
    192 };
    +
    +
    193
    +
    194 template <class V>
    +
    +
    195 struct is_batch_complex : std::false_type
    +
    196 {
    +
    197 };
    +
    +
    198
    +
    199 template <class T1, class T2>
    +
    +
    200 struct simd_condition : std::true_type
    +
    201 {
    +
    202 };
    +
    +
    203}
    +
    204
    +
    205#endif // XTENSOR_USE_XSIMD
    +
    206
    +
    207namespace xt
    +
    208{
    + + +
    211
    +
    + +
    213 {
    +
    214 };
    +
    +
    215
    +
    216 namespace detail
    +
    217 {
    +
    218 template <class A1, class A2>
    +
    219 struct driven_align_mode_impl
    +
    220 {
    +
    221 using type = std::conditional_t<std::is_same<A1, A2>::value, A1, ::xt_simd::unaligned_mode>;
    +
    222 };
    +
    223
    +
    224 template <class A>
    +
    225 struct driven_align_mode_impl<inner_aligned_mode, A>
    +
    226 {
    +
    227 using type = A;
    +
    228 };
    +
    229 }
    +
    230
    +
    231 template <class A1, class A2>
    +
    + +
    233 {
    +
    234 using type = typename detail::driven_align_mode_impl<A1, A2>::type;
    +
    235 };
    +
    +
    236
    +
    237 template <class A1, class A2>
    +
    238 using driven_align_mode_t = typename detail::driven_align_mode_impl<A1, A2>::type;
    +
    239
    +
    240 namespace detail
    +
    241 {
    +
    242 template <class E, class T, class = void>
    +
    243 struct has_load_simd : std::false_type
    +
    244 {
    +
    245 };
    +
    246
    +
    247 template <class E, class T>
    +
    248 struct has_load_simd<
    +
    249 E,
    +
    250 T,
    +
    251 void_t<decltype(std::declval<E>().template load_simd<aligned_mode, T>(typename E::size_type(0)))>>
    +
    252 : std::true_type
    +
    253 {
    +
    254 };
    +
    255
    +
    256 template <class E, class T, bool B = xt_simd::simd_condition<typename E::value_type, T>::value>
    +
    257 struct has_simd_interface_impl : has_load_simd<E, T>
    +
    258 {
    +
    259 };
    +
    260
    +
    261 template <class E, class T>
    +
    262 struct has_simd_interface_impl<E, T, false> : std::false_type
    +
    263 {
    +
    264 };
    +
    265 }
    +
    266
    +
    267 template <class E, class T = typename std::decay_t<E>::value_type>
    +
    +
    268 struct has_simd_interface : detail::has_simd_interface_impl<E, T>
    +
    269 {
    +
    270 };
    +
    +
    271
    +
    272 template <class T>
    +
    +
    273 struct has_simd_type : std::integral_constant<bool, !std::is_same<T, xt_simd::simd_type<T>>::value>
    +
    274 {
    +
    275 };
    +
    +
    276
    +
    277 namespace detail
    +
    278 {
    +
    279 template <class F, class B, class = void>
    +
    280 struct has_simd_apply_impl : std::false_type
    +
    281 {
    +
    282 };
    +
    283
    +
    284 template <class F, class B>
    +
    285 struct has_simd_apply_impl<F, B, void_t<decltype(&F::template simd_apply<B>)>> : std::true_type
    +
    286 {
    +
    287 };
    +
    288 }
    +
    289
    +
    290 template <class F, class B>
    +
    +
    291 struct has_simd_apply : detail::has_simd_apply_impl<F, B>
    +
    292 {
    +
    293 };
    +
    +
    294
    +
    295 template <class T>
    +
    296 using bool_load_type = std::conditional_t<std::is_same<T, bool>::value, uint8_t, T>;
    +
    297
    +
    298 template <class T>
    +
    +
    299 struct forbid_simd : std::false_type
    +
    300 {
    +
    301 };
    +
    +
    302
    +
    303 template <class A>
    +
    +
    304 struct forbid_simd<std::vector<bool, A>> : std::true_type
    +
    305 {
    +
    306 };
    +
    +
    307
    +
    308 template <class A>
    +
    +
    309 struct forbid_simd<const std::vector<bool, A>> : std::true_type
    +
    310 {
    +
    311 };
    +
    +
    312
    +
    313 template <class B, class A>
    +
    +
    314 struct forbid_simd<xtl::xdynamic_bitset<B, A>> : std::true_type
    +
    315 {
    +
    316 };
    +
    +
    317
    +
    318 template <class B, class A>
    +
    +
    319 struct forbid_simd<const xtl::xdynamic_bitset<B, A>> : std::true_type
    +
    320 {
    +
    321 };
    +
    +
    322
    +
    323 template <class C, class T1, class T2>
    +
    + +
    325 : std::enable_if<!forbid_simd<C>::value, xt_simd::simd_return_type<T1, bool_load_type<T2>>>
    +
    326 {
    +
    327 };
    +
    +
    328
    +
    329 template <class C, class T1, class T2>
    +
    330 using container_simd_return_type_t = typename container_simd_return_type<C, T1, T2>::type;
    +
    331}
    +
    332
    +
    333#endif
    + +
    standard mathematical functions for xexpressions
    + + + + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xutils_8hpp_source.html b/xutils_8hpp_source.html new file mode 100644 index 000000000..e4c104bd6 --- /dev/null +++ b/xutils_8hpp_source.html @@ -0,0 +1,1197 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xutils.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xutils.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_UTILS_HPP
    +
    11#define XTENSOR_UTILS_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cmath>
    +
    16#include <complex>
    +
    17#include <cstddef>
    +
    18#include <initializer_list>
    +
    19#include <iostream>
    +
    20#include <memory>
    +
    21#include <tuple>
    +
    22#include <type_traits>
    +
    23#include <utility>
    +
    24#include <vector>
    +
    25
    +
    26#include <xtl/xfunctional.hpp>
    +
    27#include <xtl/xmeta_utils.hpp>
    +
    28#include <xtl/xsequence.hpp>
    +
    29#include <xtl/xtype_traits.hpp>
    +
    30
    +
    31#include "xtensor_config.hpp"
    +
    32
    +
    33#if (_MSC_VER >= 1910)
    +
    34#define NOEXCEPT(T)
    +
    35#else
    +
    36#define NOEXCEPT(T) noexcept(T)
    +
    37#endif
    +
    38
    +
    39namespace xt
    +
    40{
    +
    41 /****************
    +
    42 * declarations *
    +
    43 ****************/
    +
    44
    +
    45 template <class T>
    +
    46 struct remove_class;
    +
    47
    +
    48 /*template <class F, class... T>
    +
    49 void for_each(F&& f, std::tuple<T...>& t) noexcept(implementation_dependent);*/
    +
    50
    +
    51 /*template <class F, class R, class... T>
    +
    52 R accumulate(F&& f, R init, const std::tuple<T...>& t) noexcept(implementation_dependent);*/
    +
    53
    +
    54 template <std::size_t I, class... Args>
    +
    55 constexpr decltype(auto) argument(Args&&... args) noexcept;
    +
    56
    +
    57 template <class R, class F, class... S>
    +
    58 R apply(std::size_t index, F&& func, const std::tuple<S...>& s) NOEXCEPT(noexcept(func(std::get<0>(s))));
    +
    59
    +
    60 template <class T, class S>
    +
    61 void nested_copy(T&& iter, const S& s);
    +
    62
    +
    63 template <class T, class S>
    +
    64 void nested_copy(T&& iter, std::initializer_list<S> s);
    +
    65
    +
    66 template <class C>
    +
    67 bool resize_container(C& c, typename C::size_type size);
    +
    68
    +
    69 template <class T, std::size_t N>
    +
    70 bool resize_container(std::array<T, N>& a, typename std::array<T, N>::size_type size);
    +
    71
    +
    72 template <std::size_t... I>
    +
    73 class fixed_shape;
    +
    74
    +
    75 template <std::size_t... I>
    +
    76 bool resize_container(fixed_shape<I...>& a, std::size_t size);
    +
    77
    +
    78 template <class X, class C>
    + +
    80
    +
    81 template <class X, class C>
    +
    82 using rebind_container_t = typename rebind_container<X, C>::type;
    +
    83
    +
    84 std::size_t normalize_axis(std::size_t dim, std::ptrdiff_t axis);
    +
    85
    +
    86 // gcc 4.9 is affected by C++14 defect CGW 1558
    +
    87 // see http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1558
    +
    88 template <class... T>
    +
    +
    89 struct make_void
    +
    90 {
    +
    91 using type = void;
    +
    92 };
    +
    +
    93
    +
    94 template <class... T>
    +
    95 using void_t = typename make_void<T...>::type;
    +
    96
    +
    97 // This is used for non existent types (e.g. storage for some expressions
    +
    98 // like generators)
    +
    + +
    100 {
    +
    101 };
    +
    +
    102
    +
    103 template <class... T>
    +
    + +
    105 {
    +
    106 using type = invalid_type;
    +
    107 };
    +
    +
    108
    +
    109 template <class T, class R>
    +
    110 using disable_integral_t = std::enable_if_t<!xtl::is_integral<T>::value, R>;
    +
    111
    +
    112 /********************************
    +
    113 * meta identity implementation *
    +
    114 ********************************/
    +
    115
    +
    116 template <class T>
    +
    + +
    118 {
    +
    119 using type = T;
    +
    120 };
    +
    +
    121
    +
    122 /*******************************
    +
    123 * remove_class implementation *
    +
    124 *******************************/
    +
    125
    +
    126 template <class T>
    +
    + +
    128 {
    +
    129 };
    +
    +
    130
    +
    131 template <class C, class R, class... Args>
    +
    +
    132 struct remove_class<R (C::*)(Args...)>
    +
    133 {
    +
    134 typedef R type(Args...);
    +
    135 };
    +
    +
    136
    +
    137 template <class C, class R, class... Args>
    +
    +
    138 struct remove_class<R (C::*)(Args...) const>
    +
    139 {
    +
    140 typedef R type(Args...);
    +
    141 };
    +
    +
    142
    +
    143 template <class T>
    +
    144 using remove_class_t = typename remove_class<T>::type;
    +
    145
    +
    146 /***************************
    +
    147 * for_each implementation *
    +
    148 ***************************/
    +
    149
    +
    150 namespace detail
    +
    151 {
    +
    152 template <std::size_t I, class F, class... T>
    +
    153 inline typename std::enable_if<I == sizeof...(T), void>::type
    +
    154 for_each_impl(F&& /*f*/, std::tuple<T...>& /*t*/) noexcept
    +
    155 {
    +
    156 }
    +
    157
    +
    158 template <std::size_t I, class F, class... T>
    +
    159 inline typename std::enable_if < I<sizeof...(T), void>::type
    +
    160 for_each_impl(F&& f, std::tuple<T...>& t) noexcept(noexcept(f(std::get<I>(t))))
    +
    161 {
    +
    162 f(std::get<I>(t));
    +
    163 for_each_impl<I + 1, F, T...>(std::forward<F>(f), t);
    +
    164 }
    +
    165 }
    +
    166
    +
    167 template <class F, class... T>
    +
    168 inline void for_each(F&& f, std::tuple<T...>& t) noexcept(
    +
    169 noexcept(detail::for_each_impl<0, F, T...>(std::forward<F>(f), t))
    +
    170 )
    +
    171 {
    +
    172 detail::for_each_impl<0, F, T...>(std::forward<F>(f), t);
    +
    173 }
    +
    174
    +
    175 namespace detail
    +
    176 {
    +
    177 template <std::size_t I, class F, class... T>
    +
    178 inline typename std::enable_if<I == sizeof...(T), void>::type
    +
    179 for_each_impl(F&& /*f*/, const std::tuple<T...>& /*t*/) noexcept
    +
    180 {
    +
    181 }
    +
    182
    +
    183 template <std::size_t I, class F, class... T>
    +
    184 inline typename std::enable_if < I<sizeof...(T), void>::type
    +
    185 for_each_impl(F&& f, const std::tuple<T...>& t) noexcept(noexcept(f(std::get<I>(t))))
    +
    186 {
    +
    187 f(std::get<I>(t));
    +
    188 for_each_impl<I + 1, F, T...>(std::forward<F>(f), t);
    +
    189 }
    +
    190 }
    +
    191
    +
    192 template <class F, class... T>
    +
    193 inline void for_each(F&& f, const std::tuple<T...>& t) noexcept(
    +
    194 noexcept(detail::for_each_impl<0, F, T...>(std::forward<F>(f), t))
    +
    195 )
    +
    196 {
    +
    197 detail::for_each_impl<0, F, T...>(std::forward<F>(f), t);
    +
    198 }
    +
    199
    +
    200 /*****************************
    +
    201 * accumulate implementation *
    +
    202 *****************************/
    +
    203
    +
    205
    +
    206 namespace detail
    +
    207 {
    +
    208 template <std::size_t I, class F, class R, class... T>
    +
    209 inline std::enable_if_t<I == sizeof...(T), R>
    +
    210 accumulate_impl(F&& /*f*/, R init, const std::tuple<T...>& /*t*/) noexcept
    +
    211 {
    +
    212 return init;
    +
    213 }
    +
    214
    +
    215 template <std::size_t I, class F, class R, class... T>
    +
    216 inline std::enable_if_t < I<sizeof...(T), R>
    +
    217 accumulate_impl(F&& f, R init, const std::tuple<T...>& t) noexcept(noexcept(f(init, std::get<I>(t))))
    +
    218 {
    +
    219 R res = f(init, std::get<I>(t));
    +
    220 return accumulate_impl<I + 1, F, R, T...>(std::forward<F>(f), res, t);
    +
    221 }
    +
    222 }
    +
    223
    +
    224 template <class F, class R, class... T>
    +
    225 inline R accumulate(F&& f, R init, const std::tuple<T...>& t) noexcept(
    +
    226 noexcept(detail::accumulate_impl<0, F, R, T...>(std::forward<F>(f), init, t))
    +
    227 )
    +
    228 {
    +
    229 return detail::accumulate_impl<0, F, R, T...>(std::forward<F>(f), init, t);
    +
    230 }
    +
    231
    +
    233
    +
    234 /***************************
    +
    235 * argument implementation *
    +
    236 ***************************/
    +
    237
    +
    238 namespace detail
    +
    239 {
    +
    240 template <std::size_t I>
    +
    241 struct getter
    +
    242 {
    +
    243 template <class Arg, class... Args>
    +
    244 static constexpr decltype(auto) get(Arg&& /*arg*/, Args&&... args) noexcept
    +
    245 {
    +
    246 return getter<I - 1>::get(std::forward<Args>(args)...);
    +
    247 }
    +
    248 };
    +
    249
    +
    250 template <>
    +
    251 struct getter<0>
    +
    252 {
    +
    253 template <class Arg, class... Args>
    +
    254 static constexpr Arg&& get(Arg&& arg, Args&&... /*args*/) noexcept
    +
    255 {
    +
    256 return std::forward<Arg>(arg);
    +
    257 }
    +
    258 };
    +
    259 }
    +
    260
    +
    261 template <std::size_t I, class... Args>
    +
    262 constexpr decltype(auto) argument(Args&&... args) noexcept
    +
    263 {
    +
    264 static_assert(I < sizeof...(Args), "I should be lesser than sizeof...(Args)");
    +
    265 return detail::getter<I>::get(std::forward<Args>(args)...);
    +
    266 }
    +
    267
    +
    268 /************************
    +
    269 * apply implementation *
    +
    270 ************************/
    +
    271
    +
    272 namespace detail
    +
    273 {
    +
    274 template <class R, class F, std::size_t I, class... S>
    +
    275 R apply_one(F&& func, const std::tuple<S...>& s) NOEXCEPT(noexcept(func(std::get<I>(s))))
    +
    276 {
    +
    277 return static_cast<R>(func(std::get<I>(s)));
    +
    278 }
    +
    279
    +
    280 template <class R, class F, std::size_t... I, class... S>
    +
    281 R apply(std::size_t index, F&& func, std::index_sequence<I...> /*seq*/, const std::tuple<S...>& s)
    +
    282 NOEXCEPT(noexcept(func(std::get<0>(s))))
    +
    283 {
    +
    284 using FT = std::add_pointer_t<R(F&&, const std::tuple<S...>&)>;
    +
    285 static const std::array<FT, sizeof...(I)> ar = {{&apply_one<R, F, I, S...>...}};
    +
    286 return ar[index](std::forward<F>(func), s);
    +
    287 }
    +
    288 }
    +
    289
    +
    290 template <class R, class F, class... S>
    +
    291 inline R apply(std::size_t index, F&& func, const std::tuple<S...>& s)
    +
    292 NOEXCEPT(noexcept(func(std::get<0>(s))))
    +
    293 {
    +
    294 return detail::apply<R>(index, std::forward<F>(func), std::make_index_sequence<sizeof...(S)>(), s);
    +
    295 }
    +
    296
    +
    297 /***************************
    +
    298 * nested_initializer_list *
    +
    299 ***************************/
    +
    300
    +
    301 template <class T, std::size_t I>
    +
    + +
    303 {
    +
    304 using type = std::initializer_list<typename nested_initializer_list<T, I - 1>::type>;
    +
    305 };
    +
    +
    306
    +
    307 template <class T>
    +
    + +
    309 {
    +
    310 using type = T;
    +
    311 };
    +
    +
    312
    +
    313 template <class T, std::size_t I>
    +
    314 using nested_initializer_list_t = typename nested_initializer_list<T, I>::type;
    +
    315
    +
    316 /******************************
    +
    317 * nested_copy implementation *
    +
    318 ******************************/
    +
    319
    +
    320 template <class T, class S>
    +
    321 inline void nested_copy(T&& iter, const S& s)
    +
    322 {
    +
    323 *iter++ = s;
    +
    324 }
    +
    325
    +
    326 template <class T, class S>
    +
    327 inline void nested_copy(T&& iter, std::initializer_list<S> s)
    +
    328 {
    +
    329 for (auto it = s.begin(); it != s.end(); ++it)
    +
    330 {
    +
    331 nested_copy(std::forward<T>(iter), *it);
    +
    332 }
    +
    333 }
    +
    334
    +
    335 /***********************************
    +
    336 * resize_container implementation *
    +
    337 ***********************************/
    +
    338 template <class C>
    +
    339 inline bool resize_container(C& c, typename C::size_type size)
    +
    340 {
    +
    341 c.resize(size);
    +
    342 return true;
    +
    343 }
    +
    344
    +
    345 template <class T, std::size_t N>
    +
    346 inline bool resize_container(std::array<T, N>& /*a*/, typename std::array<T, N>::size_type size)
    +
    347 {
    +
    348 return size == N;
    +
    349 }
    +
    350
    +
    351 template <std::size_t... I>
    +
    352 inline bool resize_container(xt::fixed_shape<I...>&, std::size_t size)
    +
    353 {
    +
    354 return sizeof...(I) == size;
    +
    355 }
    +
    356
    +
    357 /*********************************
    +
    358 * normalize_axis implementation *
    +
    359 *********************************/
    +
    360
    +
    361 // scalar normalize axis
    +
    362 inline std::size_t normalize_axis(std::size_t dim, std::ptrdiff_t axis)
    +
    363 {
    +
    364 return axis < 0 ? static_cast<std::size_t>(static_cast<std::ptrdiff_t>(dim) + axis)
    +
    365 : static_cast<std::size_t>(axis);
    +
    366 }
    +
    367
    +
    368 template <class E, class C>
    +
    369 inline std::enable_if_t<
    +
    370 !xtl::is_integral<std::decay_t<C>>::value && xtl::is_signed<typename std::decay_t<C>::value_type>::value,
    +
    371 rebind_container_t<std::size_t, std::decay_t<C>>>
    +
    372 normalize_axis(E& expr, C&& axes)
    +
    373 {
    +
    374 rebind_container_t<std::size_t, std::decay_t<C>> res;
    +
    375 resize_container(res, axes.size());
    +
    376
    +
    377 for (std::size_t i = 0; i < axes.size(); ++i)
    +
    378 {
    +
    379 res[i] = normalize_axis(expr.dimension(), axes[i]);
    +
    380 }
    +
    381
    +
    382 XTENSOR_ASSERT(std::all_of(
    +
    383 res.begin(),
    +
    384 res.end(),
    +
    385 [&expr](auto ax_el)
    +
    386 {
    +
    387 return ax_el < expr.dimension();
    +
    388 }
    +
    389 ));
    +
    390
    +
    391 return res;
    +
    392 }
    +
    393
    +
    394 template <class C, class E>
    +
    395 inline std::enable_if_t<
    +
    396 !xtl::is_integral<std::decay_t<C>>::value && std::is_unsigned<typename std::decay_t<C>::value_type>::value,
    +
    397 C&&>
    +
    398 normalize_axis(E& expr, C&& axes)
    +
    399 {
    +
    400 static_cast<void>(expr);
    +
    401 XTENSOR_ASSERT(std::all_of(
    +
    402 axes.begin(),
    +
    403 axes.end(),
    +
    404 [&expr](auto ax_el)
    +
    405 {
    +
    406 return ax_el < expr.dimension();
    +
    407 }
    +
    408 ));
    +
    409 return std::forward<C>(axes);
    +
    410 }
    +
    411
    +
    412 template <class R, class E, class C>
    +
    413 inline auto forward_normalize(E& expr, C&& axes)
    +
    414 -> std::enable_if_t<xtl::is_signed<std::decay_t<decltype(*std::begin(axes))>>::value, R>
    +
    415 {
    +
    416 R res;
    +
    417 xt::resize_container(res, xtl::sequence_size(axes));
    +
    418 auto dim = expr.dimension();
    +
    419 std::transform(
    +
    420 std::begin(axes),
    +
    421 std::end(axes),
    +
    422 std::begin(res),
    +
    423 [&dim](auto ax_el)
    +
    424 {
    +
    425 return normalize_axis(dim, ax_el);
    +
    426 }
    +
    427 );
    +
    428
    +
    429 XTENSOR_ASSERT(std::all_of(
    +
    430 res.begin(),
    +
    431 res.end(),
    +
    432 [&expr](auto ax_el)
    +
    433 {
    +
    434 return ax_el < expr.dimension();
    +
    435 }
    +
    436 ));
    +
    437
    +
    438 return res;
    +
    439 }
    +
    440
    +
    441 template <class R, class E, class C>
    +
    442 inline auto forward_normalize(E& expr, C&& axes) -> std::enable_if_t<
    +
    443 !xtl::is_signed<std::decay_t<decltype(*std::begin(axes))>>::value && !std::is_same<R, std::decay_t<C>>::value,
    +
    444 R>
    +
    445 {
    +
    446 static_cast<void>(expr);
    +
    447
    +
    448 R res;
    +
    449 xt::resize_container(res, xtl::sequence_size(axes));
    +
    450 std::copy(std::begin(axes), std::end(axes), std::begin(res));
    +
    451 XTENSOR_ASSERT(std::all_of(
    +
    452 res.begin(),
    +
    453 res.end(),
    +
    454 [&expr](auto ax_el)
    +
    455 {
    +
    456 return ax_el < expr.dimension();
    +
    457 }
    +
    458 ));
    +
    459 return res;
    +
    460 }
    +
    461
    +
    462 template <class R, class E, class C>
    +
    463 inline auto forward_normalize(E& expr, C&& axes) -> std::enable_if_t<
    +
    464 !xtl::is_signed<std::decay_t<decltype(*std::begin(axes))>>::value && std::is_same<R, std::decay_t<C>>::value,
    +
    465 R&&>
    +
    466 {
    +
    467 static_cast<void>(expr);
    +
    468 XTENSOR_ASSERT(std::all_of(
    +
    469 std::begin(axes),
    +
    470 std::end(axes),
    +
    471 [&expr](auto ax_el)
    +
    472 {
    +
    473 return ax_el < expr.dimension();
    +
    474 }
    +
    475 ));
    +
    476 return std::move(axes);
    +
    477 }
    +
    478
    +
    479 /******************
    +
    480 * get_value_type *
    +
    481 ******************/
    +
    482
    +
    483 template <class T, class = void_t<>>
    +
    + +
    485 {
    +
    486 using type = T;
    +
    487 };
    +
    +
    488
    +
    489 template <class T>
    +
    +
    490 struct get_value_type<T, void_t<typename T::value_type>>
    +
    491 {
    +
    492 using type = typename T::value_type;
    +
    493 };
    +
    +
    494
    +
    495 template <class T>
    +
    496 using get_value_type_t = typename get_value_type<T>::type;
    +
    497
    +
    498 /**********************
    +
    499 * get implementation *
    +
    500 **********************/
    +
    501
    +
    502 // When subclassing from std::tuple not all compilers are able to correctly instantiate get
    +
    503 // See here: https://stackoverflow.com/a/37188019/2528668
    +
    504 template <std::size_t I, template <typename... Args> class T, typename... Args>
    +
    505 decltype(auto) get(T<Args...>&& v)
    +
    506 {
    +
    507 return std::get<I>(static_cast<std::tuple<Args...>&&>(v));
    +
    508 }
    +
    509
    +
    510 template <std::size_t I, template <typename... Args> class T, typename... Args>
    +
    511 decltype(auto) get(T<Args...>& v)
    +
    512 {
    +
    513 return std::get<I>(static_cast<std::tuple<Args...>&>(v));
    +
    514 }
    +
    515
    +
    516 template <std::size_t I, template <typename... Args> class T, typename... Args>
    +
    517 decltype(auto) get(const T<Args...>& v)
    +
    518 {
    +
    519 return std::get<I>(static_cast<const std::tuple<Args...>&>(v));
    +
    520 }
    +
    521
    +
    522 /***************************
    +
    523 * apply_cv implementation *
    +
    524 ***************************/
    +
    525
    +
    526 namespace detail
    +
    527 {
    +
    528 template <
    +
    529 class T,
    +
    530 class U,
    +
    531 bool = std::is_const<std::remove_reference_t<T>>::value,
    +
    532 bool = std::is_volatile<std::remove_reference_t<T>>::value>
    +
    533 struct apply_cv_impl
    +
    534 {
    +
    535 using type = U;
    +
    536 };
    +
    537
    +
    538 template <class T, class U>
    +
    539 struct apply_cv_impl<T, U, true, false>
    +
    540 {
    +
    541 using type = const U;
    +
    542 };
    +
    543
    +
    544 template <class T, class U>
    +
    545 struct apply_cv_impl<T, U, false, true>
    +
    546 {
    +
    547 using type = volatile U;
    +
    548 };
    +
    549
    +
    550 template <class T, class U>
    +
    551 struct apply_cv_impl<T, U, true, true>
    +
    552 {
    +
    553 using type = const volatile U;
    +
    554 };
    +
    555
    +
    556 template <class T, class U>
    +
    557 struct apply_cv_impl<T&, U, false, false>
    +
    558 {
    +
    559 using type = U&;
    +
    560 };
    +
    561
    +
    562 template <class T, class U>
    +
    563 struct apply_cv_impl<T&, U, true, false>
    +
    564 {
    +
    565 using type = const U&;
    +
    566 };
    +
    567
    +
    568 template <class T, class U>
    +
    569 struct apply_cv_impl<T&, U, false, true>
    +
    570 {
    +
    571 using type = volatile U&;
    +
    572 };
    +
    573
    +
    574 template <class T, class U>
    +
    575 struct apply_cv_impl<T&, U, true, true>
    +
    576 {
    +
    577 using type = const volatile U&;
    +
    578 };
    +
    579 }
    +
    580
    +
    581 template <class T, class U>
    +
    +
    582 struct apply_cv
    +
    583 {
    +
    584 using type = typename detail::apply_cv_impl<T, U>::type;
    +
    585 };
    +
    +
    586
    +
    587 template <class T, class U>
    +
    588 using apply_cv_t = typename apply_cv<T, U>::type;
    +
    589
    +
    590 /**************************
    +
    591 * to_array implementation *
    +
    592 ***************************/
    +
    593
    +
    594 namespace detail
    +
    595 {
    +
    596 template <class T, std::size_t N, std::size_t... I>
    +
    597 constexpr std::array<std::remove_cv_t<T>, N> to_array_impl(T (&a)[N], std::index_sequence<I...>)
    +
    598 {
    +
    599 return {{a[I]...}};
    +
    600 }
    +
    601 }
    +
    602
    +
    603 template <class T, std::size_t N>
    +
    604 constexpr std::array<std::remove_cv_t<T>, N> to_array(T (&a)[N])
    +
    605 {
    +
    606 return detail::to_array_impl(a, std::make_index_sequence<N>{});
    +
    607 }
    +
    608
    +
    609 /********************************
    +
    610 * sequence_size implementation *
    +
    611 ********************************/
    +
    612
    +
    613 // equivalent to std::size(c) in c++17
    +
    614 template <class C>
    +
    615 constexpr auto sequence_size(const C& c) -> decltype(c.size())
    +
    616 {
    +
    617 return c.size();
    +
    618 }
    +
    619
    +
    620 // equivalent to std::size(a) in c++17
    +
    621 template <class T, std::size_t N>
    +
    622 constexpr std::size_t sequence_size(const T (&)[N])
    +
    623 {
    +
    624 return N;
    +
    625 }
    +
    626
    +
    627 /***********************************
    +
    628 * has_storage_type implementation *
    +
    629 ***********************************/
    +
    630
    +
    631 template <class T, class = void>
    +
    +
    632 struct has_storage_type : std::false_type
    +
    633 {
    +
    634 };
    +
    +
    635
    +
    636 template <class T>
    + +
    638
    +
    639 template <class T>
    +
    +
    640 struct has_storage_type<T, void_t<typename xcontainer_inner_types<T>::storage_type>>
    +
    641 : xtl::negation<
    +
    642 std::is_same<typename std::remove_cv<typename xcontainer_inner_types<T>::storage_type>::type, invalid_type>>
    +
    643 {
    +
    644 };
    +
    +
    645
    +
    646 /*************************************
    +
    647 * has_data_interface implementation *
    +
    648 *************************************/
    +
    649
    +
    650 template <class E, class = void>
    +
    +
    651 struct has_data_interface : std::false_type
    +
    652 {
    +
    653 };
    +
    +
    654
    +
    655 template <class E>
    +
    +
    656 struct has_data_interface<E, void_t<decltype(std::declval<E>().data())>> : std::true_type
    +
    657 {
    +
    658 };
    +
    +
    659
    +
    660 template <class E, class = void>
    +
    +
    661 struct has_strides : std::false_type
    +
    662 {
    +
    663 };
    +
    +
    664
    +
    665 template <class E>
    +
    +
    666 struct has_strides<E, void_t<decltype(std::declval<E>().strides())>> : std::true_type
    +
    667 {
    +
    668 };
    +
    +
    669
    +
    670 template <class E, class = void>
    +
    +
    671 struct has_iterator_interface : std::false_type
    +
    672 {
    +
    673 };
    +
    +
    674
    +
    675 template <class E>
    +
    +
    676 struct has_iterator_interface<E, void_t<decltype(std::declval<E>().begin())>> : std::true_type
    +
    677 {
    +
    678 };
    +
    +
    679
    +
    680 /******************************
    +
    681 * is_iterator implementation *
    +
    682 ******************************/
    +
    683
    +
    684 template <class E, class = void>
    +
    +
    685 struct is_iterator : std::false_type
    +
    686 {
    +
    687 };
    +
    +
    688
    +
    689 template <class E>
    +
    + +
    691 E,
    +
    692 void_t<
    +
    693 decltype(*std::declval<const E>(), std::declval<const E>() == std::declval<const E>(), std::declval<const E>() != std::declval<const E>(), ++(*std::declval<E*>()), (*std::declval<E*>())++, std::true_type())>>
    +
    694 : std::true_type
    +
    695 {
    +
    696 };
    +
    +
    697
    +
    698 /********************************************
    +
    699 * xtrivial_default_construct implemenation *
    +
    700 ********************************************/
    +
    701
    +
    702#if defined(_GLIBCXX_RELEASE) && _GLIBCXX_RELEASE >= 7
    +
    703// has_trivial_default_constructor has not been available since libstdc++-7.
    +
    704#define XTENSOR_GLIBCXX_USE_CXX11_ABI 1
    +
    705#else
    +
    706#if defined(_GLIBCXX_USE_CXX11_ABI)
    +
    707#if _GLIBCXX_USE_CXX11_ABI || (defined(_GLIBCXX_USE_DUAL_ABI) && !_GLIBCXX_USE_DUAL_ABI)
    +
    708#define XTENSOR_GLIBCXX_USE_CXX11_ABI 1
    +
    709#endif
    +
    710#endif
    +
    711#endif
    +
    712
    +
    713#if !defined(__GNUG__) || defined(_LIBCPP_VERSION) || defined(XTENSOR_GLIBCXX_USE_CXX11_ABI)
    +
    714
    +
    715 template <class T>
    +
    716 using xtrivially_default_constructible = std::is_trivially_default_constructible<T>;
    +
    717
    +
    718#else
    +
    719
    +
    720 template <class T>
    +
    721 using xtrivially_default_constructible = std::has_trivial_default_constructor<T>;
    +
    722
    +
    723#endif
    +
    724#undef XTENSOR_GLIBCXX_USE_CXX11_ABI
    +
    725
    +
    726 /*************************
    +
    727 * conditional type cast *
    +
    728 *************************/
    +
    729
    +
    730 template <bool condition, class T>
    + +
    732
    +
    733 template <class T>
    +
    +
    734 struct conditional_cast_functor<false, T> : public xtl::identity
    +
    735 {
    +
    736 };
    +
    +
    737
    +
    738 template <class T>
    +
    + +
    740 {
    +
    741 template <class U>
    +
    742 inline auto operator()(U&& u) const
    +
    743 {
    +
    744 return static_cast<T>(std::forward<U>(u));
    +
    745 }
    +
    746 };
    +
    +
    747
    +
    756 template <bool condition, class T, class U>
    +
    +
    757 inline auto conditional_cast(U&& u)
    +
    758 {
    +
    759 return conditional_cast_functor<condition, T>()(std::forward<U>(u));
    +
    760 }
    +
    +
    761
    +
    762 /**********************
    +
    763 * tracking allocator *
    +
    764 **********************/
    +
    765
    +
    766 namespace alloc_tracking
    +
    767 {
    +
    768 inline bool& enabled()
    +
    769 {
    +
    770 static bool enabled;
    +
    771 return enabled;
    +
    772 }
    +
    773
    +
    774 inline void enable()
    +
    775 {
    +
    776 enabled() = true;
    +
    777 }
    +
    778
    +
    779 inline void disable()
    +
    780 {
    +
    781 enabled() = false;
    +
    782 }
    +
    783
    +
    784 enum policy
    +
    785 {
    +
    786 print,
    +
    787 assert
    +
    788 };
    +
    789 }
    +
    790
    +
    791 template <class T, class A, alloc_tracking::policy P>
    +
    +
    792 struct tracking_allocator : private A
    +
    793 {
    +
    794 using base_type = A;
    +
    795 using value_type = typename A::value_type;
    +
    796 using reference = typename A::reference;
    +
    797 using const_reference = typename A::const_reference;
    +
    798 using pointer = typename A::pointer;
    +
    799 using const_pointer = typename A::const_pointer;
    +
    800 using size_type = typename A::size_type;
    +
    801 using difference_type = typename A::difference_type;
    +
    802
    +
    803 tracking_allocator() = default;
    +
    804
    +
    805 T* allocate(std::size_t n)
    +
    806 {
    +
    807 if (alloc_tracking::enabled())
    +
    808 {
    +
    809 if (P == alloc_tracking::print)
    +
    810 {
    +
    811 std::cout << "xtensor allocating: " << n << "" << std::endl;
    +
    812 }
    +
    813 else if (P == alloc_tracking::assert)
    +
    814 {
    +
    815 XTENSOR_THROW(
    +
    816 std::runtime_error,
    +
    817 "xtensor allocation of " + std::to_string(n) + " elements detected"
    +
    818 );
    +
    819 }
    +
    820 }
    +
    821 return base_type::allocate(n);
    +
    822 }
    +
    823
    +
    824 using base_type::construct;
    +
    825 using base_type::deallocate;
    +
    826 using base_type::destroy;
    +
    827
    +
    828 template <class U>
    +
    +
    829 struct rebind
    +
    830 {
    +
    831 using traits = std::allocator_traits<A>;
    + +
    833 };
    +
    +
    834 };
    +
    +
    835
    +
    836 template <class T, class AT, alloc_tracking::policy PT, class U, class AU, alloc_tracking::policy PU>
    + +
    838 {
    +
    839 return std::is_same<AT, AU>::value;
    +
    840 }
    +
    841
    +
    842 template <class T, class AT, alloc_tracking::policy PT, class U, class AU, alloc_tracking::policy PU>
    +
    843 inline bool operator!=(const tracking_allocator<T, AT, PT>& a, const tracking_allocator<U, AU, PU>& b)
    +
    844 {
    +
    845 return !(a == b);
    +
    846 }
    +
    847
    +
    848 /*****************
    +
    849 * has_assign_to *
    +
    850 *****************/
    +
    851
    +
    852 template <class E1, class E2, class = void>
    +
    +
    853 struct has_assign_to : std::false_type
    +
    854 {
    +
    855 };
    +
    +
    856
    +
    857 template <class E1, class E2>
    +
    +
    858 struct has_assign_to<E1, E2, void_t<decltype(std::declval<const E2&>().assign_to(std::declval<E1&>()))>>
    +
    859 : std::true_type
    +
    860 {
    +
    861 };
    +
    +
    862
    +
    863 /********************
    +
    864 * rebind_container *
    +
    865 ********************/
    +
    866
    +
    867 template <class X, template <class, class> class C, class T, class A>
    +
    +
    868 struct rebind_container<X, C<T, A>>
    +
    869 {
    +
    870 using traits = std::allocator_traits<A>;
    +
    871 using allocator = typename traits::template rebind_alloc<X>;
    +
    872 using type = C<X, allocator>;
    +
    873 };
    +
    +
    874
    +
    875#if defined(__GNUC__) && __GNUC__ > 6 && !defined(__clang__) && __cplusplus >= 201703L
    +
    876 template <class X, class T, std::size_t N>
    +
    877 struct rebind_container<X, std::array<T, N>>
    +
    878 {
    +
    879 using type = std::array<X, N>;
    +
    880 };
    +
    881#else
    +
    882 template <class X, template <class, std::size_t> class C, class T, std::size_t N>
    +
    +
    883 struct rebind_container<X, C<T, N>>
    +
    884 {
    +
    885 using type = C<X, N>;
    +
    886 };
    +
    +
    887#endif
    +
    888
    +
    889 /********************
    +
    890 * get_strides_type *
    +
    891 ********************/
    +
    892
    +
    893 template <class S>
    +
    + +
    895 {
    +
    896 using type = typename rebind_container<std::ptrdiff_t, S>::type;
    +
    897 };
    +
    +
    898
    +
    899 template <std::size_t... I>
    +
    + +
    901 {
    +
    902 // TODO we could compute the strides statically here.
    +
    903 // But we'll need full constexpr support to have a
    +
    904 // homogenous ``compute_strides`` method
    +
    905 using type = std::array<std::ptrdiff_t, sizeof...(I)>;
    +
    906 };
    +
    +
    907
    +
    908 template <class CP, class O, class A>
    +
    909 class xbuffer_adaptor;
    +
    910
    +
    911 template <class CP, class O, class A>
    +
    + +
    913 {
    +
    914 // In bindings this mapping is called by reshape_view with an inner shape of type
    +
    915 // xbuffer_adaptor.
    +
    916 // Since we cannot create a buffer adaptor holding data, we map it to an std::vector.
    +
    917 using type = std::vector<
    +
    918 typename xbuffer_adaptor<CP, O, A>::value_type,
    +
    919 typename xbuffer_adaptor<CP, O, A>::allocator_type>;
    +
    920 };
    +
    +
    921
    +
    922
    +
    923 template <class C>
    +
    924 using get_strides_t = typename get_strides_type<C>::type;
    +
    925
    +
    926 /*******************
    +
    927 * inner_reference *
    +
    928 *******************/
    +
    929
    +
    930 template <class ST>
    +
    + +
    932 {
    +
    933 using storage_type = std::decay_t<ST>;
    +
    934 using type = std::conditional_t<
    +
    935 std::is_const<std::remove_reference_t<ST>>::value,
    +
    936 typename storage_type::const_reference,
    +
    937 typename storage_type::reference>;
    +
    938 };
    +
    +
    939
    +
    940 template <class ST>
    +
    941 using inner_reference_t = typename inner_reference<ST>::type;
    +
    942
    +
    943 /************
    +
    944 * get_rank *
    +
    945 ************/
    +
    946
    +
    947 template <class E, typename = void>
    +
    +
    948 struct get_rank
    +
    949 {
    +
    950 static constexpr std::size_t value = SIZE_MAX;
    +
    951 };
    +
    +
    952
    +
    953 template <class E>
    +
    +
    954 struct get_rank<E, decltype((void) E::rank, void())>
    +
    955 {
    +
    956 static constexpr std::size_t value = E::rank;
    +
    957 };
    +
    +
    958
    +
    959 /******************
    +
    960 * has_fixed_rank *
    +
    961 ******************/
    +
    962
    +
    963 template <class E>
    +
    + +
    965 {
    +
    966 using type = std::integral_constant<bool, get_rank<std::decay_t<E>>::value != SIZE_MAX>;
    +
    967 };
    +
    +
    968
    +
    969 template <class E>
    +
    970 using has_fixed_rank_t = typename has_fixed_rank<std::decay_t<E>>::type;
    +
    971
    +
    972 /************
    +
    973 * has_rank *
    +
    974 ************/
    +
    975
    +
    976 template <class E, size_t N>
    +
    +
    977 struct has_rank
    +
    978 {
    +
    979 using type = std::integral_constant<bool, get_rank<std::decay_t<E>>::value == N>;
    +
    980 };
    +
    +
    981
    +
    982 template <class E, size_t N>
    +
    983 using has_rank_t = typename has_rank<std::decay_t<E>, N>::type;
    +
    984
    +
    985}
    +
    986
    +
    987#endif
    +
    Fixed shape implementation for compile time defined arrays.
    + +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    bool operator==(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks equality of the iterators.
    +
    auto accumulate(F &&f, E &&e, EVS evaluation_strategy=EVS())
    Accumulate and flatten array NOTE This function is not lazy!
    +
    bool operator!=(const xaxis_iterator< CT > &lhs, const xaxis_iterator< CT > &rhs)
    Checks inequality of the iterators.
    +
    auto conditional_cast(U &&u)
    Perform a type cast when a condition is true.
    Definition xutils.hpp:757
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + diff --git a/xvectorize_8hpp_source.html b/xvectorize_8hpp_source.html new file mode 100644 index 000000000..4ce1b74e9 --- /dev/null +++ b/xvectorize_8hpp_source.html @@ -0,0 +1,219 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xvectorize.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xvectorize.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_VECTORIZE_HPP
    +
    11#define XTENSOR_VECTORIZE_HPP
    +
    12
    +
    13#include <type_traits>
    +
    14#include <utility>
    +
    15
    +
    16#include "xfunction.hpp"
    +
    17#include "xutils.hpp"
    +
    18
    +
    19namespace xt
    +
    20{
    +
    21
    +
    22 /***************
    +
    23 * xvectorizer *
    +
    24 ***************/
    +
    25
    +
    26 template <class F, class R>
    +
    + +
    28 {
    +
    29 public:
    +
    30
    +
    31 template <class... E>
    + +
    33
    +
    34 template <class Func, class = std::enable_if_t<!std::is_same<std::decay_t<Func>, xvectorizer>::value>>
    +
    35 xvectorizer(Func&& f);
    +
    36
    +
    37 template <class... E>
    +
    38 xfunction_type<E...> operator()(E&&... e) const;
    +
    39
    +
    40 private:
    +
    41
    +
    42 typename std::remove_reference<F>::type m_f;
    +
    43 };
    +
    +
    44
    +
    45 namespace detail
    +
    46 {
    +
    47 template <class F>
    +
    48 using get_function_type = remove_class_t<decltype(&std::remove_reference_t<F>::operator())>;
    +
    49 }
    +
    50
    +
    51 template <class R, class... Args>
    +
    52 xvectorizer<R (*)(Args...), R> vectorize(R (*f)(Args...));
    +
    53
    +
    54 template <class F, class R, class... Args>
    +
    55 xvectorizer<F, R> vectorize(F&& f, R (*)(Args...));
    +
    56
    +
    57// Workaround for Visual Studio 15.7.1.
    +
    58// Error C2668 (ambiguous call to overloaded function) mistaking a declarations
    +
    59// for the definition of another overload.
    +
    60#ifndef _MSC_VER
    +
    61 template <class F>
    +
    62 auto vectorize(F&& f)
    +
    63 -> decltype(vectorize(std::forward<F>(f), std::declval<detail::get_function_type<F>*>()));
    +
    64#endif
    +
    65
    +
    66 /******************************
    +
    67 * xvectorizer implementation *
    +
    68 ******************************/
    +
    69
    +
    70 template <class F, class R>
    +
    71 template <class Func, class>
    +
    72 inline xvectorizer<F, R>::xvectorizer(Func&& f)
    +
    73 : m_f(std::forward<Func>(f))
    +
    74 {
    +
    75 }
    +
    76
    +
    77 template <class F, class R>
    +
    78 template <class... E>
    +
    79 inline auto xvectorizer<F, R>::operator()(E&&... e) const -> xfunction_type<E...>
    +
    80 {
    +
    81 return xfunction_type<E...>(m_f, std::forward<E>(e)...);
    +
    82 }
    +
    83
    +
    84 template <class R, class... Args>
    +
    85 inline xvectorizer<R (*)(Args...), R> vectorize(R (*f)(Args...))
    +
    86 {
    +
    87 return xvectorizer<R (*)(Args...), R>(f);
    +
    88 }
    +
    89
    +
    90 template <class F, class R, class... Args>
    +
    91 inline xvectorizer<F, R> vectorize(F&& f, R (*)(Args...))
    +
    92 {
    +
    93 return xvectorizer<F, R>(std::forward<F>(f));
    +
    94 }
    +
    95
    +
    96 template <class F>
    +
    97 inline auto vectorize(F&& f)
    +
    98 -> decltype(vectorize(std::forward<F>(f), std::declval<detail::get_function_type<F>*>()))
    +
    99 {
    +
    100 return vectorize(std::forward<F>(f), static_cast<detail::get_function_type<F>*>(nullptr));
    +
    101 }
    +
    102}
    +
    103
    +
    104#endif
    +
    Multidimensional function operating on xtensor expressions.
    + +
    standard mathematical functions for xexpressions
    +
    +
    + + + + diff --git a/xview_8hpp_source.html b/xview_8hpp_source.html new file mode 100644 index 000000000..19c06022a --- /dev/null +++ b/xview_8hpp_source.html @@ -0,0 +1,2358 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xview.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xview.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_VIEW_HPP
    +
    11#define XTENSOR_VIEW_HPP
    +
    12
    +
    13#include <algorithm>
    +
    14#include <array>
    +
    15#include <cstddef>
    +
    16#include <tuple>
    +
    17#include <type_traits>
    +
    18#include <utility>
    +
    19
    +
    20#include <xtl/xclosure.hpp>
    +
    21#include <xtl/xmeta_utils.hpp>
    +
    22#include <xtl/xsequence.hpp>
    +
    23#include <xtl/xtype_traits.hpp>
    +
    24
    +
    25#include "xaccessible.hpp"
    +
    26#include "xarray.hpp"
    +
    27#include "xbroadcast.hpp"
    +
    28#include "xcontainer.hpp"
    +
    29#include "xiterable.hpp"
    +
    30#include "xsemantic.hpp"
    +
    31#include "xslice.hpp"
    +
    32#include "xtensor.hpp"
    +
    33#include "xtensor_config.hpp"
    +
    34#include "xtensor_forward.hpp"
    +
    35#include "xview_utils.hpp"
    +
    36
    +
    37namespace xt
    +
    38{
    +
    39
    +
    40 /*******************
    +
    41 * xview extension *
    +
    42 *******************/
    +
    43
    +
    44 namespace extension
    +
    45 {
    +
    46 template <class Tag, class CT, class... S>
    + +
    48
    +
    49 template <class CT, class... S>
    +
    + +
    51 {
    + +
    53 };
    +
    +
    54
    +
    55 template <class CT, class... S>
    +
    +
    56 struct xview_base : xview_base_impl<xexpression_tag_t<CT>, CT, S...>
    +
    57 {
    +
    58 };
    +
    +
    59
    +
    60 template <class CT, class... S>
    +
    61 using xview_base_t = typename xview_base<CT, S...>::type;
    +
    62 }
    +
    63
    +
    64 /*********************
    +
    65 * xview declaration *
    +
    66 *********************/
    +
    67
    +
    68 template <bool is_const, class CT, class... S>
    +
    69 class xview_stepper;
    +
    70
    +
    71 template <class ST, class... S>
    +
    72 struct xview_shape_type;
    +
    73
    +
    74 namespace detail
    +
    75 {
    +
    76
    +
    77 template <class T>
    +
    78 struct is_xrange : std::false_type
    +
    79 {
    +
    80 };
    +
    81
    +
    82 template <class T>
    +
    83 struct is_xrange<xrange<T>> : std::true_type
    +
    84 {
    +
    85 };
    +
    86
    +
    87 template <class S>
    +
    88 struct is_xall_slice : std::false_type
    +
    89 {
    +
    90 };
    +
    91
    +
    92 template <class T>
    +
    93 struct is_xall_slice<xall<T>> : std::true_type
    +
    94 {
    +
    95 };
    +
    96
    +
    97 template <layout_type L, bool valid, bool all_seen, bool range_seen, class V>
    +
    98 struct is_contiguous_view_impl
    +
    99 {
    +
    100 static constexpr bool value = false;
    +
    101 };
    +
    102
    +
    103 template <class T>
    +
    104 struct static_dimension
    +
    105 {
    +
    106 static constexpr std::ptrdiff_t value = -1;
    +
    107 };
    +
    108
    +
    109 template <class T, std::size_t N>
    +
    110 struct static_dimension<std::array<T, N>>
    +
    111 {
    +
    112 static constexpr std::ptrdiff_t value = static_cast<std::ptrdiff_t>(N);
    +
    113 };
    +
    114
    +
    115 template <class T, std::size_t N>
    +
    116 struct static_dimension<xt::const_array<T, N>>
    +
    117 {
    +
    118 static constexpr std::ptrdiff_t value = static_cast<std::ptrdiff_t>(N);
    +
    119 };
    +
    120
    +
    121 template <std::size_t... I>
    +
    122 struct static_dimension<xt::fixed_shape<I...>>
    +
    123 {
    +
    124 static constexpr std::ptrdiff_t value = sizeof...(I);
    +
    125 };
    +
    126
    +
    127 // if we have the same number of integers as we have static dimensions
    +
    128 // this can be interpreted like a xscalar
    +
    129 template <class CT, class... S>
    +
    130 struct is_xscalar_impl<xview<CT, S...>>
    +
    131 {
    +
    132 static constexpr bool value = static_cast<std::ptrdiff_t>(integral_count<S...>()
    +
    133 ) == static_dimension<typename std::decay_t<CT>::shape_type>::value
    +
    134 ? true
    +
    135 : false;
    +
    136 };
    +
    137
    +
    138 template <class S>
    +
    139 struct is_strided_slice_impl : std::true_type
    +
    140 {
    +
    141 };
    +
    142
    +
    143 template <class T>
    +
    144 struct is_strided_slice_impl<xkeep_slice<T>> : std::false_type
    +
    145 {
    +
    146 };
    +
    147
    +
    148 template <class T>
    +
    149 struct is_strided_slice_impl<xdrop_slice<T>> : std::false_type
    +
    150 {
    +
    151 };
    +
    152
    +
    153 // If we have no discontiguous slices, we can calculate strides for this view.
    +
    154 template <class E, class... S>
    +
    155 struct is_strided_view
    +
    156 : std::integral_constant<
    +
    157 bool,
    +
    158 xtl::conjunction<has_data_interface<E>, is_strided_slice_impl<std::decay_t<S>>...>::value>
    +
    159 {
    +
    160 };
    +
    161
    +
    162 // if row major the view can only be (statically) computed as contiguous if:
    +
    163 // any number of integers is followed by either one or no range which
    +
    164 // are followed by explicit (or implicit) all's
    +
    165 //
    +
    166 // e.g.
    +
    167 // (i, j, all(), all()) == contiguous
    +
    168 // (i, range(0, 2), all()) == contiguous
    +
    169 // (i) == contiguous (implicit all slices)
    +
    170 // (i, all(), j) == *not* contiguous
    +
    171 // (i, range(0, 2), range(0, 2)) == *not* contiguous etc.
    +
    172 template <bool valid, bool all_seen, bool range_seen, class V>
    +
    173 struct is_contiguous_view_impl<layout_type::row_major, valid, all_seen, range_seen, V>
    +
    174 {
    +
    175 using slice = xtl::mpl::front_t<V>;
    +
    176 static constexpr bool is_range_slice = is_xrange<slice>::value;
    +
    177 static constexpr bool is_int_slice = xtl::is_integral<slice>::value;
    +
    178 static constexpr bool is_all_slice = is_xall_slice<slice>::value;
    +
    179 static constexpr bool have_all_seen = all_seen || is_all_slice;
    +
    180 static constexpr bool have_range_seen = is_range_slice;
    +
    181
    +
    182 static constexpr bool is_valid = valid
    +
    183 && (have_all_seen
    +
    184 ? is_all_slice
    +
    185 : (!range_seen && (is_int_slice || is_range_slice)));
    +
    186
    +
    187 static constexpr bool value = is_contiguous_view_impl < layout_type::row_major, is_valid,
    +
    188 have_all_seen, range_seen || is_range_slice,
    +
    189 xtl::mpl::pop_front_t < V >> ::value;
    +
    190 };
    +
    191
    +
    192 template <bool valid, bool all_seen, bool range_seen>
    +
    193 struct is_contiguous_view_impl<layout_type::row_major, valid, all_seen, range_seen, xtl::mpl::vector<>>
    +
    194 {
    +
    195 static constexpr bool value = valid;
    +
    196 };
    +
    197
    +
    198 // For column major the *same* but reverse is true -- with the additional
    +
    199 // constraint that we have to know the dimension at compile time otherwise
    +
    200 // we cannot make the decision as there might be implicit all's following.
    +
    201 template <bool valid, bool int_seen, bool range_seen, class V>
    +
    202 struct is_contiguous_view_impl<layout_type::column_major, valid, int_seen, range_seen, V>
    +
    203 {
    +
    204 using slice = xtl::mpl::front_t<V>;
    +
    205 static constexpr bool is_range_slice = is_xrange<slice>::value;
    +
    206 static constexpr bool is_int_slice = xtl::is_integral<slice>::value;
    +
    207 static constexpr bool is_all_slice = is_xall_slice<slice>::value;
    +
    208
    +
    209 static constexpr bool have_int_seen = int_seen || is_int_slice;
    +
    210
    +
    211 static constexpr bool is_valid = valid
    +
    212 && (have_int_seen
    +
    213 ? is_int_slice
    +
    214 : (!range_seen && (is_all_slice || is_range_slice)));
    +
    215 static constexpr bool value = is_contiguous_view_impl < layout_type::column_major, is_valid,
    +
    216 have_int_seen, is_range_slice || range_seen,
    +
    217 xtl::mpl::pop_front_t < V >> ::value;
    +
    218 };
    +
    219
    +
    220 template <bool valid, bool int_seen, bool range_seen>
    +
    221 struct is_contiguous_view_impl<layout_type::column_major, valid, int_seen, range_seen, xtl::mpl::vector<>>
    +
    222 {
    +
    223 static constexpr bool value = valid;
    +
    224 };
    +
    225
    +
    226 // TODO relax has_data_interface constraint here!
    +
    227 template <class E, class... S>
    +
    228 struct is_contiguous_view
    +
    229 : std::integral_constant<
    +
    230 bool,
    +
    231 has_data_interface<E>::value
    +
    232 && !(
    +
    233 E::static_layout == layout_type::column_major
    +
    234 && static_cast<std::size_t>(static_dimension<typename E::shape_type>::value) != sizeof...(S)
    +
    235 )
    +
    236 && is_contiguous_view_impl<E::static_layout, true, false, false, xtl::mpl::vector<S...>>::value>
    +
    237 {
    +
    238 };
    +
    239
    +
    240 template <layout_type L, class T, std::ptrdiff_t offset>
    +
    241 struct unwrap_offset_container
    +
    242 {
    +
    243 using type = void;
    +
    244 };
    +
    245
    +
    246 template <class T, std::ptrdiff_t offset>
    +
    247 struct unwrap_offset_container<layout_type::row_major, T, offset>
    +
    248 {
    +
    249 using type = sequence_view<T, offset, static_dimension<T>::value>;
    +
    250 };
    +
    251
    +
    252 template <class T, std::ptrdiff_t start, std::ptrdiff_t end, std::ptrdiff_t offset>
    +
    253 struct unwrap_offset_container<layout_type::row_major, sequence_view<T, start, end>, offset>
    +
    254 {
    +
    255 using type = sequence_view<T, start + offset, end>;
    +
    256 };
    +
    257
    +
    258 template <class T, std::ptrdiff_t offset>
    +
    259 struct unwrap_offset_container<layout_type::column_major, T, offset>
    +
    260 {
    +
    261 using type = sequence_view<T, 0, static_dimension<T>::value - offset>;
    +
    262 };
    +
    263
    +
    264 template <class T, std::ptrdiff_t start, std::ptrdiff_t end, std::ptrdiff_t offset>
    +
    265 struct unwrap_offset_container<layout_type::column_major, sequence_view<T, start, end>, offset>
    +
    266 {
    +
    267 using type = sequence_view<T, start, end - offset>;
    +
    268 };
    +
    269
    +
    270 template <class E, class... S>
    +
    271 struct get_contigous_shape_type
    +
    272 {
    +
    273 // if we have no `range` in the slices we can re-use the shape with an offset
    +
    274 using type = std::conditional_t<
    +
    275 xtl::disjunction<is_xrange<S>...>::value,
    +
    276 typename xview_shape_type<typename E::shape_type, S...>::type,
    +
    277 // In the false branch we know that we have only integers at the front OR end, and NO range
    +
    278 typename unwrap_offset_container<E::static_layout, typename E::inner_shape_type, integral_count<S...>()>::type>;
    +
    279 };
    +
    280
    +
    281 template <class T>
    +
    282 struct is_sequence_view : std::integral_constant<bool, false>
    +
    283 {
    +
    284 };
    +
    285
    +
    286 template <class T, std::ptrdiff_t S, std::ptrdiff_t E>
    +
    287 struct is_sequence_view<sequence_view<T, S, E>> : std::integral_constant<bool, true>
    +
    288 {
    +
    289 };
    +
    290 }
    +
    291
    +
    292 template <class CT, class... S>
    +
    + +
    294 {
    +
    295 using xexpression_type = std::decay_t<CT>;
    +
    296 using reference = inner_reference_t<CT>;
    +
    297 using const_reference = typename xexpression_type::const_reference;
    +
    298 using size_type = typename xexpression_type::size_type;
    +
    299 using temporary_type = view_temporary_type_t<xexpression_type, S...>;
    +
    300
    +
    301 static constexpr layout_type layout = detail::is_contiguous_view<xexpression_type, S...>::value
    +
    302 ? xexpression_type::static_layout
    + +
    304
    +
    305 static constexpr bool is_const = std::is_const<std::remove_reference_t<CT>>::value;
    +
    306
    +
    307 using extract_storage_type = xtl::mpl::eval_if_t<
    + +
    309 detail::expr_storage_type<xexpression_type>,
    + +
    311 using storage_type = std::conditional_t<is_const, const extract_storage_type, extract_storage_type>;
    +
    312 };
    +
    +
    313
    +
    314 template <class CT, class... S>
    +
    +
    315 struct xiterable_inner_types<xview<CT, S...>>
    +
    316 {
    +
    317 using xexpression_type = std::decay_t<CT>;
    +
    318
    +
    319 static constexpr bool is_strided_view = detail::is_strided_view<xexpression_type, S...>::value;
    +
    320 static constexpr bool is_contiguous_view = detail::is_contiguous_view<xexpression_type, S...>::value;
    +
    321
    +
    322 using inner_shape_type = std::conditional_t<
    +
    323 is_contiguous_view,
    +
    324 typename detail::get_contigous_shape_type<xexpression_type, S...>::type,
    +
    325 typename xview_shape_type<typename xexpression_type::shape_type, S...>::type>;
    +
    326
    +
    327 using stepper = std::conditional_t<
    +
    328 is_strided_view,
    +
    329 xstepper<xview<CT, S...>>,
    + +
    331
    +
    332 using const_stepper = std::conditional_t<
    +
    333 is_strided_view,
    +
    334 xstepper<const xview<CT, S...>>,
    + +
    336 };
    +
    +
    337
    +
    352 template <class CT, class... S>
    +
    +
    353 class xview : public xview_semantic<xview<CT, S...>>,
    +
    354 public std::conditional_t<
    +
    355 detail::is_contiguous_view<std::decay_t<CT>, S...>::value,
    +
    356 xcontiguous_iterable<xview<CT, S...>>,
    +
    357 xiterable<xview<CT, S...>>>,
    +
    358 public xaccessible<xview<CT, S...>>,
    +
    359 public extension::xview_base_t<CT, S...>
    +
    360 {
    +
    361 public:
    +
    362
    +
    363 using self_type = xview<CT, S...>;
    + +
    365 using xexpression_type = std::decay_t<CT>;
    + +
    367 using temporary_type = typename xcontainer_inner_types<self_type>::temporary_type;
    +
    368
    + +
    370 using extension_base = extension::xview_base_t<CT, S...>;
    +
    371 using expression_tag = typename extension_base::expression_tag;
    +
    372
    +
    373 static constexpr bool is_const = std::is_const<std::remove_reference_t<CT>>::value;
    +
    374 using value_type = typename xexpression_type::value_type;
    +
    375 using simd_value_type = xt_simd::simd_type<value_type>;
    +
    376 using bool_load_type = typename xexpression_type::bool_load_type;
    +
    377 using reference = typename inner_types::reference;
    +
    378 using const_reference = typename inner_types::const_reference;
    +
    379 using pointer = std::
    +
    380 conditional_t<is_const, typename xexpression_type::const_pointer, typename xexpression_type::pointer>;
    +
    381 using const_pointer = typename xexpression_type::const_pointer;
    +
    382 using size_type = typename inner_types::size_type;
    +
    383 using difference_type = typename xexpression_type::difference_type;
    +
    384
    +
    385 static constexpr layout_type static_layout = inner_types::layout;
    +
    386 static constexpr bool contiguous_layout = static_layout != layout_type::dynamic;
    +
    387
    +
    388 static constexpr bool is_strided_view = detail::is_strided_view<xexpression_type, S...>::value;
    +
    389 static constexpr bool is_contiguous_view = contiguous_layout;
    +
    390
    + +
    392 using inner_shape_type = typename iterable_base::inner_shape_type;
    +
    393 using shape_type = typename xview_shape_type<typename xexpression_type::shape_type, S...>::type;
    +
    394
    +
    395 using xexpression_inner_strides_type = xtl::mpl::eval_if_t<
    + +
    397 detail::expr_inner_strides_type<xexpression_type>,
    + +
    399
    +
    400 using xexpression_inner_backstrides_type = xtl::mpl::eval_if_t<
    + +
    402 detail::expr_inner_backstrides_type<xexpression_type>,
    + +
    404
    +
    405 using storage_type = typename inner_types::storage_type;
    +
    406
    +
    407 static constexpr bool has_trivial_strides = is_contiguous_view
    +
    408 && !xtl::disjunction<detail::is_xrange<S>...>::value;
    +
    409 using inner_strides_type = std::conditional_t<
    +
    410 has_trivial_strides,
    +
    411 typename detail::unwrap_offset_container<
    +
    412 xexpression_type::static_layout,
    +
    413 xexpression_inner_strides_type,
    +
    414 integral_count<S...>()>::type,
    +
    415 get_strides_t<shape_type>>;
    +
    416
    +
    417 using inner_backstrides_type = std::conditional_t<
    +
    418 has_trivial_strides,
    +
    419 typename detail::unwrap_offset_container<
    +
    420 xexpression_type::static_layout,
    +
    421 xexpression_inner_backstrides_type,
    +
    422 integral_count<S...>()>::type,
    +
    423 get_strides_t<shape_type>>;
    +
    424
    +
    425 using strides_type = get_strides_t<shape_type>;
    +
    426 using backstrides_type = strides_type;
    +
    427
    +
    428
    +
    429 using slice_type = std::tuple<S...>;
    +
    430
    +
    431 using stepper = typename iterable_base::stepper;
    +
    432 using const_stepper = typename iterable_base::const_stepper;
    +
    433
    +
    434 using linear_iterator = std::conditional_t<
    + +
    436 std::conditional_t<is_const, typename xexpression_type::const_linear_iterator, typename xexpression_type::linear_iterator>,
    +
    437 typename iterable_base::linear_iterator>;
    +
    438 using const_linear_iterator = std::conditional_t<
    + +
    440 typename xexpression_type::const_linear_iterator,
    + +
    442
    +
    443 using reverse_linear_iterator = std::reverse_iterator<linear_iterator>;
    +
    444 using const_reverse_linear_iterator = std::reverse_iterator<const_linear_iterator>;
    +
    445
    +
    446 using container_iterator = pointer;
    +
    447 using const_container_iterator = const_pointer;
    +
    448 static constexpr std::size_t rank = SIZE_MAX;
    +
    449
    +
    450 // The FSL argument prevents the compiler from calling this constructor
    +
    451 // instead of the copy constructor when sizeof...(SL) == 0.
    +
    452 template <class CTA, class FSL, class... SL>
    +
    453 explicit xview(CTA&& e, FSL&& first_slice, SL&&... slices) noexcept;
    +
    454
    +
    455 xview(const xview&) = default;
    +
    456 self_type& operator=(const xview& rhs);
    +
    457
    +
    458 template <class E>
    +
    459 self_type& operator=(const xexpression<E>& e);
    +
    460
    +
    461 template <class E>
    +
    462 disable_xexpression<E, self_type>& operator=(const E& e);
    +
    463
    +
    464 const inner_shape_type& shape() const noexcept;
    +
    465 const slice_type& slices() const noexcept;
    +
    466 layout_type layout() const noexcept;
    +
    467 bool is_contiguous() const noexcept;
    + +
    469
    +
    470 template <class T>
    +
    471 void fill(const T& value);
    +
    472
    +
    473 template <class... Args>
    +
    474 reference operator()(Args... args);
    +
    475 template <class... Args>
    +
    476 reference unchecked(Args... args);
    +
    477 template <class It>
    +
    478 reference element(It first, It last);
    +
    479
    +
    480 template <class... Args>
    +
    481 const_reference operator()(Args... args) const;
    +
    482 template <class... Args>
    +
    483 const_reference unchecked(Args... args) const;
    +
    484 template <class It>
    +
    485 const_reference element(It first, It last) const;
    +
    486
    +
    487 xexpression_type& expression() noexcept;
    +
    488 const xexpression_type& expression() const noexcept;
    +
    489
    +
    490 template <class ST>
    +
    491 bool broadcast_shape(ST& shape, bool reuse_cache = false) const;
    +
    492
    +
    493 template <class ST>
    +
    494 bool has_linear_assign(const ST& strides) const;
    +
    495
    +
    496 template <class ST, bool Enable = is_strided_view>
    +
    497 std::enable_if_t<!Enable, stepper> stepper_begin(const ST& shape);
    +
    498 template <class ST, bool Enable = is_strided_view>
    +
    499 std::enable_if_t<!Enable, stepper> stepper_end(const ST& shape, layout_type l);
    +
    500
    +
    501 template <class ST, bool Enable = is_strided_view>
    +
    502 std::enable_if_t<!Enable, const_stepper> stepper_begin(const ST& shape) const;
    +
    503 template <class ST, bool Enable = is_strided_view>
    +
    504 std::enable_if_t<!Enable, const_stepper> stepper_end(const ST& shape, layout_type l) const;
    +
    505
    +
    506 template <class ST, bool Enable = is_strided_view>
    +
    507 std::enable_if_t<Enable, stepper> stepper_begin(const ST& shape);
    +
    508 template <class ST, bool Enable = is_strided_view>
    +
    509 std::enable_if_t<Enable, stepper> stepper_end(const ST& shape, layout_type l);
    +
    510
    +
    511 template <class ST, bool Enable = is_strided_view>
    +
    512 std::enable_if_t<Enable, const_stepper> stepper_begin(const ST& shape) const;
    +
    513 template <class ST, bool Enable = is_strided_view>
    +
    514 std::enable_if_t<Enable, const_stepper> stepper_end(const ST& shape, layout_type l) const;
    +
    515
    +
    516 template <class T = xexpression_type>
    +
    517 std::enable_if_t<has_data_interface<T>::value, storage_type&> storage();
    +
    518
    +
    519 template <class T = xexpression_type>
    +
    520 std::enable_if_t<has_data_interface<T>::value, const storage_type&> storage() const;
    +
    521
    +
    522 template <class T = xexpression_type>
    +
    523 std::enable_if_t<has_data_interface<T>::value && is_strided_view, linear_iterator> linear_begin();
    +
    524
    +
    525 template <class T = xexpression_type>
    +
    526 std::enable_if_t<has_data_interface<T>::value && is_strided_view, linear_iterator> linear_end();
    +
    527
    +
    528 template <class T = xexpression_type>
    +
    529 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    530 linear_begin() const;
    +
    531
    +
    532 template <class T = xexpression_type>
    +
    533 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    534 linear_end() const;
    +
    535
    +
    536 template <class T = xexpression_type>
    +
    537 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    538 linear_cbegin() const;
    +
    539
    +
    540 template <class T = xexpression_type>
    +
    541 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    542 linear_cend() const;
    +
    543
    +
    544 template <class T = xexpression_type>
    +
    545 std::enable_if_t<has_data_interface<T>::value && is_strided_view, reverse_linear_iterator>
    +
    546 linear_rbegin();
    +
    547
    +
    548 template <class T = xexpression_type>
    +
    549 std::enable_if_t<has_data_interface<T>::value && is_strided_view, reverse_linear_iterator>
    +
    550 linear_rend();
    +
    551
    +
    552 template <class T = xexpression_type>
    +
    553 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    554 linear_rbegin() const;
    +
    555
    +
    556 template <class T = xexpression_type>
    +
    557 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    558 linear_rend() const;
    +
    559
    +
    560 template <class T = xexpression_type>
    +
    561 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    562 linear_crbegin() const;
    +
    563
    +
    564 template <class T = xexpression_type>
    +
    565 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    566 linear_crend() const;
    +
    567
    +
    568 template <class T = xexpression_type>
    +
    569 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const inner_strides_type&>
    +
    570 strides() const;
    +
    571
    +
    572 template <class T = xexpression_type>
    +
    573 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const inner_strides_type&>
    +
    574 backstrides() const;
    +
    575
    +
    576 template <class T = xexpression_type>
    +
    577 std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_pointer> data() const;
    +
    578
    +
    579 template <class T = xexpression_type>
    +
    580 std::enable_if_t<has_data_interface<T>::value && is_strided_view, pointer> data();
    +
    581
    +
    582 template <class T = xexpression_type>
    +
    583 std::enable_if_t<has_data_interface<T>::value && is_strided_view, std::size_t>
    +
    584 data_offset() const noexcept;
    +
    585
    +
    586 template <class It>
    +
    587 inline It data_xbegin_impl(It begin) const noexcept;
    +
    588
    +
    589 template <class It>
    +
    590 inline It data_xend_impl(It begin, layout_type l, size_type offset) const noexcept;
    +
    591 inline container_iterator data_xbegin() noexcept;
    +
    592 inline const_container_iterator data_xbegin() const noexcept;
    +
    593 inline container_iterator data_xend(layout_type l, size_type offset) noexcept;
    +
    594
    +
    595 inline const_container_iterator data_xend(layout_type l, size_type offset) const noexcept;
    +
    596
    +
    597 // Conversion operator enabled for statically "scalar" views
    +
    598 template <class ST = self_type, class = std::enable_if_t<is_xscalar<std::decay_t<ST>>::value, int>>
    +
    599 operator reference()
    +
    600 {
    +
    601 return (*this)();
    +
    602 }
    +
    603
    +
    604 template <class ST = self_type, class = std::enable_if_t<is_xscalar<std::decay_t<ST>>::value, int>>
    +
    605 operator const_reference() const
    +
    606 {
    +
    607 return (*this)();
    +
    608 }
    +
    609
    +
    610 size_type underlying_size(size_type dim) const;
    +
    611
    +
    612 xtl::xclosure_pointer<self_type&> operator&() &;
    +
    613 xtl::xclosure_pointer<const self_type&> operator&() const&;
    +
    614 xtl::xclosure_pointer<self_type> operator&() &&;
    +
    615
    +
    616 template <
    +
    617 class E,
    +
    618 class T = xexpression_type,
    +
    619 class = std::enable_if_t<has_data_interface<T>::value && is_contiguous_view, int>>
    +
    620 void assign_to(xexpression<E>& e, bool force_resize) const;
    +
    621
    +
    622 template <class E>
    +
    623 using rebind_t = xview<E, S...>;
    +
    624
    +
    625 template <class E>
    +
    626 rebind_t<E> build_view(E&& e) const;
    +
    627
    +
    628 //
    +
    629 // SIMD interface
    +
    630 //
    +
    631
    +
    632 template <class requested_type>
    +
    633 using simd_return_type = xt_simd::simd_return_type<value_type, requested_type>;
    +
    634
    +
    635 template <class T, class R>
    +
    636 using enable_simd_interface = std::enable_if_t<has_simd_interface<T>::value && is_strided_view, R>;
    +
    637
    +
    638 template <class align, class simd, class T = xexpression_type>
    +
    639 enable_simd_interface<T, void> store_simd(size_type i, const simd& e);
    +
    640
    +
    641 template <
    +
    642 class align,
    +
    643 class requested_type = value_type,
    + +
    645 class T = xexpression_type>
    +
    646 enable_simd_interface<T, simd_return_type<requested_type>> load_simd(size_type i) const;
    +
    647
    +
    648 template <class T = xexpression_type>
    +
    649 enable_simd_interface<T, reference> data_element(size_type i);
    +
    650
    +
    651 template <class T = xexpression_type>
    +
    652 enable_simd_interface<T, const_reference> data_element(size_type i) const;
    +
    653
    +
    654 template <class T = xexpression_type>
    +
    655 enable_simd_interface<T, reference> flat(size_type i);
    +
    656
    +
    657 template <class T = xexpression_type>
    +
    658 enable_simd_interface<T, const_reference> flat(size_type i) const;
    +
    659
    +
    660 private:
    +
    661
    +
    662 // VS 2015 workaround (yes, really)
    +
    663 template <std::size_t I>
    +
    664 struct lesser_condition
    +
    665 {
    +
    666 static constexpr bool value = (I + newaxis_count_before<S...>(I + 1) < sizeof...(S));
    +
    667 };
    +
    668
    +
    669 CT m_e;
    +
    670 slice_type m_slices;
    +
    671 inner_shape_type m_shape;
    +
    672 mutable inner_strides_type m_strides;
    +
    673 mutable inner_backstrides_type m_backstrides;
    +
    674 mutable std::size_t m_data_offset;
    +
    675 mutable bool m_strides_computed;
    +
    676
    +
    677 template <class CTA, class FSL, class... SL>
    +
    678 explicit xview(std::true_type, CTA&& e, FSL&& first_slice, SL&&... slices) noexcept;
    +
    679
    +
    680 template <class CTA, class FSL, class... SL>
    +
    681 explicit xview(std::false_type, CTA&& e, FSL&& first_slice, SL&&... slices) noexcept;
    +
    682
    +
    683 template <class... Args>
    +
    684 auto make_index_sequence(Args... args) const noexcept;
    +
    685
    +
    686 void compute_strides(std::true_type) const;
    +
    687 void compute_strides(std::false_type) const;
    +
    688
    +
    689 reference access();
    +
    690
    +
    691 template <class Arg, class... Args>
    +
    692 reference access(Arg arg, Args... args);
    +
    693
    +
    694 const_reference access() const;
    +
    695
    +
    696 template <class Arg, class... Args>
    +
    697 const_reference access(Arg arg, Args... args) const;
    +
    698
    +
    699 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    700 reference unchecked_impl(std::index_sequence<I...>, Args... args);
    +
    701
    +
    702 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    703 const_reference unchecked_impl(std::index_sequence<I...>, Args... args) const;
    +
    704
    +
    705 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    706 reference access_impl(std::index_sequence<I...>, Args... args);
    +
    707
    +
    708 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    709 const_reference access_impl(std::index_sequence<I...>, Args... args) const;
    +
    710
    +
    711 template <typename std::decay_t<CT>::size_type I, class... Args>
    +
    712 std::enable_if_t<lesser_condition<I>::value, size_type> index(Args... args) const;
    +
    713
    +
    714 template <typename std::decay_t<CT>::size_type I, class... Args>
    +
    715 std::enable_if_t<!lesser_condition<I>::value, size_type> index(Args... args) const;
    +
    716
    +
    717 template <typename std::decay_t<CT>::size_type, class T>
    +
    718 size_type sliced_access(const xslice<T>& slice) const;
    +
    719
    +
    720 template <typename std::decay_t<CT>::size_type I, class T, class Arg, class... Args>
    +
    721 size_type sliced_access(const xslice<T>& slice, Arg arg, Args... args) const;
    +
    722
    +
    723 template <typename std::decay_t<CT>::size_type I, class T, class... Args>
    +
    724 disable_xslice<T, size_type> sliced_access(const T& squeeze, Args...) const;
    +
    725
    +
    726 using base_index_type = xindex_type_t<typename xexpression_type::shape_type>;
    +
    727
    +
    728 template <class It>
    +
    729 base_index_type make_index(It first, It last) const;
    +
    730
    +
    731 void assign_temporary_impl(temporary_type&& tmp);
    +
    732
    +
    733 template <std::size_t... I>
    +
    734 std::size_t data_offset_impl(std::index_sequence<I...>) const noexcept;
    +
    735
    +
    736 template <std::size_t... I>
    +
    737 auto compute_strides_impl(std::index_sequence<I...>) const noexcept;
    +
    738
    +
    739 inner_shape_type compute_shape(std::true_type) const;
    +
    740 inner_shape_type compute_shape(std::false_type) const;
    +
    741
    +
    742 template <class E, std::size_t... I>
    +
    743 rebind_t<E> build_view_impl(E&& e, std::index_sequence<I...>) const;
    +
    744
    +
    745 friend class xview_semantic<xview<CT, S...>>;
    +
    746 };
    +
    +
    747
    +
    748 template <class E, class... S>
    +
    749 auto view(E&& e, S&&... slices);
    +
    750
    +
    751 template <class E>
    +
    752 auto row(E&& e, std::ptrdiff_t index);
    +
    753
    +
    754 template <class E>
    +
    755 auto col(E&& e, std::ptrdiff_t index);
    +
    756
    +
    757 /*****************************
    +
    758 * xview_stepper declaration *
    +
    759 *****************************/
    +
    760
    +
    761 namespace detail
    +
    762 {
    +
    763 template <class V>
    +
    764 struct get_stepper_impl
    +
    765 {
    +
    766 using xexpression_type = typename V::xexpression_type;
    +
    767 using type = typename xexpression_type::stepper;
    +
    768 };
    +
    769
    +
    770 template <class V>
    +
    771 struct get_stepper_impl<const V>
    +
    772 {
    +
    773 using xexpression_type = typename V::xexpression_type;
    +
    774 using type = typename xexpression_type::const_stepper;
    +
    775 };
    +
    776 }
    +
    777
    +
    778 template <class V>
    +
    779 using get_stepper = typename detail::get_stepper_impl<V>::type;
    +
    780
    +
    781 template <bool is_const, class CT, class... S>
    +
    + +
    783 {
    +
    784 public:
    +
    785
    +
    786 using view_type = std::conditional_t<is_const, const xview<CT, S...>, xview<CT, S...>>;
    +
    787 using substepper_type = get_stepper<view_type>;
    +
    788
    +
    789 using value_type = typename substepper_type::value_type;
    +
    790 using reference = typename substepper_type::reference;
    +
    791 using pointer = typename substepper_type::pointer;
    +
    792 using difference_type = typename substepper_type::difference_type;
    +
    793 using size_type = typename view_type::size_type;
    +
    794
    +
    795 using shape_type = typename substepper_type::shape_type;
    +
    796
    +
    797 xview_stepper() = default;
    + +
    799 view_type* view,
    +
    800 substepper_type it,
    +
    801 size_type offset,
    +
    802 bool end = false,
    +
    803 layout_type l = XTENSOR_DEFAULT_TRAVERSAL
    +
    804 );
    +
    805
    +
    806 reference operator*() const;
    +
    807
    +
    808 void step(size_type dim);
    +
    809 void step_back(size_type dim);
    +
    810 void step(size_type dim, size_type n);
    +
    811 void step_back(size_type dim, size_type n);
    +
    812 void reset(size_type dim);
    +
    813 void reset_back(size_type dim);
    +
    814
    +
    815 void to_begin();
    +
    816 void to_end(layout_type l);
    +
    817
    +
    818 private:
    +
    819
    +
    820 bool is_newaxis_slice(size_type index) const noexcept;
    +
    821 void to_end_impl(layout_type l);
    +
    822
    +
    823 template <class F>
    +
    824 void common_step_forward(size_type dim, F f);
    +
    825 template <class F>
    +
    826 void common_step_backward(size_type dim, F f);
    +
    827
    +
    828 template <class F>
    +
    829 void common_step_forward(size_type dim, size_type n, F f);
    +
    830 template <class F>
    +
    831 void common_step_backward(size_type dim, size_type n, F f);
    +
    832
    +
    833 template <class F>
    +
    834 void common_reset(size_type dim, F f, bool backwards);
    +
    835
    +
    836 view_type* p_view;
    +
    837 substepper_type m_it;
    +
    838 size_type m_offset;
    +
    839 std::array<std::size_t, sizeof...(S)> m_index_keeper;
    +
    840 };
    +
    +
    841
    +
    842 // meta-function returning the shape type for an xview
    +
    843 template <class ST, class... S>
    +
    + +
    845 {
    +
    846 using type = ST;
    +
    847 };
    +
    +
    848
    +
    849 template <class I, std::size_t L, class... S>
    +
    +
    850 struct xview_shape_type<std::array<I, L>, S...>
    +
    851 {
    +
    852 using type = std::array<I, L - integral_count<S...>() + newaxis_count<S...>()>;
    +
    853 };
    +
    +
    854
    +
    855 template <std::size_t... I, class... S>
    +
    +
    856 struct xview_shape_type<fixed_shape<I...>, S...>
    +
    857 {
    +
    858 using type = typename xview_shape_type<std::array<std::size_t, sizeof...(I)>, S...>::type;
    +
    859 };
    +
    +
    860
    +
    861 /************************
    +
    862 * xview implementation *
    +
    863 ************************/
    +
    864
    +
    879 template <class CT, class... S>
    +
    880 template <class CTA, class FSL, class... SL>
    +
    +
    881 xview<CT, S...>::xview(CTA&& e, FSL&& first_slice, SL&&... slices) noexcept
    +
    882 : xview(
    +
    883 std::integral_constant<bool, has_trivial_strides>{},
    +
    884 std::forward<CTA>(e),
    +
    885 std::forward<FSL>(first_slice),
    +
    886 std::forward<SL>(slices)...
    +
    887 )
    +
    888 {
    +
    889 }
    +
    +
    890
    +
    891 // trivial strides initializer
    +
    892 template <class CT, class... S>
    +
    893 template <class CTA, class FSL, class... SL>
    +
    894 xview<CT, S...>::xview(std::true_type, CTA&& e, FSL&& first_slice, SL&&... slices) noexcept
    +
    895 : m_e(std::forward<CTA>(e))
    +
    896 , m_slices(std::forward<FSL>(first_slice), std::forward<SL>(slices)...)
    +
    897 , m_shape(compute_shape(detail::is_sequence_view<inner_shape_type>{}))
    +
    898 , m_strides(m_e.strides())
    +
    899 , m_backstrides(m_e.backstrides())
    +
    900 , m_data_offset(data_offset_impl(std::make_index_sequence<sizeof...(S)>()))
    +
    901 , m_strides_computed(true)
    +
    902 {
    +
    903 }
    +
    904
    +
    905 template <class CT, class... S>
    +
    906 template <class CTA, class FSL, class... SL>
    +
    907 xview<CT, S...>::xview(std::false_type, CTA&& e, FSL&& first_slice, SL&&... slices) noexcept
    +
    908 : m_e(std::forward<CTA>(e))
    +
    909 , m_slices(std::forward<FSL>(first_slice), std::forward<SL>(slices)...)
    +
    910 , m_shape(compute_shape(std::false_type{}))
    +
    911 , m_strides_computed(false)
    +
    912 {
    +
    913 }
    +
    914
    +
    916
    +
    917 template <class CT, class... S>
    +
    918 inline auto xview<CT, S...>::operator=(const xview& rhs) -> self_type&
    +
    919 {
    +
    920 temporary_type tmp(rhs);
    +
    921 return this->assign_temporary(std::move(tmp));
    +
    922 }
    +
    923
    +
    931 template <class CT, class... S>
    +
    932 template <class E>
    +
    + +
    934 {
    +
    935 return semantic_base::operator=(e);
    +
    936 }
    +
    +
    937
    +
    939
    +
    940 template <class CT, class... S>
    +
    941 template <class E>
    +
    942 inline auto xview<CT, S...>::operator=(const E& e) -> disable_xexpression<E, self_type>&
    +
    943 {
    +
    944 this->fill(e);
    +
    945 return *this;
    +
    946 }
    +
    947
    +
    955 template <class CT, class... S>
    +
    +
    956 inline auto xview<CT, S...>::shape() const noexcept -> const inner_shape_type&
    +
    957 {
    +
    958 return m_shape;
    +
    959 }
    +
    +
    960
    +
    964 template <class CT, class... S>
    +
    +
    965 inline auto xview<CT, S...>::slices() const noexcept -> const slice_type&
    +
    966 {
    +
    967 return m_slices;
    +
    968 }
    +
    +
    969
    +
    973 template <class CT, class... S>
    +
    +
    974 inline layout_type xview<CT, S...>::layout() const noexcept
    +
    975 {
    +
    976 return xtl::mpl::static_if<is_strided_view>(
    +
    977 [&](auto self)
    +
    978 {
    +
    979 if (static_layout != layout_type::dynamic)
    +
    980 {
    +
    981 return static_layout;
    +
    982 }
    +
    983 else
    +
    984 {
    +
    985 bool strides_match = do_strides_match(
    +
    986 self(this)->shape(),
    +
    987 self(this)->strides(),
    +
    988 self(this)->m_e.layout(),
    +
    989 true
    +
    990 );
    +
    991 return strides_match ? self(this)->m_e.layout() : layout_type::dynamic;
    +
    992 }
    +
    993 },
    +
    994 /* else */
    +
    995 [&](auto /*self*/)
    +
    996 {
    + +
    998 }
    +
    999 );
    +
    1000 }
    +
    +
    1001
    +
    1002 template <class CT, class... S>
    +
    1003 inline bool xview<CT, S...>::is_contiguous() const noexcept
    +
    1004 {
    +
    1005 return layout() != layout_type::dynamic;
    +
    1006 }
    +
    1007
    +
    1009
    +
    1014
    +
    1019 template <class CT, class... S>
    +
    1020 template <class T>
    +
    +
    1021 inline void xview<CT, S...>::fill(const T& value)
    +
    1022 {
    +
    1023 xtl::mpl::static_if<static_layout != layout_type::dynamic>(
    +
    1024 [&](auto self)
    +
    1025 {
    +
    1026 std::fill(self(this)->linear_begin(), self(this)->linear_end(), value);
    +
    1027 },
    +
    1028 /*else*/
    +
    1029 [&](auto self)
    +
    1030 {
    +
    1031 std::fill(self(this)->begin(), self(this)->end(), value);
    +
    1032 }
    +
    1033 );
    +
    1034 }
    +
    +
    1035
    +
    1042 template <class CT, class... S>
    +
    1043 template <class... Args>
    +
    +
    1044 inline auto xview<CT, S...>::operator()(Args... args) -> reference
    +
    1045 {
    +
    1046 XTENSOR_TRY(check_index(shape(), args...));
    +
    1047 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    1048 // The static cast prevents the compiler from instantiating the template methods with signed integers,
    +
    1049 // leading to warning about signed/unsigned conversions in the deeper layers of the access methods
    +
    1050 return access(static_cast<size_type>(args)...);
    +
    1051 }
    +
    +
    1052
    +
    1072 template <class CT, class... S>
    +
    1073 template <class... Args>
    +
    +
    1074 inline auto xview<CT, S...>::unchecked(Args... args) -> reference
    +
    1075 {
    +
    1076 return unchecked_impl(make_index_sequence(args...), static_cast<size_type>(args)...);
    +
    1077 }
    +
    +
    1078
    +
    1079 template <class CT, class... S>
    +
    1080 template <class It>
    +
    1081 inline auto xview<CT, S...>::element(It first, It last) -> reference
    +
    1082 {
    +
    1083 XTENSOR_TRY(check_element_index(shape(), first, last));
    +
    1084 // TODO: avoid memory allocation
    +
    1085 auto index = make_index(first, last);
    +
    1086 return m_e.element(index.cbegin(), index.cend());
    +
    1087 }
    +
    1088
    +
    1095 template <class CT, class... S>
    +
    1096 template <class... Args>
    +
    +
    1097 inline auto xview<CT, S...>::operator()(Args... args) const -> const_reference
    +
    1098 {
    +
    1099 XTENSOR_TRY(check_index(shape(), args...));
    +
    1100 XTENSOR_CHECK_DIMENSION(shape(), args...);
    +
    1101 // The static cast prevents the compiler from instantiating the template methods with signed integers,
    +
    1102 // leading to warning about signed/unsigned conversions in the deeper layers of the access methods
    +
    1103 return access(static_cast<size_type>(args)...);
    +
    1104 }
    +
    +
    1105
    +
    1125 template <class CT, class... S>
    +
    1126 template <class... Args>
    +
    +
    1127 inline auto xview<CT, S...>::unchecked(Args... args) const -> const_reference
    +
    1128 {
    +
    1129 return unchecked_impl(make_index_sequence(args...), static_cast<size_type>(args)...);
    +
    1130 }
    +
    +
    1131
    +
    1132 template <class CT, class... S>
    +
    1133 template <class It>
    +
    1134 inline auto xview<CT, S...>::element(It first, It last) const -> const_reference
    +
    1135 {
    +
    1136 // TODO: avoid memory allocation
    +
    1137 auto index = make_index(first, last);
    +
    1138 return m_e.element(index.cbegin(), index.cend());
    +
    1139 }
    +
    1140
    +
    1144 template <class CT, class... S>
    +
    +
    1145 inline auto xview<CT, S...>::expression() noexcept -> xexpression_type&
    +
    1146 {
    +
    1147 return m_e;
    +
    1148 }
    +
    +
    1149
    +
    1153 template <class CT, class... S>
    +
    +
    1154 inline auto xview<CT, S...>::expression() const noexcept -> const xexpression_type&
    +
    1155 {
    +
    1156 return m_e;
    +
    1157 }
    +
    +
    1158
    +
    1164 template <class CT, class... S>
    +
    1165 template <class T>
    +
    +
    1166 inline auto xview<CT, S...>::storage() -> std::enable_if_t<has_data_interface<T>::value, storage_type&>
    +
    1167 {
    +
    1168 return m_e.storage();
    +
    1169 }
    +
    +
    1170
    +
    1171 template <class CT, class... S>
    +
    1172 template <class T>
    +
    1173 inline auto xview<CT, S...>::storage() const
    +
    1174 -> std::enable_if_t<has_data_interface<T>::value, const storage_type&>
    +
    1175 {
    +
    1176 return m_e.storage();
    +
    1177 }
    +
    1178
    +
    1179 template <class CT, class... S>
    +
    1180 template <class T>
    +
    1181 auto xview<CT, S...>::linear_begin()
    +
    1182 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, linear_iterator>
    +
    1183 {
    +
    1184 return m_e.storage().begin() + data_offset();
    +
    1185 }
    +
    1186
    +
    1187 template <class CT, class... S>
    +
    1188 template <class T>
    +
    1189 auto xview<CT, S...>::linear_end()
    +
    1190 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, linear_iterator>
    +
    1191 {
    +
    1192 return m_e.storage().begin() + data_offset() + this->size();
    +
    1193 }
    +
    1194
    +
    1195 template <class CT, class... S>
    +
    1196 template <class T>
    +
    1197 auto xview<CT, S...>::linear_begin() const
    +
    1198 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    1199 {
    +
    1200 return linear_cbegin();
    +
    1201 }
    +
    1202
    +
    1203 template <class CT, class... S>
    +
    1204 template <class T>
    +
    1205 auto xview<CT, S...>::linear_end() const
    +
    1206 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    1207 {
    +
    1208 return linear_cend();
    +
    1209 }
    +
    1210
    +
    1211 template <class CT, class... S>
    +
    1212 template <class T>
    +
    1213 auto xview<CT, S...>::linear_cbegin() const
    +
    1214 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    1215 {
    +
    1216 return m_e.storage().cbegin() + data_offset();
    +
    1217 }
    +
    1218
    +
    1219 template <class CT, class... S>
    +
    1220 template <class T>
    +
    1221 auto xview<CT, S...>::linear_cend() const
    +
    1222 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_linear_iterator>
    +
    1223 {
    +
    1224 return m_e.storage().cbegin() + data_offset() + this->size();
    +
    1225 }
    +
    1226
    +
    1227 template <class CT, class... S>
    +
    1228 template <class T>
    +
    1229 auto xview<CT, S...>::linear_rbegin()
    +
    1230 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, reverse_linear_iterator>
    +
    1231 {
    +
    1232 return reverse_linear_iterator(linear_end());
    +
    1233 }
    +
    1234
    +
    1235 template <class CT, class... S>
    +
    1236 template <class T>
    +
    1237 auto xview<CT, S...>::linear_rend()
    +
    1238 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, reverse_linear_iterator>
    +
    1239 {
    +
    1240 return reverse_linear_iterator(linear_begin());
    +
    1241 }
    +
    1242
    +
    1243 template <class CT, class... S>
    +
    1244 template <class T>
    +
    1245 auto xview<CT, S...>::linear_rbegin() const
    +
    1246 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    1247 {
    +
    1248 return linear_crbegin();
    +
    1249 }
    +
    1250
    +
    1251 template <class CT, class... S>
    +
    1252 template <class T>
    +
    1253 auto xview<CT, S...>::linear_rend() const
    +
    1254 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    1255 {
    +
    1256 return linear_crend();
    +
    1257 }
    +
    1258
    +
    1259 template <class CT, class... S>
    +
    1260 template <class T>
    +
    1261 auto xview<CT, S...>::linear_crbegin() const
    +
    1262 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    1263 {
    +
    1264 return const_reverse_linear_iterator(linear_end());
    +
    1265 }
    +
    1266
    +
    1267 template <class CT, class... S>
    +
    1268 template <class T>
    +
    1269 auto xview<CT, S...>::linear_crend() const
    +
    1270 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_reverse_linear_iterator>
    +
    1271 {
    +
    1272 return const_reverse_linear_iterator(linear_begin());
    +
    1273 }
    +
    1274
    +
    1278 template <class CT, class... S>
    +
    1279 template <class T>
    +
    +
    1280 inline auto xview<CT, S...>::strides() const
    +
    1281 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const inner_strides_type&>
    +
    1282 {
    +
    1283 if (!m_strides_computed)
    +
    1284 {
    +
    1285 compute_strides(std::integral_constant<bool, has_trivial_strides>{});
    +
    1286 m_strides_computed = true;
    +
    1287 }
    +
    1288 return m_strides;
    +
    1289 }
    +
    +
    1290
    +
    1291 template <class CT, class... S>
    +
    1292 template <class T>
    +
    1293 inline auto xview<CT, S...>::backstrides() const
    +
    1294 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const inner_strides_type&>
    +
    1295 {
    +
    1296 if (!m_strides_computed)
    +
    1297 {
    +
    1298 compute_strides(std::integral_constant<bool, has_trivial_strides>{});
    +
    1299 m_strides_computed = true;
    +
    1300 }
    +
    1301 return m_backstrides;
    +
    1302 }
    +
    1303
    +
    1307 template <class CT, class... S>
    +
    1308 template <class T>
    +
    +
    1309 inline auto xview<CT, S...>::data() const
    +
    1310 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, const_pointer>
    +
    1311 {
    +
    1312 return m_e.data();
    +
    1313 }
    +
    +
    1314
    +
    1315 template <class CT, class... S>
    +
    1316 template <class T>
    +
    1317 inline auto xview<CT, S...>::data()
    +
    1318 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, pointer>
    +
    1319 {
    +
    1320 return m_e.data();
    +
    1321 }
    +
    1322
    +
    1323 template <class CT, class... S>
    +
    1324 template <std::size_t... I>
    +
    1325 inline std::size_t xview<CT, S...>::data_offset_impl(std::index_sequence<I...>) const noexcept
    +
    1326 {
    +
    1327 auto temp = std::array<std::ptrdiff_t, sizeof...(S)>(
    +
    1328 {(static_cast<ptrdiff_t>(xt::value(std::get<I>(m_slices), 0)))...}
    +
    1329 );
    +
    1330
    +
    1331 std::ptrdiff_t result = 0;
    +
    1332 std::size_t i = 0;
    +
    1333 for (; i < std::min(sizeof...(S), m_e.strides().size()); ++i)
    +
    1334 {
    +
    1335 result += temp[i] * m_e.strides()[i - newaxis_count_before<S...>(i)];
    +
    1336 }
    +
    1337 for (; i < sizeof...(S); ++i)
    +
    1338 {
    +
    1339 result += temp[i];
    +
    1340 }
    +
    1341 return static_cast<std::size_t>(result) + m_e.data_offset();
    +
    1342 }
    +
    1343
    +
    1347 template <class CT, class... S>
    +
    1348 template <class T>
    +
    +
    1349 inline auto xview<CT, S...>::data_offset() const noexcept
    +
    1350 -> std::enable_if_t<has_data_interface<T>::value && is_strided_view, std::size_t>
    +
    1351 {
    +
    1352 if (!m_strides_computed)
    +
    1353 {
    +
    1354 compute_strides(std::integral_constant<bool, has_trivial_strides>{});
    +
    1355 m_strides_computed = true;
    +
    1356 }
    +
    1357 return m_data_offset;
    +
    1358 }
    +
    +
    1359
    +
    1361
    +
    1362 template <class CT, class... S>
    +
    1363 inline auto xview<CT, S...>::underlying_size(size_type dim) const -> size_type
    +
    1364 {
    +
    1365 return m_e.shape()[dim];
    +
    1366 }
    +
    1367
    +
    1368 template <class CT, class... S>
    +
    1369 inline auto xview<CT, S...>::operator&() & -> xtl::xclosure_pointer<self_type&>
    +
    1370 {
    +
    1371 return xtl::closure_pointer(*this);
    +
    1372 }
    +
    1373
    +
    1374 template <class CT, class... S>
    +
    1375 inline auto xview<CT, S...>::operator&() const& -> xtl::xclosure_pointer<const self_type&>
    +
    1376 {
    +
    1377 return xtl::closure_pointer(*this);
    +
    1378 }
    +
    1379
    +
    1380 template <class CT, class... S>
    +
    1381 inline auto xview<CT, S...>::operator&() && -> xtl::xclosure_pointer<self_type>
    +
    1382 {
    +
    1383 return xtl::closure_pointer(std::move(*this));
    +
    1384 }
    +
    1385
    +
    1396 template <class CT, class... S>
    +
    1397 template <class ST>
    +
    +
    1398 inline bool xview<CT, S...>::broadcast_shape(ST& shape, bool) const
    +
    1399 {
    +
    1400 return xt::broadcast_shape(m_shape, shape);
    +
    1401 }
    +
    +
    1402
    +
    1408 template <class CT, class... S>
    +
    1409 template <class ST>
    +
    +
    1410 inline bool xview<CT, S...>::has_linear_assign(const ST& str) const
    +
    1411 {
    +
    1412 return xtl::mpl::static_if<is_strided_view>(
    +
    1413 [&](auto self)
    +
    1414 {
    +
    1415 return str.size() == self(this)->strides().size()
    +
    1416 && std::equal(str.cbegin(), str.cend(), self(this)->strides().begin());
    +
    1417 },
    +
    1418 /*else*/
    +
    1419 [](auto /*self*/)
    +
    1420 {
    +
    1421 return false;
    +
    1422 }
    +
    1423 );
    +
    1424 }
    +
    +
    1425
    +
    1427
    +
    1428 template <class CT, class... S>
    +
    1429 template <class It>
    +
    1430 inline It xview<CT, S...>::data_xbegin_impl(It begin) const noexcept
    +
    1431 {
    +
    1432 return begin + data_offset();
    +
    1433 }
    +
    1434
    +
    1435 template <class CT, class... S>
    +
    1436 template <class It>
    +
    1437 inline It xview<CT, S...>::data_xend_impl(It begin, layout_type l, size_type offset) const noexcept
    +
    1438 {
    +
    1439 return strided_data_end(*this, begin, l, offset);
    +
    1440 }
    +
    1441
    +
    1442 template <class CT, class... S>
    +
    1443 inline auto xview<CT, S...>::data_xbegin() noexcept -> container_iterator
    +
    1444 {
    +
    1445 return data_xbegin_impl(data());
    +
    1446 }
    +
    1447
    +
    1448 template <class CT, class... S>
    +
    1449 inline auto xview<CT, S...>::data_xbegin() const noexcept -> const_container_iterator
    +
    1450 {
    +
    1451 return data_xbegin_impl(data());
    +
    1452 }
    +
    1453
    +
    1454 template <class CT, class... S>
    +
    1455 inline auto xview<CT, S...>::data_xend(layout_type l, size_type offset) noexcept -> container_iterator
    +
    1456 {
    +
    1457 return data_xend_impl(data() + data_offset(), l, offset);
    +
    1458 }
    +
    1459
    +
    1460 template <class CT, class... S>
    +
    1461 inline auto xview<CT, S...>::data_xend(layout_type l, size_type offset) const noexcept
    +
    1462 -> const_container_iterator
    +
    1463 {
    +
    1464 return data_xend_impl(data() + data_offset(), l, offset);
    +
    1465 }
    +
    1466
    +
    1467 // Assign to operator enabled for contigous views
    +
    1468 template <class CT, class... S>
    +
    1469 template <class E, class T, class>
    +
    1470 void xview<CT, S...>::assign_to(xexpression<E>& e, bool force_resize) const
    +
    1471 {
    +
    1472 auto& de = e.derived_cast();
    +
    1473 de.resize(shape(), force_resize);
    +
    1474 std::copy(data() + data_offset(), data() + data_offset() + de.size(), de.template begin<static_layout>());
    +
    1475 }
    +
    1476
    +
    1477 template <class CT, class... S>
    +
    1478 template <class E, std::size_t... I>
    +
    1479 inline auto xview<CT, S...>::build_view_impl(E&& e, std::index_sequence<I...>) const -> rebind_t<E>
    +
    1480 {
    +
    1481 return rebind_t<E>(std::forward<E>(e), std::get<I>(m_slices)...);
    +
    1482 }
    +
    1483
    +
    1484 template <class CT, class... S>
    +
    1485 template <class E>
    +
    1486 inline auto xview<CT, S...>::build_view(E&& e) const -> rebind_t<E>
    +
    1487 {
    +
    1488 return build_view_impl(std::forward<E>(e), std::make_index_sequence<sizeof...(S)>());
    +
    1489 }
    +
    1490
    +
    1491 template <class CT, class... S>
    +
    1492 template <class align, class simd, class T>
    +
    1493 inline auto xview<CT, S...>::store_simd(size_type i, const simd& e) -> enable_simd_interface<T, void>
    +
    1494 {
    +
    1495 return m_e.template store_simd<xt_simd::unaligned_mode>(data_offset() + i, e);
    +
    1496 }
    +
    1497
    +
    1498 template <class CT, class... S>
    +
    1499 template <class align, class requested_type, std::size_t N, class T>
    +
    1500 inline auto xview<CT, S...>::load_simd(size_type i) const
    +
    1501 -> enable_simd_interface<T, simd_return_type<requested_type>>
    +
    1502 {
    +
    1503 return m_e.template load_simd<xt_simd::unaligned_mode, requested_type>(data_offset() + i);
    +
    1504 }
    +
    1505
    +
    1506 template <class CT, class... S>
    +
    1507 template <class T>
    +
    1508 inline auto xview<CT, S...>::data_element(size_type i) -> enable_simd_interface<T, reference>
    +
    1509 {
    +
    1510 return m_e.data_element(data_offset() + i);
    +
    1511 }
    +
    1512
    +
    1513 template <class CT, class... S>
    +
    1514 template <class T>
    +
    1515 inline auto xview<CT, S...>::data_element(size_type i) const -> enable_simd_interface<T, const_reference>
    +
    1516 {
    +
    1517 return m_e.data_element(data_offset() + i);
    +
    1518 }
    +
    1519
    +
    1520 template <class CT, class... S>
    +
    1521 template <class T>
    +
    1522 inline auto xview<CT, S...>::flat(size_type i) -> enable_simd_interface<T, reference>
    +
    1523 {
    +
    1524 XTENSOR_ASSERT(is_contiguous());
    +
    1525 return m_e.flat(data_offset() + i);
    +
    1526 }
    +
    1527
    +
    1528 template <class CT, class... S>
    +
    1529 template <class T>
    +
    1530 inline auto xview<CT, S...>::flat(size_type i) const -> enable_simd_interface<T, const_reference>
    +
    1531 {
    +
    1532 XTENSOR_ASSERT(is_contiguous());
    +
    1533 return m_e.flat(data_offset() + i);
    +
    1534 }
    +
    1535
    +
    1536 template <class CT, class... S>
    +
    1537 template <class... Args>
    +
    1538 inline auto xview<CT, S...>::make_index_sequence(Args...) const noexcept
    +
    1539 {
    +
    1540 return std::make_index_sequence<
    +
    1541 (sizeof...(Args) + integral_count<S...>() > newaxis_count<S...>()
    +
    1542 ? sizeof...(Args) + integral_count<S...>() - newaxis_count<S...>()
    +
    1543 : 0)>();
    +
    1544 }
    +
    1545
    +
    1546 template <class CT, class... S>
    +
    1547 template <std::size_t... I>
    +
    1548 inline auto xview<CT, S...>::compute_strides_impl(std::index_sequence<I...>) const noexcept
    +
    1549 {
    +
    1550 std::size_t original_dim = m_e.dimension();
    +
    1551 return std::array<std::ptrdiff_t, sizeof...(I)>(
    +
    1552 {(static_cast<std::ptrdiff_t>(xt::step_size(std::get<integral_skip<S...>(I)>(m_slices), 1))
    +
    1553 * ((integral_skip<S...>(I) - newaxis_count_before<S...>(integral_skip<S...>(I))) < original_dim
    +
    1554 ? m_e.strides()[integral_skip<S...>(I) - newaxis_count_before<S...>(integral_skip<S...>(I))]
    +
    1555 : 1))...}
    +
    1556 );
    +
    1557 }
    +
    1558
    +
    1559 template <class CT, class... S>
    +
    1560 inline void xview<CT, S...>::compute_strides(std::false_type) const
    +
    1561 {
    +
    1562 m_strides = xtl::make_sequence<inner_strides_type>(this->dimension(), 0);
    +
    1563 m_backstrides = xtl::make_sequence<inner_strides_type>(this->dimension(), 0);
    +
    1564
    +
    1565 constexpr std::size_t n_strides = sizeof...(S) - integral_count<S...>();
    +
    1566
    +
    1567 auto slice_strides = compute_strides_impl(std::make_index_sequence<n_strides>());
    +
    1568
    +
    1569 for (std::size_t i = 0; i < n_strides; ++i)
    +
    1570 {
    +
    1571 m_strides[i] = slice_strides[i];
    +
    1572 // adapt strides for shape[i] == 1 to make consistent with rest of xtensor
    +
    1573 detail::adapt_strides(shape(), m_strides, &m_backstrides, i);
    +
    1574 }
    +
    1575 for (std::size_t i = n_strides; i < this->dimension(); ++i)
    +
    1576 {
    +
    1577 m_strides[i] = m_e.strides()[i + integral_count<S...>() - newaxis_count<S...>()];
    +
    1578 detail::adapt_strides(shape(), m_strides, &m_backstrides, i);
    +
    1579 }
    +
    1580
    +
    1581 m_data_offset = data_offset_impl(std::make_index_sequence<sizeof...(S)>());
    +
    1582 }
    +
    1583
    +
    1584 template <class CT, class... S>
    +
    1585 inline void xview<CT, S...>::compute_strides(std::true_type) const
    +
    1586 {
    +
    1587 }
    +
    1588
    +
    1589 template <class CT, class... S>
    +
    1590 inline auto xview<CT, S...>::access() -> reference
    +
    1591 {
    +
    1592 return access_impl(make_index_sequence());
    +
    1593 }
    +
    1594
    +
    1595 template <class CT, class... S>
    +
    1596 template <class Arg, class... Args>
    +
    1597 inline auto xview<CT, S...>::access(Arg arg, Args... args) -> reference
    +
    1598 {
    +
    1599 if (sizeof...(Args) >= this->dimension())
    +
    1600 {
    +
    1601 return access(args...);
    +
    1602 }
    +
    1603 return access_impl(make_index_sequence(arg, args...), arg, args...);
    +
    1604 }
    +
    1605
    +
    1606 template <class CT, class... S>
    +
    1607 inline auto xview<CT, S...>::access() const -> const_reference
    +
    1608 {
    +
    1609 return access_impl(make_index_sequence());
    +
    1610 }
    +
    1611
    +
    1612 template <class CT, class... S>
    +
    1613 template <class Arg, class... Args>
    +
    1614 inline auto xview<CT, S...>::access(Arg arg, Args... args) const -> const_reference
    +
    1615 {
    +
    1616 if (sizeof...(Args) >= this->dimension())
    +
    1617 {
    +
    1618 return access(args...);
    +
    1619 }
    +
    1620 return access_impl(make_index_sequence(arg, args...), arg, args...);
    +
    1621 }
    +
    1622
    +
    1623 template <class CT, class... S>
    +
    1624 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    1625 inline auto xview<CT, S...>::unchecked_impl(std::index_sequence<I...>, Args... args) -> reference
    +
    1626 {
    +
    1627 return m_e.unchecked(index<I>(args...)...);
    +
    1628 }
    +
    1629
    +
    1630 template <class CT, class... S>
    +
    1631 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    1632 inline auto xview<CT, S...>::unchecked_impl(std::index_sequence<I...>, Args... args) const
    +
    1633 -> const_reference
    +
    1634 {
    +
    1635 return m_e.unchecked(index<I>(args...)...);
    +
    1636 }
    +
    1637
    +
    1638 template <class CT, class... S>
    +
    1639 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    1640 inline auto xview<CT, S...>::access_impl(std::index_sequence<I...>, Args... args) -> reference
    +
    1641 {
    +
    1642 return m_e(index<I>(args...)...);
    +
    1643 }
    +
    1644
    +
    1645 template <class CT, class... S>
    +
    1646 template <typename std::decay_t<CT>::size_type... I, class... Args>
    +
    1647 inline auto xview<CT, S...>::access_impl(std::index_sequence<I...>, Args... args) const -> const_reference
    +
    1648 {
    +
    1649 return m_e(index<I>(args...)...);
    +
    1650 }
    +
    1651
    +
    1652 template <class CT, class... S>
    +
    1653 template <typename std::decay_t<CT>::size_type I, class... Args>
    +
    1654 inline auto xview<CT, S...>::index(Args... args) const
    +
    1655 -> std::enable_if_t<lesser_condition<I>::value, size_type>
    +
    1656 {
    +
    1657 return sliced_access<I - integral_count_before<S...>(I) + newaxis_count_before<S...>(I + 1)>(
    +
    1658 std::get<I + newaxis_count_before<S...>(I + 1)>(m_slices),
    +
    1659 args...
    +
    1660 );
    +
    1661 }
    +
    1662
    +
    1663 template <class CT, class... S>
    +
    1664 template <typename std::decay_t<CT>::size_type I, class... Args>
    +
    1665 inline auto xview<CT, S...>::index(Args... args) const
    +
    1666 -> std::enable_if_t<!lesser_condition<I>::value, size_type>
    +
    1667 {
    +
    1668 return argument<I - integral_count<S...>() + newaxis_count<S...>()>(args...);
    +
    1669 }
    +
    1670
    +
    1671 template <class CT, class... S>
    +
    1672 template <typename std::decay_t<CT>::size_type I, class T>
    +
    1673 inline auto xview<CT, S...>::sliced_access(const xslice<T>& slice) const -> size_type
    +
    1674 {
    +
    1675 return static_cast<size_type>(slice.derived_cast()(0));
    +
    1676 }
    +
    1677
    +
    1678 template <class CT, class... S>
    +
    1679 template <typename std::decay_t<CT>::size_type I, class T, class Arg, class... Args>
    +
    1680 inline auto xview<CT, S...>::sliced_access(const xslice<T>& slice, Arg arg, Args... args) const -> size_type
    +
    1681 {
    +
    1682 using ST = typename T::size_type;
    +
    1683 return static_cast<size_type>(
    +
    1684 slice.derived_cast()(argument<I>(static_cast<ST>(arg), static_cast<ST>(args)...))
    +
    1685 );
    +
    1686 }
    +
    1687
    +
    1688 template <class CT, class... S>
    +
    1689 template <typename std::decay_t<CT>::size_type I, class T, class... Args>
    +
    1690 inline auto xview<CT, S...>::sliced_access(const T& squeeze, Args...) const -> disable_xslice<T, size_type>
    +
    1691 {
    +
    1692 return static_cast<size_type>(squeeze);
    +
    1693 }
    +
    1694
    +
    1695 template <class CT, class... S>
    +
    1696 template <class It>
    +
    1697 inline auto xview<CT, S...>::make_index(It first, It last) const -> base_index_type
    +
    1698 {
    +
    1699 auto index = xtl::make_sequence<base_index_type>(m_e.dimension(), 0);
    +
    1700 using diff_type = typename std::iterator_traits<It>::difference_type;
    +
    1701 using ivalue_type = typename base_index_type::value_type;
    +
    1702 auto func1 = [&first](const auto& s) noexcept
    +
    1703 {
    +
    1704 return get_slice_value(s, first);
    +
    1705 };
    +
    1706 auto func2 = [](const auto& s) noexcept
    +
    1707 {
    +
    1708 return xt::value(s, 0);
    +
    1709 };
    +
    1710
    +
    1711 auto s = static_cast<diff_type>(
    +
    1712 (std::min)(static_cast<size_type>(std::distance(first, last)), this->dimension())
    +
    1713 );
    +
    1714 auto first_copy = last - s;
    +
    1715 for (size_type i = 0; i != m_e.dimension(); ++i)
    +
    1716 {
    +
    1717 size_type k = newaxis_skip<S...>(i);
    +
    1718
    +
    1719 // need to advance captured `first`
    +
    1720 first = first_copy;
    +
    1721 std::advance(first, static_cast<diff_type>(k - xt::integral_count_before<S...>(i)));
    +
    1722
    +
    1723 if (first < last)
    +
    1724 {
    +
    1725 index[i] = k < sizeof...(S) ? apply<size_type>(k, func1, m_slices)
    +
    1726 : static_cast<ivalue_type>(*first);
    +
    1727 }
    +
    1728 else
    +
    1729 {
    +
    1730 index[i] = k < sizeof...(S) ? apply<size_type>(k, func2, m_slices) : ivalue_type(0);
    +
    1731 }
    +
    1732 }
    +
    1733 return index;
    +
    1734 }
    +
    1735
    +
    1736 template <class CT, class... S>
    +
    1737 inline auto xview<CT, S...>::compute_shape(std::true_type) const -> inner_shape_type
    +
    1738 {
    +
    1739 return inner_shape_type(m_e.shape());
    +
    1740 }
    +
    1741
    +
    1742 template <class CT, class... S>
    +
    1743 inline auto xview<CT, S...>::compute_shape(std::false_type) const -> inner_shape_type
    +
    1744 {
    +
    1745 std::size_t dim = m_e.dimension() - integral_count<S...>() + newaxis_count<S...>();
    +
    1746 auto shape = xtl::make_sequence<inner_shape_type>(dim, 0);
    +
    1747 auto func = [](const auto& s) noexcept
    +
    1748 {
    +
    1749 return get_size(s);
    +
    1750 };
    +
    1751 for (size_type i = 0; i != dim; ++i)
    +
    1752 {
    +
    1753 size_type index = integral_skip<S...>(i);
    +
    1754 shape[i] = index < sizeof...(S) ? apply<size_type>(index, func, m_slices)
    +
    1755 : m_e.shape()[index - newaxis_count_before<S...>(index)];
    +
    1756 }
    +
    1757 return shape;
    +
    1758 }
    +
    1759
    +
    1760 namespace xview_detail
    +
    1761 {
    +
    1762 template <class V, class T>
    +
    1763 inline void run_assign_temporary_impl(V& v, const T& t, std::true_type /* enable strided assign */)
    +
    1764 {
    +
    1765 strided_loop_assigner<true>::run(v, t);
    +
    1766 }
    +
    1767
    +
    1768 template <class V, class T>
    +
    1769 inline void
    +
    1770 run_assign_temporary_impl(V& v, const T& t, std::false_type /* fallback to iterator assign */)
    +
    1771 {
    +
    1772 std::copy(t.cbegin(), t.cend(), v.begin());
    +
    1773 }
    +
    1774 }
    +
    1775
    +
    1776 template <class CT, class... S>
    +
    1777 inline void xview<CT, S...>::assign_temporary_impl(temporary_type&& tmp)
    +
    1778 {
    +
    1779 constexpr bool fast_assign = detail::is_strided_view<xexpression_type, S...>::value
    +
    1780 && xassign_traits<xview<CT, S...>, temporary_type>::simd_strided_assign();
    +
    1781 xview_detail::run_assign_temporary_impl(*this, tmp, std::integral_constant<bool, fast_assign>{});
    +
    1782 }
    +
    1783
    +
    1784 namespace detail
    +
    1785 {
    +
    1786 template <class E, class... S>
    +
    1787 inline std::size_t get_underlying_shape_index(std::size_t I)
    +
    1788 {
    +
    1789 return I - newaxis_count_before<get_slice_type<E, S>...>(I);
    +
    1790 }
    +
    1791
    +
    1792 template <class... S>
    +
    1793 struct check_slice;
    +
    1794
    +
    1795 template <>
    +
    1796 struct check_slice<>
    +
    1797 {
    +
    1798 using type = void_t<>;
    +
    1799 };
    +
    1800
    +
    1801 template <class S, class... SL>
    +
    1802 struct check_slice<S, SL...>
    +
    1803 {
    +
    1804 static_assert(!std::is_same<S, xellipsis_tag>::value, "ellipsis not supported vith xview");
    +
    1805 using type = typename check_slice<SL...>::type;
    +
    1806 };
    +
    1807
    +
    1808 template <class E, std::size_t... I, class... S>
    +
    1809 inline auto make_view_impl(E&& e, std::index_sequence<I...>, S&&... slices)
    +
    1810 {
    +
    1811 // Checks that no ellipsis slice is used
    +
    1812 using view_type = xview<xtl::closure_type_t<E>, get_slice_type<std::decay_t<E>, S>...>;
    +
    1813 return view_type(
    +
    1814 std::forward<E>(e),
    +
    1815 get_slice_implementation(
    +
    1816 e,
    +
    1817 std::forward<S>(slices),
    +
    1818 get_underlying_shape_index<std::decay_t<E>, S...>(I)
    +
    1819 )...
    +
    1820 );
    +
    1821 }
    +
    1822 }
    +
    1823
    +
    1833 template <class E, class... S>
    +
    +
    1834 inline auto view(E&& e, S&&... slices)
    +
    1835 {
    +
    1836 return detail::make_view_impl(
    +
    1837 std::forward<E>(e),
    +
    1838 std::make_index_sequence<sizeof...(S)>(),
    +
    1839 std::forward<S>(slices)...
    +
    1840 );
    +
    1841 }
    +
    +
    1842
    +
    1843 namespace detail
    +
    1844 {
    +
    1845 class row_impl
    +
    1846 {
    +
    1847 public:
    +
    1848
    +
    1849 template <class E>
    +
    1850 inline static auto make(E&& e, const std::ptrdiff_t index)
    +
    1851 {
    +
    1852 const auto shape = e.shape();
    +
    1853 check_dimension(shape);
    +
    1854 return view(e, index, xt::all());
    +
    1855 }
    +
    1856
    +
    1857 private:
    +
    1858
    +
    1859 template <class S>
    +
    1860 inline static void check_dimension(const S& shape)
    +
    1861 {
    +
    1862 if (shape.size() != 2)
    +
    1863 {
    +
    1864 XTENSOR_THROW(
    +
    1865 std::invalid_argument,
    +
    1866 "A row can only be accessed on an expression with exact two dimensions"
    +
    1867 );
    +
    1868 }
    +
    1869 }
    +
    1870
    +
    1871 template <class T, std::size_t N>
    +
    1872 inline static void check_dimension(const std::array<T, N>&)
    +
    1873 {
    +
    1874 static_assert(N == 2, "A row can only be accessed on an expression with exact two dimensions");
    +
    1875 }
    +
    1876 };
    +
    1877
    +
    1878 class column_impl
    +
    1879 {
    +
    1880 public:
    +
    1881
    +
    1882 template <class E>
    +
    1883 inline static auto make(E&& e, const std::ptrdiff_t index)
    +
    1884 {
    +
    1885 const auto shape = e.shape();
    +
    1886 check_dimension(shape);
    +
    1887 return view(e, xt::all(), index);
    +
    1888 }
    +
    1889
    +
    1890 private:
    +
    1891
    +
    1892 template <class S>
    +
    1893 inline static void check_dimension(const S& shape)
    +
    1894 {
    +
    1895 if (shape.size() != 2)
    +
    1896 {
    +
    1897 XTENSOR_THROW(
    +
    1898 std::invalid_argument,
    +
    1899 "A column can only be accessed on an expression with exact two dimensions"
    +
    1900 );
    +
    1901 }
    +
    1902 }
    +
    1903
    +
    1904 template <class T, std::size_t N>
    +
    1905 inline static void check_dimension(const std::array<T, N>&)
    +
    1906 {
    +
    1907 static_assert(N == 2, "A column can only be accessed on an expression with exact two dimensions");
    +
    1908 }
    +
    1909 };
    +
    1910 }
    +
    1911
    +
    1921 template <class E>
    +
    +
    1922 inline auto row(E&& e, std::ptrdiff_t index)
    +
    1923 {
    +
    1924 return detail::row_impl::make(e, index);
    +
    1925 }
    +
    +
    1926
    +
    1936 template <class E>
    +
    +
    1937 inline auto col(E&& e, std::ptrdiff_t index)
    +
    1938 {
    +
    1939 return detail::column_impl::make(e, index);
    +
    1940 }
    +
    +
    1941
    +
    1942 /***************
    +
    1943 * stepper api *
    +
    1944 ***************/
    +
    1945
    +
    1946 template <class CT, class... S>
    +
    1947 template <class ST, bool Enable>
    +
    1948 inline auto xview<CT, S...>::stepper_begin(const ST& shape) -> std::enable_if_t<!Enable, stepper>
    +
    1949 {
    +
    1950 size_type offset = shape.size() - this->dimension();
    +
    1951 return stepper(this, m_e.stepper_begin(m_e.shape()), offset);
    +
    1952 }
    +
    1953
    +
    1954 template <class CT, class... S>
    +
    1955 template <class ST, bool Enable>
    +
    1956 inline auto xview<CT, S...>::stepper_end(const ST& shape, layout_type l)
    +
    1957 -> std::enable_if_t<!Enable, stepper>
    +
    1958 {
    +
    1959 size_type offset = shape.size() - this->dimension();
    +
    1960 return stepper(this, m_e.stepper_end(m_e.shape(), l), offset, true, l);
    +
    1961 }
    +
    1962
    +
    1963 template <class CT, class... S>
    +
    1964 template <class ST, bool Enable>
    +
    1965 inline auto xview<CT, S...>::stepper_begin(const ST& shape) const
    +
    1966 -> std::enable_if_t<!Enable, const_stepper>
    +
    1967 {
    +
    1968 size_type offset = shape.size() - this->dimension();
    +
    1969 const xexpression_type& e = m_e;
    +
    1970 return const_stepper(this, e.stepper_begin(m_e.shape()), offset);
    +
    1971 }
    +
    1972
    +
    1973 template <class CT, class... S>
    +
    1974 template <class ST, bool Enable>
    +
    1975 inline auto xview<CT, S...>::stepper_end(const ST& shape, layout_type l) const
    +
    1976 -> std::enable_if_t<!Enable, const_stepper>
    +
    1977 {
    +
    1978 size_type offset = shape.size() - this->dimension();
    +
    1979 const xexpression_type& e = m_e;
    +
    1980 return const_stepper(this, e.stepper_end(m_e.shape(), l), offset, true, l);
    +
    1981 }
    +
    1982
    +
    1983 template <class CT, class... S>
    +
    1984 template <class ST, bool Enable>
    +
    1985 inline auto xview<CT, S...>::stepper_begin(const ST& shape) -> std::enable_if_t<Enable, stepper>
    +
    1986 {
    +
    1987 size_type offset = shape.size() - this->dimension();
    +
    1988 return stepper(this, data_xbegin(), offset);
    +
    1989 }
    +
    1990
    +
    1991 template <class CT, class... S>
    +
    1992 template <class ST, bool Enable>
    +
    1993 inline auto xview<CT, S...>::stepper_end(const ST& shape, layout_type l)
    +
    1994 -> std::enable_if_t<Enable, stepper>
    +
    1995 {
    +
    1996 size_type offset = shape.size() - this->dimension();
    +
    1997 return stepper(this, data_xend(l, offset), offset);
    +
    1998 }
    +
    1999
    +
    2000 template <class CT, class... S>
    +
    2001 template <class ST, bool Enable>
    +
    2002 inline auto xview<CT, S...>::stepper_begin(const ST& shape) const
    +
    2003 -> std::enable_if_t<Enable, const_stepper>
    +
    2004 {
    +
    2005 size_type offset = shape.size() - this->dimension();
    +
    2006 return const_stepper(this, data_xbegin(), offset);
    +
    2007 }
    +
    2008
    +
    2009 template <class CT, class... S>
    +
    2010 template <class ST, bool Enable>
    +
    2011 inline auto xview<CT, S...>::stepper_end(const ST& shape, layout_type l) const
    +
    2012 -> std::enable_if_t<Enable, const_stepper>
    +
    2013 {
    +
    2014 size_type offset = shape.size() - this->dimension();
    +
    2015 return const_stepper(this, data_xend(l, offset), offset);
    +
    2016 }
    +
    2017
    +
    2018 /********************************
    +
    2019 * xview_stepper implementation *
    +
    2020 ********************************/
    +
    2021
    +
    2022 template <bool is_const, class CT, class... S>
    +
    2023 inline xview_stepper<is_const, CT, S...>::xview_stepper(
    +
    2024 view_type* view,
    +
    2025 substepper_type it,
    +
    2026 size_type offset,
    +
    2027 bool end,
    +
    2028 layout_type l
    +
    2029 )
    +
    2030 : p_view(view)
    +
    2031 , m_it(it)
    +
    2032 , m_offset(offset)
    +
    2033 {
    +
    2034 if (!end)
    +
    2035 {
    +
    2036 std::fill(m_index_keeper.begin(), m_index_keeper.end(), 0);
    +
    2037 auto func = [](const auto& s) noexcept
    +
    2038 {
    +
    2039 return xt::value(s, 0);
    +
    2040 };
    +
    2041 for (size_type i = 0; i < sizeof...(S); ++i)
    +
    2042 {
    +
    2043 if (!is_newaxis_slice(i))
    +
    2044 {
    +
    2045 size_type s = apply<size_type>(i, func, p_view->slices());
    +
    2046 size_type index = i - newaxis_count_before<S...>(i);
    +
    2047 m_it.step(index, s);
    +
    2048 }
    +
    2049 }
    +
    2050 }
    +
    2051 else
    +
    2052 {
    +
    2053 to_end_impl(l);
    +
    2054 }
    +
    2055 }
    +
    2056
    +
    2057 template <bool is_const, class CT, class... S>
    +
    2058 inline auto xview_stepper<is_const, CT, S...>::operator*() const -> reference
    +
    2059 {
    +
    2060 return *m_it;
    +
    2061 }
    +
    2062
    +
    2063 template <bool is_const, class CT, class... S>
    +
    2064 inline void xview_stepper<is_const, CT, S...>::step(size_type dim)
    +
    2065 {
    +
    2066 auto func = [this](size_type index, size_type offset)
    +
    2067 {
    +
    2068 m_it.step(index, offset);
    +
    2069 };
    +
    2070 common_step_forward(dim, func);
    +
    2071 }
    +
    2072
    +
    2073 template <bool is_const, class CT, class... S>
    +
    2074 inline void xview_stepper<is_const, CT, S...>::step_back(size_type dim)
    +
    2075 {
    +
    2076 auto func = [this](size_type index, size_type offset)
    +
    2077 {
    +
    2078 m_it.step_back(index, offset);
    +
    2079 };
    +
    2080 common_step_backward(dim, func);
    +
    2081 }
    +
    2082
    +
    2083 template <bool is_const, class CT, class... S>
    +
    2084 inline void xview_stepper<is_const, CT, S...>::step(size_type dim, size_type n)
    +
    2085 {
    +
    2086 auto func = [this](size_type index, size_type offset)
    +
    2087 {
    +
    2088 m_it.step(index, offset);
    +
    2089 };
    +
    2090 common_step_forward(dim, n, func);
    +
    2091 }
    +
    2092
    +
    2093 template <bool is_const, class CT, class... S>
    +
    2094 inline void xview_stepper<is_const, CT, S...>::step_back(size_type dim, size_type n)
    +
    2095 {
    +
    2096 auto func = [this](size_type index, size_type offset)
    +
    2097 {
    +
    2098 m_it.step_back(index, offset);
    +
    2099 };
    +
    2100 common_step_backward(dim, n, func);
    +
    2101 }
    +
    2102
    +
    2103 template <bool is_const, class CT, class... S>
    +
    2104 inline void xview_stepper<is_const, CT, S...>::reset(size_type dim)
    +
    2105 {
    +
    2106 auto func = [this](size_type index, size_type offset)
    +
    2107 {
    +
    2108 m_it.step_back(index, offset);
    +
    2109 };
    +
    2110 common_reset(dim, func, false);
    +
    2111 }
    +
    2112
    +
    2113 template <bool is_const, class CT, class... S>
    +
    2114 inline void xview_stepper<is_const, CT, S...>::reset_back(size_type dim)
    +
    2115 {
    +
    2116 auto func = [this](size_type index, size_type offset)
    +
    2117 {
    +
    2118 m_it.step(index, offset);
    +
    2119 };
    +
    2120 common_reset(dim, func, true);
    +
    2121 }
    +
    2122
    +
    2123 template <bool is_const, class CT, class... S>
    +
    2124 inline void xview_stepper<is_const, CT, S...>::to_begin()
    +
    2125 {
    +
    2126 std::fill(m_index_keeper.begin(), m_index_keeper.end(), 0);
    +
    2127 m_it.to_begin();
    +
    2128 }
    +
    2129
    +
    2130 template <bool is_const, class CT, class... S>
    +
    2131 inline void xview_stepper<is_const, CT, S...>::to_end(layout_type l)
    +
    2132 {
    +
    2133 m_it.to_end(l);
    +
    2134 to_end_impl(l);
    +
    2135 }
    +
    2136
    +
    2137 template <bool is_const, class CT, class... S>
    +
    2138 inline bool xview_stepper<is_const, CT, S...>::is_newaxis_slice(size_type index) const noexcept
    +
    2139 {
    +
    2140 // A bit tricky but avoids a lot of template instantiations
    +
    2141 return newaxis_count_before<S...>(index + 1) != newaxis_count_before<S...>(index);
    +
    2142 }
    +
    2143
    +
    2144 template <bool is_const, class CT, class... S>
    +
    2145 inline void xview_stepper<is_const, CT, S...>::to_end_impl(layout_type l)
    +
    2146 {
    +
    2147 auto func = [](const auto& s) noexcept
    +
    2148 {
    +
    2149 return xt::value(s, get_size(s) - 1);
    +
    2150 };
    +
    2151 auto size_func = [](const auto& s) noexcept
    +
    2152 {
    +
    2153 return get_size(s);
    +
    2154 };
    +
    2155
    +
    2156 for (size_type i = 0; i < sizeof...(S); ++i)
    +
    2157 {
    +
    2158 if (!is_newaxis_slice(i))
    +
    2159 {
    +
    2160 size_type s = apply<size_type>(i, func, p_view->slices());
    +
    2161 size_type ix = apply<size_type>(i, size_func, p_view->slices());
    +
    2162 m_index_keeper[i] = ix - size_type(1);
    +
    2163 size_type index = i - newaxis_count_before<S...>(i);
    +
    2164 s = p_view->underlying_size(index) - 1 - s;
    +
    2165 m_it.step_back(index, s);
    +
    2166 }
    +
    2167 }
    +
    2168 if (l == layout_type::row_major)
    +
    2169 {
    +
    2170 for (size_type i = sizeof...(S); i > 0; --i)
    +
    2171 {
    +
    2172 if (!is_newaxis_slice(i - 1))
    +
    2173 {
    +
    2174 m_index_keeper[i - 1]++;
    +
    2175 break;
    +
    2176 }
    +
    2177 }
    +
    2178 }
    +
    2179 else if (l == layout_type::column_major)
    +
    2180 {
    +
    2181 for (size_type i = 0; i < sizeof...(S); ++i)
    +
    2182 {
    +
    2183 if (!is_newaxis_slice(i))
    +
    2184 {
    +
    2185 m_index_keeper[i]++;
    +
    2186 break;
    +
    2187 }
    +
    2188 }
    +
    2189 }
    +
    2190 else
    +
    2191 {
    +
    2192 XTENSOR_THROW(std::runtime_error, "Iteration only allowed in row or column major.");
    +
    2193 }
    +
    2194 }
    +
    2195
    +
    2196 template <bool is_const, class CT, class... S>
    +
    2197 template <class F>
    +
    2198 void xview_stepper<is_const, CT, S...>::common_step_forward(size_type dim, F f)
    +
    2199 {
    +
    2200 if (dim >= m_offset)
    +
    2201 {
    +
    2202 auto func = [&dim, this](const auto& s) noexcept
    +
    2203 {
    +
    2204 return step_size(s, this->m_index_keeper[dim]++, 1);
    +
    2205 };
    +
    2206 size_type index = integral_skip<S...>(dim);
    +
    2207 if (!is_newaxis_slice(index))
    +
    2208 {
    +
    2209 size_type step_size = index < sizeof...(S) ? apply<size_type>(index, func, p_view->slices())
    +
    2210 : 1;
    +
    2211 index -= newaxis_count_before<S...>(index);
    +
    2212 f(index, step_size);
    +
    2213 }
    +
    2214 }
    +
    2215 }
    +
    2216
    +
    2217 template <bool is_const, class CT, class... S>
    +
    2218 template <class F>
    +
    2219 void xview_stepper<is_const, CT, S...>::common_step_forward(size_type dim, size_type n, F f)
    +
    2220 {
    +
    2221 if (dim >= m_offset)
    +
    2222 {
    +
    2223 auto func = [&dim, &n, this](const auto& s) noexcept
    +
    2224 {
    +
    2225 auto st_size = step_size(s, this->m_index_keeper[dim], n);
    +
    2226 this->m_index_keeper[dim] += n;
    +
    2227 return size_type(st_size);
    +
    2228 };
    +
    2229
    +
    2230 size_type index = integral_skip<S...>(dim);
    +
    2231 if (!is_newaxis_slice(index))
    +
    2232 {
    +
    2233 size_type step_size = index < sizeof...(S) ? apply<size_type>(index, func, p_view->slices())
    +
    2234 : n;
    +
    2235 index -= newaxis_count_before<S...>(index);
    +
    2236 f(index, step_size);
    +
    2237 }
    +
    2238 }
    +
    2239 }
    +
    2240
    +
    2241 template <bool is_const, class CT, class... S>
    +
    2242 template <class F>
    +
    2243 void xview_stepper<is_const, CT, S...>::common_step_backward(size_type dim, F f)
    +
    2244 {
    +
    2245 if (dim >= m_offset)
    +
    2246 {
    +
    2247 auto func = [&dim, this](const auto& s) noexcept
    +
    2248 {
    +
    2249 this->m_index_keeper[dim]--;
    +
    2250 return step_size(s, this->m_index_keeper[dim], 1);
    +
    2251 };
    +
    2252 size_type index = integral_skip<S...>(dim);
    +
    2253 if (!is_newaxis_slice(index))
    +
    2254 {
    +
    2255 size_type step_size = index < sizeof...(S) ? apply<size_type>(index, func, p_view->slices())
    +
    2256 : 1;
    +
    2257 index -= newaxis_count_before<S...>(index);
    +
    2258 f(index, step_size);
    +
    2259 }
    +
    2260 }
    +
    2261 }
    +
    2262
    +
    2263 template <bool is_const, class CT, class... S>
    +
    2264 template <class F>
    +
    2265 void xview_stepper<is_const, CT, S...>::common_step_backward(size_type dim, size_type n, F f)
    +
    2266 {
    +
    2267 if (dim >= m_offset)
    +
    2268 {
    +
    2269 auto func = [&dim, &n, this](const auto& s) noexcept
    +
    2270 {
    +
    2271 this->m_index_keeper[dim] -= n;
    +
    2272 return step_size(s, this->m_index_keeper[dim], n);
    +
    2273 };
    +
    2274
    +
    2275 size_type index = integral_skip<S...>(dim);
    +
    2276 if (!is_newaxis_slice(index))
    +
    2277 {
    +
    2278 size_type step_size = index < sizeof...(S) ? apply<size_type>(index, func, p_view->slices())
    +
    2279 : n;
    +
    2280 index -= newaxis_count_before<S...>(index);
    +
    2281 f(index, step_size);
    +
    2282 }
    +
    2283 }
    +
    2284 }
    +
    2285
    +
    2286 template <bool is_const, class CT, class... S>
    +
    2287 template <class F>
    +
    2288 void xview_stepper<is_const, CT, S...>::common_reset(size_type dim, F f, bool backwards)
    +
    2289 {
    +
    2290 auto size_func = [](const auto& s) noexcept
    +
    2291 {
    +
    2292 return get_size(s);
    +
    2293 };
    +
    2294 auto end_func = [](const auto& s) noexcept
    +
    2295 {
    +
    2296 return xt::value(s, get_size(s) - 1) - xt::value(s, 0);
    +
    2297 };
    +
    2298
    +
    2299 size_type index = integral_skip<S...>(dim);
    +
    2300 if (!is_newaxis_slice(index))
    +
    2301 {
    +
    2302 if (dim < m_index_keeper.size())
    +
    2303 {
    +
    2304 size_type size = index < sizeof...(S) ? apply<size_type>(index, size_func, p_view->slices())
    +
    2305 : p_view->shape()[dim];
    +
    2306 m_index_keeper[dim] = backwards ? size - 1 : 0;
    +
    2307 }
    +
    2308
    +
    2309 size_type reset_n = index < sizeof...(S) ? apply<size_type>(index, end_func, p_view->slices())
    +
    2310 : p_view->shape()[dim] - 1;
    +
    2311 index -= newaxis_count_before<S...>(index);
    +
    2312 f(index, reset_n);
    +
    2313 }
    +
    2314 }
    +
    2315}
    +
    2316
    +
    2317#endif
    +
    Fixed shape implementation for compile time defined arrays.
    +
    Base class for implementation of common expression access methods.
    +
    size_type shape(size_type index) const
    Returns the i-th dimension of the expression.
    +
    Base class for xexpressions.
    +
    Base class for multidimensional iterable expressions.
    + + + +
    Implementation of the xsemantic_base interface for multidimensional views.
    + +
    Multidimensional view with tensor semantic.
    Definition xview.hpp:360
    +
    xview(CTA &&e, FSL &&first_slice, SL &&... slices) noexcept
    Constructs a view on the specified xexpression.
    Definition xview.hpp:881
    +
    const slice_type & slices() const noexcept
    Returns the slices of the view.
    Definition xview.hpp:965
    +
    bool has_linear_assign(const ST &strides) const
    Checks whether the xview can be linearly assigned to an expression with the specified strides.
    Definition xview.hpp:1410
    +
    const inner_shape_type & shape() const noexcept
    Returns the shape of the view.
    Definition xview.hpp:956
    +
    bool broadcast_shape(ST &shape, bool reuse_cache=false) const
    Broadcast the shape of the view to the specified parameter.
    Definition xview.hpp:1398
    +
    xexpression_type & expression() noexcept
    Returns a reference to the underlying expression of the view.
    Definition xview.hpp:1145
    +
    void fill(const T &value)
    Fills the view with the given value.
    Definition xview.hpp:1021
    +
    layout_type layout() const noexcept
    Returns the slices of the view.
    Definition xview.hpp:974
    +
    auto arg(E &&e) noexcept
    Calculates the phase angle (in radians) elementwise for the complex numbers in e.
    Definition xcomplex.hpp:221
    +
    auto squeeze(E &&e)
    Returns a squeeze view of the given expression.
    +
    std::size_t compute_strides(const shape_type &shape, layout_type l, strides_type &strides)
    Compute the strides given the shape and the layout of an array.
    Definition xstrides.hpp:566
    +
    auto strides(const E &e, stride_type type=stride_type::normal) noexcept
    Get strides of an object.
    Definition xstrides.hpp:248
    +
    standard mathematical functions for xexpressions
    +
    auto all() noexcept
    Returns a slice representing a full dimension, to be used as an argument of view function.
    Definition xslice.hpp:234
    +
    auto row(E &&e, std::ptrdiff_t index)
    Constructs and returns a row (sliced view) on the specified expression.
    Definition xview.hpp:1922
    +
    layout_type
    Definition xlayout.hpp:24
    + + + +
    auto col(E &&e, std::ptrdiff_t index)
    Constructs and returns a column (sliced view) on the specified expression.
    Definition xview.hpp:1937
    +
    auto view(E &&e, S &&... slices)
    Constructs and returns a view on the specified xexpression.
    Definition xview.hpp:1834
    + + + + + + + + + + + + +
    +
    + + + + diff --git a/xview__utils_8hpp_source.html b/xview__utils_8hpp_source.html new file mode 100644 index 000000000..9b4a441a6 --- /dev/null +++ b/xview__utils_8hpp_source.html @@ -0,0 +1,400 @@ + + + + + + + +xtensor: /home/runner/work/xtensor/xtensor/include/xtensor/xview_utils.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    xtensor +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    xview_utils.hpp
    +
    +
    +
    1/***************************************************************************
    +
    2 * Copyright (c) Johan Mabille, Sylvain Corlay and Wolf Vollprecht *
    +
    3 * Copyright (c) QuantStack *
    +
    4 * *
    +
    5 * Distributed under the terms of the BSD 3-Clause License. *
    +
    6 * *
    +
    7 * The full license is in the file LICENSE, distributed with this software. *
    +
    8 ****************************************************************************/
    +
    9
    +
    10#ifndef XTENSOR_VIEW_UTILS_HPP
    +
    11#define XTENSOR_VIEW_UTILS_HPP
    +
    12
    +
    13#include <array>
    +
    14
    +
    15#include "xlayout.hpp"
    +
    16#include "xslice.hpp"
    +
    17#include "xtensor_forward.hpp"
    +
    18
    +
    19namespace xt
    +
    20{
    +
    21
    +
    22 /********************************
    +
    23 * helper functions declaration *
    +
    24 ********************************/
    +
    25
    +
    26 // number of integral types in the specified sequence of types
    +
    27 template <class... S>
    +
    28 constexpr std::size_t integral_count();
    +
    29
    +
    30 // number of integral types in the specified sequence of types before specified index
    +
    31 template <class... S>
    +
    32 constexpr std::size_t integral_count_before(std::size_t i);
    +
    33
    +
    34 // index in the specified sequence of types of the ith non-integral type
    +
    35 template <class... S>
    +
    36 constexpr std::size_t integral_skip(std::size_t i);
    +
    37
    +
    38 // number of newaxis types in the specified sequence of types
    +
    39 template <class... S>
    +
    40 constexpr std::size_t newaxis_count();
    +
    41
    +
    42 // number of newaxis types in the specified sequence of types before specified index
    +
    43 template <class... S>
    +
    44 constexpr std::size_t newaxis_count_before(std::size_t i);
    +
    45
    +
    46 // index in the specified sequence of types of the ith non-newaxis type
    +
    47 template <class... S>
    +
    48 constexpr std::size_t newaxis_skip(std::size_t i);
    +
    49
    +
    50 template <class S, class It>
    +
    51 inline disable_xslice<S, std::size_t> get_slice_value(const S& s, It&) noexcept
    +
    52 {
    +
    53 return static_cast<std::size_t>(s);
    +
    54 }
    +
    55
    +
    56 template <class S, class It>
    +
    57 inline auto get_slice_value(const xslice<S>& slice, It& it) noexcept
    +
    58 {
    +
    59 return slice.derived_cast()(typename S::size_type(*it));
    +
    60 }
    +
    61
    +
    62 /***********************
    +
    63 * view_temporary_type *
    +
    64 ***********************/
    +
    65
    +
    66 namespace detail
    +
    67 {
    +
    68 template <class T, class S, layout_type L, class... SL>
    +
    69 struct view_temporary_type_impl
    +
    70 {
    +
    71 using type = xt::xarray<T, L>;
    +
    72 };
    +
    73
    +
    74 template <class T, class I, std::size_t N, layout_type L, class... SL>
    +
    75 struct view_temporary_type_impl<T, std::array<I, N>, L, SL...>
    +
    76 {
    +
    77 using type = xt::xtensor<T, N + newaxis_count<SL...>() - integral_count<SL...>(), L>;
    +
    78 };
    +
    79 }
    +
    80
    +
    81 template <class E, class... SL>
    +
    + +
    83 {
    +
    84 using type = typename detail::view_temporary_type_impl<
    +
    85 std::decay_t<typename E::value_type>,
    +
    86 typename E::shape_type,
    +
    87 E::static_layout,
    +
    88 SL...>::type;
    +
    89 };
    +
    +
    90
    +
    91 template <class E, class... SL>
    +
    92 using view_temporary_type_t = typename view_temporary_type<E, SL...>::type;
    +
    93
    +
    94 /************************
    +
    95 * count integral types *
    +
    96 ************************/
    +
    97
    +
    98 namespace detail
    +
    99 {
    +
    100
    +
    101 template <class T, class... S>
    +
    102 struct integral_count_impl
    +
    103 {
    +
    104 static constexpr std::size_t count(std::size_t i) noexcept
    +
    105 {
    +
    106 return i
    +
    107 ? (integral_count_impl<S...>::count(i - 1)
    +
    108 + (xtl::is_integral<std::remove_reference_t<T>>::value ? 1 : 0))
    +
    109 : 0;
    +
    110 }
    +
    111 };
    +
    112
    +
    113 template <>
    +
    114 struct integral_count_impl<void>
    +
    115 {
    +
    116 static constexpr std::size_t count(std::size_t /*i*/) noexcept
    +
    117 {
    +
    118 return 0;
    +
    119 }
    +
    120 };
    +
    121 }
    +
    122
    +
    123 template <class... S>
    +
    124 constexpr std::size_t integral_count()
    +
    125 {
    +
    126 return detail::integral_count_impl<S..., void>::count(sizeof...(S));
    +
    127 }
    +
    128
    +
    129 template <class... S>
    +
    130 constexpr std::size_t integral_count_before(std::size_t i)
    +
    131 {
    +
    132 return detail::integral_count_impl<S..., void>::count(i);
    +
    133 }
    +
    134
    +
    135 /***********************
    +
    136 * count newaxis types *
    +
    137 ***********************/
    +
    138
    +
    139 namespace detail
    +
    140 {
    +
    141 template <class T>
    +
    142 struct is_newaxis : std::false_type
    +
    143 {
    +
    144 };
    +
    145
    +
    146 template <class T>
    +
    147 struct is_newaxis<xnewaxis<T>> : public std::true_type
    +
    148 {
    +
    149 };
    +
    150
    +
    151 template <class T, class... S>
    +
    152 struct newaxis_count_impl
    +
    153 {
    +
    154 static constexpr std::size_t count(std::size_t i) noexcept
    +
    155 {
    +
    156 return i
    +
    157 ? (newaxis_count_impl<S...>::count(i - 1)
    +
    158 + (is_newaxis<std::remove_reference_t<T>>::value ? 1 : 0))
    +
    159 : 0;
    +
    160 }
    +
    161 };
    +
    162
    +
    163 template <>
    +
    164 struct newaxis_count_impl<void>
    +
    165 {
    +
    166 static constexpr std::size_t count(std::size_t /*i*/) noexcept
    +
    167 {
    +
    168 return 0;
    +
    169 }
    +
    170 };
    +
    171 }
    +
    172
    +
    173 template <class... S>
    +
    174 constexpr std::size_t newaxis_count()
    +
    175 {
    +
    176 return detail::newaxis_count_impl<S..., void>::count(sizeof...(S));
    +
    177 }
    +
    178
    +
    179 template <class... S>
    +
    180 constexpr std::size_t newaxis_count_before(std::size_t i)
    +
    181 {
    +
    182 return detail::newaxis_count_impl<S..., void>::count(i);
    +
    183 }
    +
    184
    +
    185 /**********************************
    +
    186 * index of ith non-integral type *
    +
    187 **********************************/
    +
    188
    +
    189 namespace detail
    +
    190 {
    +
    191
    +
    192 template <class T, class... S>
    +
    193 struct integral_skip_impl
    +
    194 {
    +
    195 static constexpr std::size_t count(std::size_t i) noexcept
    +
    196 {
    +
    197 return i == 0 ? count_impl() : count_impl(i);
    +
    198 }
    +
    199
    +
    200 private:
    +
    201
    +
    202 static constexpr std::size_t count_impl(std::size_t i) noexcept
    +
    203 {
    +
    204 return 1
    +
    205 + (xtl::is_integral<std::remove_reference_t<T>>::value
    +
    206 ? integral_skip_impl<S...>::count(i)
    +
    207 : integral_skip_impl<S...>::count(i - 1));
    +
    208 }
    +
    209
    +
    210 static constexpr std::size_t count_impl() noexcept
    +
    211 {
    +
    212 return xtl::is_integral<std::remove_reference_t<T>>::value
    +
    213 ? 1 + integral_skip_impl<S...>::count(0)
    +
    214 : 0;
    +
    215 }
    +
    216 };
    +
    217
    +
    218 template <>
    +
    219 struct integral_skip_impl<void>
    +
    220 {
    +
    221 static constexpr std::size_t count(std::size_t i) noexcept
    +
    222 {
    +
    223 return i;
    +
    224 }
    +
    225 };
    +
    226 }
    +
    227
    +
    228 template <class... S>
    +
    229 constexpr std::size_t integral_skip(std::size_t i)
    +
    230 {
    +
    231 return detail::integral_skip_impl<S..., void>::count(i);
    +
    232 }
    +
    233
    +
    234 /*********************************
    +
    235 * index of ith non-newaxis type *
    +
    236 *********************************/
    +
    237
    +
    238 namespace detail
    +
    239 {
    +
    240
    +
    241 template <class T, class... S>
    +
    242 struct newaxis_skip_impl
    +
    243 {
    +
    244 static constexpr std::size_t count(std::size_t i) noexcept
    +
    245 {
    +
    246 return i == 0 ? count_impl() : count_impl(i);
    +
    247 }
    +
    248
    +
    249 private:
    +
    250
    +
    251 static constexpr std::size_t count_impl(std::size_t i) noexcept
    +
    252 {
    +
    253 return 1
    +
    254 + (is_newaxis<std::remove_reference_t<T>>::value
    +
    255 ? newaxis_skip_impl<S...>::count(i)
    +
    256 : newaxis_skip_impl<S...>::count(i - 1));
    +
    257 }
    +
    258
    +
    259 static constexpr std::size_t count_impl() noexcept
    +
    260 {
    +
    261 return is_newaxis<std::remove_reference_t<T>>::value ? 1 + newaxis_skip_impl<S...>::count(0)
    +
    262 : 0;
    +
    263 }
    +
    264 };
    +
    265
    +
    266 template <>
    +
    267 struct newaxis_skip_impl<void>
    +
    268 {
    +
    269 static constexpr std::size_t count(std::size_t i) noexcept
    +
    270 {
    +
    271 return i;
    +
    272 }
    +
    273 };
    +
    274 }
    +
    275
    +
    276 template <class... S>
    +
    277 constexpr std::size_t newaxis_skip(std::size_t i)
    +
    278 {
    +
    279 return detail::newaxis_skip_impl<S..., void>::count(i);
    +
    280 }
    +
    281}
    +
    282
    +
    283#endif
    +
    Dense multidimensional container with tensor semantic.
    Definition xarray.hpp:85
    +
    Dense multidimensional container with tensor semantic and fixed dimension.
    Definition xtensor.hpp:86
    +
    standard mathematical functions for xexpressions
    +
    layout_type
    Definition xlayout.hpp:24
    + +
    +
    + + + +