@@ -75,15 +75,25 @@ concept Serializable =
7575template <typename T>
7676 requires (std::is_trivially_copyable_v<T>)
7777struct Serializer <T> {
78+
79+ /* *
80+ * @brief Determine the size of a value.
81+ */
7882 static constexpr std::size_t sizeOf (const T& /* ignored */ ) {
7983 return sizeof (T);
8084 }
8185
86+ /* *
87+ * @brief Write the value to a buffer.
88+ */
8289 static constexpr std::size_t write (const T& obj, unsigned char * out) {
8390 std::memcpy (out, &obj, sizeof (T));
8491 return sizeOf (obj);
8592 }
8693
94+ /* *
95+ * @brief Read a value from a buffer.
96+ */
8797 static constexpr std::size_t read (T& obj, const unsigned char * in) {
8898 std::memcpy (&obj, in, sizeof (T));
8999 return sizeOf (obj);
@@ -95,8 +105,16 @@ struct Serializer<T> {
95105 */
96106template <Serializable T>
97107struct Serializer <std::vector<T>> {
108+
109+ /* *
110+ * @brief Type used to denote the size of the vector.
111+ */
98112 using VecSizeType = std::uint32_t ;
99113
114+
115+ /* *
116+ * @brief Get the bytes required to write \p vec with this serializer.
117+ */
100118 static constexpr std::size_t sizeOf (const std::vector<T>& vec) {
101119 auto total_size = sizeof (VecSizeType);
102120 for (const auto & v : vec) {
@@ -105,6 +123,9 @@ struct Serializer<std::vector<T>> {
105123 return total_size;
106124 }
107125
126+ /* *
127+ * @brief Write a vector to a buffer.
128+ */
108129 static constexpr std::size_t write (const std::vector<T>& vec,
109130 unsigned char * out) {
110131 const auto vec_size = static_cast <VecSizeType>(vec.size ());
@@ -115,6 +136,9 @@ struct Serializer<std::vector<T>> {
115136 return written;
116137 }
117138
139+ /* *
140+ * @brief Read a vector from a buffer.
141+ */
118142 static constexpr std::size_t read (std::vector<T>& vec,
119143 const unsigned char * in) {
120144 VecSizeType vec_size = 0 ;
0 commit comments