// arat
void BufferedPacket (const void* c_pvData, int iSize);
void Packet (const void* c_pvData, int iSize);
void LargePacket (const void* c_pvData, int iSize);
//üstüne ekle
template<typename T, std::enable_if_t<utils::IsRawV<T>>* = nullptr>
void BufferedPacket(const T& c_pvData) {
BufferedPacket(&c_pvData, sizeof(T));
}
template<typename C, std::enable_if_t<utils::IsContiguousV<C>>* = nullptr>
void BufferedPacket(const C& v) {
BufferedPacket(v.data(), v.size() * sizeof(typename C::value_type));
}
template<typename T, std::enable_if_t<utils::IsRawV<T>>* = nullptr>
void Packet(const T& c_pvData) {
Packet(&c_pvData, sizeof(T));
}
template<typename C, std::enable_if_t<utils::IsContiguousV<C>>* = nullptr>
void Packet(const C& v) {
Packet(v.data(), v.size() * sizeof(typename C::value_type));
}
template<typename T, std::enable_if_t<utils::IsRawV<T>>* = nullptr>
void LargePacket(const T& c_pvData) {
LargePacket(&c_pvData, sizeof(T));
}
template<typename C, std::enable_if_t<utils::IsContiguousV<C>>* = nullptr>
void LargePacket(const C& v) {
LargePacket(v.data(), v.size() * sizeof(typename C::value_type));
}
template<typename T, std::enable_if_t<utils::IsRawV<T>>* = nullptr>
void RawPacket(const T& c_pvData) {
RawPacket(&c_pvData, sizeof(T));
}
template<typename C, std::enable_if_t<utils::IsContiguousV<C>>* = nullptr>
void RawPacket(const C& v) {
RawPacket(v.data(), v.size() * sizeof(typename C::value_type));
}