700cc7f7 | /* 7zFile.h -- File IO |
569bdeeb | 2009-11-24 : Igor Pavlov : Public domain */ |
700cc7f7 | #ifndef __7Z_FILE_H #define __7Z_FILE_H #ifdef _WIN32 #define USE_WINDOWS_FILE #endif #ifdef USE_WINDOWS_FILE #include <windows.h> #else #include <stdio.h> #endif #include "Types.h" |
569bdeeb | EXTERN_C_BEGIN |
700cc7f7 | /* ---------- File ---------- */ typedef struct { |
569bdeeb | #ifdef USE_WINDOWS_FILE |
700cc7f7 | HANDLE handle; |
569bdeeb | #else |
700cc7f7 | FILE *file; |
569bdeeb | #endif fmap_t *fmap; |
700cc7f7 | } CSzFile; void File_Construct(CSzFile *p); |
569bdeeb | #if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE) |
700cc7f7 | WRes InFile_Open(CSzFile *p, const char *name); WRes OutFile_Open(CSzFile *p, const char *name); |
569bdeeb | #endif #ifdef USE_WINDOWS_FILE WRes InFile_OpenW(CSzFile *p, const WCHAR *name); WRes OutFile_OpenW(CSzFile *p, const WCHAR *name); #endif |
700cc7f7 | WRes File_Close(CSzFile *p); /* reads max(*size, remain file's size) bytes */ WRes File_Read(CSzFile *p, void *data, size_t *size); /* writes *size bytes */ WRes File_Write(CSzFile *p, const void *data, size_t *size); WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin); /* ---------- FileInStream ---------- */ typedef struct { ISeqInStream s; CSzFile file; } CFileSeqInStream; void FileSeqInStream_CreateVTable(CFileSeqInStream *p); typedef struct { ISeekInStream s; CSzFile file; } CFileInStream; void FileInStream_CreateVTable(CFileInStream *p); typedef struct { ISeqOutStream s; CSzFile file; } CFileOutStream; void FileOutStream_CreateVTable(CFileOutStream *p); |
569bdeeb | EXTERN_C_END |
700cc7f7 | #endif |