15#ifndef _FASTCDR_CDR_H_
16#define _FASTCDR_CDR_H_
18#include "fastcdr_dll.h"
19#include "FastBuffer.h"
20#include "exceptions/NotEnoughMemoryException.h"
27#if !__APPLE__ && !__FreeBSD__ && !__VXWORKS__
56 typedef enum : uint8_t
59 DDS_CDR_WITHOUT_PL = 0x0,
67 typedef enum : uint8_t
72 LITTLE_ENDIANNESS = 0x1
102 const state&) =
delete;
114 size_t m_lastDataSize;
128 const CdrType cdrType = CORBA_CDR);
220 return m_currentPosition - m_cdrBuffer.begin();
230 size_t current_alignment,
233 return (dataSize - (current_alignment % dataSize)) & (dataSize - 1);
262 m_alignPosition = m_currentPosition;
272 const uint8_t octet_t)
274 return serialize(octet_t);
286 return serialize(char_t);
298 return serialize(int8);
308 const uint16_t ushort_t)
310 return serialize(ushort_t);
320 const int16_t short_t)
322 return serialize(short_t);
332 const uint32_t ulong_t)
334 return serialize(ulong_t);
344 const int32_t long_t)
346 return serialize(long_t);
358 return serialize(wchar);
368 const uint64_t ulonglong_t)
370 return serialize(ulonglong_t);
380 const int64_t longlong_t)
382 return serialize(longlong_t);
394 return serialize(float_t);
404 const double double_t)
406 return serialize(double_t);
416 const long double ldouble_t)
418 return serialize(ldouble_t);
430 return serialize(bool_t);
440 const char* string_t)
442 return serialize(string_t);
454 return serialize(string_t);
464 const std::string& string_t)
466 return serialize(string_t);
476 const std::wstring& string_t)
478 return serialize(string_t);
487 template<
class _T,
size_t _Size>
489 const std::array<_T, _Size>& array_t)
491 return serialize<_T, _Size>(array_t);
502 const std::vector<_T>& vector_t)
504 return serialize<_T>(vector_t);
513 template<
class _K,
class _T>
515 const std::map<_K, _T>& map_t)
517 return serialize<_K, _T>(map_t);
543 return deserialize(octet_t);
555 return deserialize(char_t);
567 return deserialize(int8);
579 return deserialize(ushort_t);
591 return deserialize(short_t);
603 return deserialize(ulong_t);
615 return deserialize(long_t);
628 return deserialize(wchar);
638 uint64_t& ulonglong_t)
640 return deserialize(ulonglong_t);
652 return deserialize(longlong_t);
664 return deserialize(float_t);
676 return deserialize(double_t);
686 long double& ldouble_t)
688 return deserialize(ldouble_t);
701 return deserialize(bool_t);
716 return deserialize(string_t);
726 std::string& string_t)
728 return deserialize(string_t);
738 std::wstring& string_t)
740 return deserialize(string_t);
749 template<
class _T,
size_t _Size>
751 std::array<_T, _Size>& array_t)
753 return deserialize<_T, _Size>(array_t);
764 std::vector<_T>& vector_t)
766 return deserialize<_T>(vector_t);
775 template<
class _K,
class _T>
777 std::map<_K, _T>& map_t)
779 return deserialize<_K, _T>(map_t);
804 const uint8_t octet_t)
806 return serialize(
static_cast<char>(octet_t));
818 const uint8_t octet_t,
821 return serialize(
static_cast<char>(octet_t), endianness);
846 return serialize(char_t);
859 return serialize(
static_cast<char>(int8));
874 return serialize(
static_cast<char>(int8), endianness);
885 const uint16_t ushort_t)
887 return serialize(
static_cast<int16_t
>(ushort_t));
899 const uint16_t ushort_t,
902 return serialize(
static_cast<int16_t
>(ushort_t), endianness);
912 const int16_t short_t);
922 const int16_t short_t,
933 const uint32_t ulong_t)
935 return serialize(
static_cast<int32_t
>(ulong_t));
947 const uint32_t ulong_t,
950 return serialize(
static_cast<int32_t
>(ulong_t), endianness);
960 const int32_t long_t);
970 const int32_t long_t,
983 return serialize(
static_cast<uint32_t
>(wchar));
998 return serialize(
static_cast<uint32_t
>(wchar), endianness);
1009 const uint64_t ulonglong_t)
1011 return serialize(
static_cast<int64_t
>(ulonglong_t));
1023 const uint64_t ulonglong_t,
1026 return serialize(
static_cast<int64_t
>(ulonglong_t), endianness);
1036 const int64_t longlong_t);
1046 const int64_t longlong_t,
1056 const float float_t);
1066 const float float_t,
1076 const double double_t);
1086 const double double_t,
1098 const long double ldouble_t);
1109 const long double ldouble_t,
1134 return serialize(bool_t);
1146 return serialize(
static_cast<const char*
>(string_t));
1156 const char* string_t);
1165 const wchar_t* string_t);
1175 const char* string_t,
1186 const wchar_t* string_t,
1197 const std::string& string_t)
1199 return serialize(string_t.c_str());
1210 const std::wstring& string_t)
1212 return serialize(string_t.c_str());
1224 const std::string& string_t,
1227 return serialize(string_t.c_str(), endianness);
1236 template<
class _T,
size_t _Size>
1238 const std::array<_T, _Size>& array_t)
1240 return serializeArray(array_t.data(), array_t.size());
1250 template<
class _T,
size_t _Size>
1252 const std::array<_T, _Size>& array_t,
1255 return serializeArray(array_t.data(), array_t.size(), endianness);
1264 template<
class _T =
bool>
1266 const std::vector<bool>& vector_t)
1268 return serializeBoolSequence(vector_t);
1279 const std::vector<_T>& vector_t)
1281 state state_before_error(*
this);
1283 *this << static_cast<int32_t>(vector_t.size());
1287 return serializeArray(vector_t.data(), vector_t.size());
1291 setState(state_before_error);
1304 template<
class _K,
class _T>
1306 const std::map<_K, _T>& map_t)
1308 state state_(*
this);
1310 *this << static_cast<int32_t>(map_t.size());
1314 for (
auto it_pair = map_t.begin(); it_pair != map_t.end(); ++it_pair)
1316 *
this << it_pair->first;
1317 *
this << it_pair->second;
1338 Cdr& serialize<bool>(
1339 const std::vector<bool>& vector_t)
1341 return serializeBoolSequence(vector_t);
1355 const std::vector<_T>& vector_t,
1358 bool auxSwap = m_swapBytes;
1359 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
1360 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
1364 serialize(vector_t);
1365 m_swapBytes = auxSwap;
1369 m_swapBytes = auxSwap;
1399 const uint8_t* octet_t,
1402 return serializeArray(
reinterpret_cast<const char*
>(octet_t), numElements);
1415 const uint8_t* octet_t,
1420 return serializeArray(
reinterpret_cast<const char*
>(octet_t), numElements);
1432 size_t numElements);
1449 return serializeArray(char_t, numElements);
1464 return serializeArray(
reinterpret_cast<const char*
>(int8), numElements);
1482 return serializeArray(
reinterpret_cast<const char*
>(int8), numElements);
1494 const uint16_t* ushort_t,
1497 return serializeArray(
reinterpret_cast<const int16_t*
>(ushort_t), numElements);
1510 const uint16_t* ushort_t,
1514 return serializeArray(
reinterpret_cast<const int16_t*
>(ushort_t), numElements, endianness);
1525 const int16_t* short_t,
1526 size_t numElements);
1537 const int16_t* short_t,
1550 const uint32_t* ulong_t,
1553 return serializeArray(
reinterpret_cast<const int32_t*
>(ulong_t), numElements);
1566 const uint32_t* ulong_t,
1570 return serializeArray(
reinterpret_cast<const int32_t*
>(ulong_t), numElements, endianness);
1581 const int32_t* long_t,
1582 size_t numElements);
1593 const int32_t* long_t,
1605 const wchar_t* wchar,
1606 size_t numElements);
1617 const wchar_t* wchar,
1630 const uint64_t* ulonglong_t,
1633 return serializeArray(
reinterpret_cast<const int64_t*
>(ulonglong_t), numElements);
1646 const uint64_t* ulonglong_t,
1650 return serializeArray(
reinterpret_cast<const int64_t*
>(ulonglong_t), numElements, endianness);
1661 const int64_t* longlong_t,
1662 size_t numElements);
1673 const int64_t* longlong_t,
1685 const float* float_t,
1686 size_t numElements);
1697 const float* float_t,
1709 const double* double_t,
1710 size_t numElements);
1721 const double* double_t,
1733 const long double* ldouble_t,
1734 size_t numElements);
1745 const long double* ldouble_t,
1758 size_t numElements);
1775 return serializeArray(bool_t, numElements);
1787 const std::string* string_t,
1790 for (
size_t count = 0; count < numElements; ++count)
1792 serialize(string_t[count].c_str());
1806 const std::wstring* string_t,
1809 for (
size_t count = 0; count < numElements; ++count)
1811 serialize(string_t[count].c_str());
1826 const std::string* string_t,
1830 bool auxSwap = m_swapBytes;
1831 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
1832 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
1836 serializeArray(string_t, numElements);
1837 m_swapBytes = auxSwap;
1841 m_swapBytes = auxSwap;
1858 const std::wstring* string_t,
1862 bool auxSwap = m_swapBytes;
1863 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
1864 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
1868 serializeArray(string_t, numElements);
1869 m_swapBytes = auxSwap;
1873 m_swapBytes = auxSwap;
1889 const std::vector<_T>* vector_t,
1892 for (
size_t count = 0; count < numElements; ++count)
1894 serialize(vector_t[count]);
1911 for (
size_t count = 0; count < numElements; ++count)
1932 bool auxSwap = m_swapBytes;
1933 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
1934 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
1938 serializeArray(type_t, numElements);
1939 m_swapBytes = auxSwap;
1943 m_swapBytes = auxSwap;
1959 const _T* sequence_t,
1962 state state_before_error(*
this);
1964 serialize(
static_cast<int32_t
>(numElements));
1968 return serializeArray(sequence_t, numElements);
1972 setState(state_before_error);
1989 const _T* sequence_t,
1993 bool auxSwap = m_swapBytes;
1994 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
1995 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
1999 serializeSequence(sequence_t, numElements);
2000 m_swapBytes = auxSwap;
2004 m_swapBytes = auxSwap;
2021 return deserialize(
reinterpret_cast<char&
>(octet_t));
2036 return deserialize(
reinterpret_cast<char&
>(octet_t), endianness);
2061 return deserialize(char_t);
2074 return deserialize(
reinterpret_cast<char&
>(int8));
2089 return deserialize(
reinterpret_cast<char&
>(int8), endianness);
2102 return deserialize(
reinterpret_cast<int16_t&
>(ushort_t));
2117 return deserialize(
reinterpret_cast<int16_t&
>(ushort_t), endianness);
2150 return deserialize(
reinterpret_cast<int32_t&
>(ulong_t));
2165 return deserialize(
reinterpret_cast<int32_t&
>(ulong_t), endianness);
2200 wchar =
static_cast<wchar_t>(ret);
2217 deserialize(ret, endianness);
2218 wchar =
static_cast<wchar_t>(ret);
2230 uint64_t& ulonglong_t)
2232 return deserialize(
reinterpret_cast<int64_t&
>(ulonglong_t));
2244 uint64_t& ulonglong_t,
2247 return deserialize(
reinterpret_cast<int64_t&
>(ulonglong_t), endianness);
2257 int64_t& longlong_t);
2267 int64_t& longlong_t,
2318 long double& ldouble_t);
2329 long double& ldouble_t,
2356 return deserialize(bool_t);
2381 wchar_t*& string_t);
2419 std::string& string_t)
2421 uint32_t length = 0;
2422 const char* str = readString(length);
2423 string_t.assign(str, length);
2435 std::wstring& string_t)
2437 uint32_t length = 0;
2438 string_t = readWString(length);
2451 std::string& string_t,
2454 bool auxSwap = m_swapBytes;
2455 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
2456 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
2460 deserialize(string_t);
2461 m_swapBytes = auxSwap;
2465 m_swapBytes = auxSwap;
2481 std::wstring& string_t,
2484 bool auxSwap = m_swapBytes;
2485 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
2486 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
2490 deserialize(string_t);
2491 m_swapBytes = auxSwap;
2495 m_swapBytes = auxSwap;
2508 template<
class _T,
size_t _Size>
2510 std::array<_T, _Size>& array_t)
2512 return deserializeArray(array_t.data(), array_t.size());
2522 template<
class _T,
size_t _Size>
2524 std::array<_T, _Size>& array_t,
2527 return deserializeArray(array_t.data(), array_t.size(), endianness);
2536 template<
class _T =
bool>
2538 std::vector<bool>& vector_t)
2540 return deserializeBoolSequence(vector_t);
2551 std::vector<_T>& vector_t)
2553 uint32_t seqLength = 0;
2554 state state_before_error(*
this);
2564 if ((m_lastPosition - m_currentPosition) < seqLength)
2566 setState(state_before_error);
2573 vector_t.resize(seqLength);
2574 return deserializeArray(vector_t.data(), vector_t.size());
2578 setState(state_before_error);
2591 template<
class _K,
class _T>
2593 std::map<_K, _T>& map_t)
2595 uint32_t seqLength = 0;
2596 state state_(*
this);
2602 for (uint32_t i = 0; i < seqLength; ++i)
2608 map_t.emplace(std::pair<_K, _T>(std::move(key), std::move(value)));
2628 Cdr& deserialize<bool>(
2629 std::vector<bool>& vector_t)
2631 return deserializeBoolSequence(vector_t);
2645 std::vector<_T>& vector_t,
2648 bool auxSwap = m_swapBytes;
2649 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
2650 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
2654 deserialize(vector_t);
2655 m_swapBytes = auxSwap;
2659 m_swapBytes = auxSwap;
2692 return deserializeArray(
reinterpret_cast<char*
>(octet_t), numElements);
2709 return deserializeArray(
reinterpret_cast<char*
>(octet_t), numElements, endianness);
2721 size_t numElements);
2738 return deserializeArray(char_t, numElements);
2753 return deserializeArray(
reinterpret_cast<char*
>(int8), numElements);
2770 return deserializeArray(
reinterpret_cast<char*
>(int8), numElements, endianness);
2785 return deserializeArray(
reinterpret_cast<int16_t*
>(ushort_t), numElements);
2802 return deserializeArray(
reinterpret_cast<int16_t*
>(ushort_t), numElements, endianness);
2814 size_t numElements);
2841 return deserializeArray(
reinterpret_cast<int32_t*
>(ulong_t), numElements);
2858 return deserializeArray(
reinterpret_cast<int32_t*
>(ulong_t), numElements, endianness);
2870 size_t numElements);
2894 size_t numElements);
2918 uint64_t* ulonglong_t,
2921 return deserializeArray(
reinterpret_cast<int64_t*
>(ulonglong_t), numElements);
2934 uint64_t* ulonglong_t,
2938 return deserializeArray(
reinterpret_cast<int64_t*
>(ulonglong_t), numElements, endianness);
2949 int64_t* longlong_t,
2950 size_t numElements);
2961 int64_t* longlong_t,
2974 size_t numElements);
2998 size_t numElements);
3021 long double* ldouble_t,
3022 size_t numElements);
3033 long double* ldouble_t,
3046 size_t numElements);
3063 return deserializeArray(bool_t, numElements);
3075 std::string* string_t,
3078 for (
size_t count = 0; count < numElements; ++count)
3080 deserialize(string_t[count]);
3094 std::wstring* string_t,
3097 for (
size_t count = 0; count < numElements; ++count)
3099 deserialize(string_t[count]);
3114 std::string* string_t,
3118 bool auxSwap = m_swapBytes;
3119 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
3120 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
3124 deserializeArray(string_t, numElements);
3125 m_swapBytes = auxSwap;
3129 m_swapBytes = auxSwap;
3146 std::wstring* string_t,
3150 bool auxSwap = m_swapBytes;
3151 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
3152 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
3156 deserializeArray(string_t, numElements);
3157 m_swapBytes = auxSwap;
3161 m_swapBytes = auxSwap;
3177 std::vector<_T>* vector_t,
3180 for (
size_t count = 0; count < numElements; ++count)
3182 deserialize(vector_t[count]);
3199 for (
size_t count = 0; count < numElements; ++count)
3220 bool auxSwap = m_swapBytes;
3221 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
3222 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
3226 deserializeArray(type_t, numElements);
3227 m_swapBytes = auxSwap;
3231 m_swapBytes = auxSwap;
3247 template<
class _T = std::
string>
3249 std::string*& sequence_t,
3250 size_t& numElements)
3252 return deserializeStringSequence(sequence_t, numElements);
3264 template<
class _T = std::w
string>
3266 std::wstring*& sequence_t,
3267 size_t& numElements)
3269 return deserializeWStringSequence(sequence_t, numElements);
3284 size_t& numElements)
3286 uint32_t seqLength = 0;
3287 state state_before_error(*
this);
3289 deserialize(seqLength);
3293 sequence_t =
reinterpret_cast<_T*
>(calloc(seqLength,
sizeof(_T)));
3294 deserializeArray(sequence_t, seqLength);
3300 setState(state_before_error);
3304 numElements = seqLength;
3319 Cdr& deserializeSequence<std::string>(
3320 std::string*& sequence_t,
3321 size_t& numElements)
3323 return deserializeStringSequence(sequence_t, numElements);
3336 Cdr& deserializeSequence<std::wstring>(
3337 std::wstring*& sequence_t,
3338 size_t& numElements)
3340 return deserializeWStringSequence(sequence_t, numElements);
3358 size_t& numElements,
3361 bool auxSwap = m_swapBytes;
3362 m_swapBytes = (m_swapBytes && (
static_cast<Endianness>(m_endianness) == endianness)) ||
3363 (!m_swapBytes && (
static_cast<Endianness>(m_endianness) != endianness));
3367 deserializeSequence(sequence_t, numElements);
3368 m_swapBytes = auxSwap;
3372 m_swapBytes = auxSwap;
3382 const Cdr&) =
delete;
3385 const Cdr&) =
delete;
3387 Cdr& serializeBoolSequence(
3388 const std::vector<bool>& vector_t);
3390 Cdr& deserializeBoolSequence(
3391 std::vector<bool>& vector_t);
3393 Cdr& deserializeStringSequence(
3394 std::string*& sequence_t,
3395 size_t& numElements);
3397 Cdr& deserializeWStringSequence(
3398 std::wstring*& sequence_t,
3399 size_t& numElements);
3408 template<
class _T,
size_t _Size>
3409 Cdr& serializeArray(
3410 const std::array<_T, _Size>* array_t,
3413 return serializeArray(array_t->data(), numElements * array_t->size());
3424 template<
class _T,
size_t _Size>
3425 Cdr& serializeArray(
3426 const std::array<_T, _Size>* array_t,
3428 Endianness endianness)
3430 return serializeArray(array_t->data(), numElements * array_t->size(), endianness);
3440 template<
class _T,
size_t _Size>
3441 Cdr& deserializeArray(
3442 std::array<_T, _Size>* array_t,
3445 return deserializeArray(array_t->data(), numElements * array_t->size());
3456 template<
class _T,
size_t _Size>
3457 Cdr& deserializeArray(
3458 std::array<_T, _Size>* array_t,
3460 Endianness endianness)
3462 return deserializeArray(array_t->data(), numElements * array_t->size(), endianness);
3470 inline size_t alignment(
3471 size_t dataSize)
const
3474 m_lastDataSize ? (dataSize - ((m_currentPosition - m_alignPosition) % dataSize)) &
3482 inline void makeAlign(
3485 m_currentPosition += align;
3497 const char* readString(
3499 const std::wstring readWString(
3503 FastBuffer& m_cdrBuffer;
3509 DDSCdrPlFlag m_plFlag;
3515 uint8_t m_endianness;
3521 size_t m_lastDataSize;
This class implements the iterator used to go through a FastBuffer.
Definition: FastBuffer.h:43
This class stores the current state of a CDR serialization.
Definition: Cdr.h:82
state(const Cdr &cdr)
Default constructor.
state(const state &)
Copy constructor.
This class offers an interface to serialize/deserialize some basic types using CDR protocol inside an...
Definition: Cdr.h:42
Cdr & deserializeArray(int32_t *long_t, size_t numElements, Endianness endianness)
This function deserializes an array of longs with a different endianness.
Cdr & serialize(const _T &type_t)
This function template serializes a non-basic object.
Definition: Cdr.h:1383
Cdr & deserialize(double &double_t)
This function deserializes a double.
Cdr & serializeArray(const int16_t *short_t, size_t numElements, Endianness endianness)
This function serializes an array of shorts with a different endianness.
Cdr & deserializeArray(uint32_t *ulong_t, size_t numElements, Endianness endianness)
This function deserializes an array of unsigned longs with a different endianness.
Definition: Cdr.h:2853
Cdr & deserializeArray(char *char_t, size_t numElements, Endianness endianness)
This function deserializes an array of characters with a different endianness.
Definition: Cdr.h:2732
Cdr & deserialize(float &float_t)
This function deserializes a float.
Cdr & serialize(const wchar_t wchar)
This function serializes a wide-char.
Definition: Cdr.h:980
Cdr & deserialize(wchar_t &wchar)
This function deserializes a wide-char.
Definition: Cdr.h:2195
Cdr & serialize(const uint64_t ulonglong_t)
This function serializes an unsigned long long.
Definition: Cdr.h:1008
Cdr & deserializeArray(int64_t *longlong_t, size_t numElements, Endianness endianness)
This function deserializes an array of long longs with a different endianness.
Cdr & deserializeArray(wchar_t *wchar, size_t numElements)
This function deserializes an array of wide-chars.
Cdr & deserialize(long double &ldouble_t)
This function deserializes a long double.
Cdr & serialize(const int64_t longlong_t)
This function serializes a long long.
Cdr & deserializeArray(wchar_t *wchar, size_t numElements, Endianness endianness)
This function deserializes an array of wide-chars with a different endianness.
Cdr & deserialize(std::vector< _T > &vector_t, Endianness endianness)
This function template deserializes a sequence with a different endianness.
Definition: Cdr.h:2644
Cdr & serializeArray(const std::string *string_t, size_t numElements)
This function serializes an array of strings.
Definition: Cdr.h:1786
void changeEndianness(Endianness endianness)
This function sets the current endianness used by the CDR type.
Cdr & serialize(const std::map< _K, _T > &map_t)
This function template serializes a map.
Definition: Cdr.h:1305
Cdr & serializeArray(const uint8_t *octet_t, size_t numElements, Endianness endianness)
This function serializes an array of octets with a different endianness.
Definition: Cdr.h:1414
Cdr & serialize(const double double_t)
This function serializes a double.
void setDDSCdrOptions(uint16_t options)
This function sets the option flags when the CDR type is eprosima::fastcdr::DDS_CDR.
Cdr & serializeArray(const uint16_t *ushort_t, size_t numElements, Endianness endianness)
This function serializes an array of unsigned shorts with a different endianness.
Definition: Cdr.h:1509
Cdr & deserialize(std::array< _T, _Size > &array_t)
This function template deserializes an array.
Definition: Cdr.h:2509
Cdr & deserialize(bool &bool_t)
This function deserializes a boolean.
Cdr & deserialize(bool &bool_t, Endianness endianness)
This function deserializes a boolean with a different endianness.
Definition: Cdr.h:2351
Cdr & serializeSequence(const _T *sequence_t, size_t numElements, Endianness endianness)
This function template serializes a raw sequence with a different endianness.
Definition: Cdr.h:1988
Cdr & serialize(const int32_t long_t)
This function serializes a long.
Cdr & serializeArray(const _T *type_t, size_t numElements, Endianness endianness)
This function template serializes an array of non-basic objects with a different endianness.
Definition: Cdr.h:1927
Cdr & serialize(const std::array< _T, _Size > &array_t, Endianness endianness)
This function template serializes an array with a different endianness.
Definition: Cdr.h:1251
Cdr & deserialize(int32_t &long_t)
This function deserializes a long.
Cdr & deserialize(std::string &string_t)
This function deserializes a std::string.
Definition: Cdr.h:2418
Cdr & deserialize(wchar_t *&string_t)
This function deserializes a wide string.
Cdr & deserializeArray(float *float_t, size_t numElements, Endianness endianness)
This function deserializes an array of floats with a different endianness.
Cdr & deserializeArray(long double *ldouble_t, size_t numElements)
This function deserializes an array of long doubles.
Cdr & serializeArray(const std::string *string_t, size_t numElements, Endianness endianness)
This function serializes an array of strings with a different endianness.
Definition: Cdr.h:1825
Cdr & serialize(const uint16_t ushort_t, Endianness endianness)
This function serializes an unsigned short with a different endianness.
Definition: Cdr.h:898
Cdr & deserializeArray(int8_t *int8, size_t numElements)
This function deserializes an array of int8_t.
Definition: Cdr.h:2749
Cdr & serializeArray(const char *char_t, size_t numElements, Endianness endianness)
This function serializes an array of characters with a different endianness.
Definition: Cdr.h:1443
Cdr & serialize(const long double ldouble_t)
This function serializes a long double.
Cdr & deserialize(std::vector< _T > &vector_t)
This function template deserializes a sequence.
Definition: Cdr.h:2550
Cdr & deserializeSequence(_T *&sequence_t, size_t &numElements, Endianness endianness)
This function template deserializes a raw sequence with a different endianness.
Definition: Cdr.h:3356
Cdr & deserializeArray(uint64_t *ulonglong_t, size_t numElements)
This function deserializes an array of unsigned long longs.
Definition: Cdr.h:2917
Cdr(FastBuffer &cdrBuffer, const Endianness endianness=DEFAULT_ENDIAN, const CdrType cdrType=CORBA_CDR)
This constructor creates an eprosima::fastcdr::Cdr object that can serialize/deserialize the assigned...
Cdr & serialize(const std::wstring &string_t)
This function serializes a std::wstring.
Definition: Cdr.h:1209
Cdr & deserialize(long double &ldouble_t, Endianness endianness)
This function deserializes a long double with a different endianness.
Cdr & deserializeArray(int16_t *short_t, size_t numElements)
This function deserializes an array of shorts.
Cdr & serialize(const int64_t longlong_t, Endianness endianness)
This function serializes a long long with a different endianness.
Cdr & serializeArray(const uint32_t *ulong_t, size_t numElements)
This function serializes an array of unsigned longs.
Definition: Cdr.h:1549
Cdr & serialize(const bool bool_t, Endianness endianness)
This function serializes a boolean with a different endianness.
Definition: Cdr.h:1129
Cdr & deserialize(wchar_t *&string_t, Endianness endianness)
This function deserializes a wide string with a different endianness.
Cdr & serializeArray(const float *float_t, size_t numElements)
This function serializes an array of floats.
size_t getSerializedDataLength() const
This function returns the length of the serialized data inside the stream.
Definition: Cdr.h:218
Cdr & deserialize(uint32_t &ulong_t, Endianness endianness)
This function deserializes an unsigned long with a different endianness.
Definition: Cdr.h:2161
Cdr & deserializeSequence(std::string *&sequence_t, size_t &numElements)
This function template deserializes a string sequence.
Definition: Cdr.h:3248
Cdr & deserialize(int16_t &short_t, Endianness endianness)
This function deserializes a short with a different endianness.
Cdr & serialize(const uint8_t octet_t, Endianness endianness)
This function serializes an octet with a different endianness.
Definition: Cdr.h:817
Cdr & serializeArray(const int16_t *short_t, size_t numElements)
This function serializes an array of shorts.
Cdr & deserialize(_T &type_t)
This function template deserializes a non-basic object.
Definition: Cdr.h:2673
Cdr & deserializeArray(bool *bool_t, size_t numElements)
This function deserializes an array of booleans.
Cdr & read_encapsulation()
This function reads the encapsulation of the CDR stream.
void setState(state &state)
This function sets a previous state of the CDR serialization process;.
Cdr & serializeArray(const _T *type_t, size_t numElements)
This function template serializes an array of non-basic objects.
Definition: Cdr.h:1907
Cdr & deserialize(uint64_t &ulonglong_t)
This function deserializes an unsigned long long.
Definition: Cdr.h:2229
Cdr & deserializeArray(uint64_t *ulonglong_t, size_t numElements, Endianness endianness)
This function deserializes an array of unsigned long longs with a different endianness.
Definition: Cdr.h:2933
Cdr & serialize(const std::vector< _T > &vector_t, Endianness endianness)
This function template serializes a sequence with a different endianness.
Definition: Cdr.h:1354
Cdr & serializeArray(const long double *ldouble_t, size_t numElements)
This function serializes an array of long doubles.
Cdr & deserialize(std::wstring &string_t)
This function deserializes a std::string.
Definition: Cdr.h:2434
Cdr & deserializeArray(std::wstring *string_t, size_t numElements, Endianness endianness)
This function deserializes an array of wide-strings with a different endianness.
Definition: Cdr.h:3145
Cdr & deserializeArray(double *double_t, size_t numElements, Endianness endianness)
This function deserializes an array of doubles with a different endianness.
Cdr & deserializeArray(std::string *string_t, size_t numElements)
This function deserializes an array of strings.
Definition: Cdr.h:3074
Cdr & serialize(const double double_t, Endianness endianness)
This function serializes a double with a different endianness.
Cdr & deserialize(wchar_t &wchar, Endianness endianness)
This function deserializes a wide-char with a different endianness.
Definition: Cdr.h:2212
Cdr & deserialize(uint32_t &ulong_t)
This function deserializes an unsigned long.
Definition: Cdr.h:2147
Endianness
This enumeration represents endianness types.
Definition: Cdr.h:68
Cdr & deserializeArray(int64_t *longlong_t, size_t numElements)
This function deserializes an array of long longs.
Cdr & serialize(char *string_t)
This function serializes a string.
Definition: Cdr.h:1143
Cdr & serializeSequence(const _T *sequence_t, size_t numElements)
This function template serializes a raw sequence.
Definition: Cdr.h:1958
Cdr & serializeArray(const wchar_t *wchar, size_t numElements)
This function serializes an array of wide-chars.
static const Endianness DEFAULT_ENDIAN
Default endiness in the system.
Definition: Cdr.h:76
Cdr & serialize(const uint32_t ulong_t, Endianness endianness)
This function serializes an unsigned long with a different endianness.
Definition: Cdr.h:946
Cdr & serialize(const uint8_t octet_t)
This function serializes an octet.
Definition: Cdr.h:803
Cdr & deserializeArray(float *float_t, size_t numElements)
This function deserializes an array of floats.
Cdr & deserialize(int8_t &int8)
This function deserializes an int8_t.
Definition: Cdr.h:2071
Cdr & serialize(const wchar_t wchar, Endianness endianness)
This function serializes a wide-char with a different endianness.
Definition: Cdr.h:994
Cdr & serialize(const int8_t int8, Endianness endianness)
This function serializes an int8_t with a different endianness.
Definition: Cdr.h:870
Cdr & deserializeArray(long double *ldouble_t, size_t numElements, Endianness endianness)
This function deserializes an array of long doubles with a different endianness.
Cdr & serialize(const uint64_t ulonglong_t, Endianness endianness)
This function serializes an unsigned long long with a different endianness.
Definition: Cdr.h:1022
Cdr & deserialize(int32_t &long_t, Endianness endianness)
This function deserializes a long with a different endianness.
Cdr & deserialize(int16_t &short_t)
This function deserializes a short.
Cdr & deserializeArray(uint16_t *ushort_t, size_t numElements, Endianness endianness)
This function deserializes an array of unsigned shorts with a different endianness.
Definition: Cdr.h:2797
Cdr & serializeArray(const int64_t *longlong_t, size_t numElements)
This function serializes an array of long longs.
Cdr & deserialize(char &char_t)
This function deserializes a character.
Cdr & serializeArray(const char *char_t, size_t numElements)
This function serializes an array of characters.
Cdr & deserialize(char *&string_t, Endianness endianness)
This function deserializes a string with a different endianness.
Cdr & serialize(const std::string &string_t, Endianness endianness)
This function serializes a std::string with a different endianness.
Definition: Cdr.h:1223
Cdr & serializeArray(const double *double_t, size_t numElements)
This function serializes an array of doubles.
Cdr & serializeArray(const bool *bool_t, size_t numElements)
This function serializes an array of booleans.
Cdr & serialize(const char char_t)
This function serializes a character.
Cdr & serializeArray(const std::wstring *string_t, size_t numElements)
This function serializes an array of wide-strings.
Definition: Cdr.h:1805
Cdr & deserializeArray(int8_t *int8, size_t numElements, Endianness endianness)
This function deserializes an array of int8_t with a different endianness.
Definition: Cdr.h:2765
Cdr & serialize(const char *string_t)
This function serializes a string.
Cdr & deserializeArray(int32_t *long_t, size_t numElements)
This function deserializes an array of longs.
Cdr & deserializeArray(std::string *string_t, size_t numElements, Endianness endianness)
This function deserializes an array of strings with a different endianness.
Definition: Cdr.h:3113
Cdr & serialize(const int16_t short_t, Endianness endianness)
This function serializes a short with a different endianness.
Cdr & serialize(const std::vector< bool > &vector_t)
This function template serializes a sequence of booleans.
Definition: Cdr.h:1265
Cdr & deserialize(std::wstring &string_t, Endianness endianness)
This function deserializes a string with a different endianness.
Definition: Cdr.h:2480
Cdr & deserializeArray(uint16_t *ushort_t, size_t numElements)
This function deserializes an array of unsigned shorts.
Definition: Cdr.h:2781
Cdr & serialize(const bool bool_t)
This function serializes a boolean.
Cdr & serializeArray(const bool *bool_t, size_t numElements, Endianness endianness)
This function serializes an array of booleans with a different endianness.
Definition: Cdr.h:1769
Cdr & serializeArray(const int32_t *long_t, size_t numElements)
This function serializes an array of longs.
Cdr & deserializeSequence(_T *&sequence_t, size_t &numElements)
This function template deserializes a raw sequence.
Definition: Cdr.h:3282
Cdr & deserialize(uint16_t &ushort_t)
This function deserializes an unsigned short.
Definition: Cdr.h:2099
Cdr & serializeArray(const uint64_t *ulonglong_t, size_t numElements)
This function serializes an array of unsigned long longs.
Definition: Cdr.h:1629
Cdr & deserialize(uint8_t &octet_t, Endianness endianness)
This function deserializes an octet with a different endianness.
Definition: Cdr.h:2032
uint16_t getDDSCdrOptions() const
This function returns the option flags when the CDR type is eprosima::fastcdr::DDS_CDR.
Cdr & serializeArray(const int8_t *int8, size_t numElements, Endianness endianness)
This function serializes an array of int8_t with a different endianness.
Definition: Cdr.h:1476
Cdr & deserialize(std::string &string_t, Endianness endianness)
This function deserializes a string with a different endianness.
Definition: Cdr.h:2450
static size_t alignment(size_t current_alignment, size_t dataSize)
Get the number of bytes needed to align a position to certain data size.
Definition: Cdr.h:229
Cdr & deserializeArray(uint8_t *octet_t, size_t numElements)
This function deserializes an array of octets.
Definition: Cdr.h:2688
Cdr & serializeArray(const double *double_t, size_t numElements, Endianness endianness)
This function serializes an array of doubles with a different endianness.
Cdr & deserializeArray(_T *type_t, size_t numElements)
This function template deserializes an array of non-basic objects.
Definition: Cdr.h:3195
Cdr & serializeArray(const int32_t *long_t, size_t numElements, Endianness endianness)
This function serializes an array of longs with a different endianness.
Cdr & serialize(const int8_t int8)
This function serializes an int8_t.
Definition: Cdr.h:856
Cdr & serialize(const wchar_t *string_t)
This function serializes a wstring.
Cdr & deserializeSequence(std::wstring *&sequence_t, size_t &numElements)
This function template deserializes a wide-string sequence.
Definition: Cdr.h:3265
Cdr & deserializeArray(double *double_t, size_t numElements)
This function deserializes an array of doubles.
Cdr & serialize(const char *string_t, Endianness endianness)
This function serializes a string with a different endianness.
Cdr & deserialize(uint64_t &ulonglong_t, Endianness endianness)
This function deserializes an unsigned long long with a different endianness.
Definition: Cdr.h:2243
Cdr & serialize(const long double ldouble_t, Endianness endianness)
This function serializes a long double with a different endianness.
DDSCdrPlFlag
This enumeration represents the two posible values of the flag that points if the content is a parame...
Definition: Cdr.h:57
Cdr & serialize_encapsulation()
This function writes the encapsulation of the CDR stream.
DDSCdrPlFlag getDDSCdrPlFlag() const
This function returns the parameter list flag when the CDR type is eprosima::fastcdr::DDS_CDR.
Cdr & serializeArray(const std::vector< _T > *vector_t, size_t numElements)
This function template serializes an array of sequences of objects.
Definition: Cdr.h:1888
Cdr & serialize(const int16_t short_t)
This function serializes a short.
void setDDSCdrPlFlag(DDSCdrPlFlag plFlag)
This function sets the parameter list flag when the CDR type is eprosima::fastcdr::DDS_CDR.
Cdr & deserialize(uint8_t &octet_t)
This function deserializes an octet.
Definition: Cdr.h:2018
Cdr & deserialize(int8_t &int8, Endianness endianness)
This function deserializes an int8_t with a different endianness.
Definition: Cdr.h:2085
Cdr & serialize(const uint32_t ulong_t)
This function serializes an unsigned long.
Definition: Cdr.h:932
Cdr & serializeArray(const wchar_t *wchar, size_t numElements, Endianness endianness)
This function serializes an array of wide-chars with a different endianness.
void reset()
This function resets the current position in the buffer to the beginning.
Cdr & serialize(const std::vector< _T > &vector_t)
This function template serializes a sequence.
Definition: Cdr.h:1278
Cdr & deserialize(char *&string_t)
This function deserializes a string.
Cdr & deserialize(int64_t &longlong_t, Endianness endianness)
This function deserializes a long long with a different endianness.
Cdr & deserializeArray(uint8_t *octet_t, size_t numElements, Endianness endianness)
This function deserializes an array of octets with a different endianness.
Definition: Cdr.h:2704
Cdr & deserialize(float &float_t, Endianness endianness)
This function deserializes a float with a different endianness.
Cdr & serialize(const char char_t, Endianness endianness)
This function serializes a character with a different endianness.
Definition: Cdr.h:841
Cdr & deserialize(std::vector< bool > &vector_t)
This function template deserializes a sequence.
Definition: Cdr.h:2537
Cdr & serialize(const uint16_t ushort_t)
This function serializes an unsigned short.
Definition: Cdr.h:884
Cdr & serializeArray(const uint16_t *ushort_t, size_t numElements)
This function serializes an array of unsigned shorts.
Definition: Cdr.h:1493
bool jump(size_t numBytes)
This function skips a number of bytes in the CDR stream buffer.
Cdr & deserializeArray(_T *type_t, size_t numElements, Endianness endianness)
This function template deserializes an array of non-basic objects with a different endianness.
Definition: Cdr.h:3215
CdrType
This enumeration represents the two kinds of CDR serialization supported by eprosima::fastcdr::CDR.
Definition: Cdr.h:47
@ CORBA_CDR
Common CORBA CDR serialization.
Definition: Cdr.h:49
Cdr & serializeArray(const uint32_t *ulong_t, size_t numElements, Endianness endianness)
This function serializes an array of unsigned longs with a different endianness.
Definition: Cdr.h:1565
Cdr & serialize(const float float_t)
This function serializes a float.
Cdr & deserialize(double &double_t, Endianness endianness)
This function deserializes a double with a different endianness.
Cdr & serialize(const int32_t long_t, Endianness endianness)
This function serializes a long with a different endianness.
Endianness endianness() const
This function returns the current endianness used by the CDR type.
Definition: Cdr.h:184
Cdr & deserialize(std::map< _K, _T > &map_t)
This function template deserializes a map.
Definition: Cdr.h:2592
Cdr & serializeArray(const long double *ldouble_t, size_t numElements, Endianness endianness)
This function serializes an array of long doubles with a different endianness.
Cdr & serializeArray(const uint8_t *octet_t, size_t numElements)
This function serializes an array of octets.
Definition: Cdr.h:1398
Cdr & deserializeArray(uint32_t *ulong_t, size_t numElements)
This function deserializes an array of unsigned longs.
Definition: Cdr.h:2837
bool moveAlignmentForward(size_t numBytes)
This function moves the alignment forward.
Cdr & serialize(const wchar_t *string_t, Endianness endianness)
This function serializes a wstring with a different endianness.
Cdr & serialize(const std::string &string_t)
This function serializes a std::string.
Definition: Cdr.h:1196
Cdr & deserializeArray(int16_t *short_t, size_t numElements, Endianness endianness)
This function deserializes an array of shorts with a different endianness.
Cdr & serializeArray(const int8_t *int8, size_t numElements)
This function serializes an array of int8_t.
Definition: Cdr.h:1460
Cdr & deserializeArray(char *char_t, size_t numElements)
This function deserializes an array of characters.
Cdr & deserialize(std::array< _T, _Size > &array_t, Endianness endianness)
This function template deserializes an array with a different endianness.
Definition: Cdr.h:2523
Cdr & serializeArray(const uint64_t *ulonglong_t, size_t numElements, Endianness endianness)
This function serializes an array of unsigned long longs with a different endianness.
Definition: Cdr.h:1645
Cdr & deserializeArray(std::vector< _T > *vector_t, size_t numElements)
This function deserializes an array of sequences of objects.
Definition: Cdr.h:3176
char * getCurrentPosition()
This function returns the current position in the CDR stream.
Cdr & serialize(const float float_t, Endianness endianness)
This function serializes a float with a different endianness.
Cdr & deserializeArray(bool *bool_t, size_t numElements, Endianness endianness)
This function deserializes an array of booleans with a different endianness.
Definition: Cdr.h:3057
char * getBufferPointer()
This function returns the pointer to the current used buffer.
Cdr & serialize(const std::array< _T, _Size > &array_t)
This function template serializes an array.
Definition: Cdr.h:1237
Cdr & deserialize(char &char_t, Endianness endianness)
This function deserializes a character with a different endianness.
Definition: Cdr.h:2056
Cdr & deserialize(uint16_t &ushort_t, Endianness endianness)
This function deserializes an unsigned short with a different endianness.
Definition: Cdr.h:2113
state getState()
This function returns the current state of the CDR serialization process.
Cdr & serializeArray(const std::wstring *string_t, size_t numElements, Endianness endianness)
This function serializes an array of wide-strings with a different endianness.
Definition: Cdr.h:1857
Cdr & serializeArray(const int64_t *longlong_t, size_t numElements, Endianness endianness)
This function serializes an array of long longs with a different endianness.
void resetAlignment()
This function resets the alignment to the current position in the buffer.
Definition: Cdr.h:260
Cdr & deserializeArray(std::wstring *string_t, size_t numElements)
This function deserializes an array of wide-strings.
Definition: Cdr.h:3093
Cdr & serializeArray(const float *float_t, size_t numElements, Endianness endianness)
This function serializes an array of floats with a different endianness.
Cdr & deserialize(int64_t &longlong_t)
This function deserializes a long long.
This class represents a stream of bytes that contains (or will contain) serialized data.
Definition: FastBuffer.h:229
_FastBuffer_iterator iterator
Definition: FastBuffer.h:232
This abstract class is used to create exceptions.
Definition: Exception.h:30
virtual void raise() const =0
This function throws the object as exception.
This class is thrown as an exception when the buffer's internal memory reachs its size limit.
Definition: NotEnoughMemoryException.h:28
static const char *const NOT_ENOUGH_MEMORY_MESSAGE_DEFAULT
Default message used in the library.
Definition: NotEnoughMemoryException.h:78