formatted, commentje
This commit is contained in:
parent
a0cff27590
commit
851017cc62
2 changed files with 14 additions and 13 deletions
|
@ -7,19 +7,19 @@
|
||||||
|
|
||||||
// Normal
|
// Normal
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct binary{
|
struct binary {
|
||||||
T thing;
|
T thing;
|
||||||
binary(T const t):thing(t){}
|
binary(T const t):thing(t) {}
|
||||||
binary(binary const& c):thing(c.thing){}
|
binary(binary const& c):thing(c.thing) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
binary<T> make_binary(T const t){
|
binary<T> make_binary(T const t) {
|
||||||
return binary<T>(t);
|
return binary<T>(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
std::ostream& operator<<(std::ostream& out, binary<T> const& rhs){
|
std::ostream& operator<<(std::ostream& out, binary<T> const& rhs) {
|
||||||
static_assert(std::is_pod<T>::value, "Please specialise this function if your type is not POD");
|
static_assert(std::is_pod<T>::value, "Please specialise this function if your type is not POD");
|
||||||
static_assert(!std::is_pointer<T>::value, "Writing pointer");
|
static_assert(!std::is_pointer<T>::value, "Writing pointer");
|
||||||
out.write(reinterpret_cast<const char*>(&(rhs.thing)), sizeof(rhs.thing));
|
out.write(reinterpret_cast<const char*>(&(rhs.thing)), sizeof(rhs.thing));
|
||||||
|
@ -27,21 +27,22 @@ std::ostream& operator<<(std::ostream& out, binary<T> const& rhs){
|
||||||
}
|
}
|
||||||
|
|
||||||
// Array
|
// Array
|
||||||
|
// NOTE: it uses references...
|
||||||
template <typename T, size_t N>
|
template <typename T, size_t N>
|
||||||
struct binary_arr{
|
struct binary_arr {
|
||||||
T const (& thing)[N];
|
T const(& thing)[N];
|
||||||
binary_arr(const T (& t)[N]):thing(t){}
|
binary_arr(const T(& t)[N]):thing(t) {}
|
||||||
binary_arr(binary_arr const& c):thing(c.thing){}
|
binary_arr(binary_arr const& c):thing(c.thing) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T, size_t N>
|
template <typename T, size_t N>
|
||||||
binary_arr<T, N> make_binary(const T (& t)[N]){
|
binary_arr<T, N> make_binary(const T(& t)[N]) {
|
||||||
static_assert(N>=0, "lijp");
|
static_assert(N>=0, "lijp");
|
||||||
return binary_arr<T, N>(t);
|
return binary_arr<T, N>(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, size_t N>
|
template <typename T, size_t N>
|
||||||
std::ostream& operator<<(std::ostream& out, binary_arr<T, N> const& rhs){
|
std::ostream& operator<<(std::ostream& out, binary_arr<T, N> const& rhs) {
|
||||||
static_assert(std::is_pod<T>::value, "Please specialise this function if your type is not POD");
|
static_assert(std::is_pod<T>::value, "Please specialise this function if your type is not POD");
|
||||||
static_assert(!std::is_pointer<T>::value, "Writing pointer");
|
static_assert(!std::is_pointer<T>::value, "Writing pointer");
|
||||||
out.write(reinterpret_cast<const char*>(&(rhs.thing)), sizeof(rhs.thing));
|
out.write(reinterpret_cast<const char*>(&(rhs.thing)), sizeof(rhs.thing));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "binary_output.hpp"
|
#include "binary_output.hpp"
|
||||||
|
|
||||||
int main(){
|
int main() {
|
||||||
std::cout << make_binary(1684234849) << std::endl;
|
std::cout << make_binary(1684234849) << std::endl;
|
||||||
std::cout << make_binary("A c-style array") << std::endl;
|
std::cout << make_binary("A c-style array") << std::endl;
|
||||||
|
|
||||||
|
|
Reference in a new issue