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
21struct ChunkIterator
22{
23 size_t totalSize{ 0 };
24 size_t chunkSize{ 0 };
25 size_t overlap{ 0 };
26 size_t index{ 0 };
27
28 MRMESH_API bool operator ==( const ChunkIterator& other ) const;
29
30 using iterator_category = std::input_iterator_tag;
31 using value_type = Chunk;
32 using difference_type = std::ptrdiff_t;
33 using pointer = Chunk*;
34 using reference = Chunk&;
35
36 MRMESH_API ChunkIterator& operator ++();
37 MRMESH_API ChunkIterator operator ++( int );
38
39 MRMESH_API Chunk operator *() const;
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 MRMeshFwd.h:80
unsafe ChunkIterator()
new unsafe ref ulong offset
new unsafe ref ulong size
Definition MRCameraOrientationPlugin.h:8
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
Definition MRMeshFwd.h:505