Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /* 7zFile.h -- File IO
  2. 2013-01-18 : 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 s;
  58.   CSzFile file;
  59. } CFileSeqInStream;
  60.  
  61. void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
  62.  
  63.  
  64. typedef struct
  65. {
  66.   ISeekInStream s;
  67.   CSzFile file;
  68. } CFileInStream;
  69.  
  70. void FileInStream_CreateVTable(CFileInStream *p);
  71.  
  72.  
  73. typedef struct
  74. {
  75.   ISeqOutStream s;
  76.   CSzFile file;
  77. } CFileOutStream;
  78.  
  79. void FileOutStream_CreateVTable(CFileOutStream *p);
  80.  
  81. EXTERN_C_END
  82.  
  83. #endif
  84.