File indexing completed on 2023-03-17 11:05:02
0001
0002
0003
0004 #ifndef __7Z_FILE_H
0005 #define __7Z_FILE_H
0006
0007 #ifdef _WIN32
0008 #define USE_WINDOWS_FILE
0009 #endif
0010
0011 #ifdef USE_WINDOWS_FILE
0012 #include <windows.h>
0013 #else
0014 #include <cstdio>
0015 #endif
0016
0017 #include "Types.h"
0018
0019 EXTERN_C_BEGIN
0020
0021
0022
0023 typedef struct {
0024 #ifdef USE_WINDOWS_FILE
0025 HANDLE handle;
0026 #else
0027 FILE *file;
0028 #endif
0029 } CSzFile;
0030
0031 void File_Construct(CSzFile *p);
0032 #if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
0033 WRes InFile_Open(CSzFile *p, const char *name);
0034 WRes OutFile_Open(CSzFile *p, const char *name);
0035 #endif
0036 #ifdef USE_WINDOWS_FILE
0037 WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
0038 WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
0039 #endif
0040 WRes File_Close(CSzFile *p);
0041
0042
0043 WRes File_Read(CSzFile *p, void *data, size_t *size);
0044
0045
0046 WRes File_Write(CSzFile *p, const void *data, size_t *size);
0047
0048 WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin);
0049 WRes File_GetLength(CSzFile *p, UInt64 *length);
0050
0051
0052
0053 typedef struct {
0054 ISeqInStream s;
0055 CSzFile file;
0056 } CFileSeqInStream;
0057
0058 void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
0059
0060 typedef struct {
0061 ISeekInStream s;
0062 CSzFile file;
0063 } CFileInStream;
0064
0065 void FileInStream_CreateVTable(CFileInStream *p);
0066
0067 typedef struct {
0068 ISeqOutStream s;
0069 CSzFile file;
0070 } CFileOutStream;
0071
0072 void FileOutStream_CreateVTable(CFileOutStream *p);
0073
0074 EXTERN_C_END
0075
0076 #endif