@class wxArchiveInputStream
@wxheader{archive.h}
- An abstract base class which serves as a common interface to
+ This is an abstract base class which serves as a common interface to
archive input streams such as wxZipInputStream.
wxArchiveInputStream::GetNextEntry returns an wxArchiveEntry object containing
Closes the current entry. On a non-seekable stream reads to the end of
the current entry first.
*/
- bool CloseEntry();
+ virtual bool CloseEntry() = 0;
/**
Closes the current entry if one is open, then reads the meta-data for
@a entry must be from the same archive file that this wxArchiveInputStream
is reading, and it must be reading it from a seekable stream.
*/
- bool OpenEntry(wxArchiveEntry& entry);
+ virtual bool OpenEntry(wxArchiveEntry& entry) = 0;
};
@class wxArchiveOutputStream
@wxheader{archive.h}
- An abstract base class which serves as a common interface to
+ This is an abstract base class which serves as a common interface to
archive output streams such as wxZipOutputStream.
wxArchiveOutputStream::PutNextEntry is used to create a new entry in the
/**
Calls Close() if it has not already been called.
*/
- ~wxArchiveOutputStream();
+ virtual ~wxArchiveOutputStream();
/**
Closes the archive, returning @true if it was successfully written.
Called by the destructor if not called explicitly.
+
+ @see wxOutputStream::Close()
*/
- bool Close();
+ virtual bool Close();
/**
Close the current entry.
It is called implicitly whenever another new entry is created with CopyEntry()
or PutNextEntry(), or when the archive is closed.
*/
- bool CloseEntry();
+ virtual bool CloseEntry() = 0;
/**
Some archive formats have additional meta-data that applies to the archive
in which case the two streams set up a link and transfer the data
when it becomes available.
*/
- bool CopyArchiveMetaData(wxArchiveInputStream& stream);
+ virtual bool CopyArchiveMetaData(wxArchiveInputStream& stream) = 0;
/**
Takes ownership of @a entry and uses it to create a new entry in the
- archive. @a entry is then opened in the input stream @e stream
+ archive. @a entry is then opened in the input stream @a stream
and its contents copied to this stream.
For archive types which compress entry data, CopyEntry() is likely to be
@a entry must be from the same archive file that @a stream is
accessing. For non-seekable streams, @a entry must also be the last
- thing read from @e stream.
+ thing read from @a stream.
*/
- bool CopyEntry(wxArchiveEntry* entry,
- wxArchiveInputStream& stream);
+ virtual bool CopyEntry(wxArchiveEntry* entry,
+ wxArchiveInputStream& stream) = 0;
/**
Create a new directory entry (see wxArchiveEntry::IsDir) with the given
PutNextEntry() can also be used to create directory entries, by supplying
a name with a trailing path separator.
*/
- bool PutNextDirEntry(const wxString& name);
+ virtual bool PutNextDirEntry(const wxString& name,
+ const wxDateTime& dt = wxDateTime::Now()) = 0;
/**
Takes ownership of entry and uses it to create a new entry in the archive.
The entry's data can then be written by writing to this wxArchiveOutputStream.
*/
- bool PutNextEntry(wxArchiveEntry* entry);
+ virtual bool PutNextEntry(wxArchiveEntry* entry) = 0;
/**
Create a new entry with the given name, timestamp and size. The entry's
data can then be written by writing to this wxArchiveOutputStream.
*/
- bool PutNextEntry(const wxString& name, const wxDateTime& dt = wxDateTime::Now(),
- off_t size = wxInvalidOffset);
+ virtual bool PutNextEntry(const wxString& name,
+ const wxDateTime& dt = wxDateTime::Now(),
+ wxFileOffset size = wxInvalidOffset) = 0;
};
@class wxArchiveEntry
@wxheader{archive.h}
- An abstract base class which serves as a common interface to
+ This is an abstract base class which serves as a common interface to
archive entry classes such as wxZipEntry.
These hold the meta-data (filename, timestamp, etc.), for entries
in archive files such as zips and tars.
- <b>About non-seekable streams</b>: this information applies only when reading
- archives from non-seekable streams. When the stream is seekable GetNextEntry()
- returns a fully populated wxArchiveEntry.
+ @section wxarchiveentry_nonseekable About non-seekable streams
+
+ This information applies only when reading archives from non-seekable streams.
+ When the stream is seekable GetNextEntry() returns a fully populated wxArchiveEntry.
See @ref overview_archive_noseek for more information.
For generic programming, when the worst case must be assumed, you can rely on
/**
Gets the entry's timestamp.
*/
- wxDateTime GetDateTime();
+ virtual wxDateTime GetDateTime() const = 0;
/**
Sets the entry's timestamp.
*/
- const void SetDateTime(const wxDateTime& dt);
+ virtual void SetDateTime(const wxDateTime& dt) = 0;
/**
Returns the entry's name, by default in the native format.
If this is a directory entry, (i.e. if IsDir() is @true) then the
returned string is the name with a trailing path separator.
*/
- wxString GetName(wxPathFormat format = wxPATH_NATIVE);
+ virtual wxString GetName(wxPathFormat format = wxPATH_NATIVE) const = 0;
/**
Sets the entry's name.
@see GetName()
*/
- const void SetName(const wxString& name,
- wxPathFormat format = wxPATH_NATIVE);
+ virtual void SetName(const wxString& name,
+ wxPathFormat format = wxPATH_NATIVE) = 0;
/**
Returns the size of the entry's data in bytes.
*/
- off_t GetSize();
+ virtual wxFileOffset GetSize() const = 0;
/**
Sets the size of the entry's data in bytes.
*/
- const void SetSize(off_t size);
+ virtual void SetSize(wxFileOffset size) = 0;
/**
Returns the path format used internally within the archive to store
filenames.
*/
- wxPathFormat GetInternalFormat() const;
+ virtual wxPathFormat GetInternalFormat() const = 0;
/**
Returns the entry's filename in the internal format used within the
The names of directory entries are returned without any trailing path
separator. This gives a canonical name that can be used in comparisons.
-
+
@see @ref overview_archive_byname
*/
- wxString GetInternalName() const;
+ virtual wxString GetInternalName() const = 0;
/**
Returns a numeric value unique to the entry within the archive.
*/
- off_t GetOffset() const;
+ virtual wxFileOffset GetOffset() const = 0;
/**
Returns @true if this is a directory entry.
unarchivers typically create whatever directories are necessary as they
restore files, even if the archive contains no explicit directory entries.
*/
- bool IsDir();
+ virtual bool IsDir() const = 0;
/**
Marks this entry as a directory if @a isDir is @true. See IsDir() for more info.
*/
- const void SetIsDir(bool isDir = true);
+ virtual void SetIsDir(bool isDir = true) = 0;
/**
Returns @true if the entry is a read-only file.
*/
- bool IsReadOnly();
+ virtual bool IsReadOnly() const = 0;
/**
Sets this entry as a read-only file.
*/
- const void SetIsReadOnly(bool isReadOnly = true);
+ virtual void SetIsReadOnly(bool isReadOnly = true) = 0;
/**
Sets the notifier (see wxArchiveNotifier) for this entry.
/**
Unsets the notifier eventually attached to this entry.
*/
- void UnsetNotifier();
+ virtual void UnsetNotifier();
};
wxArchiveClassFactory::Find can also search for a factory by MIME type
or wxFileSystem protocol.
- The available factories can be enumerated using
+ The available factories can be enumerated using
wxArchiveClassFactory::GetFirst() and wxArchiveClassFactory::GetNext().
@library{wxbase}
@code
wxString list;
const wxArchiveClassFactory *factory = wxArchiveClassFactory::GetFirst();
-
+
while (factory) {
list << factory->GetProtocol() << _T("\n");
factory = factory->GetNext();
}
@endcode
-
+
GetFirst() and GetNext() return a pointer to a factory or @NULL if no more
are available. They do not give away ownership of the factory.
*/
@code
wxString list;
const wxChar *const *p;
-
+
for (p = factory->GetProtocols(wxSTREAM_FILEEXT); *p; p++)
list << *p << _T("\n");
@encode
The first template parameter should be the type of archive input stream
(e.g. wxArchiveInputStream) and the second can either be a pointer to an entry
- (e.g. wxArchiveEntry*), or a string/pointer pair (e.g. std::pairwxString,
+ (e.g. wxArchiveEntry*), or a string/pointer pair (e.g. std::pairwxString,
wxArchiveEntry*).
The @c wx/archive.h header defines the following typedefs:
/**
Construct the iterator that returns all the entries in the archive input
- stream @e arc.
+ stream @a arc.
*/
wxArchiveIterator(Arc& arc);