fiber
Loading...
Searching...
No Matches
memory.hpp
Go to the documentation of this file.
1#pragma once
2
4
5namespace fiber{
6
18 void _memcpy(void* dest, const void* source, size_t count);
19
33 void _async_memcpy(void* dest, const void* source, size_t count, Promise<int> promise);
34
47 extern void(*memcpy)(void* dest, const void* source, size_t count);
48
56 inline void memcpy_s(void* dest, size_t destSize, const void* source, size_t sourceSize){
57 memcpy(dest, source, (destSize < sourceSize) ? destSize : sourceSize);
58 }
59
67 inline void memcpy_s(void* destFirst, void* destLast, const void* sourceFirst, const void* sourceLast){
68 const size_t destSize = reinterpret_cast<const char*>(destLast) - reinterpret_cast<const char*>(destFirst);
69 const size_t sourceSize = reinterpret_cast<const char*>(sourceLast) - reinterpret_cast<const char*>(sourceFirst);
70 memcpy(destFirst, sourceFirst, (destSize < sourceSize) ? destSize : sourceSize);
71 }
72
89 extern void(*async_memcpy)(void* dest, const void* source, size_t count, Promise<int> promise);
90
91 inline void async_memcpy_s(void* dest, size_t destSize, const void* source, size_t sourceSize, Promise<int> promise){
92 async_memcpy(dest, source, (destSize < sourceSize) ? destSize : sourceSize, std::move(promise));
93 }
94
95 inline void async_memcpy_s(void* destFirst, void* destLast, const void* sourceFirst, const void* sourceLast, Promise<int> promise){
96 const size_t destSize = reinterpret_cast<const char*>(destLast) - reinterpret_cast<const char*>(destFirst);
97 const size_t sourceSize = reinterpret_cast<const char*>(sourceLast) - reinterpret_cast<const char*>(sourceFirst);
98 const size_t count = (destSize < sourceSize) ? destSize : sourceSize;
99 async_memcpy(destFirst, sourceFirst, count, std::move(promise));
100 }
101
102}// namespace fiber
Promise and Future pairs are used to synchronise values between asynchronous tasks.
Definition Future.hpp:430
Definition Duration.hpp:17
void(* memcpy)(void *dest, const void *source, size_t count)
Function that the fiber:: library uses to copy memory.
Definition memory.cpp:18
void async_memcpy_s(void *dest, size_t destSize, const void *source, size_t sourceSize, Promise< int > promise)
Definition memory.hpp:91
void _memcpy(void *dest, const void *source, size_t count)
Copies count many bytes from source to dest in a blocking behaviour.
Definition memory.cpp:5
void(* async_memcpy)(void *dest, const void *source, size_t count, Promise< int > promise)
Function that the fiber library uses to copy memory.
Definition memory.cpp:19
void _async_memcpy(void *dest, const void *source, size_t count, Promise< int > promise)
Copies count many bytes from source to dest in a blocking behaviour.
Definition memory.cpp:14
void memcpy_s(void *dest, size_t destSize, const void *source, size_t sourceSize)
copies from source to dest so that no more bytes than destSize or sourceSize are written
Definition memory.hpp:56