Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:14:00

0001 /* 7zFile.h -- File IO

0002 2009-11-24 : Igor Pavlov : Public domain */
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 /* ---------- File ---------- */
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 /* reads max(*size, remain file's size) bytes */
0043 WRes File_Read(CSzFile *p, void *data, size_t *size);
0044 
0045 /* writes *size bytes */
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 /* ---------- FileInStream ---------- */
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