--- a
+++ b/src/bincimapmime/iofactory.h
@@ -0,0 +1,68 @@
+/*-*-mode:c++-*-*/
+/* --------------------------------------------------------------------
+ * Filename:
+ * src/iofactory.h
+ *
+ * Description:
+ * Declaration of the IOFactory class.
+ * --------------------------------------------------------------------
+ * Copyright 2002, 2003 Andreas Aardal Hanssen
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
+ * --------------------------------------------------------------------
+ */
+#ifndef IOFACTORY_H_INCLUDED
+#define IOFACTORY_H_INCLUDED
+#include <map>
+#include <string>
+
+namespace Binc {
+ class IODevice;
+ class IOFactory {
+ public:
+ ~IOFactory(void);
+
+ static void addDevice(IODevice *dev);
+ static IOFactory &getInstance(void);
+ static IODevice &getClient(void);
+ static IODevice &getLogger(void);
+
+ private:
+ IOFactory(void);
+
+ std::map<std::string, IODevice *> devices;
+ };
+}
+
+#define bincClient \
+ IOFactory::getClient()
+
+#if !defined (DEBUG)
+#define bincError if (false) std::cout
+#define bincWarning if (false) std::cout
+#define bincDebug if (false) std::cout
+#else
+#define bincError \
+ IOFactory::getLogger().setOutputLevel(0);IOFactory::getLogger()
+#define bincWarning \
+ IOFactory::getLogger().setOutputLevel(2);IOFactory::getLogger()
+#define bincDebug \
+ IOFactory::getLogger().setOutputLevel(3);IOFactory::getLogger()
+#endif
+
+#define bincInfo \
+ IOFactory::getLogger().setOutputLevel(1);IOFactory::getLogger()
+
+#endif