## Struct template binary_io_traits

hamigaki::binary_io_traits —

## Synopsis

    template<endianness E, typename T>
    struct binary_io_traits {
      static void read(const char*, T&);
      static void write(char*, const T&);
    };

    // binary input functions
    template<typename T> void binary_read(const char*, T&);
    template<endianness E, typename T> void binary_read(const char*, T&);
    template<typename T> T binary_read(const char*);
    template<endianness E, typename T> T binary_read(const char*);

    // binary output functions
    template<typename T> void binary_write(char*, const T&);
    template<endianness E, typename T> void binary_write(char*, const T&);
    template<typename T> void binary_write(std::string&, const T&);
    template<endianness E, typename T> void binary_write(std::string&, const T&);

## Description

    static void read(const char* s, T& x);

特殊化された`struct_traits`<T>が存在すれば、`typename struct_traits<T>::members`の内容に従い、構造体の各メンバを読み出す。

`T`が符号付き整数または符号なし整数の場合、`x = hamigaki::decode_int<E,sizeof(x)>(s)`を行う。

`T`が上記の型の配列である場合は、配列の要素数だけ上記の操作を繰り返す。

    static void write(char* s, const T& x);

特殊化された`struct_traits`<T>が存在すれば、`typename struct_traits<T>::members`の内容に従い、構造体の各メンバを書き出す。

`T`が符号付き整数または符号なし整数の場合、`hamigaki::encode_int<E,sizeof(x)>(s, x)`を呼び出す。

`T`が上記の型の配列である場合は、配列の要素数だけ上記の操作を繰り返す。

| 製作著作 © 2006, 2007 Takeshi Mouri