MeshLib C++ Docs
Loading...
Searching...
No Matches
MRChunkIterator.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRIteratorRange.h"
5
6#include <iterator>
7
8namespace MR
9{
10
12struct Chunk
13{
15 size_t offset;
17 size_t size;
18};
19
22{
23 size_t totalSize{ 0 };
24 size_t chunkSize{ 0 };
25 size_t overlap{ 0 };
26 size_t index{ 0 };
27
29
30 using iterator_category = std::input_iterator_tag;
32 using difference_type = std::ptrdiff_t;
33 using pointer = Chunk*;
34 using reference = Chunk&;
35
38
40 Chunk operator ->() const { return operator*(); }
41};
42
44MRMESH_API size_t chunkCount( size_t totalSize, size_t chunkSize, size_t overlap = 0 );
45
47MRMESH_API IteratorRange<ChunkIterator> splitByChunks( size_t totalSize, size_t chunkSize, size_t overlap = 0 );
48
49} // namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:79
MRMESH_API IteratorRange< ChunkIterator > splitByChunks(size_t totalSize, size_t chunkSize, size_t overlap=0)
returns a pair of iterators for chunks covering the array of given size
MRMESH_API size_t chunkCount(size_t totalSize, size_t chunkSize, size_t overlap=0)
returns the amount of chunks of given size required to cover the full array
iterator class for array chunks
Definition MRChunkIterator.h:22
Chunk operator->() const
Definition MRChunkIterator.h:40
MRMESH_API ChunkIterator & operator++()
std::input_iterator_tag iterator_category
Definition MRChunkIterator.h:30
size_t index
Definition MRChunkIterator.h:26
MRMESH_API bool operator==(const ChunkIterator &other) const
MRMESH_API Chunk operator*() const
std::ptrdiff_t difference_type
Definition MRChunkIterator.h:32
size_t totalSize
Definition MRChunkIterator.h:23
size_t overlap
Definition MRChunkIterator.h:25
size_t chunkSize
Definition MRChunkIterator.h:24
array chunk representation
Definition MRChunkIterator.h:13
size_t offset
chunk offset
Definition MRChunkIterator.h:15
size_t size
chunk size; the last chunk's size may be smaller than other chunk's ones
Definition MRChunkIterator.h:17
Definition MRMesh/MRMeshFwd.h:430