#ifndef __GEO_SERIALIZER_H__ #define __GEO_SERIALIZER_H__ #include "GeoBase.h" #include "GeoVector2.h" #include "GeoVector3.h" namespace Geometry { /// Serializer interface /** Serializer is a helper class than manages file input/output. */ class Serializer { public: enum Mode { READ, WRITE, APPEND }; ///Constructor Serializer(String name, Mode mode); ///Destructor virtual ~Serializer(); /// Copy constructor //Serializer(const Serializer&); /// Assignment operator //Serializer& operator =(const Serializer&); public: void WriteData(const void* const buf, size_t size, size_t count); void WriteArray(const float* const pfloat, size_t count); void WriteArray(const uint16* const pShort, size_t count); void WriteArray(const uint32* const pInt, size_t count); void WriteArray(const bool* const pLong, size_t count); void WriteArray(const Vector3* const pvector3, size_t count); void WriteArray(const Vector2* const pvector3, size_t count); void ReadData(void *buf, size_t size, size_t count); void miReadData2(void *buf, size_t size, size_t count); char *miReadData(char *pDest, size_t pDestsize); void ReadArray(bool *pDest, size_t count); void ReadArray(float *pDest, size_t count); void ReadArray(uint16 *pDest, size_t count); void ReadArray(uint32 *pDest, size_t count); void ReadArray(Vector3 *pDest, size_t count); void ReadArray(Vector2 *pDest, size_t count); // GPR. void WriteData(const String &string); void WriteData(const char *string); // fin GPR. virtual size_t GetSize() { return mSize; } int serializereof() { return feof(mFile); } protected: size_t mSize; FILE *mFile; Mode mMode; void FlipToLittleEndian(void *pData, size_t size, size_t count = 1); void FlipFromLittleEndian(void *pData, size_t size, size_t count = 1); void FlipEndian(void *pData, size_t size, size_t count); void FlipEndian(void *pData, size_t size); }; } #endif