QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
7zFile.h
Go to the documentation of this file.
1/* 7zFile.h -- File IO
22023-03-05 : Igor Pavlov : Public domain */
3
4#ifndef ZIP7_INC_FILE_H
5#define ZIP7_INC_FILE_H
6
7#ifdef _WIN32
8#define USE_WINDOWS_FILE
9// #include <windows.h>
10#endif
11
12#ifdef USE_WINDOWS_FILE
13#include "7zWindows.h"
14
15#else
16// note: USE_FOPEN mode is limited to 32-bit file size
17// #define USE_FOPEN
18// #include <stdio.h>
19#endif
20
21#include "7zTypes.h"
22
24
25/* ---------- File ---------- */
26
27typedef struct
28{
29 #ifdef USE_WINDOWS_FILE
30 HANDLE handle;
31 #elif defined(USE_FOPEN)
32 FILE *file;
33 #else
34 int fd;
35 #endif
36} CSzFile;
37
39#if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
40WRes InFile_Open(CSzFile *p, const char *name);
41WRes OutFile_Open(CSzFile *p, const char *name);
42#endif
43#ifdef USE_WINDOWS_FILE
44WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
45WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
46#endif
48
49/* reads max(*size, remain file's size) bytes */
50WRes File_Read(CSzFile *p, void *data, size_t *size);
51
52/* writes *size bytes */
53WRes File_Write(CSzFile *p, const void *data, size_t *size);
54
57
58
59/* ---------- FileInStream ---------- */
60
61typedef struct
62{
63 ISeqInStream vt;
67
69
70
71typedef struct
72{
73 ISeekInStream vt;
77
79
80
81typedef struct
82{
83 ISeqOutStream vt;
87
89
91
92#endif
void FileInStream_CreateVTable(CFileInStream *p)
void File_Construct(CSzFile *p)
WRes File_GetLength(CSzFile *p, UInt64 *length)
WRes File_Write(CSzFile *p, const void *data, size_t *size)
void FileSeqInStream_CreateVTable(CFileSeqInStream *p)
WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin)
void FileOutStream_CreateVTable(CFileOutStream *p)
WRes InFile_Open(CSzFile *p, const char *name)
WRes File_Close(CSzFile *p)
WRes File_Read(CSzFile *p, void *data, size_t *size)
WRes OutFile_Open(CSzFile *p, const char *name)
int WRes
Definition 7zTypes.h:75
#define EXTERN_C_BEGIN
Definition 7zTypes.h:20
unsigned long long int UInt64
Definition 7zTypes.h:234
ESzSeek
Definition 7zTypes.h:365
#define EXTERN_C_END
Definition 7zTypes.h:21
long long int Int64
Definition 7zTypes.h:233
Definition 7zFile.h:72
CSzFile file
Definition 7zFile.h:74
WRes wres
Definition 7zFile.h:75
ISeekInStream vt
Definition 7zFile.h:73
Definition 7zFile.h:82
WRes wres
Definition 7zFile.h:85
ISeqOutStream vt
Definition 7zFile.h:83
CSzFile file
Definition 7zFile.h:84
Definition 7zFile.h:62
CSzFile file
Definition 7zFile.h:64
WRes wres
Definition 7zFile.h:65
ISeqInStream vt
Definition 7zFile.h:63
Definition 7zFile.h:28
int fd
Definition 7zFile.h:34