66#define CONVERSIONS_H_
77
88#include < cstdint>
9+ #include < limits>
910#include < ostream>
1011#include < vector>
11- #include < limits>
1212
1313#ifdef EXOTIC_ARCH_SUPPORT
1414#include < boost/version.hpp>
@@ -31,19 +31,21 @@ using boost::endian::native_to_little_inplace;
3131// write an integer value in little endian
3232// derived from portable archive code by christian.pfligersdorffer@eos.info (under boost license)
3333template <typename T>
34- typename std::enable_if<std::is_integral<T>::value>::type write_little_endian (std::ostream& dst, T t) {
34+ typename std::enable_if<std::is_integral<T>::value>::type write_little_endian (
35+ std::ostream &dst, T t) {
3536 native_to_little_inplace (t);
36- dst->sputn (reinterpret_cast <const char *>(&t), sizeof (t));
37+ dst->sputn (reinterpret_cast <const char *>(&t), sizeof (t));
3738}
3839
3940// write a floating-point value in little endian
4041// derived from portable archive code by christian.pfligersdorffer@eos.info (under boost license)
4142template <typename T>
42- typename std::enable_if<std::is_floating_point<T>::value>::type
43- write_little_endian ( std::ostream& dst, T t) {
44- // Get a type big enough to hold
43+ typename std::enable_if<std::is_floating_point<T>::value>::type write_little_endian (
44+ std::ostream & dst, T t) {
45+ // Get a type big enough to hold
4546 using traits = typename fp::detail::fp_traits<T>::type;
46- static_assert (sizeof (typename traits::bits) == sizeof (T), " floating point type can't be represented accurately" );
47+ static_assert (sizeof (typename traits::bits) == sizeof (T),
48+ " floating point type can't be represented accurately" );
4749
4850 typename traits::bits bits;
4951 // remap to bit representation
@@ -60,51 +62,50 @@ write_little_endian(std::ostream& dst, T t) {
6062
6163// store a sample's values to a stream (numeric version) */
6264template <class T >
63- inline const T* write_sample_values (std::ostream& dst, const T* sample, std::size_t len) {
65+ inline const T * write_sample_values (std::ostream & dst, const T * sample, std::size_t len) {
6466 // [Value1] .. [ValueN] */
65- for (const T* end = sample + len; sample < end; ++sample)
66- write_little_endian (dst, *sample);
67+ for (const T *end = sample + len; sample < end; ++sample) write_little_endian (dst, *sample);
6768 return sample;
6869}
6970
7071#else
7172
7273static_assert (std::numeric_limits<float >::is_iec559,
73- " Non-IEC559/IEEE754-floats need EXOTIC_ARCH_SUPPORT defined" );
74+ " Non-IEC559/IEEE754-floats need EXOTIC_ARCH_SUPPORT defined" );
7475static_assert (std::numeric_limits<float >::has_denorm, " denormalized floats not supported" );
7576static_assert (sizeof (float ) == 4 , " Unexpected float size!" );
7677static_assert (sizeof (double ) == 8 , " Unexpected double size!" );
7778
7879template <typename T>
79- typename std::enable_if<sizeof (T) == 1 >::type write_little_endian (std::ostream& dst, T t) {
80+ typename std::enable_if<sizeof (T) == 1 >::type write_little_endian (std::ostream & dst, T t) {
8081 dst.put (t);
8182}
8283
8384template <typename T>
84- typename std::enable_if<sizeof (T) >= 2 >::type write_little_endian (std::ostream& dst, T t) {
85- dst.write (reinterpret_cast <const char *>(&t), sizeof (T));
85+ typename std::enable_if<sizeof (T) >= 2 >::type write_little_endian (std::ostream & dst, T t) {
86+ dst.write (reinterpret_cast <const char *>(&t), sizeof (T));
8687}
8788
8889template <class T >
89- inline const T* write_sample_values (std::ostream& dst, const T* sample, std::size_t len) {
90+ inline const T * write_sample_values (std::ostream & dst, const T * sample, std::size_t len) {
9091 // [Value1] .. [ValueN] */
91- dst.write (reinterpret_cast <const char *>(sample), len * sizeof (T));
92+ dst.write (reinterpret_cast <const char *>(sample), len * sizeof (T));
9293 return sample + len;
9394}
9495#endif
9596
9697template <class T >
97- inline void write_sample_values (std::ostream& dst, const std::vector<T>& sample) {
98+ inline void write_sample_values (std::ostream & dst, const std::vector<T> & sample) {
9899 write_sample_values (dst, sample.data (), sample.size ());
99100}
100101
101102template <typename T>
102- inline void write_sample_values (std::ostream& buf, const std::vector<std::vector<T>>& vecs) {
103- for (const std::vector<T>& vec : vecs) write_sample_values (buf, vec);
103+ inline void write_sample_values (std::ostream & buf, const std::vector<std::vector<T>> & vecs) {
104+ for (const std::vector<T> & vec : vecs) write_sample_values (buf, vec);
104105}
105106
106107// write a variable-length integer (int8, int32, or int64)
107- inline void write_varlen_int (std::ostream& dst, uint64_t val) {
108+ inline void write_varlen_int (std::ostream & dst, uint64_t val) {
108109 if (val < 256 ) {
109110 dst.put (1 );
110111 dst.put (static_cast <uint8_t >(val));
@@ -117,18 +118,18 @@ inline void write_varlen_int(std::ostream& dst, uint64_t val) {
117118 }
118119}
119120
120- template <typename T>
121- inline void write_fixlen_int (std::ostream& dst, T val) {
121+ template <typename T> inline void write_fixlen_int (std::ostream &dst, T val) {
122122 dst.put (sizeof (T));
123123 write_little_endian (dst, val);
124124}
125125
126126
127127// store a sample's values to a stream (string version)
128128template <>
129- inline const std::string* write_sample_values (std::ostream& dst, const std::string* sample, std::size_t len) {
129+ inline const std::string *write_sample_values (
130+ std::ostream &dst, const std::string *sample, std::size_t len) {
130131 // [Value1] .. [ValueN] */
131- for (const std::string* end = sample + len; sample < end; ++sample) {
132+ for (const std::string * end = sample + len; sample < end; ++sample) {
132133 // [NumLengthBytes], [Length] (as varlen int)
133134 write_varlen_int (dst, sample->size ());
134135 // [StringContent] */
0 commit comments