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