00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00031
00032 #pragma once
00033
00034 #include "../api_core.h"
00035 #include "../Text/string_types.h"
00036 #include "../System/sharedptr.h"
00037 #include "../IOData/datatypes.h"
00038 #include <vector>
00039
00040 class CL_IODevice;
00041 class CL_ZipReader_Impl;
00042
00046 class CL_API_CORE CL_ZipReader
00047 {
00050
00051 public:
00052
00056 CL_ZipReader(CL_IODevice &input);
00057
00061
00062 public:
00064
00068 bool read_local_file_header(bool allow_data_descriptor = false);
00069
00071 CL_String get_filename();
00072
00074 bool has_data_descriptor() const;
00075
00077 cl_int64 get_compressed_size() const;
00078
00080 cl_int64 get_uncompressed_size() const;
00081
00083 void set_data_descriptor_data(cl_int64 compressed_size, cl_int64 uncompressed_size, cl_uint32 crc32);
00084
00086 cl_int64 read_file_data(void *data, cl_int64 size, bool read_all = true);
00087
00091
00092 private:
00093 CL_SharedPtr<CL_ZipReader_Impl> impl;
00095 };
00096