// Purpose: interface of wxArchive* classes
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
When there are no more entries, GetNextEntry() returns @NULL and sets Eof().
@library{wxbase}
- @category{archive}
+ @category{archive,streams}
@see @ref overview_archive, wxArchiveEntry, wxArchiveOutputStream
*/
Another call to PutNextEntry() closes the current entry and begins the next.
@library{wxbase}
- @category{archive}
+ @category{archive,streams}
@see @ref overview_archive, wxArchiveEntry, wxArchiveInputStream
*/
These hold the meta-data (filename, timestamp, etc.), for entries
in archive files such as zips and tars.
- @section wxarchiveentry_nonseekable About non-seekable streams
+ @section archiveentry_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.
For generic programming, when the worst case must be assumed, you can rely on
all the fields of wxArchiveEntry being fully populated when
- wxArchiveInputStream::GetNextEntry() returns, with the the following exceptions:
+ wxArchiveInputStream::GetNextEntry() returns, with the following exceptions:
@li GetSize(): guaranteed to be available after the entry has been read to Eof(),
or CloseEntry() has been called;
been reached, i.e. after GetNextEntry() returns NULL and Eof() is true.
@library{wxbase}
- @category{archive}
+ @category{archive,streams}
@see @ref overview_archive, @ref overview_archive_generic,
wxArchiveInputStream, wxArchiveOutputStream, wxArchiveNotifier
};
-/**
- Type of stream enumeration; used by wxArchiveClassFactory methods.
-*/
-enum wxStreamProtocolType
-{
- wxSTREAM_PROTOCOL, //!< wxFileSystem protocol (should be only one)
- wxSTREAM_MIMETYPE, //!< MIME types the stream handles
- wxSTREAM_ENCODING, //!< Not used for archives
- wxSTREAM_FILEEXT //!< File extensions the stream handles
-};
/**
@class wxArchiveClassFactory
wxArchiveClassFactory::GetFirst() and wxArchiveClassFactory::GetNext().
@library{wxbase}
- @category{archive}
+ @category{archive,streams}
@see @ref overview_archive, @ref overview_archive_generic, wxArchiveEntry,
wxArchiveInputStream, wxArchiveOutputStream, wxFilterClassFactory
When using wxSTREAM_FILEEXT for the second parameter, the first parameter
can be a complete filename rather than just an extension.
*/
- bool CanHandle(const wxChar* protocol,
+ bool CanHandle(const wxString& protocol,
wxStreamProtocolType type = wxSTREAM_PROTOCOL) const;
/**
When using wxSTREAM_FILEEXT for the second parameter, the first parameter
can be a complete filename rather than just an extension.
*/
- static const wxArchiveClassFactory* Find(const wxChar* protocol,
+ static const wxArchiveClassFactory* Find(const wxString& protocol,
wxStreamProtocolType type = wxSTREAM_PROTOCOL);
/**
translating meta-data. The initial default, set by the constructor,
is wxConvLocal.
*/
- wxMBConv GetConv() const;
+ wxMBConv& GetConv() const;
/**
Sets the wxMBConv object that the created streams will use when
const wxArchiveClassFactory *factory = wxArchiveClassFactory::GetFirst();
while (factory) {
- list << factory->GetProtocol() << _T("\n");
+ list << factory->GetProtocol() << wxT("\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.
*/
- static const wxArchiveClassFactory* GetFirst() const;
+ static const wxArchiveClassFactory* GetFirst();
const wxArchiveClassFactory* GetNext() const;
//@}
Calls the static GetInternalName() function for the archive entry type,
for example wxZipEntry::GetInternalName.
*/
- wxString GetInternalName(const wxString& name,
- wxPathFormat format = wxPATH_NATIVE) const;
+ virtual wxString GetInternalName(const wxString& name,
+ wxPathFormat format = wxPATH_NATIVE) const = 0;
/**
Returns the wxFileSystem protocol supported by this factory.
const wxChar *const *p;
for (p = factory->GetProtocols(wxSTREAM_FILEEXT); *p; p++)
- list << *p << _T("\n");
- @encode
+ list << *p << wxT("\n");
+ @endcode
*/
- const wxChar* const* GetProtocols(wxStreamProtocolType type = wxSTREAM_PROTOCOL) const;
+ virtual const wxChar** GetProtocols(wxStreamProtocolType type = wxSTREAM_PROTOCOL) const = 0;
/**
Create a new wxArchiveEntry object of the appropriate type.
See @ref overview_archive_noseek.
@library{wxbase}
- @category{archive}
+ @category{archive,streams}
@see @ref overview_archive_noseek, wxArchiveEntry, wxArchiveInputStream,
wxArchiveOutputStream
/**
This method must be overridden in your derived class.
*/
- void OnEntryUpdated(class wxArchiveEntry& entry);
+ virtual void OnEntryUpdated(wxArchiveEntry& entry) = 0;
};
supports member templates.
@code
- template class Arc, class T = typename Arc::entry_type*
+ template<class Arc, class T = typename Arc::entry_type*>
class wxArchiveIterator
{
// this constructor creates an 'end of sequence' object
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,
- wxArchiveEntry*).
+ (e.g. wxArchiveEntry*), or a string/pointer pair
+ (e.g. std::pair<wxString,wxArchiveEntry*>).
The @c wx/archive.h header defines the following typedefs:
@endcode
@library{wxbase}
- @category{archive}
+ @category{archive,streams}
@see wxArchiveEntry, wxArchiveInputStream, wxArchiveOutputStream
*/