| 876 | // Tuple range |
| 877 | template <typename ValueType, ComponentIdType TupleSize> |
| 878 | struct TupleRange<vtkAOSDataArrayTemplate<ValueType>, TupleSize> |
| 879 | { |
| 880 | using ArrayType = vtkAOSDataArrayTemplate<ValueType>; |
| 881 | using APIType = GetAPIType<ArrayType>; |
| 882 | |
| 883 | private: |
| 884 | static_assert(IsValidTupleSize<TupleSize>::value, "Invalid tuple size."); |
| 885 | static_assert(IsVtkDataArray<ArrayType>::value, "Invalid array type."); |
| 886 | |
| 887 | using NumCompsType = GenericTupleSize<TupleSize>; |
| 888 | |
| 889 | public: |
| 890 | using TupleIteratorType = TupleIterator<ArrayType, TupleSize>; |
| 891 | using ConstTupleIteratorType = ConstTupleIterator<ArrayType, TupleSize>; |
| 892 | using TupleReferenceType = TupleReference<ArrayType, TupleSize>; |
| 893 | using ConstTupleReferenceType = ConstTupleReference<ArrayType, TupleSize>; |
| 894 | using ComponentIteratorType = APIType*; |
| 895 | using ConstComponentIteratorType = APIType const*; |
| 896 | using ComponentReferenceType = APIType&; |
| 897 | using ConstComponentReferenceType = const APIType&; |
| 898 | using ComponentType = APIType; |
| 899 | |
| 900 | using size_type = TupleIdType; |
| 901 | using iterator = TupleIteratorType; |
| 902 | using const_iterator = ConstTupleIteratorType; |
| 903 | using reference = TupleReferenceType; |
| 904 | using const_reference = ConstTupleReferenceType; |
| 905 | |
| 906 | // May be DynamicTupleSize, or the actual tuple size. |
| 907 | constexpr static ComponentIdType TupleSizeTag = TupleSize; |
| 908 | |
| 909 | VTK_ITER_INLINE |
| 910 | TupleRange() noexcept = default; |
| 911 | |
| 912 | VTK_ITER_INLINE |
| 913 | TupleRange(ArrayType* arr, TupleIdType beginTuple, TupleIdType endTuple) noexcept |
| 914 | : Array(arr) |
| 915 | , NumComps(arr) |
| 916 | , BeginTuple(beginTuple) |
| 917 | , EndTuple(endTuple) |
| 918 | { |
| 919 | assert(this->Array); |
| 920 | assert(beginTuple >= 0 && beginTuple <= endTuple); |
| 921 | assert(endTuple >= 0 && endTuple <= this->Array->GetNumberOfTuples()); |
| 922 | if constexpr (IsStaticTupleSize<TupleSize>::value) |
| 923 | { |
| 924 | assert(arr->GetNumberOfComponents() == TupleSize); |
| 925 | } |
| 926 | } |
| 927 | |
| 928 | VTK_ITER_INLINE |
| 929 | TupleRange GetSubRange(TupleIdType beginTuple = 0, TupleIdType endTuple = -1) const noexcept |
| 930 | { |
| 931 | const TupleIdType curBegin = this->GetTupleId(this->GetTuplePointer(this->BeginTuple)); |
| 932 | const TupleIdType realBegin = curBegin + beginTuple; |
| 933 | const TupleIdType realEnd = |
| 934 | endTuple >= 0 ? curBegin + endTuple : this->GetTupleId(this->GetTuplePointer(this->EndTuple)); |
| 935 |
nothing calls this directly
no test coverage detected