Wwise Audio Tools  0.5.2
Tools for working with Wwise file types
write.hpp
1 #ifndef WWTOOLS_UTIL_WRITE_HPP
2 #define WWTOOLS_UTIL_WRITE_HPP
3 
4 #include <cstring>
5 #include <ostream>
6 
11 namespace wwtools::util::write {
19 template <typename T>
20 inline void big_endian(const char *data, std::ostream &os) {
21  char arr_data[sizeof(T)];
22  std::memcpy(arr_data, data, sizeof(T));
23  for (int i = sizeof(T) - 1; i >= 0; i--)
24  os.put(arr_data[i]);
25 }
26 
34 template <typename T> inline void big_endian(const T &data, std::ostream &os) {
35  big_endian<T>(reinterpret_cast<const char *>(&data), os);
36 }
37 
45 template <typename T>
46 inline void little_endian(const char *data, std::ostream &os) {
47  char arr_data[sizeof(T)];
48  std::memcpy(arr_data, data, sizeof(T));
49  for (int i = 0; i < sizeof(T); i++)
50  os.put(arr_data[i]);
51 }
52 
60 template <typename T>
61 inline void little_endian(const T &data, std::ostream &os) {
62  little_endian<T>(reinterpret_cast<const char *>(&data), os);
63 }
64 
72 inline void raw_data(const char *data, size_t size, std::ostream &os) {
73  os.write(data, size);
74 }
75 } // namespace wwtools::util::write
76 
77 #endif // WWTOOLS_UTIL_WRITE_HPP
helper functions for writing data
void little_endian(const char *data, std::ostream &os)
write data to a stream
Definition: write.hpp:46
void big_endian(const char *data, std::ostream &os)
write data in reverse
Definition: write.hpp:20
void raw_data(const char *data, size_t size, std::ostream &os)
wrapper around os::write
Definition: write.hpp:72