- /* sign */
- tmp.u = bitfield_unsigned_read(ptr, srcpos.sign_start, 1,
- src->byte_order);
- bitfield_unsigned_write(&u.bits, destpos.sign_start, 1,
- dest->byte_order, tmp.u);
-
- /* mantissa (without leading 1). No sign extend. */
- tmp.u = bitfield_unsigned_read(ptr, srcpos.mantissa_start,
- src->mantissa_len - 1, src->byte_order);
- bitfield_unsigned_write(&u.bits, destpos.mantissa_start,
- dest->mantissa_len - 1, dest->byte_order, tmp.u);
-
- /* exponent, with sign-extend. */
- tmp.s = bitfield_signed_read(ptr, srcpos.exp_start, src->exp_len,
- src->byte_order);
- bitfield_signed_write(&u.bits, destpos.exp_start, dest->exp_len,
- dest->byte_order, tmp.s);
+void ctf_float_copy(struct stream_pos *dest, struct stream_pos *src,
+ const struct declaration_float *float_declaration)
+{
+ align_pos(src, float_declaration->p.alignment);
+ align_pos(dest, float_declaration->p.alignment);
+ _ctf_float_copy(dest, float_declaration, src, float_declaration);