hamigaki.png

前のページ 上に戻る ホーム 次のページ

リファレンス

Header <hamigaki/binary/binary_io.hpp>
Header <hamigaki/binary/endian.hpp>
Header <hamigaki/binary/struct_traits.hpp>
namespace hamigaki {
  template<endianness E, typename T> struct binary_io_traits;

  // 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&);
}

binary input functions

  1. template<typename T> void binary_read(const char* s, T& x);
    template<endianness E, typename T> void binary_read(const char* s, T& x);
    template<typename T> T binary_read(const char* s);
    template<endianness E, typename T> T binary_read(const char* s);

    指定したエンディアンでバイナリ入力を行う。

    エンディアンEでバイナリ入力を行う。エンディアンの指定がないバージョンはE = nativeの場合と同じである。

    Effects:

    binary_io_traits<E,T>::read(s, x);

    または

    T x;
    binary_io_traits<E,T>::read(s, x);
    return x;
    

binary output functions

  1. template<typename T> void binary_write(char* s, const T& x);
    template<endianness E, typename T> void binary_write(char* s, const T& x);
    template<typename T> void binary_write(std::string& s, const T& x);
    template<endianness E, typename T> 
      void binary_write(std::string& s, const T& x);

    指定したエンディアンでバイナリ出力を行う。

    エンディアンEでバイナリ出力を行う。エンディアンの指定がないバージョンはE = nativeの場合と同じである。

    Effects:

    binary_io_traits<E,T>::write(s, x);

    または

    char data[binary_size<T>::value];
    std::memset(data, 0, sizeof(data));
    binary_io_traits<E,T>::write(data, x);
    s.append(data, sizeof(data));
    
namespace hamigaki {
  enum endianness;

  template<std::size_t Size> struct integer_encoding_traits;

  // encoding/decoding functions
  template<endianness E, std::size_t Size> 
    void encode_uint(char*, typename integer_encoding_traits<Size>::uint_type);
  template<endianness E, std::size_t Size> 
    void encode_int(char*, typename integer_encoding_traits<Size>::int_type);
  template<endianness E, std::size_t Size> 
    typename integer_encoding_traits<Size>::uint_type decode_uint(const char*);
  template<endianness E, std::size_t Size> 
    typename integer_encoding_traits<Size>::int_type decode_int(const char*);
}

encoding/decoding functions

  1. template<endianness E, std::size_t Size> 
      void encode_uint(char* s, 
                       typename integer_encoding_traits<Size>::uint_type n);
    Effects: 符号なし整数nをエンディアンEでエンコードして範囲[s, s+Size)に書き出す。
  2. template<endianness E, std::size_t Size> 
      void encode_int(char* s, typename integer_encoding_traits<Size>::int_type n);
    Effects: 符号付き整数nをエンディアンEでエンコードして範囲[s, s+Size)に書き出す。
  3. template<endianness E, std::size_t Size> 
      typename integer_encoding_traits<Size>::uint_type decode_uint(const char* s);
    Effects: 範囲[s, s+Size)をエンディアンEで符号なし整数としてデコードする。
    Returns: デコードされた整数値
  4. template<endianness E, std::size_t Size> 
      typename integer_encoding_traits<Size>::int_type decode_int(const char* s);
    Effects: 範囲[s, s+Size)をエンディアンEで符号付き整数としてデコードする。
    Returns: デコードされた整数値
namespace hamigaki {
  template<typename Struct, typename Type, Type Struct::* PtrToMember> 
    struct member_base;
  template<typename Struct, typename Type, Type Struct::* PtrToMember, 
           endianness E = native> 
    struct member;
  template<std::size_t Size> struct padding;
  template<typename T> struct struct_traits;
  template<typename T> struct struct_size;
  template<typename T> struct member_size;
}
製作著作 © 2006, 2007 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ