32 lines
999 B
C++
32 lines
999 B
C++
#pragma once
|
|
|
|
namespace pfc {
|
|
#ifdef _WIN32
|
|
typedef HANDLE fileHandle_t;
|
|
const fileHandle_t fileHandleInvalid = INVALID_HANDLE_VALUE;
|
|
#else
|
|
typedef int fileHandle_t;
|
|
const fileHandle_t fileHandleInvalid = -1;
|
|
#endif
|
|
|
|
void fileHandleClose( fileHandle_t h );
|
|
fileHandle_t fileHandleDup( fileHandle_t h );
|
|
|
|
class fileHandle {
|
|
public:
|
|
fileHandle( fileHandle_t val ) : h(val) {}
|
|
fileHandle() : h ( fileHandleInvalid ) {}
|
|
~fileHandle() { close(); }
|
|
fileHandle( fileHandle && other ) { h = other.h; other.clear(); }
|
|
void operator=( fileHandle && other ) { close(); h = other.h; other.clear(); }
|
|
void operator=( fileHandle_t other ) { close(); h = other; }
|
|
void close();
|
|
void clear() { h = fileHandleInvalid; }
|
|
bool isValid() { return h != fileHandleInvalid; }
|
|
fileHandle_t h;
|
|
private:
|
|
fileHandle( const fileHandle & );
|
|
void operator=( const fileHandle & );
|
|
};
|
|
}
|