87 lines
1.3 KiB
C
87 lines
1.3 KiB
C
|
|
||
|
|
||
|
#ifndef T_TFILEPATH_IO_INCLUDED
|
||
|
#define T_TFILEPATH_IO_INCLUDED
|
||
|
|
||
|
#ifndef _DEBUG
|
||
|
#undef _STLP_DEBUG
|
||
|
#else
|
||
|
#define _STLP_DEBUG 1
|
||
|
#endif
|
||
|
|
||
|
#include "tfilepath.h"
|
||
|
|
||
|
#include <stdio.h>
|
||
|
// #include <stl/_iosfwd.h>
|
||
|
|
||
|
#undef DVAPI
|
||
|
#undef DVVAR
|
||
|
#ifdef TSYSTEM_EXPORTS
|
||
|
#define DVAPI DV_EXPORT_API
|
||
|
#define DVVAR DV_EXPORT_VAR
|
||
|
#else
|
||
|
#define DVAPI DV_IMPORT_API
|
||
|
#define DVVAR DV_IMPORT_VAR
|
||
|
#endif
|
||
|
|
||
|
/*=========================================================
|
||
|
|
||
|
Regole da seguire per evitare HANDLE leaks o doppie chiusure
|
||
|
|
||
|
|
||
|
{
|
||
|
Tofstream os(path);
|
||
|
os << "ok";
|
||
|
}
|
||
|
{
|
||
|
Tofstream os(path);
|
||
|
int fd = os.fd();
|
||
|
_write(fd,"ok",2);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
Tofstream os(path);
|
||
|
FILE *chan = fdopen(_dup(os.fd()),"wb");
|
||
|
fprintf(chan, "ok");
|
||
|
int ret = fclose(chan);
|
||
|
assert(ret==0);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
FILE *chan = fopen(path, mode);
|
||
|
fprintf(chan, "ok");
|
||
|
int ret = fclose(chan);
|
||
|
assert(ret==0);
|
||
|
}
|
||
|
|
||
|
|
||
|
=========================================================*/
|
||
|
|
||
|
DVAPI FILE *fopen(const TFilePath &fp, string mode);
|
||
|
|
||
|
class DVAPI Tifstream : public std::ifstream
|
||
|
{
|
||
|
FILE *m_file;
|
||
|
|
||
|
public:
|
||
|
Tifstream(const TFilePath &fp);
|
||
|
~Tifstream();
|
||
|
bool isOpen() const;
|
||
|
void close();
|
||
|
};
|
||
|
|
||
|
class DVAPI Tofstream : public std::ofstream
|
||
|
{
|
||
|
FILE *m_file;
|
||
|
|
||
|
public:
|
||
|
Tofstream(const TFilePath &fp, bool append_existing = false);
|
||
|
|
||
|
~Tofstream();
|
||
|
|
||
|
bool isOpen() const;
|
||
|
void close();
|
||
|
};
|
||
|
|
||
|
#endif
|