]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/arcfind.cpp
Base class factory on the wxFilter base class and implement the new Find feature.
[wxWidgets.git] / src / common / arcfind.cpp
diff --git a/src/common/arcfind.cpp b/src/common/arcfind.cpp
new file mode 100644 (file)
index 0000000..b71aeb8
--- /dev/null
@@ -0,0 +1,43 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/arcfind.cpp
+// Purpose:     Streams for archive formats
+// Author:      Mike Wetherell
+// RCS-ID:      $Id$
+// Copyright:   (c) Mike Wetherell
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_ARCHIVE_STREAMS
+
+#include "wx/archive.h"
+
+// These functions are in a separate file so that statically linked apps
+// that do not call them to search for archive handlers will only link in
+// the archive classes they use.
+
+const wxArchiveClassFactory *
+wxArchiveClassFactory::Find(const wxChar *protocol, wxStreamProtocolType type)
+{
+    for (const wxArchiveClassFactory *f = GetFirst(); f; f = f->GetNext())
+        if (f->CanHandle(protocol, type))
+            return f;
+
+    return NULL;
+}
+
+// static
+const wxArchiveClassFactory *wxArchiveClassFactory::GetFirst()
+{
+    if (!sm_first)
+        wxUseArchiveClasses();
+    return sm_first;
+}
+
+#endif // wxUSE_ARCHIVE_STREAMS