IOLink IOL_v1.8.0_release
Loading...
Searching...
No Matches
RegionCopier.h
1#pragma once
2
3#include <iolink/IOLinkAPI.h>
4#include <iolink/Indexer.h>
5#include <iolink/Region.h>
6#include <iolink/Vector.h>
7#include <iolink/storage/RandomAccess.h>
8#include <memory>
9
10namespace iolink
11{
12
13class InternalRegionCopier;
14
36class IOLINK_API RegionCopier final
37{
38public:
55 RegionCopier(const Indexer& srcIndexer,
56 const Indexer& dstIndexer,
57 const VectorXu64& srcOrigin,
58 const VectorXu64& dstOrigin,
59 const VectorXu64& regionSize,
60 DataType dataType);
61
77 RegionCopier(const Indexer& srcindexer, const RegionXu64& srcRegion, DataType dataType);
78
94 RegionCopier(const RegionXu64& dstRegion, const Indexer& dstIndexer, DataType dataType);
95
101
107
112
119 void copy(const uint8_t* src, uint8_t* dst);
120
127 void copy(std::shared_ptr<RandomAccess> src, uint8_t* dst);
128
135 void copy(const uint8_t* src, std::shared_ptr<RandomAccess> dst);
136
137private:
138 InternalRegionCopier* m_impl;
139};
140
141} // end namespace iolink