LMMS
Loading...
Searching...
No Matches
juce_ZipFile.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23namespace juce
24{
25
26//==============================================================================
36{
37public:
39 explicit ZipFile (const File& file);
40
41 //==============================================================================
48 ZipFile (InputStream* inputStream, bool deleteStreamWhenDestroyed);
49
55
62
64 ~ZipFile();
65
66 //==============================================================================
92
93 //==============================================================================
96
101 const ZipEntry* getEntry (int index) const noexcept;
102
109 int getIndexOfFileName (const String& fileName, bool ignoreCase = false) const noexcept;
110
118 const ZipEntry* getEntry (const String& fileName, bool ignoreCase = false) const noexcept;
119
122
123 //==============================================================================
138
153
154 //==============================================================================
164 Result uncompressTo (const File& targetDirectory,
165 bool shouldOverwriteFiles = true);
166
178 Result uncompressEntry (int index,
179 const File& targetDirectory,
180 bool shouldOverwriteFiles = true);
181
182 enum class OverwriteFiles { no, yes };
183 enum class FollowSymlinks { no, yes };
184
197 Result uncompressEntry (int index,
198 const File& targetDirectory,
199 OverwriteFiles overwriteFiles,
200 FollowSymlinks followSymlinks);
201
202 //==============================================================================
209 {
210 public:
212 Builder();
213
215 ~Builder();
216
225 void addFile (const File& fileToAdd, int compressionLevel,
226 const String& storedPathName = String());
227
240 void addEntry (InputStream* streamToRead, int compressionLevel,
241 const String& storedPathName, Time fileModificationTime);
242
247 bool writeToStream (OutputStream& target, double* progress) const;
248
249 //==============================================================================
250 private:
251 struct Item;
253
255 };
256
257private:
258 //==============================================================================
259 struct ZipInputStream;
260 struct ZipEntryHolder;
261
265 std::unique_ptr<InputStream> streamToDelete;
266 std::unique_ptr<InputSource> inputSource;
267
268 #if JUCE_DEBUG
269 struct OpenStreamCounter
270 {
271 OpenStreamCounter() = default;
272 ~OpenStreamCounter();
273
274 int numOpenStreams = 0;
275 };
276
277 OpenStreamCounter streamCounter;
278 #endif
279
280 void init();
281
283};
284
285} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_CriticalSection.h:43
Definition juce_File.h:45
Definition juce_InputSource.h:38
Definition juce_InputStream.h:37
Definition juce_OutputStream.h:38
Definition juce_OwnedArray.h:51
Definition juce_Result.h:57
Definition juce_String.h:53
Definition juce_Time.h:37
Builder()
Definition juce_ZipFile.cpp:615
void addEntry(InputStream *streamToRead, int compressionLevel, const String &storedPathName, Time fileModificationTime)
Definition juce_ZipFile.cpp:625
bool writeToStream(OutputStream &target, double *progress) const
Definition juce_ZipFile.cpp:632
void addFile(const File &fileToAdd, int compressionLevel, const String &storedPathName=String())
Definition juce_ZipFile.cpp:618
OwnedArray< Item > items
Definition juce_ZipFile.h:252
Definition juce_ZipFile.h:36
Result uncompressTo(const File &targetDirectory, bool shouldOverwriteFiles=true)
Definition juce_ZipFile.cpp:401
InputStream * createStreamForEntry(int index)
Definition juce_ZipFile.cpp:314
const ZipEntry * getEntry(int index) const noexcept
Definition juce_ZipFile.cpp:287
int getNumEntries() const noexcept
Definition juce_ZipFile.cpp:282
std::unique_ptr< InputSource > inputSource
Definition juce_ZipFile.h:266
InputStream * inputStream
Definition juce_ZipFile.h:264
OwnedArray< ZipEntryHolder > entries
Definition juce_ZipFile.h:262
ZipFile(const File &file)
Definition juce_ZipFile.cpp:254
OverwriteFiles
Definition juce_ZipFile.h:182
Result uncompressEntry(int index, const File &targetDirectory, bool shouldOverwriteFiles=true)
Definition juce_ZipFile.cpp:415
int getIndexOfFileName(const String &fileName, bool ignoreCase=false) const noexcept
Definition juce_ZipFile.cpp:295
void sortEntriesByFilename()
Definition juce_ZipFile.cpp:345
std::unique_ptr< InputStream > streamToDelete
Definition juce_ZipFile.h:265
CriticalSection lock
Definition juce_ZipFile.h:263
FollowSymlinks
Definition juce_ZipFile.h:183
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
@ no
Definition juce_AlertWindow.cpp:567
@ yes
Definition juce_AlertWindow.cpp:567
unsigned int uint32
Definition juce_MathsFunctions.h:45
long long int64
Definition juce_MathsFunctions.h:54
#define true
Definition ordinals.h:82
#define false
Definition ordinals.h:83
Definition juce_ZipFile.cpp:492
Definition juce_ZipFile.cpp:39
Definition juce_ZipFile.h:73
String filename
Definition juce_ZipFile.h:75
int64 uncompressedSize
Definition juce_ZipFile.h:78
uint32 externalFileAttributes
Definition juce_ZipFile.h:90
bool isSymbolicLink
Definition juce_ZipFile.h:84
Time fileTime
Definition juce_ZipFile.h:81
Definition juce_ZipFile.cpp:140
ZCONST uch * init
Definition extract.c:2392
struct zdirent * file
Definition win32.c:1500
#define const
Definition zconf.h:137