15 #ifndef _FASTCDR_CDR_H_ 16 #define _FASTCDR_CDR_H_ 27 #if !__APPLE__ && !__FreeBSD__ && !__VXWORKS__ 31 #endif // if !__APPLE__ && !__FreeBSD__ && !__VXWORKS__ 35 #endif // if HAVE_CXX0X 59 typedef enum : uint8_t
62 #endif // ifdef HAVE_CXX0X 65 DDS_CDR_WITHOUT_PL = 0x0,
74 typedef enum : uint8_t
77 #endif // ifdef HAVE_CXX0X 82 LITTLE_ENDIANNESS = 0x1
112 const state&) =
delete;
138 const CdrType cdrType = CORBA_CDR);
147 Cdr& read_encapsulation();
155 Cdr& serialize_encapsulation();
167 void setDDSCdrPlFlag(
174 uint16_t getDDSCdrOptions()
const;
180 void setDDSCdrOptions(
187 void changeEndianness(
216 char* getBufferPointer();
222 char* getCurrentPosition();
230 return m_currentPosition - m_cdrBuffer.begin();
240 size_t current_alignment,
243 return (dataSize - (current_alignment % dataSize)) & (dataSize - 1);
264 bool moveAlignmentForward(
272 m_alignPosition = m_currentPosition;
282 const uint8_t octet_t)
318 const uint16_t ushort_t)
330 const int16_t short_t)
342 const uint32_t ulong_t)
354 const int32_t long_t)
378 const uint64_t ulonglong_t)
390 const int64_t longlong_t)
414 const double double_t)
426 const long double ldouble_t)
450 const char* string_t)
474 const std::string& string_t)
486 const std::wstring& string_t)
498 template<
class _T,
size_t _Size>
500 const std::array<_T, _Size>& array_t)
502 return serialize<_T, _Size>(array_t);
505 #endif // if HAVE_CXX0X 515 const std::vector<_T>& vector_t)
517 return serialize<_T>(vector_t);
526 template<
class _K,
class _T>
528 const std::map<_K, _T>& map_t)
530 return serialize<_K, _T>(map_t);
543 type_t.serialize(*
this);
651 uint64_t& ulonglong_t)
699 long double& ldouble_t)
739 std::string& string_t)
751 std::wstring& string_t)
763 template<
class _T,
size_t _Size>
764 inline Cdr& operator >>(
765 std::array<_T, _Size>& array_t)
767 return deserialize<_T, _Size>(array_t);
770 #endif // if HAVE_CXX0X 780 std::vector<_T>& vector_t)
782 return deserialize<_T>(vector_t);
791 template<
class _K,
class _T>
793 std::map<_K, _T>& map_t)
795 return deserialize<_K, _T>(map_t);
820 const uint8_t octet_t)
822 return serialize(static_cast<char>(octet_t));
834 const uint8_t octet_t,
837 return serialize(static_cast<char>(octet_t), endianness);
875 return serialize(static_cast<char>(int8));
890 return serialize(static_cast<char>(int8), endianness);
901 const uint16_t ushort_t)
903 return serialize(static_cast<int16_t>(ushort_t));
915 const uint16_t ushort_t,
918 return serialize(static_cast<int16_t>(ushort_t), endianness);
928 const int16_t short_t);
938 const int16_t short_t,
949 const uint32_t ulong_t)
951 return serialize(static_cast<int32_t>(ulong_t));
963 const uint32_t ulong_t,
966 return serialize(static_cast<int32_t>(ulong_t), endianness);
976 const int32_t long_t);
986 const int32_t long_t,
999 return serialize(static_cast<uint32_t>(wchar));
1011 const wchar_t wchar,
1014 return serialize(static_cast<uint32_t>(wchar), endianness);
1025 const uint64_t ulonglong_t)
1027 return serialize(static_cast<int64_t>(ulonglong_t));
1039 const uint64_t ulonglong_t,
1042 return serialize(static_cast<int64_t>(ulonglong_t), endianness);
1052 const int64_t longlong_t);
1062 const int64_t longlong_t,
1072 const float float_t);
1082 const float float_t,
1092 const double double_t);
1102 const double double_t,
1114 const long double ldouble_t);
1125 const long double ldouble_t,
1162 return serialize(static_cast<const char*>(string_t));
1172 const char* string_t);
1181 const wchar_t* string_t);
1191 const char* string_t,
1202 const wchar_t* string_t,
1213 const std::string& string_t)
1226 const std::wstring& string_t)
1240 const std::string& string_t,
1243 return serialize(string_t.c_str(), endianness);
1253 template<
class _T,
size_t _Size>
1255 const std::array<_T, _Size>& array_t)
1257 return serializeArray(array_t.data(), array_t.size());
1267 template<
class _T,
size_t _Size>
1269 const std::array<_T, _Size>& array_t,
1272 return serializeArray(array_t.data(), array_t.size(), endianness);
1275 #endif // if HAVE_CXX0X 1277 #if !defined(_MSC_VER) && HAVE_CXX0X 1284 template<
class _T =
bool>
1286 const std::vector<bool>& vector_t)
1288 return serializeBoolSequence(vector_t);
1291 #endif // if !defined(_MSC_VER) && HAVE_CXX0X 1301 const std::vector<_T>& vector_t)
1303 state state_before_error(*
this);
1305 *this << static_cast<int32_t>(vector_t.size());
1309 return serializeArray(vector_t.data(), vector_t.size());
1313 setState(state_before_error);
1326 template<
class _K,
class _T>
1328 const std::map<_K, _T>& map_t)
1330 state state_(*
this);
1332 *this << static_cast<int32_t>(map_t.size());
1336 for (
auto it_pair = map_t.begin(); it_pair != map_t.end(); ++it_pair)
1338 *
this << it_pair->first;
1339 *
this << it_pair->second;
1360 Cdr& serialize<bool>(
1361 const std::vector<bool>& vector_t)
1363 return serializeBoolSequence(vector_t);
1366 #endif // ifdef _MSC_VER 1377 const std::vector<_T>& vector_t,
1380 bool auxSwap = m_swapBytes;
1381 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
1386 m_swapBytes = auxSwap;
1390 m_swapBytes = auxSwap;
1420 const uint8_t* octet_t,
1423 return serializeArray(reinterpret_cast<const char*>(octet_t), numElements);
1436 const uint8_t* octet_t,
1441 return serializeArray(reinterpret_cast<const char*>(octet_t), numElements);
1451 Cdr& serializeArray(
1453 size_t numElements);
1470 return serializeArray(char_t, numElements);
1485 return serializeArray(reinterpret_cast<const char*>(int8), numElements);
1503 return serializeArray(reinterpret_cast<const char*>(int8), numElements);
1515 const uint16_t* ushort_t,
1518 return serializeArray(reinterpret_cast<const int16_t*>(ushort_t), numElements);
1531 const uint16_t* ushort_t,
1535 return serializeArray(reinterpret_cast<const int16_t*>(ushort_t), numElements, endianness);
1545 Cdr& serializeArray(
1546 const int16_t* short_t,
1547 size_t numElements);
1557 Cdr& serializeArray(
1558 const int16_t* short_t,
1571 const uint32_t* ulong_t,
1574 return serializeArray(reinterpret_cast<const int32_t*>(ulong_t), numElements);
1587 const uint32_t* ulong_t,
1591 return serializeArray(reinterpret_cast<const int32_t*>(ulong_t), numElements, endianness);
1601 Cdr& serializeArray(
1602 const int32_t* long_t,
1603 size_t numElements);
1613 Cdr& serializeArray(
1614 const int32_t* long_t,
1625 Cdr& serializeArray(
1626 const wchar_t* wchar,
1627 size_t numElements);
1637 Cdr& serializeArray(
1638 const wchar_t* wchar,
1651 const uint64_t* ulonglong_t,
1654 return serializeArray(reinterpret_cast<const int64_t*>(ulonglong_t), numElements);
1667 const uint64_t* ulonglong_t,
1671 return serializeArray(reinterpret_cast<const int64_t*>(ulonglong_t), numElements, endianness);
1681 Cdr& serializeArray(
1682 const int64_t* longlong_t,
1683 size_t numElements);
1693 Cdr& serializeArray(
1694 const int64_t* longlong_t,
1705 Cdr& serializeArray(
1706 const float* float_t,
1707 size_t numElements);
1717 Cdr& serializeArray(
1718 const float* float_t,
1729 Cdr& serializeArray(
1730 const double* double_t,
1731 size_t numElements);
1741 Cdr& serializeArray(
1742 const double* double_t,
1753 Cdr& serializeArray(
1754 const long double* ldouble_t,
1755 size_t numElements);
1765 Cdr& serializeArray(
1766 const long double* ldouble_t,
1777 Cdr& serializeArray(
1779 size_t numElements);
1796 return serializeArray(bool_t, numElements);
1808 const std::string* string_t,
1827 const std::wstring* string_t,
1847 const std::string* string_t,
1851 bool auxSwap = m_swapBytes;
1852 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
1856 serializeArray(string_t, numElements);
1857 m_swapBytes = auxSwap;
1861 m_swapBytes = auxSwap;
1878 const std::wstring* string_t,
1882 bool auxSwap = m_swapBytes;
1883 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
1887 serializeArray(string_t, numElements);
1888 m_swapBytes = auxSwap;
1892 m_swapBytes = auxSwap;
1908 const std::vector<_T>* vector_t,
1951 bool auxSwap = m_swapBytes;
1952 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
1956 serializeArray(type_t, numElements);
1957 m_swapBytes = auxSwap;
1961 m_swapBytes = auxSwap;
1977 const _T* sequence_t,
1980 state state_before_error(*
this);
1982 serialize(static_cast<int32_t>(numElements));
1986 return serializeArray(sequence_t, numElements);
1990 setState(state_before_error);
2007 const _T* sequence_t,
2011 bool auxSwap = m_swapBytes;
2012 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
2016 serializeSequence(sequence_t, numElements);
2017 m_swapBytes = auxSwap;
2021 m_swapBytes = auxSwap;
2038 return deserialize(reinterpret_cast<char&>(octet_t));
2053 return deserialize(reinterpret_cast<char&>(octet_t), endianness);
2091 return deserialize(reinterpret_cast<char&>(int8));
2106 return deserialize(reinterpret_cast<char&>(int8), endianness);
2119 return deserialize(reinterpret_cast<int16_t&>(ushort_t));
2134 return deserialize(reinterpret_cast<int16_t&>(ushort_t), endianness);
2167 return deserialize(reinterpret_cast<int32_t&>(ulong_t));
2182 return deserialize(reinterpret_cast<int32_t&>(ulong_t), endianness);
2217 wchar =
static_cast<wchar_t>(
ret);
2235 wchar =
static_cast<wchar_t>(
ret);
2247 uint64_t& ulonglong_t)
2249 return deserialize(reinterpret_cast<int64_t&>(ulonglong_t));
2261 uint64_t& ulonglong_t,
2264 return deserialize(reinterpret_cast<int64_t&>(ulonglong_t), endianness);
2274 int64_t& longlong_t);
2284 int64_t& longlong_t,
2335 long double& ldouble_t);
2346 long double& ldouble_t,
2398 wchar_t*& string_t);
2436 std::string& string_t)
2438 uint32_t length = 0;
2439 const char* str = readString(length);
2440 string_t = std::string(str, length);
2452 std::wstring& string_t)
2454 uint32_t length = 0;
2455 string_t = readWString(length);
2468 std::string& string_t,
2471 bool auxSwap = m_swapBytes;
2472 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
2477 m_swapBytes = auxSwap;
2481 m_swapBytes = auxSwap;
2497 std::wstring& string_t,
2500 bool auxSwap = m_swapBytes;
2501 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
2506 m_swapBytes = auxSwap;
2510 m_swapBytes = auxSwap;
2524 template<
class _T,
size_t _Size>
2526 std::array<_T, _Size>& array_t)
2528 return deserializeArray(array_t.data(), array_t.size());
2538 template<
class _T,
size_t _Size>
2540 std::array<_T, _Size>& array_t,
2543 return deserializeArray(array_t.data(), array_t.size(), endianness);
2546 #endif // if HAVE_CXX0X 2548 #if !defined(_MSC_VER) && HAVE_CXX0X 2555 template<
class _T =
bool>
2557 std::vector<bool>& vector_t)
2559 return deserializeBoolSequence(vector_t);
2562 #endif // if !defined(_MSC_VER) && HAVE_CXX0X 2572 std::vector<_T>& vector_t)
2574 uint32_t seqLength = 0;
2575 state state_before_error(*
this);
2585 if ((m_lastPosition - m_currentPosition) < seqLength)
2587 setState(state_before_error);
2594 vector_t.resize(seqLength);
2595 return deserializeArray(vector_t.data(), vector_t.size());
2599 setState(state_before_error);
2612 template<
class _K,
class _T>
2614 std::map<_K, _T>& map_t)
2616 uint32_t seqLength = 0;
2617 state state_(*
this);
2623 for (uint32_t i = 0; i < seqLength; ++i)
2649 Cdr& deserialize<bool>(
2650 std::vector<bool>& vector_t)
2652 return deserializeBoolSequence(vector_t);
2655 #endif // ifdef _MSC_VER 2666 std::vector<_T>& vector_t,
2669 bool auxSwap = m_swapBytes;
2670 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
2675 m_swapBytes = auxSwap;
2679 m_swapBytes = auxSwap;
2712 return deserializeArray(reinterpret_cast<char*>(octet_t), numElements);
2729 return deserializeArray(reinterpret_cast<char*>(octet_t), numElements, endianness);
2739 Cdr& deserializeArray(
2741 size_t numElements);
2758 return deserializeArray(char_t, numElements);
2773 return deserializeArray(reinterpret_cast<char*>(int8), numElements);
2790 return deserializeArray(reinterpret_cast<char*>(int8), numElements, endianness);
2805 return deserializeArray(reinterpret_cast<int16_t*>(ushort_t), numElements);
2822 return deserializeArray(reinterpret_cast<int16_t*>(ushort_t), numElements, endianness);
2832 Cdr& deserializeArray(
2834 size_t numElements);
2844 Cdr& deserializeArray(
2861 return deserializeArray(reinterpret_cast<int32_t*>(ulong_t), numElements);
2878 return deserializeArray(reinterpret_cast<int32_t*>(ulong_t), numElements, endianness);
2888 Cdr& deserializeArray(
2890 size_t numElements);
2900 Cdr& deserializeArray(
2912 Cdr& deserializeArray(
2914 size_t numElements);
2924 Cdr& deserializeArray(
2938 uint64_t* ulonglong_t,
2941 return deserializeArray(reinterpret_cast<int64_t*>(ulonglong_t), numElements);
2954 uint64_t* ulonglong_t,
2958 return deserializeArray(reinterpret_cast<int64_t*>(ulonglong_t), numElements, endianness);
2968 Cdr& deserializeArray(
2969 int64_t* longlong_t,
2970 size_t numElements);
2980 Cdr& deserializeArray(
2981 int64_t* longlong_t,
2992 Cdr& deserializeArray(
2994 size_t numElements);
3004 Cdr& deserializeArray(
3016 Cdr& deserializeArray(
3018 size_t numElements);
3028 Cdr& deserializeArray(
3040 Cdr& deserializeArray(
3041 long double* ldouble_t,
3042 size_t numElements);
3052 Cdr& deserializeArray(
3053 long double* ldouble_t,
3064 Cdr& deserializeArray(
3066 size_t numElements);
3083 return deserializeArray(bool_t, numElements);
3095 std::string* string_t,
3114 std::wstring* string_t,
3134 std::string* string_t,
3138 bool auxSwap = m_swapBytes;
3139 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
3143 deserializeArray(string_t, numElements);
3144 m_swapBytes = auxSwap;
3148 m_swapBytes = auxSwap;
3165 std::wstring* string_t,
3169 bool auxSwap = m_swapBytes;
3170 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
3174 deserializeArray(string_t, numElements);
3175 m_swapBytes = auxSwap;
3179 m_swapBytes = auxSwap;
3195 std::vector<_T>* vector_t,
3238 bool auxSwap = m_swapBytes;
3239 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
3243 deserializeArray(type_t, numElements);
3244 m_swapBytes = auxSwap;
3248 m_swapBytes = auxSwap;
3255 #if !defined(_MSC_VER) && HAVE_CXX0X 3265 template<
class _T = std::
string>
3266 Cdr& deserializeSequence(
3267 std::string*& sequence_t,
3268 size_t& numElements)
3270 return deserializeStringSequence(sequence_t, numElements);
3282 template<
class _T = std::w
string>
3283 Cdr& deserializeSequence(
3284 std::wstring*& sequence_t,
3285 size_t& numElements)
3287 return deserializeWStringSequence(sequence_t, numElements);
3290 #endif // if !defined(_MSC_VER) && HAVE_CXX0X 3304 size_t& numElements)
3306 uint32_t seqLength = 0;
3307 state state_before_error(*
this);
3313 sequence_t =
reinterpret_cast<_T*
>(calloc(seqLength,
sizeof(_T)));
3314 deserializeArray(sequence_t, seqLength);
3320 setState(state_before_error);
3324 numElements = seqLength;
3339 Cdr& deserializeSequence<std::string>(
3340 std::string*& sequence_t,
3341 size_t& numElements)
3343 return deserializeStringSequence(sequence_t, numElements);
3356 Cdr& deserializeSequence<std::wstring>(
3357 std::wstring*& sequence_t,
3358 size_t& numElements)
3360 return deserializeWStringSequence(sequence_t, numElements);
3363 #endif // ifdef _MSC_VER 3378 size_t& numElements,
3381 bool auxSwap = m_swapBytes;
3382 m_swapBytes = (m_swapBytes && (m_endianness == endianness)) || (!m_swapBytes && (m_endianness != endianness));
3386 deserializeSequence(sequence_t, numElements);
3387 m_swapBytes = auxSwap;
3391 m_swapBytes = auxSwap;
3401 const Cdr&) =
delete;
3404 const Cdr&) =
delete;
3406 Cdr& serializeBoolSequence(
3407 const std::vector<bool>& vector_t);
3409 Cdr& deserializeBoolSequence(
3410 std::vector<bool>& vector_t);
3412 Cdr& deserializeStringSequence(
3413 std::string*& sequence_t,
3414 size_t& numElements);
3416 Cdr& deserializeWStringSequence(
3417 std::wstring*& sequence_t,
3418 size_t& numElements);
3428 template<
class _T,
size_t _Size>
3429 Cdr& serializeArray(
3430 const std::array<_T, _Size>* array_t,
3433 return serializeArray(array_t->data(), numElements * array_t->size());
3444 template<
class _T,
size_t _Size>
3445 Cdr& serializeArray(
3446 const std::array<_T, _Size>* array_t,
3450 return serializeArray(array_t->data(), numElements * array_t->size(), endianness);
3460 template<
class _T,
size_t _Size>
3461 Cdr& deserializeArray(
3462 std::array<_T, _Size>* array_t,
3465 return deserializeArray(array_t->data(), numElements * array_t->size());
3476 template<
class _T,
size_t _Size>
3477 Cdr& deserializeArray(
3478 std::array<_T, _Size>* array_t,
3482 return deserializeArray(array_t->data(), numElements * array_t->size(), endianness);
3485 #endif // if HAVE_CXX0X 3493 size_t dataSize)
const 3496 m_lastDataSize ? (dataSize - ((m_currentPosition - m_alignPosition) % dataSize)) &
3507 m_currentPosition +=
align;
3519 const char* readString(
3521 const std::wstring readWString(
3557 #endif // _CDR_CDR_H_ Cdr & serialize(const uint32_t ulong_t)
This function serializes an unsigned long.
virtual Cdr_DllAPI void raise() const =0
This function throws the object as exception.
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.
Cdr & serialize(const char char_t, Endianness endianness)
This function serializes a character with a different endianness.
FastBuffer::iterator m_lastPosition
The last position in the buffer;.
Cdr & deserializeArray(char *char_t, size_t numElements, Endianness endianness)
This function deserializes an array of characters with a different endianness.
Cdr & deserializeArray(std::wstring *string_t, size_t numElements, Endianness endianness)
This function deserializes an array of wide-strings with a different endianness.
This abstract class is used to create exceptions.
CdrType
This enumeration represents the two kinds of CDR serialization supported by eprosima::fastcdr::CDR.
typename detail::char_t_impl< S >::type char_t
Cdr & deserialize(uint16_t &ushort_t)
This function deserializes an unsigned short.
Cdr & deserialize(bool &bool_t, Endianness endianness)
This function deserializes a boolean with a different endianness.
Cdr & deserializeArray(_T *type_t, size_t numElements, Endianness endianness)
This function template deserializes an array of non-basic objects with a different endianness...
This class is thrown as an exception when the buffer's internal memory reachs its size limit...
Cdr & deserializeArray(uint8_t *octet_t, size_t numElements)
This function deserializes an array of octets.
constexpr std::uintptr_t align(std::size_t alignment, std::uintptr_t ptr, std::size_t &space)
Cdr & serializeArray(const uint32_t *ulong_t, size_t numElements, Endianness endianness)
This function serializes an array of unsigned longs with a different endianness.
uint8_t m_endianness
The endianness that will be applied over the buffer.
Cdr & deserialize(uint16_t &ushort_t, Endianness endianness)
This function deserializes an unsigned short with a different endianness.
Cdr & serializeArray(const std::string *string_t, size_t numElements)
This function serializes an array of strings.
Cdr & deserializeArray(int8_t *int8, size_t numElements)
This function deserializes an array of int8_t.
Cdr & deserializeSequence(_T *&sequence_t, size_t &numElements, Endianness endianness)
This function template deserializes a raw sequence with a different endianness. This function allocat...
Cdr & serializeArray(const uint64_t *ulonglong_t, size_t numElements)
This function serializes an array of unsigned long longs.
Cdr & serialize(const std::string &string_t)
This function serializes a std::string.
static Cdr_DllAPI const char *const NOT_ENOUGH_MEMORY_MESSAGE_DEFAULT
Default message used in the library.
Cdr & serialize(const uint64_t ulonglong_t)
This function serializes an unsigned long long.
Cdr & deserialize(std::wstring &string_t, Endianness endianness)
This function deserializes a string with a different endianness.
uint16_t m_options
This attribute stores the option flags when the CDR type is DDS_CDR;.
Cdr & serializeArray(const int8_t *int8, size_t numElements)
This function serializes an array of int8_t.
Cdr & deserialize(std::vector< _T > &vector_t)
This function template deserializes a sequence.
Cdr & serializeArray(const std::wstring *string_t, size_t numElements)
This function serializes an array of wide-strings.
Cdr & deserializeArray(uint32_t *ulong_t, size_t numElements, Endianness endianness)
This function deserializes an array of unsigned longs with a different endianness.
Cdr & deserialize(std::map< _K, _T > &map_t)
This function template deserializes a map.
Cdr & deserialize(std::vector< _T > &vector_t, Endianness endianness)
This function template deserializes a sequence with a different endianness.
Cdr & deserialize(wchar_t &wchar)
This function deserializes a wide-char.
Cdr & deserialize(std::wstring &string_t)
This function deserializes a std::string.
Cdr & deserializeArray(uint64_t *ulonglong_t, size_t numElements, Endianness endianness)
This function deserializes an array of unsigned long longs with a different endianness.
FastBuffer::iterator m_currentPosition
The current position in the serialization/deserialization process.
const FastBuffer::iterator m_currentPosition
The position in the buffer when the state was created.
Cdr & deserialize(std::string &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.
This class implements the iterator used to go through a FastBuffer.
Cdr & deserialize(int8_t &int8, Endianness endianness)
This function deserializes an int8_t with a different endianness.
Endianness endianness() const
This function returns the current endianness used by the CDR type.
Cdr & serialize(const std::map< _K, _T > &map_t)
This function template serializes a map.
Cdr & deserialize(wchar_t &wchar, Endianness endianness)
This function deserializes a wide-char with a different endianness.
Cdr & deserialize(uint32_t &ulong_t, Endianness endianness)
This function deserializes an unsigned long with a different endianness.
FastBuffer::iterator m_alignPosition
The position from where the aligment is calculated.
Cdr & deserializeArray(std::vector< _T > *vector_t, size_t numElements)
This function deserializes an array of sequences of objects.
Cdr & serialize(const wchar_t wchar, Endianness endianness)
This function serializes a wide-char with a different endianness.
Cdr & deserializeArray(uint16_t *ushort_t, size_t numElements, Endianness endianness)
This function deserializes an array of unsigned shorts with a different endianness.
Cdr & deserialize(uint64_t &ulonglong_t)
This function deserializes an unsigned long long.
Cdr & serialize(const uint16_t ushort_t, Endianness endianness)
This function serializes an unsigned short with a different endianness.
Cdr & deserializeArray(std::string *string_t, size_t numElements)
This function deserializes an array of strings.
Cdr & serializeSequence(const _T *sequence_t, size_t numElements)
This function template serializes a raw sequence.
const FastBuffer::iterator m_alignPosition
The position from the aligment is calculated, when the state was created..
Cdr & deserializeArray(uint64_t *ulonglong_t, size_t numElements)
This function deserializes an array of unsigned long longs.
static const Endianness DEFAULT_ENDIAN
Default endiness in the system.
std::ostream & operator<<(std::ostream &out, const Interval< Scalar, Value > &i)
Cdr & serializeArray(const std::string *string_t, size_t numElements, Endianness endianness)
This function serializes an array of strings with a different endianness.
This class stores the current state of a CDR serialization.
Cdr & serializeArray(const uint8_t *octet_t, size_t numElements)
This function serializes an array of octets.
Cdr & serialize(const uint16_t ushort_t)
This function serializes an unsigned short.
constexpr auto count() -> size_t
Cdr & deserializeArray(int8_t *int8, size_t numElements, Endianness endianness)
This function deserializes an array of int8_t with a different endianness.
Cdr & serializeArray(const uint16_t *ushort_t, size_t numElements)
This function serializes an array of unsigned shorts.
Cdr & serialize(const uint8_t octet_t, Endianness endianness)
This function serializes an octet with a different endianness.
size_t alignment(size_t dataSize) const
This function returns the extra bytes regarding the allignment.
Cdr & deserialize(uint32_t &ulong_t)
This function deserializes an unsigned long.
This class offers an interface to serialize/deserialize some basic types using CDR protocol inside an...
Cdr & serialize(const std::vector< _T > &vector_t)
This function template serializes a sequence.
Cdr & serialize(const wchar_t wchar)
This function serializes a wide-char.
Cdr & serialize(const std::vector< _T > &vector_t, Endianness endianness)
This function template serializes a sequence with a different endianness.
Cdr & deserializeArray(_T *type_t, size_t numElements)
This function template deserializes an array of non-basic objects.
Cdr & deserializeArray(std::wstring *string_t, size_t numElements)
This function deserializes an array of wide-strings.
Cdr & serializeSequence(const _T *sequence_t, size_t numElements, Endianness endianness)
This function template serializes a raw sequence with a different endianness.
Cdr & deserialize(uint8_t &octet_t, Endianness endianness)
This function deserializes an octet with a different endianness.
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.
bool m_swapBytes
This attribute specified if it is needed to swap the bytes when the state was created..
Cdr & deserialize(_T &type_t)
This function template deserializes a non-basic object.
Cdr & serializeArray(const _T *type_t, size_t numElements)
This function template serializes an array of non-basic objects.
Cdr & deserialize(char &char_t, Endianness endianness)
This function deserializes a character with a different endianness.
const T & move(const T &v)
DDSCdrPlFlag
This enumeration represents the two posible values of the flag that points if the content is a parame...
Endianness
This enumeration represents endianness types.
Cdr & serialize(const uint32_t ulong_t, Endianness endianness)
This function serializes an unsigned long with a different endianness.
Cdr & deserialize(int8_t &int8)
This function deserializes an int8_t.
Cdr & serialize(const _T &type_t)
This function template serializes a non-basic object.
This class represents a stream of bytes that contains (or will contain) serialized data...
Cdr & deserializeArray(uint32_t *ulong_t, size_t numElements)
This function deserializes an array of unsigned longs.
size_t getSerializedDataLength() const
This function returns the length of the serialized data inside the stream.
DDSCdrPlFlag m_plFlag
Using DDS_CDR type, this attribute stores if the stream buffer contains a parameter list or not...
static unordered_set< string > deserialize(const QDomElement &elt)
Cdr & serialize(const std::wstring &string_t)
This function serializes a std::wstring.
Cdr & serializeArray(const std::vector< _T > *vector_t, size_t numElements)
This function template serializes an array of sequences of objects.
Cdr & deserialize(std::string &string_t)
This function deserializes a std::string.
Cdr & serialize(const int8_t int8, Endianness endianness)
This function serializes an int8_t with a different endianness.
void makeAlign(size_t align)
This function jumps the number of bytes of the alignment. These bytes should be calculated with the f...
Cdr & deserializeSequence(_T *&sequence_t, size_t &numElements)
This function template deserializes a raw sequence. This function allocates memory to store the seque...
FastBuffer & m_cdrBuffer
Reference to the buffer that will be serialized/deserialized.
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.
Cdr & serializeArray(const uint16_t *ushort_t, size_t numElements, Endianness endianness)
This function serializes an array of unsigned shorts with a different endianness. ...
Cdr & serializeArray(const char *char_t, size_t numElements, Endianness endianness)
This function serializes an array of characters with a different endianness.
void resetAlignment()
This function resets the alignment to the current position in the buffer.
size_t m_lastDataSize
Stores the last datasize serialized/deserialized. It's used to optimize.
Cdr & deserializeArray(std::string *string_t, size_t numElements, Endianness endianness)
This function deserializes an array of strings 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.
Cdr & serialize(const bool bool_t, Endianness endianness)
This function serializes a boolean with a different endianness.
Cdr & serializeArray(const int8_t *int8, size_t numElements, Endianness endianness)
This function serializes an array of int8_t with a different endianness.
Cdr & serialize(const uint8_t octet_t)
This function serializes an octet.
size_t m_lastDataSize
Stores the last datasize serialized/deserialized when the state was created.
Cdr & serialize(const uint64_t ulonglong_t, Endianness endianness)
This function serializes an unsigned long long with a different endianness.
Cdr & deserialize(uint64_t &ulonglong_t, Endianness endianness)
This function deserializes an unsigned long long with a different endianness.
Cdr & serializeArray(const uint8_t *octet_t, size_t numElements, Endianness endianness)
This function serializes an array of octets with a different endianness.
Cdr & deserializeArray(uint16_t *ushort_t, size_t numElements)
This function deserializes an array of unsigned shorts.
Cdr & serialize(const int8_t int8)
This function serializes an int8_t.
Cdr & serializeArray(const uint32_t *ulong_t, size_t numElements)
This function serializes an array of unsigned longs.
Cdr & serializeArray(const bool *bool_t, size_t numElements, Endianness endianness)
This function serializes an array of booleans with a different endianness.
Cdr & serialize(char *string_t)
This function serializes a string.
Cdr & serializeArray(const std::wstring *string_t, size_t numElements, Endianness endianness)
This function serializes an array of wide-strings 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.
Common CORBA CDR serialization.
CdrType m_cdrType
The type of CDR that will be use in serialization/deserialization.
Cdr & deserialize(uint8_t &octet_t)
This function deserializes an octet.
bool m_swapBytes
This attribute specifies if it is needed to swap the bytes.
static QDomElement serialize(const unordered_set< string > &input, QDomDocument &doc, const string &name)