]> git.cworth.org Git - vogl/blob - src/voglcore/lzma_7zFile.h
Initial vogl checkin
[vogl] / src / voglcore / lzma_7zFile.h
1 /**************************************************************************
2  *
3  * Copyright 2013-2014 RAD Game Tools and Valve Software
4  * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
5  * All Rights Reserved.
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy
8  * of this software and associated documentation files (the "Software"), to deal
9  * in the Software without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11  * copies of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in
15  * all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23  * THE SOFTWARE.
24  *
25  **************************************************************************/
26
27 /* 7zFile.h -- File IO
28 2008-11-22 : Igor Pavlov : Public domain */
29
30 #ifndef __7Z_FILE_H
31 #define __7Z_FILE_H
32
33 #ifdef _WIN32
34 #define USE_WINDOWS_FILE
35 #endif
36
37 #ifdef USE_WINDOWS_FILE
38 #include <windows.h>
39 #else
40 #include <stdio.h>
41 #endif
42
43 #include "lzma_Types.h"
44
45 namespace vogl
46 {
47
48     /* ---------- File ---------- */
49
50     typedef struct
51     {
52 #ifdef USE_WINDOWS_FILE
53         HANDLE handle;
54 #else
55         FILE *file;
56 #endif
57     } CSzFile;
58
59     void File_Construct(CSzFile *p);
60     WRes InFile_Open(CSzFile *p, const char *name);
61     WRes OutFile_Open(CSzFile *p, const char *name);
62     WRes File_Close(CSzFile *p);
63
64     /* reads max(*size, remain file's size) bytes */
65     WRes File_Read(CSzFile *p, void *data, size_t *size);
66
67     /* writes *size bytes */
68     WRes File_Write(CSzFile *p, const void *data, size_t *size);
69
70     WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin);
71     WRes File_GetLength(CSzFile *p, UInt64 *length);
72
73     /* ---------- FileInStream ---------- */
74
75     typedef struct
76     {
77         ISeqInStream s;
78         CSzFile file;
79     } CFileSeqInStream;
80
81     void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
82
83     typedef struct
84     {
85         ISeekInStream s;
86         CSzFile file;
87     } CFileInStream;
88
89     void FileInStream_CreateVTable(CFileInStream *p);
90
91     typedef struct
92     {
93         ISeqOutStream s;
94         CSzFile file;
95     } CFileOutStream;
96
97     void FileOutStream_CreateVTable(CFileOutStream *p);
98 }
99
100 #endif