all repos — mgba @ b2d406a411b31acce5bbf0246af32a80c22ca834

mGBA Game Boy Advance Emulator

src/third-party/lzma/7zFile.h (view raw)

 1/* 7zFile.h -- File IO
 22017-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
19EXTERN_C_BEGIN
20
21/* ---------- File ---------- */
22
23typedef struct
24{
25  #ifdef USE_WINDOWS_FILE
26  HANDLE handle;
27  #else
28  FILE *file;
29  #endif
30} CSzFile;
31
32void File_Construct(CSzFile *p);
33#if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
34WRes InFile_Open(CSzFile *p, const char *name);
35WRes OutFile_Open(CSzFile *p, const char *name);
36#endif
37#ifdef USE_WINDOWS_FILE
38WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
39WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
40#endif
41WRes File_Close(CSzFile *p);
42
43/* reads max(*size, remain file's size) bytes */
44WRes File_Read(CSzFile *p, void *data, size_t *size);
45
46/* writes *size bytes */
47WRes File_Write(CSzFile *p, const void *data, size_t *size);
48
49WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin);
50WRes File_GetLength(CSzFile *p, UInt64 *length);
51
52
53/* ---------- FileInStream ---------- */
54
55typedef struct
56{
57  ISeqInStream vt;
58  CSzFile file;
59} CFileSeqInStream;
60
61void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
62
63
64typedef struct
65{
66  ISeekInStream vt;
67  CSzFile file;
68} CFileInStream;
69
70void FileInStream_CreateVTable(CFileInStream *p);
71
72
73typedef struct
74{
75  ISeqOutStream vt;
76  CSzFile file;
77} CFileOutStream;
78
79void FileOutStream_CreateVTable(CFileOutStream *p);
80
81EXTERN_C_END
82
83#endif