/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #ifndef __NIOHANDLE_ENDIAN__ #define __NIOHANDLE_ENDIAN__ #include "filesystem/io_handle.h" #include "memory/endian.h" namespace GS { namespace IO { /// IO Handle endian wrapper. class HandleEndian { AutoPtr h; Endian::Config config; public: bool IsNull() const { return h.IsNull(); } bool IsValid() const { return h.IsValid(); } Handle &GetIOHandle() const { return *h; } template const HandleEndian &operator << (const T &v) { *h << Endian::ToHost(v, config); return *this; } template const HandleEndian &operator >> (T &v) { *h >> v; Endian::ToHost(&v, sizeof(T), config); return *this; } HandleEndian(Handle *in_h, Endian::Config in_config = Endian::Little) : h(in_h), config(in_config) {} }; } // IO } // GS #endif // __NIOHANDLE_ENDIAN__