]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/LzmaCompress/Sdk/C/7zFile.h
BaseTools Lzma: Update LZMA SDK version to 18.05
[mirror_edk2.git] / BaseTools / Source / C / LzmaCompress / Sdk / C / 7zFile.h
1 /* 7zFile.h -- File IO
2 2017-04-03 : Igor Pavlov : Public domain */
3
4 #ifndef __7Z_FILE_H
5 #define __7Z_FILE_H
6
7 #ifdef _WIN32
8 #define USE_WINDOWS_FILE
9 #endif
10
11 #ifdef USE_WINDOWS_FILE
12 #include <windows.h>
13 #else
14 #include <stdio.h>
15 #endif
16
17 #include "7zTypes.h"
18
19 EXTERN_C_BEGIN
20
21 /* ---------- File ---------- */
22
23 typedef struct
24 {
25 #ifdef USE_WINDOWS_FILE
26 HANDLE handle;
27 #else
28 FILE *file;
29 #endif
30 } CSzFile;
31
32 void File_Construct(CSzFile *p);
33 #if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
34 WRes InFile_Open(CSzFile *p, const char *name);
35 WRes OutFile_Open(CSzFile *p, const char *name);
36 #endif
37 #ifdef USE_WINDOWS_FILE
38 WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
39 WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
40 #endif
41 WRes File_Close(CSzFile *p);
42
43 /* reads max(*size, remain file's size) bytes */
44 WRes File_Read(CSzFile *p, void *data, size_t *size);
45
46 /* writes *size bytes */
47 WRes File_Write(CSzFile *p, const void *data, size_t *size);
48
49 WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin);
50 WRes File_GetLength(CSzFile *p, UInt64 *length);
51
52
53 /* ---------- FileInStream ---------- */
54
55 typedef struct
56 {
57 ISeqInStream vt;
58 CSzFile file;
59 } CFileSeqInStream;
60
61 void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
62
63
64 typedef struct
65 {
66 ISeekInStream vt;
67 CSzFile file;
68 } CFileInStream;
69
70 void FileInStream_CreateVTable(CFileInStream *p);
71
72
73 typedef struct
74 {
75 ISeqOutStream vt;
76 CSzFile file;
77 } CFileOutStream;
78
79 void FileOutStream_CreateVTable(CFileOutStream *p);
80
81 EXTERN_C_END
82
83 #endif