54 lines
955 B
C++
54 lines
955 B
C++
// Common/C_FileIO.h
|
|
|
|
#ifndef __COMMON_C_FILEIO_H
|
|
#define __COMMON_C_FILEIO_H
|
|
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
|
|
#include "MyTypes.h"
|
|
#include "MyWindows.h"
|
|
|
|
#ifdef _WIN32
|
|
#ifdef _MSC_VER
|
|
typedef size_t ssize_t;
|
|
#endif
|
|
#endif
|
|
|
|
namespace NC {
|
|
namespace NFile {
|
|
namespace NIO {
|
|
|
|
class CFileBase
|
|
{
|
|
protected:
|
|
int _handle;
|
|
bool OpenBinary(const char *name, int flags);
|
|
public:
|
|
CFileBase(): _handle(-1) {};
|
|
~CFileBase() { Close(); }
|
|
bool Close();
|
|
bool GetLength(UInt64 &length) const;
|
|
off_t Seek(off_t distanceToMove, int moveMethod) const;
|
|
};
|
|
|
|
class CInFile: public CFileBase
|
|
{
|
|
public:
|
|
bool Open(const char *name);
|
|
bool OpenShared(const char *name, bool shareForWrite);
|
|
ssize_t Read(void *data, size_t size);
|
|
};
|
|
|
|
class COutFile: public CFileBase
|
|
{
|
|
public:
|
|
bool Create(const char *name, bool createAlways);
|
|
bool Open(const char *name, DWORD creationDisposition);
|
|
ssize_t Write(const void *data, size_t size);
|
|
};
|
|
|
|
}}}
|
|
|
|
#endif
|