diff options
author | Alex Zolotarev <deathbaba@gmail.com> | 2010-12-05 19:24:16 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-22 22:33:57 +0300 |
commit | d6e12b7ce4bcbf0ccd1c07eb25de143422913c34 (patch) | |
tree | a7e910c330ce4da9b4f2d8be76067adece2561c4 /coding/file_writer.cpp |
One Month In Minsk. Made in Belarus.
Diffstat (limited to 'coding/file_writer.cpp')
-rw-r--r-- | coding/file_writer.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/coding/file_writer.cpp b/coding/file_writer.cpp new file mode 100644 index 0000000000..e4b00db7fb --- /dev/null +++ b/coding/file_writer.cpp @@ -0,0 +1,68 @@ +#include "file_writer.hpp" +#include "internal/file_data.hpp" + +#include "../std/cstdlib.hpp" +#include "../std/string.hpp" + +#include "../../base/start_mem_debug.hpp" + + +FileWriter::FileWriter(string const & fileName, FileWriter::Op op) + : m_pFileData(new FileData(fileName, static_cast<FileData::Op>(op))) +{ +} + +FileWriter::~FileWriter() +{ +} + +int64_t FileWriter::Pos() const +{ + return m_pFileData->Pos(); +} + +void FileWriter::Seek(int64_t pos) +{ + ASSERT_GREATER_OR_EQUAL(pos, 0, ()); + m_pFileData->Seek(pos); +} + +void FileWriter::Write(void const * p, size_t size) +{ + m_pFileData->Write(p, size); +} + +string FileWriter::GetName() const +{ + return m_pFileData->GetName(); +} + +void FileWriter::DeleteFile(string const & fileName) +{ +#ifdef OMIM_OS_BADA + Osp::Io::File::Remove(fileName.c_str()); +#else + + // Erase file. + if (0 != remove(fileName.c_str())) + { + // additional check if file really was removed correctly + FILE * f = fopen(fileName.c_str(), "r"); + if (f) + { + fclose(f); + LOG(LERROR, ("File exists but can't be deleted. Sharing violation?", fileName)); + } + } +#endif +} + +uint64_t FileWriter::Size() const +{ + return m_pFileData->Size(); +} + +void FileWriter::Flush() +{ + m_pFileData->Flush(); +} |