Lines Matching +full:- +full:p

8  *     http://www.apache.org/licenses/LICENSE-2.0
52 void UnpackBytesUnaligned(Payload& p, NumericType& i) in UnpackBytesUnaligned() argument
56 i |= static_cast<NumericType>(p.popBits(CHAR_BIT)) in UnpackBytesUnaligned()
58 UnpackBytesUnaligned<NumericType, byteIndex + 1>(p, i); in UnpackBytesUnaligned()
65 * User-defined types are expected to specialize this template in order to
68 * @tparam T - Type of element to unpack.
75 * @param[in] p - Payload to unpack from.
76 * @param[out] t - The reference to unpack item into.
78 static int op(Payload& p, T& t) in op()
83 if (p.bitCount) in op()
85 if (p.fillBits(CHAR_BIT * sizeof(t))) in op()
89 UnpackBytesUnaligned<T>(p, t); in op()
94 if (p.raw.size() < (p.rawIndex + sizeof(t))) in op()
98 auto iter = p.raw.data() + p.rawIndex; in op()
101 p.rawIndex += sizeof(t); in op()
107 bool priorError = p.unpackError; in op()
108 size_t priorIndex = p.rawIndex; in op()
110 size_t priorBitCount = p.bitCount; in op()
111 fixed_uint_t<details::bitStreamSize> priorBits = p.bitStream; in op()
112 int ret = p.unpack(t); in op()
116 p.rawIndex = priorIndex; in op()
117 p.bitStream = priorBits; in op()
118 p.bitCount = priorBitCount; in op()
119 p.unpackError = priorError; in op()
136 * UCSD-Pascal style string
141 static int op(Payload& p, std::string& t) in op()
144 if (p.rawIndex > (p.raw.size() - sizeof(uint8_t))) in op()
148 uint8_t len = p.raw[p.rawIndex++]; in op()
150 auto [first, last] = p.pop<char>(len); in op()
155 t.reserve(last - first); in op()
156 t.insert(0, first, (last - first)); in op()
166 static int op(Payload& p, fixed_uint_t<N>& t) in op()
168 static_assert(N <= (details::bitStreamSize - CHAR_BIT)); in op()
171 if (p.fillBits(count)) in op()
173 return -1; in op()
175 fixed_uint_t<details::bitStreamSize> bitmask = ((1 << count) - 1); in op()
176 t = (p.bitStream & bitmask).convert_to<fixed_uint_t<N>>(); in op()
177 p.bitStream >>= count; in op()
178 p.bitCount -= count; in op()
187 static int op(Payload& p, bool& b) in op()
190 if (p.fillBits(1)) in op()
192 return -1; in op()
194 b = static_cast<bool>(p.bitStream & 0x01); in op()
196 p.bitStream >>= 1; in op()
197 p.bitCount -= 1; in op()
207 static int op(Payload& p, std::bitset<N>& t) in op()
209 static_assert(N <= (details::bitStreamSize - CHAR_BIT)); in op()
212 if (p.fillBits(count)) in op()
214 return -1; in op()
218 (details::bitStreamSize - count); in op()
219 t |= (p.bitStream & bitmask).convert_to<unsigned long long>(); in op()
220 p.bitStream >>= count; in op()
221 p.bitCount -= count; in op()
230 static int op(Payload& p, std::optional<T>& t) in op()
232 bool priorError = p.unpackError; in op()
233 size_t priorIndex = p.rawIndex; in op()
235 size_t priorBitCount = p.bitCount; in op()
236 fixed_uint_t<details::bitStreamSize> priorBits = p.bitStream; in op()
238 int ret = UnpackSingle<T>::op(p, value); in op()
242 p.rawIndex = priorIndex; in op()
243 p.bitStream = priorBits; in op()
244 p.bitCount = priorBitCount; in op()
245 p.unpackError = priorError; in op()
259 static int op(Payload& p, std::array<T, N>& t) in op()
262 size_t priorIndex = p.rawIndex; in op()
265 ret = UnpackSingle<T>::op(p, v); in op()
268 p.rawIndex = priorIndex; in op()
281 static int op(Payload& p, std::array<uint8_t, N>& t) in op()
283 if (p.raw.size() - p.rawIndex < N) in op()
286 return -1; in op()
289 std::copy(p.raw.begin() + p.rawIndex, p.raw.begin() + p.rawIndex + N, in op()
291 p.rawIndex += N; in op()
300 static int op(Payload& p, std::vector<T>& t) in op()
302 while (p.rawIndex < p.raw.size()) in op()
305 if (UnpackSingle<T>::op(p, t.back())) in op()
314 // success because an empty vector or a not-fully-unpacked in op()
324 static int op(Payload& p, std::vector<uint8_t>& t) in op()
327 t.reserve(p.raw.size() - p.rawIndex); in op()
328 t.insert(t.begin(), p.raw.begin() + p.rawIndex, p.raw.end()); in op()
329 p.rawIndex = p.raw.size(); in op()
338 static int op(Payload& p, SecureBuffer& t) in op()
341 t.reserve(p.raw.size() - p.rawIndex); in op()
342 t.insert(t.begin(), p.raw.begin() + p.rawIndex, p.raw.end()); in op()
343 p.rawIndex = p.raw.size(); in op()
352 static int op(Payload& p, std::span<const uint8_t>& t) in op()
355 t = std::span<const uint8_t>(p.raw.begin() + p.rawIndex, p.raw.end()); in op()
356 p.rawIndex = p.raw.size(); in op()
365 static int op(Payload& p, Payload& t) in op()
367 t = p; in op()
369 p.trailingOk = true; in op()