/* Return bytes of canonicalised rdata, when the return value is zero, the remaining data, pointed to by *p, should be used raw. */ static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end, char *buff, unsigned char **p, u16 **desc) { int d = **desc; (*desc)++; /* No more data needs mangling */ if (d == (u16)-1) return 0; if (d == 0 && extract_name(header, plen, p, buff, 1, 0)) /* domain-name, canonicalise */ return to_wire(buff); else { /* plain data preceding a domain-name, don't run off the end of the data */ if ((end - *p) < d) d = end - *p; if (d != 0) { memcpy(buff, *p, d); *p += d; } return d; } }
UHD_INLINE void xx_to_item32_sc8( const std::complex<T> *input, item32_t *output, const size_t nsamps, const double scale_factor ){ const size_t num_pairs = nsamps/2; for (size_t i = 0, j = 0; i < num_pairs; i++, j+=2){ const item32_t item = xx_to_item32_sc8_x1(input[j], input[j+1], scale_factor); output[i] = to_wire(item); } if (nsamps != num_pairs*2){ const item32_t item = xx_to_item32_sc8_x1(input[nsamps-1], std::complex<T>(0), scale_factor); output[num_pairs] = to_wire(item); } }
UHD_INLINE void xx_to_item32_sc16( const std::complex<T> *input, item32_t *output, const size_t nsamps, const double scale_factor ){ for (size_t i = 0; i < nsamps; i++){ const item32_t item = xx_to_item32_sc16_x1(input[i], scale_factor); output[i] = to_wire(item); } }